(57)【要約】【課題】  より効率のよい作業指示を生成することができる技術を提供する。【解決手段】  作業指示生成装置であって、複数の部品と、部組と、製品と、を含む隣接関係情報と、部品および部組の幾何情報と、部品および部組ごとに過去に実施した際の作業ステップ情報と、を記憶する記憶部と、隣接関係情報を用いて製品のベース部品を設定するベース部品設定部と、ベース部品に対する位置情報を用いて部組を含む作業区分を複数設定し、作業区分ごとに過去に実施した類似する作業ステップを特定し、過去に実施した作業ステップの順に応じて作業ステップを設定する作業ステップ設定部と、作業ステップにおける組付順序を隣接関係情報を用いて特定する組立シーケンス生成部と、組付順序に応じた三次元アニメーションの生成部と、三次元アニメーションを出力する出力部と、を備えることを特徴とする。【選択図】図１
2018180693.tif 000002
【特許請求の範囲】
【請求項１】
複数の部品と、前記部品の組合せである部組と、前記部品と前記部組の組合せである製品と、を含む隣接関係情報と、
前記部品および前記部組の幾何情報と、
前記部品および前記部組ごとに過去に実施した際の作業ステップ情報と、を記憶する記憶部と、
前記隣接関係情報を用いて前記製品のベース部品を設定するベース部品設定部と、
前記ベース部品に対する位置情報を用いて前記部組を含む作業区分を複数設定し、前記作業区分ごとに、含まれる前記部組の幾何情報に係るベクトルが類似する過去に実施した作業ステップを特定し、前記過去に実施した作業ステップの順に応じて作業ステップを設定する作業ステップ設定部と、
前記作業ステップにおける前記部品と前記部組の組み付け順序を前記部品および前記部組間の前記隣接関係情報を用いて特定する組立シーケンス生成部と、
前記組み付け順序に応じた作業指示を含む三次元アニメーションを生成する三次元アニメーション生成部と、
前記三次元アニメーションを用いて作業指示を工程ごとに出力する出力部と、
を備えることを特徴とする作業指示生成装置。
【請求項２】
請求項１に記載の作業指示生成装置であって、
前記ベース部品設定部は、さらに、
前記作業区分ごとに、前記部品および前記部組間の前記隣接関係情報を用いて、当該作業区分に含まれる部組に対して作業区分のベース部品を再帰的に設定し、
前記作業ステップ設定部は、さらに、
前記作業区分のベース部品に対する前記位置情報を用いて前記部組を含む作業区分を再帰的に設定し、当該作業区分ごとに、前記過去に実施した類似の作業ステップの順と類似する作業ステップを設定する、
ことを特徴とする作業指示生成装置。
【請求項３】
請求項１に記載の作業指示生成装置であって、
前記組立シーケンス生成部は、
前記部品および前記部組間の隣接関係について前記部品および前記部組をノードとして幾何的な隣接関係にあるノード間をエッジで繋げた隣接グラフを生成し、
前記ノードおよび前記エッジの各々に評価値を付与して前記組み付け順序を生成する、
ことを特徴とする作業指示生成装置。
【請求項４】
請求項１に記載の作業指示生成装置であって、
前記幾何情報には、少なくとも、前記部品および前記部組の体積と、外包直方体の体積と、が含まれ、
前記作業ステップ設定部は、前記部組の幾何情報に係るベクトルの類似性を、前記部組の体積と、前記外包直方体の体積に対する容積率と、を用いて評価する、
ことを特徴とする作業指示生成装置。
【請求項５】
請求項１に記載の作業指示生成装置であって、
前記幾何情報には、少なくとも、前記部品および前記部組の体積と、外包直方体の体積と、が含まれ、
前記作業ステップ設定部は、前記部組の体積と、前記外包直方体の体積に対する容積率と、に係る部組のベクトルの類似性を、内積を用いて評価する、
ことを特徴とする作業指示生成装置。
【請求項６】
請求項１に記載の作業指示生成装置であって、
前記幾何情報には、少なくとも、前記部品および前記部組の体積と、外包直方体の体積と、が含まれ、
前記作業ステップ設定部は、前記部組の体積と、前記外包直方体の体積に対する容積率と、に係る部組のベクトルの類似性を、ユークリッド距離を用いて評価する、
ことを特徴とする作業指示生成装置。
【請求項７】
請求項１に記載の作業指示生成装置であって、
前記幾何情報には、少なくとも、前記部品および前記部組の体積と、外包直方体の体積と、が含まれ、
前記作業ステップ設定部は、前記部組の体積と、前記外包直方体の体積に対する容積率と、に係る部組のベクトルの類似性を、サポートベクターマシンを用いて評価する、
ことを特徴とする作業指示生成装置。
【請求項８】
作業指示を生成する作業指示生成装置を用いた作業指示生成方法であって、
前記作業指示生成装置は、
複数の部品と、前記部品の組合せである部組と、前記部品と前記部組の組合せである製品と、を含む隣接関係情報と、
前記部品および前記部組の幾何情報と、
前記部品および前記部組ごとに過去に実施した際の作業ステップ情報と、を記憶する記憶部と、制御部と、を備え、
前記制御部は、
前記隣接関係情報を用いて前記製品のベース部品を設定するベース部品設定手順と、
前記ベース部品に対する位置情報を用いて前記部組を含む作業区分を複数設定し、前記作業区分ごとに、含まれる前記部組の幾何情報に係るベクトルが類似する過去に実施した作業ステップを特定し、前記過去に実施した類似する作業ステップの順に応じて作業ステップを設定する作業ステップ設定手順と、
前記作業ステップにおける前記部品と前記部組の組み付け順序を前記部品および前記部組間の前記隣接関係情報を用いて特定する組立シーケンス生成手順と、
前記組み付け順序に応じた作業指示を含む三次元アニメーションを生成する三次元アニメーション生成手順と、
前記三次元アニメーションを用いて作業指示を工程ごとに出力する出力手順と、
を実施することを特徴とする作業指示生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作業指示生成装置および作業指示生成方法に関する。
【背景技術】
【０００２】
特許文献１には、組み付け順序の情報を用いて組立ロボットの組み付けの作業手順を整理し、作業コストを計算して効率の良い最適経路を探索する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２６３９５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１に記載された技術では、複数の工程を含む既存の作業環境が考慮されないので、部品点数が多くなると、最適とされた作業手順を作業環境の工程に合うよう人力で再構成する必要がある。
【０００５】
本発明の目的は、より効率のよい作業指示を生成することができる技術を提供することにある。
【課題を解決するための手段】
【０００６】
本願は、上記課題の少なくとも一部を解決する手段を複数含んでいるが、その例を挙げるならば、以下のとおりである。上記課題を解決すべく、本発明の一態様に係る作業指示生成装置は、複数の部品と、上記部品の組合せである部組と、上記部品と上記部組の組合せである製品と、を含む隣接関係情報と、上記部品および上記部組の幾何情報と、上記部品および上記部組ごとに過去に実施した際の作業ステップ情報と、を記憶する記憶部と、上記隣接関係情報を用いて上記製品のベース部品を設定するベース部品設定部と、上記ベース部品に対する位置情報を用いて上記部組を含む作業区分を複数設定し、上記作業区分ごとに、含まれる上記部組の幾何情報に係るベクトルが類似する過去に実施した作業ステップを特定し、上記過去に実施した作業ステップの順に応じて作業ステップを設定する作業ステップ設定部と、上記作業ステップにおける上記部品と上記部組の組み付け順序を上記部品および上記部組間の上記隣接関係情報を用いて特定する組立シーケンス生成部と、上記組み付け順序に応じた作業指示を含む三次元アニメーションを生成する三次元アニメーション生成部と、上記三次元アニメーションを用いて作業指示を工程ごとに出力する出力部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、より効率のよい作業指示を生成することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係る作業指示生成システムの構成例を示す図である。
【図２】３Ｄモデル情報のデータ構造の例を示す図である。
【図３】部品種別情報のデータ構造の例を示す図である。
【図４】工程別３Ｄ作業指示生成装置のハードウェア構成の例を示す図である。
【図５】工程別３Ｄ作業指示生成処理の動作フローの例を示す図である。
【図６】３Ｄモデルの例を示す図である。
【図７】アセンブリグラフの例を示す図である。
【図８】部組を含むアセンブリグラフの例を示す図である。
【図９】組立シーケンス生成処理の動作フローを示す図である。
【図１０】ベース部品と作業ステップを含むアセンブリグラフの例を示す図である。
【図１１】計算用部品構成の設定定義画面の例を示す図である。
【図１２】作業指示の計算結果確認画面の例を示す図である。
【図１３】事例データをもとにした工程別３Ｄ作業指示生成の処理例を示す図である。
【図１４】事例データの分析における特徴ベクトルの例を示す図である。
【図１５】事例データを用いて分析したアセンブリグラフの例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る一つの実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。また、「Ａからなる」、「Ａよりなる」、「Ａを有する」、「Ａを含む」と言うときは、特にその要素のみである旨明示した場合等を除き、それ以外の要素を排除するものでないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。
【００１０】
一般に、製造業では製品の組立手順を作業者に判り易く示す必要がある。このような組立手順の指示においては、２次元の組み立て図面よりも３次元モデルを利用する方が、部品の位置関係や組付け方向が視覚的にわかりやすい。例えば３次元アニメーションのように一連の組立手順を動画で示す作業指示方法や、３次元モデルをもとに組立順序に沿って作成した斜視図を利用した説明図で示す作業指示方法などが利用されている。以下、これら３次元モデルを利用した作業指示方法を３Ｄ作業指示と表現する。
【００１１】
また、製品の組立手順は大きく分けると２つの工程がある。最終組立を行う総組の工程と、総組の工程以前に複数の部品を一つのユニット（サブアセンブリ）として組み立てる部組の工程である。これら複数の工程が段階的に階層として繋げられて工程のフローとされる。作業指示する際には、この工程フローにおいて、それぞれの工程ごとの具体的な組立手順などの作業指示を行うことが多い。
【００１２】
このように、工程ごとの３Ｄ作業指示（以下、工程別３Ｄ作業指示と表現することがある）を作成することが必要となるが、一般に、３次元ＣＡＤ（Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ）データの部品構成ツリーは組立順序ではなく、また必ずしも工程ごとに纏まった部品構成ツリーにはなっていない。
【００１３】
そのため、３Ｄ作業指示の作成においては、その３次元ＣＡＤデータをもとに工程となる作業の纏まりと、工程間および工程内の組立順序とをよく検討して、３次元ＣＡＤの部品構成ツリーを参照しながら編集する作業が必要となる。また、その編集した結果をもとに各部品の動きを設定しアニメーションを作成し、その工程ごとの組立順序の説明図を作成するといった作業が必要となる。そのため、３Ｄ作業指示には膨大な時間とコストがかかる。
【００１４】
このような３Ｄ作業指示を補助する情報処理技術としては、例えば、分解定義情報に、基本工程及び中間工程の移動座標系、その座標系に沿った部品若しくは部品群及び工程用部品グループの移動位置を付加することで、分解アルゴリズムを生成する技術があるが、対話型の画面に基づき工程を定義するものが多く、例えば数千の部品から成る部品数の多い製品の場合は、この定義作業にも作業工数を要する。
【００１５】
以下に、本発明に係る実施形態を適用した工程別３Ｄ作業指示生成システム１の例について、図面を参照して説明する。
【００１６】
図１は、本発明の実施形態に係る作業指示生成システムの構成例を示す図である。工程別３Ｄ作業指示生成システム１においては、工程別３Ｄ作業指示生成装置１００と、工程別３Ｄ作業指示生成装置１００とＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）あるいはインターネット等のネットワーク２１０を介して通信可能な３ＤＣＡＤ装置２００と、を連携させて動作させることが可能となっている。
【００１７】
なお、本実施形態において、３ＤＣＡＤ装置２００は、例えば独立して動作可能なＣＡＤ装置であってもよいし、ＣＡＤ機能により生成されたモデル情報を格納する記憶装置を備える装置であってもよい。あるいは、３ＤＣＡＤ装置２００は、工程別３Ｄ作業指示生成装置１００と一体となって動作するものであってもよい。
【００１８】
ネットワーク２１０は、例えばＬＡＮ、無線ＬＡＮ等の通信路である。なお、３ＤＣＡＤ装置２００と、工程別３Ｄ作業指示生成装置１００と、の間の通信は、ネットワーク２１０を介するものに限られず、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの有線通信路あるいはＢｌｕｅｔｏｏｔｈ等の無線通信路であってもよい。
【００１９】
工程別３Ｄ作業指示生成装置１００は、例えば独立して動作可能な汎用計算機である。工程別３Ｄ作業指示生成装置１００は、演算部１１０と、記憶部１３０と、入力部１４０と、表示部１５０と、通信部１６０と、を含む。
【００２０】
演算部１１０は、３Ｄモデル情報取得部１１１と、部品種別分類部１１２と、部品間隣接関係（アセンブリグラフ）生成部１１３と、事例データ分析部１１４と、部品構成編集部１１５と、ベース部品設定部１１６と、作業ステップ計算部１１７と、部組・作業ステップ設定部１１８と、組立シーケンス生成部１１９と、３Ｄアニメーション生成部１２０と、を含む。
【００２１】
記憶部１３０は、３Ｄモデル情報１３１と、部品種別情報１３２と、解析計算プログラム１３３と、計算条件情報１３４と、組立順序作成済みの事例データ１３５と、を含む。
【００２２】
図２は、３Ｄモデル情報のデータ構造の例を示す図である。３Ｄモデル情報１３１には、識別子１３１ａと、分類１３１ｂと、項目１３１ｃと、値１３１ｄと、が含まれる。なお、３Ｄモデルとは、部品を組み付けることにより完成する組立完成品を３Ｄモデル化し、その構成部品とその構造とを特定する情報である。ここで、本実施形態においては、３Ｄモデルの対象となる対象部品は１つの部品モデルではなく、複数の部品から構成される組立品であるアセンブリモデルを含むものとする。なお、３Ｄモデル情報１３１は、データベースにより構成されていてもよいし、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）により構成されていてもよい。
【００２３】
識別子１３１ａは、３Ｄモデルの構成情報を識別する情報である。分類１３１ｂは、３Ｄモデルで表される部品に関連する項目のカテゴリを示す情報である。本実施形態においては、分類１３１ｂには、部品属性、形状特徴、部品配置、部品構成、部品間隣接関係、計算用部品構成、等の分類があるが、これに限られず、部品の組立に関連する情報が格納される。
【００２４】
項目１３１ｃは、３Ｄモデルで表される部品に関連する項目を示す情報である。本実施形態においては、項目１３１ｃには、部品ＩＤ、階層番号、モデル名、モデル形状ファイルパス、部品図番、部品タイトル、材質等の部品属性に関する項目や、体積、表面積、最大長、重心、バウンディングボックス（部品を外包する境界となる直方体の８頂点の座標）の８頂点の座標等の形状特徴に関する項目等、様々な項目が含まれる。なお、部品属性には、その他、材質に応じた比重や、部品種別が含まれるものであってもよい。また、形状特徴には、質量、主慣性モーメント、慣性主軸、等の項目が含まれていてよい。
【００２５】
ここで、モデル形状ファイルパスとは、３Ｄモデル情報取得部１１１において、テキスト情報の３Ｄモデル情報１３１とともに、３ＤＣＡＤ装置から部品単位でモデル形状ファイルを変換し、そのファイルパスを格納する。なお、モデル形状ファイルは、例えば、ＳＴＬ（Ｓｔａｎｄａｒｄ Ｔｒｉａｎｇｕｌａｔｅｄ Ｌａｎｇｕａｇｅ）や、そのほかＳＴＥＰ、ＰＡＲＡＳＯＬＩＤ、ＪＴ、ＸＶＬなど３ＤＣＡＤ装置２００から変換可能な３次元形状データファイルフォーマットでよい。このモデル形状ファイルは、部品構成編集部１１５、ベース部品設定部１１６、部組・作業ステップ設定部１１８、などにおいて、必要に応じて３Ｄモデル形状を確認する際に利用する。また組立シーケンス生成部１１９、３Ｄアニメーション生成部１２０での干渉チェックなどの計算および計算結果を表示する際に３Ｄモデル形状を利用する。
【００２６】
同様に、項目１３１ｃには、部品の原点、ＸＹＺ軸上の座標軸等の部品配置に関する項目、親部品ＩＤや子部品ＩＤ等の部品構成に関する項目、拘束要素種別、拘束要素を含む部品ＩＤ、被拘束部品ＩＤ、拘束面法線、拘束面原点等の部品間隣接関係に関する項目、等の項目が含まれる。
【００２７】
なお、部品配置は、組立完成品の最終位置での部品の位置・姿勢を示すものである。また部品構成には、部組（サブアセンブリ）として扱うフラグ、計算対象外を示すフラグ（３ＤＣＡＤモデル上では非表示や抑制を示す情報など）、組立の順等、計算対象とする部品の纏まりや計算対象範囲を定義する情報を含めることができる。
【００２８】
また、部品間隣接関係とは、アセンブリモデルをモデリングする際に設定するアセンブリ拘束情報であり、モデリングする際に設計者が設定した情報だけではなく、アセンブリモデルをもとに部品と部品のクリアランス解析によって取得した情報であってもよい。例えば、クリアランス解析の一方式としては、設定した閾値をもとにモデリングされた部品の各面からクリアランス距離内にある別のモデルを探索し、探索の結果得られた隣接部品の面（平面、円筒面、円錐面など）の位置、姿勢の情報を作成する方式が挙げられる。なお、アセンブリ拘束とクリアランス解析の情報で得た拘束面情報は、平面の場合は、そのモデルの外側に向いた拘束面法線ベクトルとして面上の点を拘束面原点に取得し、円筒面の場合は、その円筒の軸方向を拘束面法線ベクトルとして軸上の点を拘束面原点とすることが望ましい。
【００２９】
また、分類１３１ｂの計算用部品構成は、工程別３Ｄ作業指示における工程ごとの組立順序を計算するためのデータ構造であり、項目１３１ｃには、計算対象を示す計算用部品構成ＩＤと、その計算対象の部品構成を示す親部品ＩＤと、その親部品ＩＤ内の構成となる子部品ＩＤとを含む。また設定した作業ステップの順番を示す作業ステップＮｏ．と、工程内で最初に組み付ける部品を示すベース部品を示すフラグ等の項目が格納されるものであってよい。
【００３０】
値１３１ｄは、３Ｄモデルで表される部品に関連する項目ごとの具体的な値の情報である。
【００３１】
図３は、部品種別情報のデータ構造の例を示す図である。部品種別情報１３２には、ＩＤ１３２ａと、部品種別名称１３２ｂと、３ＤＣＡＤモデルの部品属性の判定条件１３２ｃと、分解対象外フラグ１３２ｈと、が含まれる。
【００３２】
ＩＤ１３２ａは、部品種別を特定する情報である。部品種別名称１３２ｂは、部品種別の名称を特定する情報である。３ＤＣＡＤモデルの部品属性の判定条件１３２ｃには、部品種別を引き当てるための情報として、３ＤＣＡＤの部品属性（モデル名１３２ｄ、部品図番１３２ｅ、部品名のタイトル１３２ｆ）と、３ＤＣＡＤの形状特徴(寸法条件１３２ｇ)の項目が含まれる。なお、３ＤＣＡＤモデルの部品属性の判定条件１３２ｃのうち、条件項目が無い項目については、部品属性の判定において考慮しない項目である。
【００３３】
ここで、部品図番１３２ｅ、部品名のタイトル１３２ｆは、３ＤＣＡＤのパートモデルあるいはアセンブリモデルにユーザが任意に定義したテキスト情報である。また、モデル名１３２ｄ、部品名のタイトル１３２ｆなど文字列の部品属性においては、すべての文字列の完全一致だけではなく、部分一致で引き当てる場合もあることから、任意の文字を示すワイルドカード文字（アスタリスク記号など）を含む文字列（例えば、正規表現等により表される文字列）を格納するものとしてよい。なお、３ＤＣＡＤモデルの部品属性の判定条件１３２ｃに、文字列条件を追加して、完全一致、前方一致、後方一致などの一致条件の指定を格納可能にしてもよい。
【００３４】
また、図３では、３ＤＣＡＤの形状特徴としては、寸法条件１３２ｇを示しているが、これに限られない。例えば、パートモデルにおけるバウンディングボックス頂点、重心、主慣性モーメントなど３ＤＣＡＤモデルを計算することで取得できる質量特性を含むものとしてもよい。また数値での判定に際しては、等しい、以下、より大きいなどの範囲を示す条件付け、あるいは条件の論理積（ＡＮＤ）および論理和（ＯＲ）等の条件を含めた条件付けを含むものとしても良い。
【００３５】
なお、分解対象外フラグ１３２ｈには、工程別３Ｄ作業指示生成において計算する組立順序生成の過程において、分解可否を判定し分解順序・動作を計算し、その分解順序を組立順序に変換するが、その分解の計算対象とするか否かのフラグである。例えば、ＩＤ８の行に記載したリベットは別工程で加工されたものであり、組立工程の作業指示としては計算対象外とする、あるいはＩＤ９の行に記載したコンデンサは購入品であり組立工程の作業指示としては計算対象外とする、といった判定を部品種別情報１３２の条件にて判定する。
【００３６】
解析計算プログラム１３３、計算条件情報１３４には、それぞれ、演算部１１０で用いられる解析計算プログラム、計算条件情報が記憶される。計算条件情報１３４には、部品種別や部品の大きさ、部品の配置位置の並び順、部品間の隣接関係にもとづき設定された計算条件情報が記憶される。
【００３７】
組立順序作成済みの事例データ１３５には、工程別３Ｄ作業指示生成装置１００で作成された組立シーケンス生成結果をもとに、実際の作業指示として利用するために、工程ごとの作業ステップと、作業ステップ内の組立順序と、を編集した結果得られた複数の事例データが格納される。なお、事例データは工程別３Ｄ作業指示生成装置の入力データをもとに計算した組立シーケンスを編集したものが望ましい。いいかえると、事例データは、部組ごとに過去に実施した際の作業ステップ情報である。
【００３８】
図１の工程別３Ｄ作業指示生成装置１００の演算部１１０において、３Ｄモデル情報取得部１１１は、図２に示した３Ｄモデル情報のデータ構造のうち、必要な情報を取得する。部品種別分類部１１２は、取得した３Ｄモデル情報に対し、図３に示した部品種別情報１３２に沿って、各パートモデルの部品種別を分類する。
【００３９】
部品間隣接関係（アセンブリグラフ）生成部１１３は、取得した３Ｄモデル情報を用いて配置関係、隣接関係を抽出して部品をノード、部品間の隣接関係をエッジとするグラフ構造データを生成する。
【００４０】
事例データ分析部１１４は、組立順序作成済みの事例データ１３５において、作成された工程（部組の構成）、作業ステップ、ベース部品、組立順序などを参照するための分析を行い、その工程、作業ステップ、ベース部品、組立順序の属性情報とともに、その部品および部組および作業ステップにおける部品属性、部品間隣接関係を特徴ベクトルとして出力する。
【００４１】
部品構成編集部１１５は、３ＤＣＡＤ装置２００から取得した３ＤＣＡＤの部品構成に対し、計算用部品構成に編集する処理であり、その処理結果を図２の３Ｄモデル情報１３１のデータ構造の計算用部品構成に格納する。
【００４２】
ベース部品設定部１１６は、製品の組立において、最初に置く部品または部組を設定する。言い換えると、組立順序を計算する際に、分解順序を計算した上で逆変換して組立順序とするため、分解においては、最後まで残る部品を設定するものである。ベース部品設定部１１６は、隣接関係情報を用いて製品のベース部品を設定する。
【００４３】
作業ステップ計算部１１７は、組立順序を計算する際に、大まかな作業ステップを区分けするための計算を行う。例えば、箱形の製品の組立において、はじめに箱の内側の作業を行うのか、箱の外側の作業を行うのか、箱の側面あるいは底面の作業を行うのか、についての判断は部品の幾何的な配置や形状のみから計算することは困難である。作業ステップ計算部１１７は、部品間の隣接関係を用いて作業ステップを計算する。また、作業ステップ計算部１１７は、事例データ分析部１１４から得た作業ステップの事例データをもとに計算対象の作業ステップを計算する。
【００４４】
部組・作業ステップ設定部１１８は、取得した３Ｄモデル情報１３１の部品構成において、部組・作業ステップを工程ごとに設定する。なお、部品と部組とは、工程において、部品として単独で扱うか、複数の部品の塊として扱い複数の部品を同時に動かすかの違いがある。部組・作業ステップ設定部１１８は、工程において、上記の大まかな作業ステップを設定する。
【００４５】
組立シーケンス生成部１１９は、取得した３Ｄモデル情報１３１に対する前記の分類、分析、設定のもと、作業ステップにおける部品と部組の組み付け順序を部品および部組間の隣接関係情報を用いて特定する。また、組立シーケンス生成部１１９は、工程別に計算した組立シーケンスと、組立シーケンスに応じて３Ｄアニメーション生成部１２０が生成した３Ｄアニメーションとを用いて、３Ｄモデル情報１３１を読み出して得た３ＤＣＡＤの部品属性情報（モデル名、部品図番、部品タイトル、材質、体積、最大長など）を組立順序に沿って表示する作業指示として出力する工程別３Ｄ作業指示画面を生成し、出力する。
【００４６】
３Ｄアニメーション生成部１２０は、組立シーケンス生成部１１９から得た工程別の作業ステップ、組立順序、組立動作に関する組み付けの順序に応じた３Ｄ（３次元）アニメーションを生成する。
【００４７】
入力部１４０は、工程別３Ｄ作業指示生成装置１００に対する入力を受け付ける。具体的には、入力部１４０は、キーボード、マウス、タッチパネル等の入力装置を制御し、入力された情報を受け付ける。
【００４８】
表示部１５０は、演算部１１０において生成された画面表示情報を受け付けて、制御可能な出力装置であるディスプレイ等の表示装置に表示する。
【００４９】
通信部１６０は、ネットワーク２１０に接続される他の装置、例えば３ＤＣＡＤ装置２００との通信を行う。
【００５０】
３ＤＣＡＤ装置２００は、立体のＣＡＤを実現する機能を提供する装置である。例えば、３ＤＣＡＤ装置２００は、パーソナルコンピューター等の汎用コンピューターを制御する３ＤＣＡＤプログラムにより制御される。
【００５１】
ネットワーク２１０は、ＬＡＮあるいはインターネット等のネットワークである。またネットワーク２１０は、工程別３Ｄ作業指示生成装置１００と、３ＤＣＡＤ装置２００とが、有線、無線を問わずどちらでもアクセス可能なネットワークであってもよい。
【００５２】
以上が、工程別３Ｄ作業指示生成装置１００の構成の概要である。なお、工程別３Ｄ作業指示生成装置１００は、典型的には汎用計算機等であるが、これに限らず、サーバー装置、携帯電話端末、スマートフォン端末、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）端末、眼鏡型あるいは時計型等のウェアラブル端末等の電子情報端末であってもよい。
【００５３】
図４は、工程別３Ｄ作業指示生成装置のハードウェア構成の例を示す図である。工程別３Ｄ作業指示生成装置１００は、ディスプレイ等の表示装置１７１と、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）−ＲＯＭ等に対して読み書き処理を行うＲＯＭ１７２と、キーボード、マウス、タッチパネル等の操作装置１７３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１７４と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置１７５と、ネットワークカード等の通信装置１７６と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｓｅｓｓｉｎｇ  Ｕｎｉｔ）１７７と、を含んで構成される。
【００５４】
表示装置１７１は、液晶ディスプレイや有機ＥＬ（Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ等の表示装置であり、ＣＰＵ１７７による処理の結果を表示する。操作装置１７３は、タッチパネル、キーボード、マウス等であり、ユーザからの指示を受け付ける。ＲＡＭ１７４は、補助記憶装置１７５に記憶されているプログラムをロードする記憶装置である。また、ＲＡＭ１７４は、データを一時的に保存する。補助記憶装置１７５は、プログラムで利用する各種データを記憶する記憶装置である。通信装置１７６は、インターネット等のネットワーク２１０に接続され、ネットワーク２１０に接続される他の装置と各種データのやりとりを行う。ＣＰＵ１７７は、ＲＡＭ１７４上にロードされるプログラムに従い演算を行う制御ユニットである。
【００５５】
上記した工程別３Ｄ作業指示生成装置１００の演算部１１０の各機能部は、ＣＰＵ１７７に処理を行わせるプログラムによって実現される。このプログラムは、補助記憶装置１７５に記憶され、実行にあたってＲＡＭ１７４上にロードされ、ＣＰＵ１７７により実行される。
【００５６】
また、記憶部１３０は、補助記憶装置１７５あるいはＲＡＭ１７４により実現される。入力部１４０は、操作装置１７３により実現される。また、表示部１５０は、表示装置１７１により実現される。通信部１６０は、通信装置１７６により実現される。
【００５７】
以上が、本実施形態における工程別３Ｄ作業指示生成装置１００のハードウェア構成例である。しかし、これに限らず、その他の同様のハードウェアを用いて構成されるものであってもよい。
【００５８】
図５は、工程別３Ｄ作業指示生成処理の動作フローの例を示す図である。工程別３Ｄ作業指示生成処理は、工程別３Ｄ作業指示生成装置１００が実施する。工程別３Ｄ作業指示生成処理は、工程別３Ｄ作業指示生成装置１００が、３ＤＣＡＤ装置２００から３Ｄモデル情報を取得し、その３Ｄモデル情報を用いて、部品種別の分類、部品間隣接関係（アセンブリグラフ）の生成を行い、組立シーケンス計算結果等を出力する処理である。
【００５９】
まず、３Ｄモデル情報取得部１１１が、３Ｄモデルの情報を取得する（ステップＳ１０）。具体的には、３Ｄモデル情報取得部１１１は、３ＤＣＡＤデータあるいは３ＤＣＡＤデータから変換した３Ｄモデルを用いて、各モデルの形状、部品属性、部品配置関係などを取得し、記憶部１３０の３Ｄモデル情報１３１に記憶させる。なお、計算対象部品は１つの部品により成立するモデルに限らず、複数の部品が結合された部品から構成される組立品であるアセンブリモデルであってもよい。なお、本図のフローチャートには、３Ｄモデルのモデリング操作および解析対象としたモデルを指定する操作の詳細の記述は省略したが、一般的な操作に関する処理を行うものとする。
【００６０】
そして、部品種別分類部１１２が、部品種別を分類する（ステップＳ２０）。具体的には、部品種別分類部１１２は、記憶部１３０の部品種別情報１３２を読み込み、指定されたモデル名の条件（例：先頭文字が指定された文字列など）や指定された部品寸法の条件（例：指定された寸法以下など）に従って、ステップＳ１０で取得した３Ｄモデル情報１３１に格納された各構成部品について部品種別を判定する。
【００６１】
そして、部品間隣接関係（アセンブリグラフ）生成部１１３が、アセンブリグラフの生成処理を行う（ステップＳ３０）。具体的には、部品間隣接関係（アセンブリグラフ）生成部１１３は、ステップＳ１０で取得した３ＤＣＡＤモデル情報の部品間の隣接関係情報から、部品をノード（節）、隣接関係をエッジ（辺）としたグラフ構造表現によって部品間の関係を示す情報を生成する。以下に、アセンブリグラフについて、図６および図７を用いて説明する。
【００６２】
図６は、３Ｄモデルの例を示す図である。図６の３Ｄモデルでは、底板５０１と天板５０６を繋ぐ右前柱５０２、右後柱５０３、左前柱５０４、左後柱５０５で構成されたフレームに、左側面板５２１、裏側面板５３１、上面板５１１を組み付けた構成を備える。また、左側面板５２１には、部品または部組である左側下部品５２２、左側中央部品５２３、左側上部品５２４が組み付けられている。裏側面板５３１には、部品または部組である裏側下部品５３２、裏側中央部品５３３、裏側上部品５３４が組み付けられ、裏側中央部品５３３には、裏側中央部品５３５、裏側左部品５３６が組み付けられている。上面板５１１には、部品または部組である上側右部品５１２、上側左部品５１３が組み付けられている。なお、本説明図では、説明簡略化のため組付けに必要な締結ネジなどの図示は省略している。
【００６３】
図７は、アセンブリグラフの例を示す図である。アセンブリグラフとは、部品間隣接関係のグラフによる表現である。図７では、図６に示した３Ｄモデルの部品間隣接関係に基づき、部品をノード、部品間の隣接関係をエッジとした場合のアセンブリグラフが例示されている。ここで、部品間の隣接関係とは、部品間の接合に関して、各種の拘束関係をまとめる概念をいう。具体的には、部品の一部の面である平面と他の部品の一部の面である平面の法線が許容寸法範囲内にあり、その平面間の距離が許容寸法以内で隣接している平面拘束の関係、円筒と円筒が許容寸法以内で同軸関係にあり、その円筒の径の差が許容寸法以内にある円筒拘束の関係、平面の法線と円筒の軸が許容寸法範囲内で垂直関係にあって、円筒の軸から平面までの距離と円筒の半径が許容寸法範囲内にある円筒平面拘束関係等の関係が部品間の隣接関係である。
【００６４】
図７では、図６に示した各部品をノード（節）で示し、部品と部品にいずれかの隣接関係がある場合は、その部品間にエッジ（弧）をつけている。なお、アセンブリグラフでは、上記の平面拘束、円筒拘束、円筒平面拘束などそれぞれの隣接の種類に応じてエッジを区別することができるが、図７の説明においては、いずれかの隣接関係があれば、その隣接関係の区別なく一つのエッジをつけている。このアセンブリグラフにより、どの部品とどの部品に関係があり、またどの方向に隣接しているか、すなわちどの方向に分解可能かを把握することができる。
【００６５】
なお、図７においては、部組の例を点線で示した。例えば、上記の底板５０１と、天板５０６と、右前柱５０２と、右後柱５０３と、左前柱５０４と、左後柱５０５と、が一つの部組５０１Ｓとして構成され、総組の作業工程以前に組み立てられるとする。また、同様に上面板５１１と、上側右部品５１２と、上側左部品５１３と、が部組５１１Ｓとして、左側面板５２１と、左側下部品５２２と、左側中央部品５２３と、左側上部品５２４と、が部組５２１Ｓとして、裏側中央部品５３３と、裏側中央部品５３５と、裏側左部品５３６と、が部組５３３Ｓとして、総組の作業工程以前に組み立てられるとする。この場合、総組みの段階における部品間隣接関係をアセンブリグラフとして描画すると、図８のように上記の複数の部品で構成される部組のそれぞれが一つのノードとなる。  
【００６６】
図８は、部組を含むアセンブリグラフの例を示す図である。図８では、図６に示す３Ｄモデルについて、図７の点線で示した部組を一つのノードとしてグラフ表現を縮約したアセンブリグラフの例である。ただし、同じ部品および部組においても異なる面については別のエッジで表現している。また部組内のみの部品間での隣接関係については、その工程での組立には無関係のため、部組内の部品の隣接関係は無視している。このようにすると、複数の部品を一つの部組として別の工程で組み立てる作業として区分できるため、そこで組み立てられた部組を一つの部品と同様に取り扱うことで、計算対象のアセンブリグラフは大幅に簡素化されて縮約され、計算対象のグラフが小さくなり計算を容易化できる。
【００６７】
また、上述のとおり、部品種別情報１３２を用いて、部品種別の分類Ｓ２０の処理で事前に分類することで、工程別に計算する対象ノードを限定することができる。図８の部組の中で、例えば部組５３３Ｓが購入品であり計算対象外である場合は、組立シーケンス生成の計算対象外とすることができる。
【００６８】
対象ノードの限定について、例を挙げて説明する。例えば図６に示す３Ｄモデルについて、図８のアセンブリグラフが総組の組立工程を表現しているとすると、後述する工程別の組立シーケンス生成処理において、図８のアセンブリグラフを用いて組立シーケンス生成処理を行った後、部組として扱った部組５１１Ｓ、部組５２１Ｓ、部組５３３Ｓについて、順に組立シーケンス生成処理を行う。このとき、上述のように、部組５３３Ｓが購入品であって計算対象外と把握できる場合は、部組５３３Ｓの計算はスキップし、次の部組の計算を行うことができる。ここで、部組を組み立てる作業を工程とすることで、設定した部組のアセンブリグラフを順次展開して、その計算対象の部品構成すなわち工程別に組立シーケンス生成処理を行う。
【００６９】
なお、部品構成およびアセンブリグラフにおいて、複数の同じ部組（同じ部品構成、同じアセンブリグラフ）が存在することがある。そこで、組立シーケンスを計算した後、計算済みの部組の名称は格納しておき、以降の組立シーケンス生成処理において、同じ部組の名称がある場合は、その計算処理をスキップし、次の部組（工程）の組立シーケンス生成処理を行うことで、計算量を抑えることができる。
【００７０】
次に、部組・作業ステップ設定部１１８は、部組・作業ステップの取得、計算用部品構成の作成を行う（ステップＳ４０）。具体的には、部組・作業ステップ設定部１１８は、ステップＳ１０で取得した３Ｄモデル情報１３１に格納される部品構成に対し、計算用部品構成を作成し、工程ごとの部品構成、作業ステップを設定する。
【００７１】
そして、組立シーケンス生成部１１９は、組立シーケンスを生成する（ステップＳ５０）。具体的には、組立シーケンス生成部１１９は、例えば特開２０１２−１４５６９号公報あるいはＷＯ２０１５／１７７８５５Ａ１公報に開示される、組立シーケンス生成方法等の組立順序と同様にして、ステップＳ３０で生成したアセンブリグラフを用いて分解可能な方向を特定しながら分解方向および分解順序を生成する。そして分解順序、分解方向の逆変換を行って、組立順序、組立方向を生成する。なお、組立シーケンス生成部１１９は、この組立シーケンスの生成において、部品および部組ごとに評価値を計算し、評価値に応じて組み立ての順序を決定する。なお、この組立の順序は、過去に類似の部組の組立を行った際の組立の順序に沿うことが効率的である。そのため、組立シーケンス生成部１１９は、評価値には過去に類似の部品の組立を行った際の順序に応じた重み付けを行う。
【００７２】
そして、３Ｄアニメーション生成部１２０は、３Ｄアニメーションを生成する（ステップＳ７０）。具体的には、３Ｄアニメーション生成部１２０は、ステップＳ５０において生成された組立シーケンスを用いて、取得した３Ｄモデル情報１３１の工程別の部品構成、各部品の順序、動き、を３Ｄモデルのアニメーションとして生成する。
【００７３】
そして、組立シーケンス生成部１１９は、工程別３Ｄ作業指示の計算結果を出力する（ステップＳ８０）。具体的には、組立シーケンス生成部１１９は、工程別に計算した組立シーケンスと、３Ｄアニメーションとを用いて、３Ｄモデル情報１３１を読み出して得た３ＤＣＡＤの部品属性情報（モデル名、部品図番、部品タイトル、材質、体積、最大長など）を組立順序に沿って表示する作業指示として出力する工程別３Ｄ作業指示画面を生成し、出力する。
【００７４】
以上が、工程別３Ｄ作業指示生成処理の流れである。工程別３Ｄ作業指示生成処理によれば、工程ごとに適切な組立作業の順序を計算し、その結果を３Ｄアニメーションとして表現でき、効率的な工程設計を支援することができる。
【００７５】
図９は、組立シーケンス生成処理の動作フローを示す図である。組立シーケンス生成処理は、工程別３Ｄ作業指示生成処理のステップＳ５０において開始される。
【００７６】
まず、組立シーケンス生成部１１９は、３Ｄモデル情報取得部１１１にて得た３Ｄモデル情報１３１、計算条件情報１３４を取得する（ステップＳ５１）。
【００７７】
そして、組立シーケンス生成部１１９は、部品間隣接関係（アセンブリグラフ）生成部１１３にて得た、部品間隣接関係の情報を取得する（ステップＳ５２）。
【００７８】
そして、組立シーケンス生成部１１９は、部組・作業ステップ設定部１１８にて設定した部組・作業ステップに従い、工程と、工程ごとの作業ステップを取得する（ステップＳ５３）。これにより３Ｄモデル情報１３１の計算用部品構成を作成する。
【００７９】
そして、組立シーケンス生成部１１９は、工程ごと（部組ごと）にステップＳ５５〜ステップＳ６１の処理を繰り返し処理する（ステップＳ５４、ステップＳ６２）。
【００８０】
具体的には、組立シーケンス生成部１１９は、３Ｄモデル情報１３１の計算用部品構成を参照して、階層ごとに、当該階層に含まれる部品あるいは部組を特定し、階層ごとに組立シーケンスを生成する。例えば、図８で示したアセンブリの例のように、組立シーケンス生成部１１９は、まずは製品の最上位階層にあたる総組の組立工程についての組立シーケンスを生成する。そして、組立シーケンス生成部１１９は、順次その部品構成内で扱っている部組を選択し、その部組自体を計算用部品構成としてアセンブリグラフを用いて組立シーケンスを生成する。なお、組立シーケンス生成部１１９は、より上位の階層から順次組立シーケンスを生成することとし、また組立シーケンス生成済みの部組のＩＤ、名称は記憶しておく。
【００８１】
まず、組立シーケンス生成部１１９は、選択している部組について、計算対象の部組か否かを判定する（ステップＳ５５）。具体的には、組立シーケンス生成部１１９は、当該部組について、３Ｄモデル情報１３１の計算対象外（フラグ）を参照して、その値が計算対象外の部組であるか否かを判定する。計算対象の部組でない場合（ステップＳ５５にて「Ｎｏ」の場合）には、組立シーケンス生成部１１９は、その組立シーケンスの生成をスキップし、次の部組の計算を行う。なお、総組の組立工程、すなわち最上位の階層においては、この判定はスキップしてもよい。
【００８２】
計算対象の部組である（ステップＳ５５にて「Ｙｅｓ」の）場合、組立シーケンス生成部１１９は、選択している部組について、計算済みの部組と異なる部組か否かを判定する（ステップＳ５６）。具体的には、組立シーケンス生成部１１９は、選択している部組が、既にステップＳ５５〜Ｓ６１の処理対象となった部組と同じ名称か否かを判定する。既に同じ部組が存在する場合（ステップＳ５６にて「Ｎｏ」の場合）には、その組立シーケンスの生成をスキップし、次の部組の計算を行う。なお、総組の組立工程、すなわち最上位の階層においては、この判定はスキップしてもよい。
【００８３】
そして、組立シーケンス生成部１１９は、ベース部品を設定する（ステップＳ５７）。具体的には、組立シーケンス生成部１１９は、３Ｄモデル情報１３１の計算用部品構成において、ベース部品（フラグ）を参照して、選択している部組を構成する部品のうちベース部品のフラグがあるものを抽出してその一つをベース部品とする。ただし、ベース部品フラグがいずれの部品にも指定されていない場合は、組立シーケンス生成部１１９は、３Ｄモデル情報１３１の部品属性の体積、表面積、最大長の大きい部品を優先する、あるいは部品間隣接関係の隣接関係が多い部品を優先する、などの計算条件情報１３４のルール設定を読み込み、ベース部品を設定する。
【００８４】
そして、組立シーケンス生成部１１９は、作業ステップを設定する（ステップＳ５８）。具体的には、組立シーケンス生成部１１９は、３Ｄモデル情報１３１の計算用部品構成において、作業ステップＮｏを読み出す。ここで、前述のベース部品と作業ステップについて、図６の３Ｄモデルおよび図７のアセンブリグラフをもとに、ベース部品と作業ステップの表現を追加したアセンブリグラフの例として作成した図１０を用いて具体的に説明する。
【００８５】
図１０は、ベース部品と作業ステップを含むアセンブリグラフの例を示す図である。図１０では、図７のアセンブリグラフに対し、底板５０１と、天板５０６と、右前柱５０２と、右後柱５０３と、左前柱５０４と、左後柱５０５と、が一つの部組５０１Ｓとされ、裏側中央部品５３３と、裏側中央部品５３５と、裏側左部品５３６と、が部組５３３Ｓとされている。
【００８６】
ステップＳ５７のベース部品の設定処理においては、組立シーケンス生成部１１９は、３Ｄモデル情報１３１の部品属性や部品間隣接関係の情報を用いて、部組５０１Ｓをベース部品として選定するものとする。組立シーケンス生成部１１９は、ベース部品は組立の際に最初に配置する部品であるために、ベース部品を最初の作業ステップとして設定する。その他の作業ステップについては、組立シーケンス生成部１１９は、設定したベース部品に対しての部品間隣接関係および部品配置情報、部品属性をもとに、作業の区分を行った後に順に割付ける。
【００８７】
図７、図１０の例では、組立シーケンス生成部１１９は、部品間の隣接関係を参照して、その位置上の纏まりやベース部品に対する隣接方向（Ｘ軸方向、Ｙ軸方向、Ｚ軸方向）から大きく３つの作業区分を設定する。この作業区分の設定において、組立シーケンス生成部１１９は、３Ｄモデル情報１３１を参照して、作業区分に含まれる部品数、部品の総体積、部品全体での重心、部品全体でのバウンディングボックスなど配置関係等の優先順位を特定し、作業区分を付番する。例えば、組立シーケンス生成部１１９は、作業区分全体の体積が大きく重心が下側に配置されたものを優先して組立作業の順番とし、作業区分に付番する。
【００８８】
そして、組立シーケンス生成部１１９は、ノード評価値を算出する（ステップＳ５９）。ここで、ノード評価値とは、例えばＷＯ２０１５／１７７８５５Ａ１公報に開示される組立シーケンス生成方法において用いられるノード評価値と同様の指標である。そのノード評価値の一要素として、上述のベース部品の作業ステップを付加する。この作業ステップを付加することで、計算対象のアセンブリグラフの優先順位を作業区分内に限定することができ、大規模なモデルを対象とした組立シーケンス生成処理において、計算が容易となる。なお上記組立シーケンス生成方法においては、まず分解順序を探索するため、設定した作業ステップの逆順となる分解順番をノード評価値として付加し、後述の分解順序・分解可能部品の探索を行う方法が考えられる。
【００８９】
そして、組立シーケンス生成部１１９は、分解順序探索・分解可能部品判定を行う（ステップＳ６０）。具体的には、組立シーケンス生成部１１９は、部品の配置関係および隣接関係を示すアセンブリグラフ情報と、３Ｄモデル情報１３１と、を用いて、分解動作上の部品間の干渉の有無を計算し、干渉のない分解運動ベクトルを導出し、分解順序探索・分解可能部品判定の処理を行う。この処理において、組立シーケンス生成部１１９は、ノード評価値の順に分解順序の探索と、部品の分解可否の判定を行う。
【００９０】
そして、組立シーケンス生成部１１９は、組立順序・動作への変換を行う（ステップＳ６１）。具体的には、組立シーケンス生成部１１９は、生成された分解順序を逆順にして組立順序に変換し、分解運動ベクトルの符号を反転することにより組立動作に変換し、組立順序・動作を生成する。ここで、計算条件情報に従い、複数の組立順序案が導出されるようにしてもよい。
【００９１】
そして、組立シーケンス生成部１１９は、全ての工程の計算が完了したか否か判定する（ステップＳ６２）。具体的には、組立シーケンス生成部１１９は、全ての工程（部組）の計算が完了したか否かを判定し、計算対象の部組がある場合は、次の部組について、ステップＳ５４に戻り処理を続け、全ての工程の計算を確認して、計算完了とする。
【００９２】
以上が、組立シーケンス生成処理の処理フローである。組立シーケンス生成処理によれば、計算用部品構成の最も上位の階層からその階層下にある部組について、計算対象の部組を順次、計算用部品構成として設定して工程を自動展開し、設定したベース部品、作業ステップを考慮した上での組立シーケンス生成処理を工程別に計算できる。
【００９３】
図１１は、計算用部品構成の設定定義画面の例を示す図である。より詳しくは、設定定義画面４００は、工程別３Ｄ作業指示生成装置１００における部品構成編集部１１５、部組・作業ステップ設定部１１８によって表示される設定定義画面の例である。
【００９４】
設定定義画面４００の操作メニューとしては、主に「ファイル」４００ａ、「３Ｄ選択」４００ｂ、「作業ステップ生成」４００ｃ、「作業ステップＮｏ．追加」４００ｄ、「組立シーケンス生成」４００ｅ、などがあるとよい。
【００９５】
画面上のウィンドウとしては、主に３Ｄモデル情報１３１の３ＤＣＡＤから取得した部品構成情報を示す「３ＤＣＡＤ部品構成」４０１ウィンドウ、計算用部品構成を示す「計算用部品構成」４０２ウィンドウ、３Ｄモデル形状を示す「３Ｄモデル」４０３ウィンドウ、３Ｄモデルの部品属性を示す「３Ｄモデル情報」４０４ウィンドウがあるとよい。
【００９６】
ここで、「ファイル」４００ａへの操作入力は、ファイルを選択して開いたり、画面上で編集したファイルを保存したりする操作を可能にする。
【００９７】
「３Ｄ選択」４００ｂへの操作入力は、「３ＤＣＡＤ部品構成」４０１または「計算用部品構成」４０２のツリー上の部品名を選択した際に３Ｄモデルをハイライト表示する、あるいは選択した部品のみを表示する、選択した部品以外を表示するなど、ツリーと３Ｄモデル形状との連携操作による表示切り換え操作を可能とする。なお、「３Ｄモデル」４０３ウィンドウにて部品を選択して、それぞれの部品構成ツリー上の部品名をハイライト表示するものであってもよい。
【００９８】
「作業ステップ生成」４００ｃへの操作入力があると、３Ｄモデル情報１３１からベース部品フラグの設定有無によりベース部品を判定し（ステップＳ５７の処理）、また３Ｄモデル情報１３１の作業ステップＮｏ．から作業ステップＮｏ．を把握する（ステップＳ５８の処理）。
【００９９】
「作業ステップＮｏ．追加」４００ｄへの操作入力があると、「計算用部品構成」４０２のツリー上において、選択されたノードに対し、新たに作業ステップＮｏ．を追加する。
【０１００】
「組立シーケンス生成」４００ｅへの操作入力があると、設定定義画面４００にて設定した、計算用部品構成および部組・作業ステップの設定を３Ｄモデル情報１３１の計算用部品構成の各項目に格納し、その内容をもとに、組立シーケンス生成の計算が実行される。
【０１０１】
「３ＤＣＡＤ部品構成」４０１ウィンドウのツリーは、３ＤＣＡＤの部品構成ツリーを表示する。この図で、黒い四角は、部組として扱うノードを示す。図１０のアセンブリグラフの説明と同様に、部組５０１Ｓと部組５３３Ｓとを部組として扱う設定とした例である。部組として扱うかどうかを部品種別分類部１１２にて処理するものであるが、必要に応じて自動処理した結果を設定定義画面４００で確認し、部組で扱うか否か設定を変更可能とする。変更の方法としては例えば、ツリー上で親ノードをマウスで選択し、右クリックメニューなどにて設定変更するようにするとよい。
【０１０２】
「計算用部品構成」４０２ウィンドウのツリーは、組立シーケンス生成の計算のための部品構成ツリーである。全体の部品構成ツリーに対し、シーケンス上で前後に動かす単位でのノードに限定した上で、大まかな組立作業ステップの順番を定義したツリーである。この画面上では作業ステップＮｏ．を三角で示しており、その階層下にある部品または部組ノードがその作業ステップで行う部品を示している。ただし、この「計算用部品構成」４０２のツリーは、まだ組立シーケンス生成の計算を行う前の状態を示しており、このツリーでは、部品および部組ノードに対し、作業ステップの区分けだけを行っている状態が示されている。なお、作業ステップＮｏ．およびその区分けされた部品は、前述の処理で画面のように自動区分けされるが、必要に応じて、設定定義画面４００にて、作業ステップＮｏ．ノードの順序を入れ替えたり、その作業ステップＮｏ．階層下の部品構成を変更できるようにすることが望ましい。
【０１０３】
「３Ｄモデル」４０３ウィンドウでは、３Ｄモデル選択の操作に従い、それぞれの部品構成ツリーで選択された部品および部組、または作業ステップＮｏ．ノードの表示、非表示、ハイライト表示を行う。また逆に「３Ｄモデル」４０３ウィンドウ内の部品を選択し、それぞれの部品構成ツリーをハイライト表示し、編集の操作を容易にする。なお、３Ｄモデルは、前述のとおり、３ＤＣＡＤから変換した３Ｄモデル形状ファイルを表示しており、３Ｄモデル情報１３１に従い、それぞれの部品に対し部品単位で操作可能である。また３Ｄモデルのビューワーでもあり、回転、拡大縮小、移動操作もできる。
【０１０４】
「３Ｄモデル情報」４０４ウィンドウでは、それぞれの部品構成ツリーまたは３Ｄモデルの操作に従い、選択された部品名に対する３Ｄモデルの詳細情報を出力する。この３Ｄモデルの詳細情報とは、例えば３Ｄモデル情報１３１のうち、部品図番、体積、表面積、材質、最大長、重心、などである。また、工程別３Ｄ作業指示として、組立順序に沿った作業指示を行う際に、具体的な作業を作業者に指示する必要がある。この指示情報として、３Ｄモデル情報１３１の部品属性の注記の欄の文字列を追加、編集可能としてもよい。なお、部品単位での作業注記のほか、部組単位の作業注記も追加するとよい。
【０１０５】
３Ｄモデル情報１３１の部品属性は、３ＤＣＡＤから取得した部品構成すべてのノードすなわち部品および部組それぞれにＩＤを設け取得している。さらに、計算用部品構成を作成した際には、その作成した作業ステップＮｏ．のノードについても部品ＩＤを新たに作成し、その作業ステップＮｏ．の部品構成全体にて、部品属性、形状特徴、部品配置の情報を格納するとよい。これにより、作業ステップＮｏ．の領域全体を容易に把握でき、また作業ステップＮｏ．ごとの注記も追記できる。
【０１０６】
図１２は、作業指示の計算結果確認画面の例を示す図である。計算結果確認画面６００は、工程別３Ｄ作業指示生成装置１００にて計算した結果を確認するための画面の例である。
【０１０７】
操作メニューとしては、主に「ファイル」６００ａ、「３Ｄモデル選択」６００ｂ、工程選択ドロップダウンリスト６００ｃ、組立シーケンス再生操作ボタン６００ｄ、などがあるとよい。画面上のウィンドウとしては、主に計算結果の組立シーケンスをツリーで示す「組立シーケンス」６０１ウィンドウ、組立シーケンスのツリーと連動して３Ｄモデル形状を表示する「３Ｄモデル」６０２ウィンドウ、選択されたノードの作業指示情報を表示する「作業指示情報」６０３ウィンドウがある。
【０１０８】
「ファイル」６００ａへの操作入力は、ファイルを選択して開いたり、画面上で編集したファイルを保存したりする操作を可能にする。
【０１０９】
「３Ｄモデル選択」６００ｂへの操作入力は、「組立シーケンス」６０１ウィンドウのツリー上の部品名を選択した際に３Ｄモデルをハイライト表示する、あるいは選択した部品のみを表示する、選択した部品以外を表示するなど、ツリーと３Ｄモデル形状との連携操作による表示切り換え操作を可能とする。なお、「３Ｄモデル」６０２ウィンドウにて部品を選択して、それぞれの部品構成ツリー上の部品名をハイライト表示するものであってもよい。
【０１１０】
工程選択ドロップダウンリスト６００ｃへの操作入力は、図９に示した工程別の組立シーケンス生成処理の結果を工程別に表示切り換え操作を可能とする。例えば、図１１に示した計算用部品構成をもとに工程別組立シーケンス生成を計算した場合、部組が計算対象外でないとすると、図に示した「ＴｏｐＡｓｓｙＰｒｏｃｅｓｓ」の組立シーケンスの計算のあと、「５０１Ｓ＿ＦｒａｍｅＡｓｍ」の部組を対象にその部品属性やアセンブリグラフ等をもとに組立シーケンスの計算を行う。またその次に残りの部組である「５３３Ｓ＿ＵｎｉｔＡｓｍ」についても同様に計算を行う。これらそれぞれの部組（工程）の計算結果を工程選択ドロップダウンリスト６００ｃで切り替えて表示できる。
【０１１１】
組立シーケンス再生操作ボタン６００ｄへの操作入力は、３Ｄアニメーションの再生、停止、逆再生を可能とする。本例では組立シーケンス６０１のツリーの左にバーを設けたが、例えば、再生時に動く部品ノードに沿って、どの部品のアニメーションかをツリー上で明示するとよい。また「３Ｄモデル」６０２では動いている部品をハイライト表示し、動作方向を軌跡線や矢印で明示するとよい。また逆再生は分解シーケンスを３Ｄアニメーション再生する。その他、作業ステップＮｏ．ごとにスキップ再生する操作ボタン、最初のノードに戻るボタン、最後のノードにスキップするボタン、再生速度を変更する操作などを設けてもよい。
【０１１２】
「組立シーケンス」６０１ウィンドウは、組立シーケンスの計算結果をツリー上に表現したものである。上記のように３Ｄアニメーションの再生などで計算結果を確認し、必要に応じて、組立シーケンスのツリー上で部品ノードの順序を並べ替えたり、作業ステップＮｏ．ノードを並べ替えたり、その中の部品構成を変更したりして編集する。編集結果は、３Ｄアニメーションの再生などで確認する。
【０１１３】
「３Ｄモデル」６０２ウィンドウは前述のとおり、「組立シーケンス」のツリーと連動して３Ｄモデル形状を表示したり、組立シーケンス再生操作ボタン６００ｄへの操作に従い、アニメーション動作を表示したりする。
【０１１４】
「作業指示情報」６０３ウィンドウは、３Ｄモデル情報１３１に格納された作業指示情報を表示する。組み付け動作中の部品属性のほか、例えばアセンブリグラフの隣接関係をもとに、被組み付け部品についても明示してもよい。なお必要に応じて、注記情報などテキスト情報を編集して保存しなおしてもよい。
【０１１５】
上記のように計算結果は確認され、編集された結果をファイル保存することができる。この保存したデータは、組立順序作成済みの事例データ１３５として記憶される。すなわち、事例データ１３５は、部品および部組ごとに過去に実施した際の作業ステップ情報であるといえる。
【０１１６】
図１２に示された３Ｄアニメーションは、部品それぞれの動きを示すものとして生成するものであるが、作業ステップごとに纏めて複数の部品を表示させることも可能である。また、３Ｄアニメーションを逐次再生することにより３Ｄモデル上での部品の干渉の有無等の確認を行うことができる。また３Ｄモデルの一般的なビューイング機能として、指定したパーツの表示/非表示の切り替え、断面図の表示、図面の出力、静的な干渉解析、動作上での干渉解析を行うことで、自動生成した作業計画の検証を行うことができる。
【０１１７】
以上が、本願に係る発明を適用した実施形態の説明である。本実施形態によれば、３Ｄモデル情報を用いて、計算用の部組、部品構成、作業ステップを計算し、その計算用部品構成をもとに組立シーケンスを計算し、工程別の組立シーケンスを３Ｄアニメーションにより表示することができる。なお、３Ｄアニメーションをもとに、作業ステップごとあるいは組立動作ごとの２Ｄ画像出力を行うものとしてもよいし、その静止画とともに作業指示情報のテキスト出力を行うものとしても良い。
【０１１８】
図１３は、事例データをもとにした工程別３Ｄ作業指示生成の処理例を示す図である。図１３に示すように、本発明に係る第二の実施形態を適用した工程別３Ｄ作業指示生成システム１においては、事例データをもとにした工程別３Ｄ作業指示生成処理を行うことができる。上述の第一の実施形態においては、図５、図９、図１１の説明では、計算対象の３Ｄモデル情報の部品属性、部品構成やアセンブリグラフをもとに作業指示を生成する方法を説明した。
【０１１９】
［第二の実施形態］第二の実施形態においては、作成された事例データをもとに、その事例データに含まれる部品、部組の特徴ベクトルにもとづき、類似した部品、部組を識別し、その事例データの工程（部組）、作業ステップを参照することで、より効率の良い作業指示の生成を行うことができる。
【０１２０】
なお、第二の実施形態は、一部を除き基本的に第一の実施形態と略同様であり、差異について以下に説明する。
【０１２１】
事例データ登録処理７００は、上述の図１２の計算結果確認画面６００上にて指示を受けて行われるものである。これにより、組立順序作成済みの事例データ１３５に工程別３Ｄ作業指示データが３Ｄモデル情報１３１とともに格納される。例えば作成したファイルを指定フォルダに保存する、あるいはデータベースに保存するものであってもよい。
【０１２２】
そして、複数の事例データに対し、事例データ分析部１１４はベクトル分析を行い、事例データに含まれる部品、部組の特徴ベクトルを出力する（ステップＳ１１４）。図１４に事例データの分析対象となる特徴ベクトル項目の例を示す。
【０１２３】
図１４は、事例データの分析における特徴ベクトルの例を示す図である。この特徴ベクトルの一覧は、例えば計算結果確認画面６００の「組立シーケンス」６０１ウィンドウにおいて詳細として表示されるものであってもよい。
【０１２４】
特徴ベクトル項目の「Ｎｏ．１」は工程名であり、作成した組立シーケンスツリーのトップの名称である。ただし、総組の工程名は製品の名称であり、その階層下の工程名は部組の名称と同値である。特徴ベクトル項目の「Ｎｏ．２」は作業ステップの名称、順序である。特徴ベクトル項目の「Ｎｏ．３」はモデル名であり、部品、部組の名称である。なお、部組の名称とは工程名と同値である。特徴ベクトル項目の「Ｎｏ．４」はノード種別であり、そのノードが部品か部組かを特定する情報である。特徴ベクトル項目の「Ｎｏ．５」は組立順序番号であり、その組立シーケンスツリーの中での組立の順序である。特徴ベクトル項目の「Ｎｏ．６」、「Ｎｏ．７」、「Ｎｏ．８」、「Ｎｏ．９」はそれぞれ、バウンディングボックス、中心、重心、組み付けの最初の部品となるベース部品に対する隣接方向、である。すなわち、これらの項目は幾何情報をベクトル化したものである。部品、部組ノードの場合は、これらの情報を３Ｄモデル情報１３１から取得し、作業ステップのノードの場合は、その階層下に含まれる部品、部組全体のバウンディングボックス領域をワールド座標系に基づき計算した座標およびベクトルから取得する。
【０１２５】
特徴ベクトル項目の「Ｎｏ．１１」、「Ｎｏ．１２」、「Ｎｏ．１３」、「Ｎｏ．１４」、「Ｎｏ．１５」、「Ｎｏ．１６」、「Ｎｏ．１７」はそれぞれ、バウンディングボックス体積、最大長、体積、表面積、体積／バウンディングボックス体積、表面積／体積、表面積／バウンディングボックス体積である。すなわち、これらの項目は幾何情報をベクトル化したものである。部品、部組ノードの場合は、３Ｄモデル情報１３１から取得し、作業ステップのノードの場合は、その階層下に含まれる部品、部組全体から計算した値である。特徴ベクトル項目の「Ｎｏ．１８」は、工程別のアセンブリグラフから自ノードに隣接したエッジ数を計算した値である。
【０１２６】
事例データ分析部１１４は、事例データの特徴ベクトルを用いて、例えばＳＶＭ（サポートベクターマシン）により、計算対象の３Ｄモデル情報の特徴ベクトルから、事例データの「工程名とノード種別（部品または部組）」を識別する。以下に、その具体的な方法を説明する。
【０１２７】
事例データ分析部１１４は、図１４に示した特徴ベクトルの「工程名とノード種別」の組合せた識別情報を一つのクラスラベル値として、図１４の特徴ベクトル項目の「Ｎｏ．１１」以降の特徴ベクトルを学習データとしてＳＶＭアルゴリズムにて学習モデルを作成する。ＳＶＭの学習モデル生成においては例えばｌｉｂｓｖｍを用いて、ＳＶＭの種類としてＣ−ＳＶＣ、カーネル関数の種類としてＲＢＦ、などを選定する。この学習モデルをもとに、事例データ分析部１１４は、計算対象の３Ｄモデルの特徴ベクトルを参照して、事例データの「工程名とノード種別」に識別した特徴ベクトルを把握する。この特徴ベクトルを比較することにより、事例データに類似した部品および部組を分類できる。これにより、事例データ分析部１１４は、部品および部組で扱う際の工程（部組）を把握することができ、その部品構成の親子関係を辿ることができれば「計算用部品構成」を生成できる。
【０１２８】
また、事例データ分析部１１４は、事例データの「作業ステップの名称、順序」または「組立順序番号」に着目して、組立の最初となるベース部品を識別する。事例データ分析部１１４は、図１４に示した特徴ベクトルの「作業ステップの順番」の１番、または「組立順序番号」の１番（作業ステップノードは除く）をベース部品として識別するためのクラスラベル値を作成し、図１４のＮｏ．１１以降の特徴ベクトルを学習データとして上記同様に計算対象の３Ｄモデル情報１３１の特徴ベクトルからベース部品を識別する。これにより識別されたベース部品にて、例えば作業ステップ番号１番の場合、同じ工程でその他の作業ステップ番号について、Ｎｏ．６「作業ステップノードのバウンディングボックス」、Ｎｏ．９「ベース部品に対する隣接方向」を把握することができる。組立シーケンス生成部１１９は、ステップＳ５８において、この事例データから把握したベース部品に対する作業区分を計算対象の３Ｄモデル情報に当てはめて作業区分を設ける。
【０１２９】
なお、上記の事例データの特徴ベクトルの識別アルゴリズムとしては、ＳＶＭの例を示したが、この方法に限定されるものではなく、ユークリッド距離、特徴ベクトルの内積、あるいはクラスタリングなどを用いて識別してもよい。例えば、部組・作業ステップ設定部１１８は、部組の幾何情報に係るベクトルの類似性を、部組の体積と、外包直方体の体積に対する容積率と、を用いて評価する方法として、ＳＶＭ、ユークリッド距離、内積、クラスタリングにより測定し、類似する事例データを特定するようにしてもよいし、あるいは一定以上の類似性のある複数の事例データのいずれを採用するか画面に提示して選択入力を受け付けることで特定するようにしてもよい。図１５に、事例データをもとに作業ステップＮｏ．を区分けした結果を反映したアセンブリモデルの例を示す。
【０１３０】
図１５は、事例データを用いて分析したアセンブリグラフの例を示す図である。この場合、図１０に示したアセンブリモデルのように３Ｄモデル情報と計算条件情報のみから計算したものとは異なり、事例データを用いることでベース部品に対し上部を先に組み付けたあと、奥面、左側面の順の組み付けを設定可能となる。このように、事例データの分析、学習にもとづくことで、既に実績のある作業ステップにもとづき、組立順序を自動計算することができる。
【０１３１】
図１３の事例データをもとにした工程別作業指示生成の処理フローのステップＳ４２では、事例データ分析ステップＳ１１４にて得た上記特徴ベクトルおよび事例データの学習モデルをもとに、計算対象の３Ｄモデル情報１３１の部品、部組の特徴ベクトルを用いて、事例データにおける識別キー情報「工程名とノード種別」や「ベース部品」と同じと識別した部品、部組のノードを把握することで、既に実績のある作業ステップに基づいた作業指示を生成することができる。より具体的には、部組・作業ステップ設定部１１８は、ベース部品に対する位置情報を用いて部組を含む作業区分を複数設定し、作業区分ごとに過去に実施した類似する作業ステップを特定し、過去に実施した作業ステップの順に応じて作業ステップを設定する。
【０１３２】
さらに、ベース部品設定部１１６は、作業区分ごとに、部品および部組間の隣接関係情報を用いて、当該作業区分に含まれる部組に対して作業区分のベース部品を再帰的に設定する。
【０１３３】
部組・作業ステップ設定部１１８は、さらに、作業区分のベース部品に対する位置情報を用いて部組を含む作業区分を再帰的に設定し、当該作業区分ごとに、過去に実施した類似の作業ステップの順と類似する作業ステップを設定する。これにより、過去の類似の作業ステップを活用して階層ごとの作業ステップの順を決定することができる。
【０１３４】
また図１３の事例データをもとにした工程別作業指示生成の画面の例としては、図１１と同様の設定定義画面でよく、「作業ステップ生成」４００ｃの操作においてベース部品および作業ステップの区分け計算を行う際に、事例データの学習モデルを参照して、上記の処理のもと、事例データの部品および部組と類似したノードをもとに識別し、ベース部品、作業ステップを計算することができる。また、このとき、類似した事例データの検索結果として、計算結果確認画面６００と同様な画面にて３Ｄモデル形状、組立シーケンスのツリー、３Ｄアニメーションなど工程別３Ｄ作業指示の情報を画面上に表示するとよい。  
【０１３５】
以上が、第二の実施形態に係る工程別３Ｄ作業指示生成システムである。なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。実施例の構成の一部を他の構成に置き換えることが可能であり、また、実施例の構成に他の構成を加えることも可能である。また、実施例の構成の一部について、削除をすることも可能である。
【０１３６】
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１３７】
なお、上述した実施形態にかかる制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えても良い。以上、本発明について、実施形態を中心に説明した。
【符号の説明】
【０１３８】
１・・・工程別３Ｄ作業指示生成システム、１００・・・工程別３Ｄ作業指示生成装置、１１０・・・演算部、１１１・・・３Ｄモデル情報取得部、１１２・・・部品種別分類部、１１３・・・部品間隣接関係（アセンブリグラフ）生成部、１１４・・・事例データ分析部、１１５・・・部品構成編集部、１１６・・・ベース部品設定部、１１７・・・作業ステップ計算部、１１８・・・部組・作業ステップ設定部、１１９・・・組立シーケンス生成部、１２０・・・３Ｄアニメーション生成部、１３０・・・記憶部、１３１・・・３Ｄモデル情報、１３２・・・部品種別情報、１３３・・・解析計算プログラム、１３４・・・計算条件情報、１３５・・・組立順序作成済みの事例データ、１４０・・・入力部、１５０・・・表示部、１６０・・・通信部、２００・・・３ＤＣＡＤ装置、２１０・・・ネットワーク
【図１】
2018180693.tif 000003
【図２】
2018180693.tif 000004
【図３】
2018180693.tif 000005
【図４】
2018180693.tif 000006
【図５】
2018180693.tif 000007
【図６】
2018180693.tif 000008
【図７】
2018180693.tif 000009
【図８】
2018180693.tif 000010
【図９】
2018180693.tif 000011
【図１０】
2018180693.tif 000012
【図１１】
2018180693.tif 000013
【図１２】
2018180693.tif 000014
【図１３】
2018180693.tif 000015
【図１４】
2018180693.tif 000016
【図１５】
2018180693.tif 000017