(57)【特許請求の範囲】
【請求項１】
複数のオブジェクトの組合せから第一オブジェクトの選択を受け付け、
前記複数のオブジェクトから、選択された前記第一オブジェクトと形状及び姿勢が同じ同一オブジェクトを特定し、
前記複数のオブジェクトのうち、選択された前記第一オブジェクトまたは特定された前記同一オブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出し、
抽出したオブジェクトおよび前記同一オブジェクトを、前記第一オブジェクトの移動に対応して移動する対象オブジェクトとして決定する
処理をコンピュータに実行させることを特徴とする支援プログラム。 
【請求項２】
前記受け付ける処理は、前記第一オブジェクトに接触するオブジェクトのなかから第二オブジェクトの選択をさらに受け付け、
前記抽出する処理は、前記第二オブジェクト以外のオブジェクトを対象として前記抽出を行う
ことを特徴とする請求項１に記載の支援プログラム。 
【請求項３】
前記決定する処理は、前記複数のオブジェクトのうち、前記第一オブジェクトと同じ形状及び同じ姿勢のオブジェクトを前記第一オブジェクトと同じ移動を行うオブジェクトと決定する
ことを特徴とする請求項１または２に記載の支援プログラム。 
【請求項４】
前記複数のオブジェクトのうち、前記第二オブジェクトと同じ形状及び同じ姿勢のオブジェクトを特定する処理を前記コンピュータにさらに実行させ、
前記抽出する処理は、前記第二オブジェクトおよび特定されたオブジェクト以外のオブジェクトを対象として前記抽出を行う
ことを特徴とする請求項２に記載の支援プログラム。 
【請求項５】
前記抽出する処理は、前記第一オブジェクトが駆動される駆動方向に対する長さが前記第一オブジェクトの所定倍未満のオブジェクトを対象として前記抽出を行う
ことを特徴とする請求項１〜４の何れか１つに記載の支援プログラム。 
【請求項６】
前記第一オブジェクトから接触関係があるオブジェクトの内で、前記第一オブジェクトが駆動される駆動方向に沿って配置され、形状及び姿勢が同じ複数の第三オブジェクトを特定する処理を前記コンピュータにさらに実行させ、
前記抽出する処理は、配置された状態での前記複数の第三オブジェクトの前記駆動方向に対する長さが前記第一オブジェクトの前記駆動方向に対する長さに対して所定倍以上の場合、前記複数の第三オブジェクト以外のオブジェクトを対象として前記抽出を行う
ことを特徴とする請求項１〜５の何れか１つに記載の支援プログラム。 
【請求項７】
前記抽出する処理は、前記第一オブジェクトおよび抽出済みのオブジェクトの体積の合計が、前記複数のオブジェクトの体積の合計に対して所定の割合以上となった場合、オブジェクトの抽出を終了する
ことを特徴とする請求項１〜６の何れか１つに記載の支援プログラム。 
【請求項８】
前記抽出する処理は、土台となるオブジェクトに接触するオブジェクト以外のオブジェクトを対象として前記抽出を行う
ことを特徴とする請求項１〜５の何れか１つに記載の支援プログラム。 
【請求項９】
前記土台となるオブジェクトは、オブジェクトの体積が、前記複数のオブジェクトの体積の合計に対応して定まる所定のしきい値以上のオブジェクト、または、対象オブジェクトとして特定したオブジェクト群を覆う形状のオブジェクトである
ことを特徴とする請求項８に記載の支援プログラム。 
【請求項１０】
複数のオブジェクトの組合せから第一オブジェクトの選択を受け付け、
前記複数のオブジェクトから、選択された前記第一オブジェクトと形状及び姿勢が同じ同一オブジェクトを特定し、
前記複数のオブジェクトのうち、選択された前記第一オブジェクトまたは特定された前記同一オブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出し、
抽出したオブジェクトおよび前記同一オブジェクトを、前記第一オブジェクトの移動に対応して移動する対象オブジェクトとして決定する
処理をコンピュータが実行することを特徴とする支援方法。 
【請求項１１】
複数のオブジェクトの組合せから第一オブジェクトの選択を受け付ける受付部と、
前記複数のオブジェクトから、前記受付部で選択された前記第一オブジェクトと形状及び姿勢が同じ同一オブジェクトを特定する特定部と、
前記複数のオブジェクトのうち、前記受付部で選択された前記第一オブジェクトまたは前記特定部により特定された前記同一オブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出する抽出部と、
前記抽出部により抽出されたオブジェクトおよび前記特定部により特定された前記同一オブジェクトを、前記第一オブジェクトの移動に対応して移動する対象オブジェクトとして決定する決定部と、
を有することを特徴とする支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、支援プログラム、支援方法および支援装置に関する。
【背景技術】
【０００２】
従来から様々な機器では、ハードウェアがソフトウェアによって制御されている。このような機器の開発では、ハードウェアの設計と共に、ハードウェアを制御する制御ソフトウェアの開発が行われる。しかし、ハードウェアの実機を待って制御ソフトウェアの開発や検証を行った場合、機器の開発期間が長くなる。
【０００３】
そこで、ハードウェアの設計データを元に仮想的なシミュレーションを行うシミュレーションツールがある。このシミュレーションツールでは、例えば、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルにより制御ソフトウェアの開発や検証の支援が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２５１４１９号公報
【特許文献２】特開２０１１−２１６０２４号公報
【特許文献３】特開２０１４−０９２９０５号公報
【特許文献４】特開平０５−２５８０２１号公報
【特許文献５】特開２００８−１３４９４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の技術では、仮想的なハードウェアモデルから関節部品を構成する移動可能な部品をユーザがそれぞれ指定する。このため、例えば、移動可能な部品が多数ある場合、部品の指定に手間がかかる。また、例えば、制御ソフトウェアを開発する場合、ソフトウェアの開発者が、仮想的なハードウェアモデルから移動可能な部品の指定を行う。しかし、ソフトウェアの開発者は、ハードウェアに詳しくない場合もあり、移動可能な部品の指定に手間がかかる。
【０００６】
一つの側面では、移動可能な部品の指定の手間を軽減できる支援プログラム、支援方法および支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、支援プログラムは、コンピュータに、複数のオブジェクトの組合せから第一オブジェクトの選択を受け付ける処理を実行させる。支援プログラムは、コンピュータに、複数のオブジェクトのうち、選択された第一オブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出する処理を実行させる。支援プログラムは、コンピュータに、抽出したオブジェクトを、第一オブジェクトの移動に対応して移動する対象オブジェクトとして決定する処理を実行させる。
【発明の効果】
【０００８】
本発明の一の実施態様によれば、移動可能な部品の指定の手間を軽減できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、支援装置の概略的な構成を示す図である。
【図２】図２は、設計データに記憶された各部品による仮想的なハードウェアモデルの一例を示した図である。
【図３】図３は、設計データに記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。
【図４】図４は、間接部品情報に記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。
【図５】図５は、駆動部品の指定の一例を示す図である。
【図６】図６は、移動可能な部品の選択の一例を示す図である。
【図７】図７は、部品の表示、非表示の切り替えの一例を示す図である。
【図８】図８は、スライド方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。
【図９】図９は、回転軸方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。
【図１０】図１０は、接触する部品の抽出の一例を示す図である。
【図１１】図１１は、接触する部品の抽出の一例を示す図である。
【図１２】図１２は、接触する部品の抽出の一例を示す図である。
【図１３】図１３は、固定部品の抽出の一例を示す図である。
【図１４Ａ】図１４Ａは、駆動部品の選択および駆動に関する定義の一例を示す図である。
【図１４Ｂ】図１４Ｂは、部品の抽出範囲の指定の一例を示す図である。
【図１４Ｃ】図１４Ｃは、部品の抽出の一例を示す図である。
【図１４Ｄ】図１４Ｄは、部品の抽出の一例を示す図である。
【図１４Ｅ】図１４Ｅは、部品の抽出の一例を示す図である。
【図１４Ｆ】図１４Ｆは、表示画面の一例を示す図である。
【図１４Ｇ】図１４Ｇは、再抽出結果の一例を示す図である。
【図１４Ｈ】図１４Ｈは、関節部品を構成する各部品の一例を示す図である。
【図１５Ａ】図１５Ａは、支援処理の手順の一例を示すフローチャートである。
【図１５Ｂ】図１５Ｂは、対象アッセンブリ判別処理の手順の一例を示すフローチャートである。
【図１５Ｃ】図１５Ｃは、初期処理の手順の一例を示すフローチャートである。
【図１５Ｄ】図１５Ｄは、部品情報の初期化処理の手順の一例を示すフローチャートである。
【図１５Ｅ】図１５Ｅは、選択関節情報の初期化処理の手順の一例を示すフローチャートである。
【図１５Ｆ】図１５Ｆは、固定部品判定処理の手順の一例を示すフローチャートである。
【図１５Ｇ】図１５Ｇは、スライド用固定部品判定処理の手順の一例を示すフローチャートである。
【図１５Ｈ】図１５Ｈは、回転用固定部品判定処理の手順の一例を示すフローチャートである。
【図１５Ｉ】図１５Ｉは、抽出処理の手順の一例を示すフローチャートである。
【図１５Ｊ】図１５Ｊは、経路延長処理の手順の一例を示すフローチャートである。
【図１５Ｋ】図１５Ｋは、経路接続判定処理の手順の一例を示すフローチャートである。
【図１６】図１６は、支援プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる支援プログラム、支援方法および支援装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
実施例１に係る支援装置１０について説明する。図１は、支援装置の概略的な構成を示す図である。支援装置１０は、機器の開発を支援する装置である。本実施例では、機器のハードウェアの設計データを元に、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを生成し、制御ソフトウェアの開発や検証を支援する場合を例に説明する。なお、支援装置１０は、機器の製造の支援に適用してもよい。例えば、支援装置１０は、機器の製造に用いるドキュメントを作成する際の移動可能な部品の指定に適用してもよい。
【００１２】
支援装置１０は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータなどである。支援装置１０は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。本実施例では、支援装置１０を１台のコンピュータとした場合を例として説明する。支援装置１０は、例えば、開発中の機器のハードウェアを制御する制御ソフトウェアを開発する開発者が使用するコンピュータである。なお、支援装置１０は、ＣＡＤ（Computer  Aided  Design）装置などのハードウェアを設計する設計ソフトウェアが動作する設計装置であってもよい。図１に示すように、支援装置１０は、入力部２０と、表示部２１と、通信Ｉ／Ｆ（インタフェース）部２２と、記憶部２３と、制御部２４とを有する。
【００１３】
入力部２０は、各種の情報を入力する入力デバイスである。入力部２０としては、マウスやキーボードなどの操作の入力を受け付ける入力デバイスが挙げられる。入力部２０は、各種の情報の入力を受付ける。例えば、入力部２０は、仮想的なハードウェアモデルに対する各種の操作の入力を受け付ける。入力部２０は、ユーザからの操作入力を受け付け、受け付けた操作内容を示す操作情報を制御部２４に入力する。
【００１４】
表示部２１は、各種情報を表示する表示デバイスである。表示部２１としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。表示部２１は、各種情報を表示する。例えば、表示部２１は、後述する３次元の仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルや操作画面など各種の画面を表示する。
【００１５】
通信Ｉ／Ｆ部２２は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部２２は、不図示のネットワークを介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部２２は、他の装置から後述する設計データ３０を受信する。例えば、通信Ｉ／Ｆ部２２は、機器のハードウェアを設計するＣＡＤ装置からハードウェアの設計したＣＡＤデータを設計データ３０として受信する。通信Ｉ／Ｆ部２２としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。なお、支援装置１０は、メモリカードなどの記憶媒体を介して設計データ３０などの情報を取得してもよい。また、設計データ３０は、入力部２０から入力されてもよい。
【００１６】
記憶部２３は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２３は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００１７】
記憶部２３は、制御部２４で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２３は、後述する仮想的なハードウェアモデルの生成、操作に関する各種の処理を実行するプログラムを記憶する。さらに、記憶部２３は、制御部２４で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２３は、設計データ３０と、関節部品情報３１とを記憶する。
【００１８】
設計データ３０は、３次元ＣＡＤにより機器のハードウェアを設計したデータである。設計データ３０には、機器を構成する部品ごとに、部品の設計情報が記憶されている。例えば、設計データ３０には、設計情報として、機器を構成する各部品の形状や、部品の位置、姿勢などが記憶されている。例えば、設計データ３０には、機器を構成する部品ごとに、部品の原点座標と、部品のローカル座標系と、形状情報とが記憶される。部品の原点座標は、３次元の仮想空間の座標において、部品に関する位置情報の原点として用いる座標を示す情報である。部品の原点座標は、部品ごとに異なってもよく、各部品で共通の原点を用いてもよい。部品のローカル座標系は、部品ごとに、部品の原点座標を基準として、３次元の仮想空間での部品の位置を規定するために用いる座標系を示す情報である。部品のローカル座標系は、部品ごとに異なってもよく、各部品で共通の座標系を用いてもよい。形状情報は、部品ごとに、部品の原点座標を基準とした部品のローカル座標系で部品の形状を示した情報である。例えば、部品の形状を３角形の組み合わせにより記憶するものとした場合、形状情報には、部品の形状を構成する各３角形の頂点座標と、各３角形の面の法線ベクトルとが記憶される。なお、支援装置１０は、機器を構成する各部品の形状から仮想的なハードウェアモデルを生成する。このため、設計データ３０には、機器を構成する各部品の形状や、部品の位置、姿勢などが記憶されていればよい。また、設計データ３０には、部品がアッセンブリに分けて記憶されていてもよい。各部品のアッセンブリへの分類は、ハードウェアの設計者に依存する。例えば、設計者は、機器内で移動が可能な関節部品の単位など、部品を判別しやすくするため、機能単位や同じ部品単位に、部品を同じアッセンブリに分ける場合がある。本実施例では、設計データ３０は、機器を構成する各部品が、例えば、搬送機能を構成する部品など、機能単位に、アッセンブリに分けられているものとする。
【００１９】
図２は、設計データに記憶された各部品による仮想的なハードウェアモデルの一例を示した図である。図２は、例えば、工場の様々な作業や工程を機械化してＦＡ（Factory  Automation）を図る機器である。図２に示すように機器は、多数の部品により構成されている。
【００２０】
図３は、設計データに記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。設計データ３０は、アッセンブリごとに、アッセンブリに分けられた部品が登録されている。例えば、アッセンブリＡは、部品Ａ１、部品Ａ２、部品Ａ３、・・・により構成されている。アッセンブリＢは、部品Ｂ１、部品Ｂ２、部品Ｂ３、・・・により構成されている。アッセンブリＣは、部品Ｃ１、部品Ｃ２、部品Ｃ３、・・・により構成されている。
【００２１】
関節部品情報３１は、移動などの動作が可能な関節部品に関する情報を記憶したデータである。例えば、関節部品情報３１は、指定された部品と共に移動すると判定された部品を記憶したデータである。
【００２２】
図４は、間接部品情報に記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。関節部品情報３１は、移動部品と判定された部品が登録されている。例えば、移動部品１は、部品Ｃ２、部品Ｃ３、部品Ｃ４、・・・、部品Ｃ５０が登録されている。
【００２３】
図１に戻り、制御部２４は、支援装置１０を制御するデバイスである。制御部２４としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２４は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２４は、表示制御部４０と、受付部４１と、特定部４２と、抽出部４３と、決定部４４とを有する。
【００２４】
表示制御部４０は、表示部２１への各種情報の表示制御を行う。例えば、表示制御部４０は、設計データ３０に基づいて、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを表示させる制御を行う。例えば、表示制御部４０は、設計データ３０に記憶された各部品の形状や、部品の位置、姿勢などの情報を用いて、各部品の外形の形状のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。また、例えば、表示制御部４０は、仮想的なハードウェアモデルを操作するための各種の操作画面を表示させる制御を行う。
【００２５】
受付部４１は、仮想的なハードウェアモデルに対する各種の操作を入力部２０から受け付ける。例えば、受付部４１は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。表示制御部４０は、受け付けた操作に応じて、ハードウェアモデルの表示を変更する。また、受付部４１は、ハードウェアモデルを構成する複数の部品のオブジェクトから駆動可能な駆動部品の選択を受け付ける。また、受付部４１は、駆動部品の駆動に関する定義の指定を受け付ける。例えば、受付部４１は、駆動部品が回転やスライド移動など、どのような駆動を行うかの駆動種別の指定と駆動方向の指定を受け付ける。例えば、駆動部品が回転する部品である場合、受付部４１は、駆動部品に対して、回転する部品であるとの駆動種別の指定と、回転軸、回転方向の指定を受け付ける。また、例えば、駆動部品がスライド移動する部品である場合、受付部４１は、駆動部品に対して、スライド移動する部品であるとの駆動種別の指定と、移動方向の指定を受け付ける。
【００２６】
図５は、駆動部品の指定の一例を示す図である。図５には、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図５の例では、部品５０がスライド移動する駆動部品であるとの駆動種別が指定され、矢印で示すようにレール方向に移動方向が指定されている。
【００２７】
なお、駆動可能な駆動部品は、予め指定されていてもよい。例えば、ハードウェアの設計者が、設計時にＣＡＤ装置から駆動部品について駆動に関する定義を登録し、設計データ３０に駆動部品について駆動に関する定義情報が記憶されていてもよい。また、駆動部品は、必ずしも指定されなくてよい。すなわち、駆動部品の指定は、必須ではない。
【００２８】
また、受付部４１は、移動可能な部品の選択を受け付ける。例えば、受付部４１は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部４１は、部品の抽出範囲を指定する。例えば、受付部４１は、設計データ３０に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。また、例えば、受付部４１は、移動しない部品の選択を受け付ける。例えば、受付部４１は、ハードウェアモデルから移動しない部品のオブジェクトの選択を受け付ける。
【００２９】
図６は、移動可能な部品の選択の一例を示す図である。図６には、図５と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図６の例では、部品５０が移動可能な部品と選択され、レールを構成する部品５１が移動しない部品と選択された場合を示している。
【００３０】
また、受付部４１は、表示されたハードウェアモデルの部品ごとに、部品の表示、非表示の切り替え操作を受け付ける。表示制御部４０は、受け付けた切り替え操作に応じて、ハードウェアモデルの部品ごとに表示、非表示を変更する。
【００３１】
図７は、部品の表示、非表示の切り替えの一例を示す図である。図７には、図５と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図７の例では、部品５０に部品５２が接触し、部品５２に部品５３が接触し、部品５３に部品５４が接触しており、部品５３が非表示に切り替えられた場合を示している。なお、図７の例では、非表示とした部品５３を点線により示している。
【００３２】
特定部４２は、各種の特定を行う。例えば、特定部４２は、設計データ３０に基づいて、ハードウェアモデルの複数の部品から、同じ形状及び同じ姿勢の部品を特定する。例えば、特定部４２は、受付部４１により移動可能な部品の選択を受け付けた場合、設計データ３０に基づいて、ハードウェアモデルの複数の部品から、移動可能な部品と同じ形状及び同じ姿勢の部品を特定する。例えば、特定部４２は、設計データ３０に基づいて、ハードウェアモデルの各部品から、移動可能な部品と同じ形状および同じ姿勢を検索する。例えば、特定部４２は、移動可能な部品を平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の部品と特定する。また、例えば、特定部４２は、受付部４１により移動しない部品の選択を受け付けた場合、設計データ３０に基づいて、ハードウェアモデルの複数の部品から、移動しない部品と同じ形状及び同じ姿勢の部品を特定する。また、例えば、特定部４２は、後述する抽出部４３により固定部品が判別された場合、設計データ３０に基づいて、ハードウェアモデルの複数の部品から、固定部品と同じ形状及び同じ姿勢の部品を特定する。また、例えば、特定部４２は、スライド移動する指定がされた駆動部品が移動可能な部品として選択された場合、駆動部品のスライド方向に沿って配置された、形状及び姿勢が同じ部品を特定する。例えば、特定部４２は、駆動部品のスライド方向に沿って平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の部品と特定する。また、例えば、特定部４２は、回転する指定がされた駆動部品が移動可能な部品として選択された場合、駆動部品の回転軸の方向に沿って配置された、形状及び姿勢が同じ部品を特定する。例えば、特定部４２は、駆動部品の回転軸に沿って平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の固定部品と特定する。なお、部品の設計情報に、部品の回転状態を示す情報がある場合、特定部４２は、回転状態も一致する部品を同じ形状及び同じ姿勢の部品と特定してもよい。
【００３３】
図８は、スライド方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。図８は、２本のレール上をスライド移動可能とされた関節部品が示されており、一方のレールと接する部品７０がレールの方向にスライド移動可能な駆動部品と指定されている。図８の例では、部品７０が移動可能な部品と選択された場合、部品７０と同じ形状および同じ姿勢の部品７１が特定される。なお、図８では、隠れているが、他方のレールにスライド移動可能に設けられた、部品７０と同じ形状および同じ姿勢の部品も特定される。
【００３４】
図９は、回転軸方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。図９は、開閉可能なドアを関節部品とした場合が示されており、ドアを支持する部品８０が上下方向を回転軸として、回転する指定がされた駆動部品と指定されている。図９の例では、部品８０が移動可能な部品と選択された場合、部品８０の回転軸の方向に沿って配置された、部品８０と同じ形状および同じ姿勢の部品８１が特定される。
【００３５】
抽出部４３は、移動可能な関節部品を抽出する。例えば、抽出部４３は、受付部４１で選択された移動可能な部品と接触する部品、接触する部品に接触する部品と順次抽出する。すなわち、抽出部４３は、ハードウェアモデルを構成する複数の部品のうち、選択された移動可能な部品から接触関係がある部品を順次抽出する。例えば、抽出部４３は、選択された移動可能な部品を判定対象部品として、設計データ３０に基づいて、判定対象部品の周囲の部品を特定する。そして、抽出部４３は、設計データ３０に基づいて、特定した周囲の部品ごとに、判定対象部品と、周囲の部品とが接触するか判定する。例えば、抽出部４３は、設計データ３０に基づいて、判定対象部品と周囲の部品とについて、それぞれ外形のポリゴンを求める。抽出部４３は、判定対象部品と周囲の部品のポリゴンに同じ座標が含まれるかを判定する。抽出部４３は、外形に同じ座標が含まれる場合、判定対象部品と周囲の部品とは接触していると判定し、当該接触している部品を抽出する。抽出部４３は、接触している部品がある場合、当該接触している部品を判定対象部品として、さらに判定対象部品に接触する部品を抽出する。これにより、移動可能な部品から接触関係がある部品のオブジェクトがハードウェアモデルから抽出される。また、抽出部４３は、移動しない部品が選択された場合、移動しない部品以外の部品を対象として接触関係がある部品を抽出する。すなわち、抽出部４３は、移動しない部品を判定対象部品にはしないで、接触関係がある部品の抽出を行う。例えば、抽出部４３は、判定対象部品の周囲の部品に移動しない部品がある場合、移動しない部品以外の周囲の部品について、判定対象部品と接触関係があるか判定する。
【００３６】
図１０は、接触する部品の抽出の一例を示す図である。図１０には、図５と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図１０に示す関節部品を構成する各部品は、隣合う部品同士が接触しているものとする。図１０の例では、部品５０が移動可能な部品と選択され、レールを構成する部品５１が移動しない部品と選択された場合を示している。この場合、レールの部品５１以外の関節部品を構成する各部品は、抽出される。図１０の例では、部品５０に部品５２が接触し、部品５２に部品５３が接触し、部品５３に部品５４が接触する。このため、部品５２〜５４が抽出される。
【００３７】
ここで、本実施例では、部品ごとに表示、非表示を変更可能としており、非表示の部品についても接触関係がある部品を抽出した場合、表示状態と接触関係が合わない場合がある。そこで、抽出部４３は、表示状態の部品を対象として接触関係がある部品を抽出する。
【００３８】
図１１は、接触する部品の抽出の一例を示す図である。図１１には、図７と同様に、部品５３が非表示に切り替えられた場合を示している。図１１の例でも、部品５０が移動可能な部品と選択され、レールを構成する部品５１が移動しない部品と選択された場合を示している。この場合、部品５３が非表示のため、部品５２は、抽出される。一方、部品５４は抽出されない。
【００３９】
また、抽出部４３は、特定部４２により移動可能な部品と同じ形状及び同じ姿勢の部品が特定された場合、特定された部品を接触関係の判定対象として、接触関係がある部品を抽出する。これにより、同じ形状及び同じ姿勢で複数の移動しない部品があり、１つが選択された場合、ハードウェアモデルから、複数の移動しない部品を除いて、移動可能な部品から接触関係がある部品のオブジェクトが抽出される。
【００４０】
ところで、接触関係がある部品を順次抽出した場合、例えば、ハードウェアモデルの全ての部品が抽出されてしまう場合がある。一般的に、移動可能な関節部品は、移動に伴う振動など関節部品の挙動を安定させるため、関節部品を支持したり、関節部品を固定する固定部品に配置される。関節部品を支持する固定部品は、一般的に、関節部品に対して大きい。そこで、抽出部４３は、固定部品を判定する。そして、抽出部４３は、固定部品を除いて、接触関係がある部品を順次抽出する。
【００４１】
例えば、関節部品がスライド移動する場合、関節部品は、関節部品のスライド移動を支えるレールなどの固定部品によって支持される。抽出部４３は、スライド移動する指定がされた部品が移動可能な部品として選択された場合、判定対象部品ごとに、周囲の部品のスライド方向に対する長さを求める。本実施例では、抽出部４３は、選択された移動可能な部品に直接接触する部品のスライド方向に対する長さを求める。そして、抽出部４３は、スライド方向に対する長さが移動可能な部品のスライド方向に対する長さに対して所定倍以上の部品を固定部品とし、固定部品以外の周囲の部品について、判定対象部品と周囲の部品とが接触していると判定する。この所定倍は、例えば、１０倍とする。所定倍は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、関節部品のスライド移動を支えるレールなどの固定部品が抽出されることを抑制できる。
【００４２】
また、例えば、関節部品が回転する場合、関節部品は、関節部品の回転軸を通過しない大きな固定部品によって回転可能に支持される。抽出部４３は、回転する指定がされた部品が移動可能な部品として選択された場合、移動可能な部品に接触する部品のうち、移動可能な部品の回転軸を通過しない部品を求める。そして、抽出部４３は、移動可能な部品の回転軸を通過しない部品のうち、最も大きい部品を固定部品と判定する。これにより、例えば、関節部品の回転移動を支える固定部品が抽出されることを抑制できる。
【００４３】
図１２は、接触する部品の抽出の一例を示す図である。図１２には、図８と同様に、２本のレール上をスライド移動可能とされた関節部品が示されており、一方のレールと接する部品７０がレールの方向にスライド移動可能な駆動部品と指定されている。図１２に示す関節部品を構成する各部品は、隣合う部品同士が接触しているものとする。図１２の例では、部品７０が移動可能な部品と選択された場合を示している。レールを構成する部品７８は、部品７０のスライド方向に対する長さが部品７０の所定倍以上であるため、固定部品とされ、接触関係の判定対象から除外される。レールを構成する部品７９は、特定部４２により部品７８と同じ形状及び同じ姿勢の固定部品と特定され、接触関係の判定対象から除外される。このため、図１２の例では、部品７０と、部品７０と同じ形状および同じ姿勢の部品７２からそれぞれ接触関係がある部品が抽出されて、部品７０、７１を含むドットパターンを付した部品が抽出される。
【００４４】
また、抽出部４３は、特定部４２により、移動可能な部品のスライド方向に沿って形状及び姿勢が同じ複数の部品が特定された場合、特定された複数の部品が配置されている部分のスライド方向の長さを求める。すなわち、抽出部４３は、複数の部品の間となる部分も含めて複数の部品のスライド方向に対する長さを求める。そして、抽出部４３は、スライド方向に対する長さが移動可能な部品のスライド方向に対する長さに対して所定倍以上の部品を固定部品とし、固定部品以外の部品について、判定対象部品と周囲の部品とが接触していると判定する。この所定倍は、例えば、１０倍とする。所定倍は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、ベルトコンベアの搬送ローラなどの固定部品が抽出されることを抑制できる。
【００４５】
図１３は、固定部品の抽出の一例を示す図である。図１３には、ベルトコンベアなどの複数の搬送ローラを構成する部品９０が配置されている。図１３の例は、部品９１が搬送ローラの配置方向にスライド移動する駆動部品と指定され、各搬送ローラを構成する部品９０のスライド方向に対する長さが部品９１のスライド方向に対する長さに対して所定倍以上の場合を示している。この場合、各搬送ローラを構成する部品９０は、固定部品とされ、接触関係の判定対象から除外される。
【００４６】
また、機器では、大きい部品が土台となる部品として使用される。土台となる部品は、移動しない固定部品となる。そこで、抽出部４３は、機器の体積の合計に対応して、土台となる部品の体積のしきい値を定め、しきい値以上の体積の部品を固定部品と判定する。例えば、抽出部４３は、体積の大きい順に部品の体積を加算し、加算した体積が全部品の体積の所定の割合となる部品を特定する。この所定の割合は、例えば、３０％とする。所定の割合は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。抽出部４３は、特定した部品の体積を固定部品のしきい値とし、土台となる固定部品を判定する。
【００４７】
また、機器では、関節部品を安定させるため、関節部品が、関節部品を覆う形状の固定部品に支持される場合がある。そこで、抽出部４３は、接触する部品が、抽出済みの部品群を覆う形状の部品である場合、固定部品と判定する。例えば、抽出部４３は、スライド移動する指定がされた部品が移動可能な部品として選択された場合、接触する部品の配置された範囲でハードウェアモデルのスライド方向に垂直な方向の断面を求める。そして、抽出部４３は、接触する部品の配置された範囲で接触する部品が、抽出済みの部品群の３面以上を覆う場合、当該接触する部品を固定部品と判定する。また、例えば、抽出部４３は、回転する指定がされた部品が移動可能な部品として選択された場合、接触する部品が、抽出済みの部品群の回転軸方向の両端を覆う場合、当該接触する部品を固定部品と判定する。
【００４８】
また、抽出部４３は、抽出済みの部品の体積の合計が、ハードウェアモデルの全部品の体積の合計に対して所定の割合以上となった場合、部品の抽出を終了する。この所定の割合は、例えば、５０％とする。所定の割合は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、ハードウェアモデルの全ての部品が抽出されることを抑制できる。
【００４９】
決定部４４は、移動可能な関節部品を構成する各部品を決定する。例えば、決定部４４は、抽出部４３により抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定する。決定部４４は、移動可能な部品と、抽出された部品を対応付けて関節部品情報３１に記憶する。
【００５０】
次に具体例を用いて説明する。以下では、図２に示したハードウェアモデルに対する移動可能な部品の指定を支援する場合を例に説明する。
【００５１】
表示制御部４０は、設計データ３０に記憶された各部品の形状や、部品の位置、姿勢などの情報を用いて、各部品の外形の形状のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。受付部４１は、仮想的なハードウェアモデルに対する各種の操作を入力部２０から受け付ける。例えば、受付部４１は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。
【００５２】
制御ソフトウェアの開発者は、入力部２０を操作して、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの各種の指示を行う。また、制御ソフトウェアの開発者は、入力部２０を操作して、駆動可能な駆動部品を選択し、選択した駆動部品の駆動に関する定義を行う。
【００５３】
図１４Ａは、駆動部品の選択および駆動に関する定義の一例を示す図である。図１４Ａには、図２に示したハードウェアモデルのＭ１部分を、視線方向を変更して拡大表示した状態が示されている。図１４Ａの例では、長尺な部品Ｃ１に設けられた部品Ｃ２が選択され、部品Ｃ１の長手方向をスライド方向と指定された場合を示している。
【００５４】
受付部４１は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部４１は、設計データ３０に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。
【００５５】
制御ソフトウェアの開発者は、入力部２０を操作して、移動可能な部品のオブジェクトを選択する。また、制御ソフトウェアの開発者は、入力部２０を操作して、部品の抽出範囲を指定する。
【００５６】
図１４Ｂは、部品の抽出範囲の指定の一例を示す図である。図１４Ｂの例では、部品Ｃ２が移動可能な部品として選択されている。また、図１４Ｂには、設計データ３０に記憶された各アッセンブリと、それぞれのアッセンブリに登録された部品がツリー構成で表示されている。例えば、制御ソフトウェアの開発者は、入力部２０を操作して、部品の抽出範囲とするアッセンブリを指定する。アッセンブリが指定された場合、指定されたアッセンブリに登録された部品の中から、部品が抽出される。一方、アッセンブリが指定されなかった場合、全アッセンブリの部品の中から、部品が抽出される。図１４Ｂの例では、部品Ｃ１、部品Ｃ２を含んだアッセンブリＣが抽出範囲と指定されている。この場合、アッセンブリＣに登録された部品から、部品が抽出される。
【００５７】
制御ソフトウェアの開発者は、入力部２０を操作して、抽出開始を指示する所定の操作を行う。例えば、制御ソフトウェアの開発者は、図１４Ｂに示す抽出開始ボタン９５を選択する。
【００５８】
抽出部４３は、ハードウェアモデルを構成する複数の部品のうち、選択された移動可能な部品から接触関係がある部品を順次抽出する。
【００５９】
図１４Ｃおよび図１４Ｄは、部品の抽出の一例を示す図である。図１４Ｃの例では、部品Ｃ２から接触関係がある部品が順次抽出されている。ここで、部品Ｃ１は、部品Ｃ２のスライド方向に対する長さが部品Ｃ２の所定倍以上であるため、固定部品とされている。また、図１４Ｄの例では、部品Ｃ９０、Ｃ９１は、抽出済みの部品群を覆う形状であるため、固定部品とされている。
【００６０】
表示制御部４０は、抽出部４３による抽出結果を表示させる制御を行う。例えば、表示制御部４０は、抽出部４３により抽出された各部品のオブジェクトを３次元の仮想空間上に配置したモデルを表示させる。
【００６１】
図１４Ｅは、部品の抽出の一例を示す図である。図１４Ｅの例では、抽出された各部品のオブジェクトを３次元の仮想空間上に配置したモデルが表示されている。
【００６２】
受付部４１は、移動可能な部品および移動しない部品の選択を受け付ける。
【００６３】
図１４Ｆは、表示画面の一例を示す図である。図１４Ｆの例では、マルチウィンドウ構成で画面１１０と画面１１１が表示されている。画面１１０には、抽出された各部品を除いて、機器全体のハードウェアモデルＣ１０１が表示されている。画面１１１には、抽出された各部品のオブジェクトを配置したモデルＣ１００が表示されている。また、画面１１１には、指定された移動しない部品を表示する指定領域１１２と、指定された移動可能な部品を表示する指定領域１１３が設けられている。例えば、制御ソフトウェアの開発者が、画面１１１に表示されたモデルから、移動しない部品のオブジェクトを選択すると、指定領域１１２には、指定された部品が移動しない部品に追加されて表示される。
【００６４】
制御ソフトウェアの開発者は、画面１１１に表示されたモデルに不足の部品がある場合、画面１１０のハードウェアモデルから不足の部品を移動可能な部品として指定する。また、制御ソフトウェアの開発者は、画面１１１に表示されたモデルに余分な部品がある場合、画面１１１のモデルＣ１００から余分な部品を移動しない部品として指定する。図１４Ｆの例では、画面１１０で部品Ｃ５０が移動可能な部品として選択され、画面１１１で部品Ｃ１０が移動しない部品として選択されている。画面１１１には、再抽出ボタン１２０と、ＯＫボタン１２１が設けられている。再抽出ボタン１２０が選択されると、抽出部４３は、接触関係がある部品を再抽出する。例えば、抽出部４３は、追加された移動可能な部品および指定済みの移動可能な部品から接触関係がある部品を再抽出する。また、抽出部４３は、追加された移動しない部品および指定済みの移動しない部品以外の部品を対象として接触関係がある部品を抽出する。
【００６５】
表示制御部４０は、抽出部４３により抽出された各部品のオブジェクトを配置したモデルを表示させる。
【００６６】
図１４Ｇは、再抽出結果の一例を示す図である。図１４Ｇの例では、移動しない部品と指定された部品Ｃ１０が画面１１０に表示され、移動可能な部品に追加された部品Ｃ５０と部品Ｃ５０に接触関係がある部品が画面１１１に表示されている。
【００６７】
ＯＫボタン１２１が選択されると、決定部４４は、抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定する。
【００６８】
図１４Ｈは、関節部品を構成する各部品の一例を示す図である。図１４Ｈの例では、部品Ｃ２や、部品Ｃ５０を含むドットパターンを付した部品が関節部品１を構成する各部品として決定される。
【００６９】
決定部４４は、移動可能な部品と、抽出された部品を対応付けて関節部品情報３１に記憶する。
【００７０】
このように、本実施例に係る支援装置１０は、関節部品を構成する移動可能な部品の指定の手間を軽減できる。
【００７１】
次に、本実施例に係る支援装置１０が移動可能な部品の指定を支援する支援処理の流れを説明する。図１５Ａは、支援処理の手順の一例を示すフローチャートである。
【００７２】
図１５Ａに示すように、表示制御部４０は、表示部２１への各種情報の表示制御を行う（Ｓ１０）。例えば、表示制御部４０は、図１４Ｂに示すによう、設計データ３０に基づいて、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。また、表示制御部４０は、設計データ３０に基づいて、部品のアッセンブリ構成を表示させる。
【００７３】
受付部４１は、入力部２０を介して各種の指定を受け付ける（Ｓ１１）。例えば、受付部４１は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。また、受付部４１は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部４１は、設計データ３０に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。
【００７４】
制御ソフトウェアの開発者は、入力部２０を操作して、移動可能な部品のオブジェクトを選択する。また、制御ソフトウェアの開発者は、入力部２０を操作して、部品の抽出範囲を指定する。例えば、制御ソフトウェアの開発者は、入力部２０を操作して、部品の抽出範囲とするアッセンブリを指定する。制御ソフトウェアの開発者は、移動可能な部品の抽出を開始する場合、抽出開始を指示する所定の操作を行う。
【００７５】
抽出部４３は、抽出開始を指示する所定の操作が行われたか否かを判定する（Ｓ１２）。所定の操作が行われていない場合（Ｓ１２否定）、上述のＳ１０へ移行する。一方、所定の操作が行われた場合（Ｓ１２肯定）、抽出部４３は、抽出対象のアッセンブリを判別する対象アッセンブリ判別処理を実行する（Ｓ１３）。
【００７６】
図１５Ｂは、対象アッセンブリ判別処理の手順の一例を示すフローチャートである。対象アッセンブリ判別処理は、例えば、図１５ＡのＳ１３から実行される。
【００７７】
図１５Ｂに示すように、抽出部４３は、抽出範囲のアッセンブリが指定されたか否かを判定する（Ｓ３０）。アッセンブリの指定が無い場合（Ｓ３０否定）、抽出部４３は、全アッセンブリを抽出対象のアッセンブリとする（Ｓ３１）。
【００７８】
一方、アッセンブリの指定がある場合（Ｓ３０肯定）、抽出部４３は、指定されたアッセンブリを抽出対象のアッセンブリとする（Ｓ３２）。Ｓ３１、Ｓ３２の処理終了後、図１５ＡのＳ１４へ移行する。
【００７９】
図１５Ａに戻り、抽出部４３は、初期処理を実行する（Ｓ１４）。
【００８０】
図１５Ｃは、初期処理の手順の一例を示すフローチャートである。初期処理は、例えば、図１５ＡのＳ１４から実行される。
【００８１】
図１５Ｃに示すように、抽出部４３は、部品情報を初期化する部品情報の初期化処理を実行する（Ｓ４０）。
【００８２】
図１５Ｄは、部品情報の初期化処理の手順の一例を示すフローチャートである。部品情報の初期化処理は、例えば、図１５ＣのＳ４０から実行される。
【００８３】
図１５Ｄに示すように、抽出部４３は、設計データ３０に記憶されている部品を順に選択する（Ｓ５０）。抽出部４３は、設計データ３０に基づき、選択された部品の体積を計算する（Ｓ５１）。抽出部４３は、選択された部品が、表示の指定がされているか否かを判定する（Ｓ５２）。表示の指定がされていない場合（Ｓ５２否定）、後述するＳ５５へ移行する。
【００８４】
一方、表示指定がされている場合（Ｓ５２肯定）、選択された部品が抽出対象のアッセンブリの配下であるか否かを判定する（Ｓ５３）。選択された部品が抽出対象のアッセンブリの配下ではない場合（Ｓ５３否定）、後述するＳ５５へ移行する。
【００８５】
一方、選択された部品が抽出対象のアッセンブリの配下である場合（Ｓ５３肯定）、抽出部４３は、選択された部品を抽出対象の部品に追加する（Ｓ５４）。
【００８６】
抽出部４３は、設計データ３０に記憶されている全部品の選択が完了したか否かを判定する（Ｓ５５）。全部品の選択が完了していない場合（Ｓ５５否定）、上述のＳ５０へ移行する。
【００８７】
一方、全部品の選択が完了した場合（Ｓ５５肯定）、抽出部４３は、設計データ３０に記憶されている全部品を体積の大きい順にソートする（Ｓ５６）。抽出部４３は、体積の大きい順に部品の体積を加算し、加算した体積が全部品の体積の所定の割合となる部品を特定する（Ｓ５７）。抽出部４３は、特定した部品の体積を固定部品のしきい値として記憶する（Ｓ５８）。Ｓ５８の処理終了後、図１５ＣのＳ４１へ移行する。
【００８８】
図１５Ｃに戻り、抽出部４３は、選択関節情報の初期化処理を実行する（Ｓ４１）。
【００８９】
図１５Ｅは、選択関節情報の初期化処理の手順の一例を示すフローチャートである。選択関節情報の初期化処理は、例えば、図１５ＣのＳ４１から実行される。
【００９０】
図１５Ｅに示すように、抽出部４３は、抽出対象の部品のなかから、選択された移動可能な部品と接触する部品を抽出する（Ｓ６０）。例えば、抽出部４３は、選択された移動可能な部品を判定対象として、設計データ３０に基づいて、抽出対象の部品のなかから、判定対象部品と接触する部品を抽出する。抽出部４３は、抽出された部品を次の判定対象部品として登録する（Ｓ６１）。Ｓ６１の処理終了後、図１５ＣのＳ４２へ移行する。
【００９１】
図１５Ｃに戻り、抽出部４３は、Ｓ６１にて登録した、次の判定対象部品が２部品以上あるか否かを判定する（Ｓ４２）。次の判定対象部品が２部品以上ある場合（Ｓ４２肯定）、固定部品を自動判定する固定部品判定処理を実行する（Ｓ４３）。Ｓ４３の処理終了後、および、次の判定対象部品が２部品以上ない場合（Ｓ４２否定）、図１５ＡのＳ１５へ移行する。
【００９２】
図１５Ｆは、固定部品判定処理の手順の一例を示すフローチャートである。固定部品判定処理は、例えば、図１５ＣのＳ４３から実行される。
【００９３】
図１５Ｆに示すように、抽出部４３は、選択された移動可能な部品が駆動部品か否かを判定する（Ｓ７０）。移動可能な部品が駆動部品である場合（Ｓ７０肯定）、抽出部４３は、選択された移動可能な部品がスライド移動する駆動部品であるか否かを判定する（Ｓ７１）。移動可能な部品がスライド移動する駆動部品である場合（Ｓ７１肯定）、スライド用固定部品判定処理を実行する（Ｓ７２）。一方、移動可能な部品がスライド移動する駆動部品ではない場合（Ｓ７１否定）、回転用固定部品判定処理を実行する（Ｓ７３）。Ｓ７２、Ｓ７３の処理終了後、および、選択された移動可能な部品が駆動部品ではない場合（Ｓ７０否定）、図１５ＡのＳ１５へ移行する。
【００９４】
図１５Ｇは、スライド用固定部品判定処理の手順の一例を示すフローチャートである。スライド用固定部品判定処理は、例えば、図１５ＦのＳ７２から実行される。
【００９５】
図１５Ｇに示すように、抽出部４３は、抽出対象の部品のなかから、選択された移動可能な部品に接触する接触部品を選択する（Ｓ８０）。抽出部４３は、選択された接触部品について移動可能な部品のスライド方向に対する長さを計算する（Ｓ８１）。特定部４２は、スライド方向に、選択された接触部品と同じ形状および同じ姿勢の部品があるか否かを判定する（Ｓ８２）。同じ形状および同じ姿勢の部品がない場合（Ｓ８２否定）、後述するＳ８４へ移行する。
【００９６】
一方、同じ形状および同じ姿勢の部品がある場合（Ｓ８２肯定）、抽出部４３は、接触部品および接触部品と同じ形状および同じ姿勢の部品が配置されている部分のスライド方向の長さを求める（Ｓ８３）。すなわち、抽出部４３は、接触部品および接触部品と同じ形状および同じ姿勢の部品の間となる部分も含めて、接触部品および接触部品と同じ形状および同じ姿勢の部品のスライド方向に対する長さを求める。
【００９７】
抽出部４３は、接触部品を全て選択したか否かを判定する（Ｓ８４）。接触部品を全て選択していない場合（Ｓ８４否定）、上述のＳ８０へ移行する。
【００９８】
一方、接触部品を全て選択した場合（Ｓ８４肯定）、抽出部４３は、スライド方向の長さが選択された移動可能な部品の所定倍以上の部品を固定部品と判定し（Ｓ８５）、図１５ＡのＳ１５へ移行する。
【００９９】
図１５Ｈは、回転用固定部品判定処理の手順の一例を示すフローチャートである。回転用固定部品判定処理は、例えば、図１５ＦのＳ７３から実行される。
【０１００】
図１５Ｈに示すように、抽出部４３は、抽出対象の部品のなかから、選択された移動可能な部品に接触する接触部品を選択する（Ｓ９０）。抽出部４３は、選択された接触部品を移動可能な部品の回転軸が通過しないか否かを判定する（Ｓ９１）。選択された接触部品を移動可能な部品の回転軸が通過する場合（Ｓ９１否定）、後述のＳ９３へ移行する。
【０１０１】
一方、選択された接触部品を移動可能な部品の回転軸が通過しない場合（Ｓ９１肯定）、抽出部４３は、選択された接触部品を固定部品の候補とする（Ｓ９２）。
【０１０２】
抽出部４３は、接触部品を全て選択したか否かを判定する（Ｓ９３）。接触部品を全て選択していない場合（Ｓ９３否定）、上述のＳ９０へ移行する。
【０１０３】
一方、接触部品を全て選択した場合（Ｓ９３肯定）、抽出部４３は、固定部品の候補のなかから、体積の最も大きい接触部品を固定部品と判定し（Ｓ９４）、図１５ＡのＳ１５へ移行する。
【０１０４】
図１５Ａに戻り、抽出部４３は、接触関係のある部品を抽出する抽出処理を実行する（Ｓ１５）。
【０１０５】
図１５Ｉは、抽出処理の手順の一例を示すフローチャートである。抽出処理は、例えば、図１５ＡのＳ１５から実行される。
【０１０６】
図１５Ｉに示すように、抽出部４３は、未判定の判定対象部品を１つ選択する（Ｓ１００）。抽出部４３は、選択した判定対象部品が関節部品を構成するかを判定する経路延長処理を実行する（Ｓ１０１）。
【０１０７】
図１５Ｊは、経路延長処理の手順の一例を示すフローチャートである。経路延長処理は、例えば、図１５ＩのＳ１０１から実行される。
【０１０８】
図１５Ｊに示すように、抽出部４３は、判定対象部品が接続可能か否かを判定する経路接続判定処理を実行する（Ｓ１１０）。
【０１０９】
図１５Ｋは、経路接続判定処理の手順の一例を示すフローチャートである。経路接続判定処理は、例えば、図１５ＪのＳ１１０から実行される。
【０１１０】
図１５Ｋに示すように、抽出部４３は、判定対象部品が、選択された移動可能な部品と同じ形状及び同じ姿勢ではないか否かを判定する（Ｓ１２０）。判定対象部品が移動可能な部品と同じ形状及び同じ姿勢である場合（Ｓ１２０否定）、抽出部４３は、判定対象部品を、関節部品を構成する部品として抽出し（Ｓ１２１）、図１５ＪのＳ１１１へ移行する。
【０１１１】
一方、判定対象部品が移動可能な部品と同じ形状及び同じ姿勢ではない場合（Ｓ１２０肯定）、抽出部４３は、判定対象部品が固定部品と同じ形状及び同じ姿勢ではないか否かを判定する（Ｓ１２２）。判定対象部品が固定部品と同じ形状及び同じ姿勢である場合（Ｓ１２２否定）、図１５ＪのＳ１１１へ移行する。
【０１１２】
一方、判定対象部品が固定部品と同じ形状及び同じ姿勢ではない場合（Ｓ１２２肯定）、抽出部４３は、判定対象部品が固定部品の両端からはみ出ていないか判定する（Ｓ１２３）。固定部品の両端からはみ出ている場合（Ｓ１２３否定）、図１５ＪのＳ１１１へ移行する。
【０１１３】
一方、固定部品の両端からはみ出ていない場合（Ｓ１２３肯定）、抽出部４３は、判定対象部品が抽出済みの部品を覆う形状ではないか判定する（Ｓ１２４）。抽出済みの部品を覆う形状である場合（Ｓ１２４否定）、図１５ＪのＳ１１１へ移行する。
【０１１４】
一方、抽出済みの部品を覆う形状ではない場合（Ｓ１２４肯定）、抽出部４３は、判定対象部品の体積が固定部品のしきい値未満否であるか判定する（Ｓ１２５）。体積が固定部品のしきい値未満ではない場合（Ｓ１２５否定）、図１５ＪのＳ１１１へ移行する。
【０１１５】
一方、体積が固定部品のしきい値未満である場合（Ｓ１２５肯定）、抽出部４３は、抽出済みの部品の体積の合計が、全部品の体積の合計の１／２未満か否であるか判定する（Ｓ１２６）。抽出済みの部品の体積の合計が、全部品の体積の合計の１／２未満ではない場合（Ｓ１２６否定）、図１５ＪのＳ１１１へ移行する。
【０１１６】
一方、抽出済みの部品の体積の合計が、全部品の体積の合計の１／２未満である場合（Ｓ１２６肯定）、抽出部４３は、判定対象部品を、関節部品を構成する部品として抽出し（Ｓ１２７）、図１５ＪのＳ１１１へ移行する。
【０１１７】
図１５Ｊに戻り、抽出部４３は、判定対象部品ごとに、移動可能な部品からの最短の経路長を求める（Ｓ１１１）。例えば、抽出部４３は、移動可能な部品と接触関係がある部品を判定対象部品まで求め、各部品の重心位置を繋いだ経路の距離を求める。そして、抽出部４３は、距離が最短の経路を移動可能な部品からの最短経路とし、距離が最短の経路の距離を最短の経路長とする。抽出部４３は、判定対象部品ごとに、最短の経路長を更新して記憶する（Ｓ１１２）。
【０１１８】
抽出部４３は、抽出対象の部品のなかから、判定対象部品と接触する部品を特定する（Ｓ１１３）。例えば、抽出部４３は、設計データ３０に基づいて、抽出対象の部品のなかから、判定対象部品と接触する部品を特定する。抽出部４３は、特定した接触している部品を判定対象部品として登録し（Ｓ１１４）、図１５ＩのＳ１１２へ移行する。
【０１１９】
図１５Ｉに戻り、抽出部４３は、未判定の判定対象部品があるか判定する（Ｓ１０２）。未判定の判定対象部品がある場合（Ｓ１０２肯定）、上述のＳ１００へ移行する。
【０１２０】
未判定の判定対象部品がない場合（Ｓ１０２否定）、図１５ＡのＳ１６へ移行する。
【０１２１】
図１５Ａに戻り、表示制御部４０は、抽出結果を表示部２１に表示させる制御を行う（Ｓ１６）。例えば、表示制御部４０は、図１４Ｆに示すように、マルチウィンドウ構成で抽出された各部品を除いて、機器全体のハードウェアモデルＣ１０１を表示した画面１１０と、抽出された各部品のオブジェクトを配置したモデルＣ１００を表示した画面１１１を表示させる。
【０１２２】
受付部４１は、入力部２０を介して各種の指定を受け付ける（Ｓ１７）。例えば、受付部４１は、画面１１０のハードウェアモデル１０１から不足の部品の移動可能な部品としての指定や、画面１１１のモデルＣ１００から余分な部品の移動しない部品としての指定を受け付ける。
【０１２３】
抽出部４３は、再抽出ボタン１２０が選択されたか否かを判定する（Ｓ１８）。再抽出ボタン１２０が選択された場合（Ｓ１８肯定）、上述のＳ１５へ移行して抽出処理を再実行する。
【０１２４】
一方、再抽出ボタン１２０が選択されていない場合（Ｓ１８否定）、ＯＫボタン１２１が選択されたか否かを判定する（Ｓ１９）。ＯＫボタン１２１が選択されていない場合（Ｓ１９否定）、上述のＳ１７へ移行する。
【０１２５】
一方、ＯＫボタン１２１が選択された場合（Ｓ１９肯定）、決定部４４は、関節部品を構成する各部品を決定する（Ｓ２０）。例えば、決定部４４は、抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定し、移動可能な部品と、抽出された部品を対応付けて関節部品情報３１に記憶し、処理を終了する。
【０１２６】
このように、支援装置１０は、複数の部品のオブジェクトの組合せから第一部品のオブジェクトの選択を受け付ける。支援装置１０は、複数の部品のオブジェクトのうち、選択された第一部品のオブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出する。支援装置１０は、抽出した部品のオブジェクトを、第一部品のオブジェクトの移動に対応して移動する対象オブジェクトとして決定する。これにより、支援装置１０は、移動可能な部品の指定の手間を軽減できる。
【０１２７】
また、支援装置１０は、第一部品のオブジェクトに接触するオブジェクトのなかから第二部品のオブジェクトの選択をさらに受け付ける。支援装置１０は、第二部品のオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置１０は、選択した第二部品のオブジェクトを除外して接触するオブジェクトを抽出できる。
【０１２８】
また、支援装置１０は、複数の部品のオブジェクトのうち、第一部品のオブジェクトと同じ形状及び同じ姿勢のオブジェクトを第一部品のオブジェクトと同じ移動を行うオブジェクトと決定する。これにより、支援装置１０は、第一部品のオブジェクトと同じ形状及び同じ姿勢で第一部品のオブジェクトと同じ移動を行うオブジェクトの指定の手間を軽減できる。
【０１２９】
また、支援装置１０は、複数の部品のオブジェクトのうち、第二部品のオブジェクトと同じ形状及び同じ姿勢のオブジェクトを特定する。支援装置１０は、第二部品のオブジェクトおよび特定されたオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置１０は、第二部品のオブジェクトと同じ形状及び同じ姿勢で第二部品のオブジェクトと同じ固定部品のオブジェクトの指定の手間を軽減できる。
【０１３０】
また、支援装置１０は、第一部品のオブジェクトが駆動される駆動方向に対する長さが第一部品のオブジェクトの所定倍未満のオブジェクトを対象として抽出を行う。これにより、支援装置１０は、第一部品を支持する固定部品を除いて、第一部品の含んだ関節部品を抽出できる。
【０１３１】
また、支援装置１０は、第一部品のオブジェクトから接触関係があるオブジェクトの内で、第一部品のオブジェクトが駆動される駆動方向に沿って配置され、形状及び姿勢が同じ複数の第三オブジェクトを特定する。支援装置１０は、配置された状態での複数の第三部品のオブジェクトの駆動方向に対する長さが第一部品のオブジェクトの駆動方向に対する長さに対して所定倍以上の場合、複数の第三部品のオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置１０は、搬送ローラなどの部品を除いて、関節部品を抽出できる。
【０１３２】
また、支援装置１０は、第一部品のオブジェクトおよび抽出済みのオブジェクトの体積の合計が、複数のオブジェクトの体積の合計に対して所定の割合以上となった場合、オブジェクトの抽出を終了する。これにより、支援装置１０は、機器の部品全体が抽出されることを抑制できる。
【０１３３】
また、支援装置１０は、土台となるオブジェクトに接触するオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置１０は、土台となる部品を除いて、関節部品を抽出できる。
【０１３４】
また、支援装置１０は、土台となるオブジェクトを、オブジェクトの体積が、複数のオブジェクトの体積の合計に対応して定まる所定のしきい値以上のオブジェクト、または、対象オブジェクトとして特定したオブジェクト群を覆う形状のオブジェクトとする。これにより、支援装置１０は、土台となる部品を判別できる。
【実施例２】
【０１３５】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１３６】
例えば、上記の実施例では、抽出部４３が、選択された移動可能な部品に直接接触する部品のスライド方向に対する長さを求めて固定部品を判定する場合を例に説明したが、開示の装置はこれに限定されない。例えば、抽出部４３は、順次抽出される接触関係がある部品のスライド方向に対する長さを求めて固定部品を抽出してもよい。
【０１３７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す表示制御部４０、受付部４１、特定部４２、抽出部４３および決定部４４の各処理部が適宜統合または分割されてもよい。また、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１３８】
［支援プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１６は、支援プログラムを実行するコンピュータを示す図である。
【０１３９】
図１６に示すように、コンピュータ３００は、ＣＰＵ３１０、ＨＤＤ（Hard  Disk  Drive）３２０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３１０〜３４０の各部は、バス４００を介して接続される。
【０１４０】
ＨＤＤ３２０には上記実施例の各処理部と同様の機能を発揮する支援プログラム３２０ａが予め記憶される。例えば、上記実施例の表示制御部４０、受付部４１、特定部４２、抽出部４３および決定部４４と同様の機能を発揮する支援プログラム３２０ａを記憶させる。なお、支援プログラム３２０ａについては、適宜分離しても良い。
【０１４１】
また、ＨＤＤ３３０は、各種データを記憶する。例えば、ＨＤＤ３３０は、ＯＳや各種データを記憶する。
【０１４２】
そして、ＣＰＵ３１０が、支援プログラム３２０ａをＨＤＤ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、支援プログラム３２０ａは、実施例の表示制御部４０、受付部４１、特定部４２、抽出部４３および決定部４４と同様の動作を実行する。
【０１４３】
なお、上記した支援プログラム３２０ａについては、必ずしも最初からＨＤＤ３２０に記憶させることを要しない。支援プログラム３２０ａはＨＤＤ３３０に記憶させてもよい。
【０１４４】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、Compact  Disk  Read  Only  Memory（ＣＤ−ＲＯＭ）、Digital  Versatile  Disk（ＤＶＤ）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１４５】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１４６】
１０  支援装置
２０  入力部
２１  表示部
２２  通信Ｉ／Ｆ部
２３  記憶部
２４  制御部
３０  設計データ
３１  関節部品情報
４０  表示制御部
４１  受付部
４２  特定部
４３  抽出部
４４  決定部
【図１】
0006582530.tif 000002
【図２】
0006582530.tif 000003
【図３】
0006582530.tif 000004
【図４】
0006582530.tif 000005
【図５】
0006582530.tif 000006
【図６】
0006582530.tif 000007
【図７】
0006582530.tif 000008
【図８】
0006582530.tif 000009
【図９】
0006582530.tif 000010
【図１０】
0006582530.tif 000011
【図１１】
0006582530.tif 000012
【図１２】
0006582530.tif 000013
【図１３】
0006582530.tif 000014
【図１４Ａ】
0006582530.tif 000015
【図１４Ｂ】
0006582530.tif 000016
【図１４Ｃ】
0006582530.tif 000017
【図１４Ｄ】
0006582530.tif 000018
【図１４Ｅ】
0006582530.tif 000019
【図１４Ｆ】
0006582530.tif 000020
【図１４Ｇ】
0006582530.tif 000021
【図１４Ｈ】
0006582530.tif 000022
【図１５Ａ】
0006582530.tif 000023
【図１５Ｂ】
0006582530.tif 000024
【図１５Ｃ】
0006582530.tif 000025
【図１５Ｄ】
0006582530.tif 000026
【図１５Ｅ】
0006582530.tif 000027
【図１５Ｆ】
0006582530.tif 000028
【図１５Ｇ】
0006582530.tif 000029
【図１５Ｈ】
0006582530.tif 000030
【図１５Ｉ】
0006582530.tif 000031
【図１５Ｊ】
0006582530.tif 000032
【図１５Ｋ】
0006582530.tif 000033
【図１６】
0006582530.tif 000034