(57)【特許請求の範囲】
【請求項１】
組立品の分解した状態を示す分解組立図を表示装置に表示させる機能を備えたＣＡＤシステムにおいて、
組立品を構成する部品の形状データを記憶装置に記憶させる機能と、前記記憶装置から読み出した形状データに基づいて演算装置に組立品を構成する部品のバウンディングボックスを算出させる機能と、組立品を構成する部品の組立方向と前記演算装置が算出した組立品を構成する部品のバウンディングボックスを基に分解組立図における部品の間隔を演算装置に求めさせる機能と、前記演算装置が求めた分解組立図における部品の間隔を前記記憶装置に記憶させる機能と、前記記憶装置から読み出した部品の間隔に基づいて分解組立図を演算装置に作成させる機能と、前記演算装置により作成された分解組立図を表示装置に表示させる機能とを有することを特徴とするＣＡＤシステム。
【請求項２】
請求項１において、
前記分解組立図における部品の間隔を求める機能は部品のバウンディングボックスを構成する頂点の位置を示すデータを用いて求めることを特徴とするＣＡＤシステム。
【請求項３】
請求項１において、
前記分解組立図における部品の間隔を演算装置に求めさせる機能は前記間隔を、組立品を構成する部品の組立方向と組立品を構成する部品のバウンディングボックスとから求めた値に対して、所定の間隙値を加算又は減算することによって求めさせることを特徴とするＣＡＤシステム。
【請求項４】
請求項１において、前記演算装置にバウンディングボックスを算出させる部品は複数であることを特徴とするＣＡＤシステム。
【請求項５】
組立品の分解した状態を示す分解組立図を表示装置に表示させる分解組立図の作成方法において、
組立品を構成する部品の形状データを記憶装置に記憶させ、前記記憶装置から読み出した組立品を構成する部品の形状データに基づいて演算装置に組立品を構成する部品のバウンディングボックスを算出させ、組立品を構成する部品の組立方向と前記演算装置が算出した組立品を構成する部品のバウンディングボックスから分解組立図における部品の間隔を求め、前記演算装置が算出した部品の間隔を前記記憶装置に記憶させ、前記記憶装置から読み出した部品の間隔に基づいて作成した分解組立図を表示装置に表示させることを特徴とする分解組立図の作成方法。
【請求項６】
請求項５において、
前記部品の間隔は、部品のバウンディングボックスを構成する頂点の位置を示すデータを用いて求めることを特徴とする分解組立図の作成方法。
【請求項７】
請求項５において、前記演算装置がバウンディングボックスを算出する組立品を構成する部品は複数であることを特徴とする分解組立図の作成方法。
【請求項８】
請求項５において、
前記部品の間隔を、組立品を構成する部品の組立方向と組立品を構成する部品のバウンディングボックスとから求めた値に対して、所定の間隙値を加算又は減算することによって求めることを特徴とする分解組立図の作成方法。
【請求項９】
組立品の分解した状態を示す分解組立図を表示装置に表示させる機能を備えたＣＡＤシステムにおいて、組立品を構成する部品の組立方向に関する情報と組立品を構成する部品のバウンディングボックスに関する情報とを記憶する記憶装置と、前記記憶装置から、部品の組立方向に関する情報と部品のバウンディングボックスとを読み出し、該読み出した組立品を構成する部品の組立方向に関する情報と、該読み出した部品のバウンディングボックスとに基づいて分解組立図上の部品の位置を計算する演算装置と、前記演算装置により計算された分解組立図上の部品の位置を記憶する記憶装置と、前記記憶装置から読み出した分解組立図上の部品の位置に基づいて分解組立図を表示装置に表示させる表示手段とを備えることを特徴とするＣＡＤシステム。
【請求項１０】
組立品の分解した状態を示す分解組立図を表示装置に表示させる機能を備えたＣＡＤシステムにおいて、組立品を構成する部品の組立方向に関する情報と組立品を構成する部品のバウンディングボックスを記憶する記憶装置と、前記記憶装置から、部品の組立方向に関する情報と部品のバウンディングボックスを読み出し、該読み出した組立品を構成する部品の組立方向に関する情報と、該読み出した部品のバウンディングボックスに基づいて演算装置により求められる分解組立図における部品間隔を記憶する記憶装置と、該記憶装置から読み出した分解組立図における部品間隔に基づいて作成した分解組立図を表示装置に表示させる手段を備えることを特徴とするＣＡＤシステム。
【請求項１１】
請求項９において、前記間隔は、部品のバウンディングボックスを構成する頂点の位置を示すデータを用いて求めることを特徴とするＣＡＤシステム。
【請求項１２】
請求項９において、前記間隔を、組立品を構成する部品の組立方向と組立品を構成する部品のバウンディングボックスから求めた値に対して、所定の間隙値を加算又は減算することによって求めることを特徴とするＣＡＤシステム。
【請求項１３】
組立品の分解した状態を示す分解組立図を表示装置に表示させる分解組立図表示方法において、組立品を構成する部品の組立方向に関する情報と組立品を構成する部品のバウンディングボックスとを記憶装置に記憶する手順と、前記記憶装置から、部品の組立方向に関する情報と部品のバウンディングボックスとを読み出し、該読み出した組立品を構成する部品の組立方向に関する情報と、該読み出した部品のバウンディングボックスに基づいて分解組立図上の部品の位置を演算装置により計算する手順と、前記演算装置により計算した分解組立図上の部品の位置を前記記憶装置に記憶する手順と、前記記憶装置から読み出した分解組立図上の部品の位置に基づいて分解組立図を表示装置に表示させる手順とを備えることを特徴とする分解組立図表示方法。
【請求項１４】
請求項９において、前記間隔は、部品のバウンディングボックスを構成する頂点の位置を示すデータを用いて求めることを特徴とする分解組立図表示方法。
【請求項１５】
請求項９において、前記演算装置間隔を、組立品を構成する部品の組立方向と組立品を構成する部品のバウンディングボックスから求めた値に対して、所定の間隙値を加算又は減算することによって求めることを特徴とする分解組立図表示方法。
【請求項１６】
組立品の分解した状態を示す三次元の分解組立図を表示装置に表示させる機能を備えた三次元ＣＡＤシステムにおいて、
組立品を構成する部品の三次元の形状データを記憶装置に記憶させる機能と、前記記憶装置から読み出した三次元の形状データに基づいて演算装置に組立品を構成する部品のバウンディングボックスを算出させる機能と、組立品を構成する部品の組立方向と前記演算装置が算出した組立品を構成する部品のバウンディングボックスを基に三次元の分解組立図における部品の間隔を演算装置に求めさせる機能と、前記演算装置が求めた分解組立図における部品の間隔を記憶装置に記憶させる機能と、前記記憶装置から読み出した部品の間隔に基づいて三次元の分解組立図を演算装置により作成する機能と、前記演算装置により作成された三次元の分解組立図を表示装置に表示させる機能を有することを特徴とする三次元ＣＡＤシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の部品から構成される組立品の構造や製造工程における組立手順，保守点検や修理の手順を示す際に作成される、分解組立図を作成する装置および方法に関する。
【背景技術】
【０００２】
分解組立図は、部品を組み合わせた状態から個々の部品をばらし、組付方向と逆の方向に、組立順に配置した図面である。このような分解組立図は、複数の部品から構成される組立品の構成や製造工程における組立手順，保守点検や修理の手順等を示すときに用いられる。従来、分解組立図は、製品の組立図や部品図等の製作図と組立手順等を示した組立手順書を元に手書きで作成していた。また、近年ではＣＡＤシステムが製品設計に用いられ、三次元ＣＡＤシステムを用いて作成した製品の組立モデルを作成し、この三次元CADシステムで作成したデータを元にユーザが組立手順を考慮して、移動コマンドによって部品を移動させることによって分解組立図を作成している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の従来技術では、人手で分解組立図を作成していたために、非常に時間がかかった。また、三次元ＣＡＤシステムで作成した組立品の形状データを利用すれば、少なくとも部品の形状を書く必要はないが、部品を１つ１つオペレータが移動方向と移動量を指示して移動させるために手間がかかった。また、製造準備段階で組立手順を検討している段階では、組立手順が正しいかどうかを形状を見て確認する必要がある。ところが組立手順の決定には試行錯誤を伴い、手順を変更する度に分解組立図を人手で作り直すため工数が非常にかかるという問題が有った。
【０００４】
本発明の目的は、組立手順を容易に確認できる分解組立図を容易に作成する装置及び方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、入力部と，組立品を構成する部品の形状データを記憶する形状データメモリと，前記形状データに基づいて組立品を表示部に表示する演算部を有するものにおいて、組立工程データと前記形状データに基づいて、前記組立品を構成する部品の分解状態の配置位置を決定する手段を設け、この決定された配置位置に応じて分解組立図を前記表示部に表示するようにしたことに特徴がある。
【０００６】
具体的には、前記組立工程データは、部品の組立順序と組立方向とからなり、前記配置位置決定手段は、形状データメモリ内の部品の頂点座標と組立方向ベクトルとの内積を演算し、その内積値の最小値を求めると共に前記読み出された部品の頂点座標と組立方向ベクトルとの内積を演算し、その内積値の最大値を求め、求めた差分に基づいて前記組立品を構成する部品を分解組立図上で分解状態にする際の各部品間の間隔を決定し、この決定された部品間隔に応じて分解組立図を前記表示部に表示するものであります。
【０００７】
本発明によれば、配置位置決定手段により、形状データメモリ内の部品の頂点座標と組立方向ベクトルとの内積が演算され、その内積値の最小値が求められると共に前記読み出された部品の頂点座標と組立方向ベクトルとの内積が演算され、その内積値の最大値が求められ、求められた差分に基づいて前記組立品を構成する部品を分解組立図上で分解状態にする際の各部品間の間隔が決定され、この決定された部品間隔に応じて分解組立図が表示部に表示されるので、分解組立図の自動作成が可能となり、従来行われていた、部品を１つ１つオペレータが移動方向と移動量を指示して移動させるという作業が不要となり、分解組立図作成の工数を低減することが可能となる。
【発明の効果】
【０００８】
本発明によれば、分解組立図の自動作成が可能となり、従来行われていた、部品を１つ１つオペレ−タが移動方向と移動量を指示して移動させるという作業が不要となり、分解組立図作成の工数を低減することが可能となる。
【発明を実施するための最良の形態】
【０００９】
図１に本発明による分解組立図作成装置の構成の一実施例を示す。入力装置１０１は、キーボードやマウス等のユーザからの指示を取り込む機器および通信装置や記憶装置等の他の計算機からデータを受け取る装置で構成する。演算装置１０２は、ＣＰＵで構成し、記憶装置１０３に記憶されたプログラムによって記憶装置１０３内のデータを演算したり、入力装置１０１及び出力装置１０４とのデータのやり取りを行う。記憶装置１０３は、ＲＡＭや磁気ディスク等で構成し、プログラム及びデータを記憶する。出力装置１０４は、ＣＲＴ等の表示装置や通信装置や記憶装置等の他の計算機へデータを受け渡す機器で構成する。
【００１０】
記憶装置１０３には、形状データ１０５，組立手順データ１０６，形状データ入力プログラム１０７，組立手順入力プログラム１０８，組付部品移動プログラム１０９，分解組立図表示プログラム１１０を格納する。形状データ１０５は組立品の幾何情報を記憶する。組立手順データ１０６は、組立の順序毎に組付部品１１１，組付方向１１２を記憶する。形状データ入力プログラム１０７は、入力装置１０１から組立品の幾何情報を取り込み、形状データ１０５に格納する。組立手順入力プログラムは、入力装置１０１から組立の順序毎に、組付部品と組付方向を取り込み、組立手順データ１０６に格納する。組付部品移動プログラム１０９は、ある組立手順ステップにおいて、組付部品１１１の形状データと既に取付済みの部品の形状データと組付方向１１２から、分解組立図上の組付部品位置を計算し、形状データ１０５内の組付部品の部品位置を変更する。分解組立図表示プログラム１１０は、形状データ１０５を出力装置１０４に出力する。
【００１１】
形状データ１０５及び組立手順データ１０６の入力は、マウス及びキーボードを用いてユーザが入力するか、他の計算機でデータを作成したデータを、ネットワークや記憶装置等を介して入力する。
【００１２】
本実施例における分解組立図作成方法の一例を図４３に示す。処理４３０１では、組立の対象となる部品の形状データ及び組立完了状態における部品の配置位置を取り込む。処理４３０２では、部品の組立順序，組立方向のデータからなる組立手順データを取り込む。処理４３０３では、部品形状，配置位置，組立順序、及び組立方向から、組立品を構成する１つ１つの部品について分解した状態での配置位置を計算する。処理４３０４では、処理４３０３で求めた配置位置に基づいて部品形状を表示する。
【００１３】
図２に組付部品移動プログラム１０９の一実施例の詳細な構成を示す。手順順次読みだしプログラム２０１は、組立手順データ１０６内の１つ１つの組立手順ステップを読みだし、組付部品メモリ２０２および組付方向メモリ２０８に格納する。組付方向１１２は、既に組立済みの部品に組付部品を組み付けるときの方向を表すもので、単位ベクトルで表す。これをＶa とする。また、組付済み部品メモリ２０４は、ある組立手順ステップ以前の手順ステップで取り付けた部品のリストを格納するものである。内積最小値計算プログラム２０５は、組付済み部品メモリ２０４から組み付け済み部品のリストを読みだし、それらの部品の頂点と取り付け方向の内積を計算し、その中の最小値を計算する。これを
Ｄmin とする。内積最大値計算プログラム２０６は、組付部品メモリ２０２より組み付ける部品を読みだし、それらの部品の頂点の座標値を形状データ１０５から取り出す。それらの座標値と組付方向の内積をそれぞれ計算し、その中の最大値を求める。これをＤmax とする。組付部品位置変更プログラム２０７は、以下の式（１）によって組付部品の移動ベクトルＶを求める。ただし、Ｄconst はあらかじめ定めた一定量のすきまである。
（数１）
Ｖ＝(Ｄmin−Ｄmax−Ｄconst)＊Ｖa                                …（１）
そして、形状データより組付部品の位置Ｍo を取りだし、移動ベクトルＶから求めた移動マトリックスＭｖをかけた値Ｍを新しい部品位置として形状データに書き込む。この計算は以下の式（２）による。
（数２）
Ｍ＝Ｍv＊Ｍo                                                    …（２）
組付済み部品追加プログラム２０８は、位置を変更した組付部品を組付済み部品メモリ２０４に追加する。
【００１４】
次に、具体的な例を用いて組付部品移動プログラム１０９が分解組立図を作成する原理を説明する。
【００１５】
図３は、２つの部品３０１と３０２が組み立てられた状態を示している。部品３０１が組付済み部品，部品３０２が組付部品とする。ベクトル３０３は、部品３０２の組付方向を示している。内積最小値計算プログラム２０５では、組付済み部品３０１の頂点の座標値と組付方向３０３の内積の最小値を求める。図３の例では図４に示すとおり、頂点401４０１との内積が最小になりその値は４０２になる。つまり、組付済み部品３０１の形状は、組付方向３０３を数直線として考えると、内積の最小値４０２より大きい領域に存在することになる。一方、内積最大値計算プログラム２０６では、組付部品３０２の頂点の座標値と組付方向３０３との内積の最大値を求める。図３の例では図４に示すとおり、頂点４０３と組付方向の内積が最大となり、その値は４０４となる。つまり、組付部品302の形状は、組付方向３０３を数直線として考えると、内積の最大値４０４より小さい領域に存在することになる。従って、最小値４０２から最大値４０４を引くと、その値は405のようになり、４０５の分だけ組付部品を組付方向に移動すると、組付済み部品３０１と組付部品３０２の、組付方向３０３の数直線上でのそれぞれの存在領域が重ならなくなる。しかし、このままでは領域が接しているので、図５のように、４０５の値からあらかじめ定めた一定量５０１を引くと移動量は５０２となる。組付部品３０２を組付方向３０３に移動量５０２だけ平行移動すると、組付済み部３０１と組付部品３０２が分離された分解組立図が得られる。
【００１６】
図６に組付部品移動プログラムの処理フローを示す。処理６０１では、組立手順データ内の第１番目の手順ステップの組付部品を組付済み部品とする。処理６０２では、第２番目の手順ステップから最後の手順ステップについて順次、処理６０３〜処理６０７を適用する。処理６０３では、現在の手順ステップの組付部品と組付方向を組付手順データから読みだす。処理６０４では、組付部品のすべての頂点座標を形状データから読みだし、１つ１つの頂点と組付方向の内積を計算し、その値のなかの最大値を求める。処理６０５では、組付済み部品のすべての頂点座標を形状データから読みだし、１つ１つの頂点と組付方向の内積を計算し、その値のなかの最小値を求める。処理６０６では、最小値から最大値を引き、さらに一定量を引いた値に、組付方向をかけてえられるベクトル分だけ組付部品の位置を移動する。処理６０７では、移動して分解状態になった組付部品を組付済み部品に追加する。
【００１７】
次に具体的な例を用いて、図６の処理フローによって分解組立図が作成される様子を説明する。図７は説明に用いる組立品の形状を示したものである。組立品の構造は、板701に部品７０２がボルト７０３によって固定され、また、部品７０４がボルト７０５によって板７０１に固定されている。部品７０２およびボルト７０３の組付方向は方向ベクトル７０６、また部品７０４およびボルト７０５の組付方向は方向ベクトル７０７である。
【００１８】
図７の組立品の組立手順データは、例えば、図８のようになる。手順ステップ８０１は、組立手順のシーケンス番号であり、この番号順に組立を行う。組付部品８０２は、ある手順ステップにおいて組み付ける部品を表す。図８に示した部品は図７の部品に付けた符号に対応する。組付方向８０３は、ある手順ステップにおける部品の組付方向を表す方向ベクトルである。図８に示した組付方向は、図７の組付方向ベクトルに付けた符号に対応する。なお、第１番目の手順ステップ８０４は、最初に部品を置く場合なので、組付方向を特定する必要はない。
【００１９】
まず、処理６０１によって、第１番目の手順ステップ８０４の組付部品７０１を組立済み部品とする。この段階では、図７の組立状態のままである。なお説明上、組付部品と組付済み部品を区別するために、組付済み部品を網かけで、組付部品を斜線のハッチングで示す。図７の状態では、部品７０１が組付済み部品である。次に、処理６０２で、手順ステップ２から５までに処理６０３から６０７を繰り返して適用する。第２番目の手順ステップ８０５に処理６０３を実行すると、組付部品は７０２となる。この状態を図９に示す。処理６０４を実行すると内積の最大値９０１が、処理６０５を実行すると内積の最小値９０２が得られ、処理６０６を実行すると最小値と最大値の差は９０３となり、一定量の隙間を９０４とすると移動ベクトル９０５が得られ、移動後の部品７０２の位置は９０６になる。処理６０７を実行すると、組付部品であった部品７０２は、９０６の位置で組付済み部品となる。図１０に第３番目の手順ステップ８０６に処理６０３〜処理６０７を実行中の様子を示す。組付部品はボルト７０３で、組付方向ベクトルは７０６である。処理６０４を実行すると、組付部品はボルト７０３なので、内積の最大値は１００１になる。処理６０５を実行すると、組付済み部品は部品７０１と部品７０２なので、内積の最小値は１００２になる。１００２から１００１を引いた値１００３が得られ、これから一定値１００４を引いた値１００５で、組付部品である７０３を組付方向７０６に移動すると
１００６の位置になる。そして、部品７０３は１００６の位置で組付済み部品となる。同様にして第４番目の手順ステップ８０７に処理６０３〜処理６０７を実行中の様子を図
１１に示す。この場合、内積の最大値と最小値は等しく、図１１の１１０１のようになる。従って、移動量は隙間分の１１０２となる。従って、移動後の部品７０４の位置は1103になる。更に、第５番目の手順ステップ８０８に処理６０３〜処理６０７を実行中の様子を図１２に示す。組付部品７０５の頂点と組付方向７０７の内積の最大値は１２０１，組付済み部品７０１〜７０４の頂点と組付方向７０７の内積の最小値は１２０２，最小値と最大値の差は１２０３，隙間を１２０４とすると、移動量は１２０５となる。従って、移動後の部品７０５の位置は１２０６となる。図１３に処理終了後の形状データの様子を示す。これを表示することにより、分解組立図が得られる。
【００２０】
本実施例では、二次元で説明を行ったが、本発明ではこれを三次元でもそのまま実現できる。例えば図１４において、組付部品を１４０１，組付済み部品を１４０２，組付方向を下向き方向の１４０３とする。組付方向１４０３と組付部品１４０１の頂点座標との内積の最大値は１４０４となる。また、組付方向１４０３と組付済み部品１４０２の頂点座標との内積の最小値は１４０５となる。最小値１４０４から最大値１４０５を引き、さらに隙間分１４０６を引いたもの１４０７が、組付部品の移動ベクトルとなる。図１５に移動ベクトルによって組付部品１４０２を移動した後の形状データを示す。
【００２１】
また、上記の実施例では、組付部品および被組付部品の頂点と組付方向ベクトルとの内積を計算したが、部品に曲面が含まれる場合は、曲線および曲面の制御点も内積計算の対象とすると、曲面で接する部品のよりわかりやすい分解組立図が作成できる。図１６において、組付部品を１６０１，被組付部品を１６０２とする。組付部品および被組付部品に曲面１６０３が含まれている場合、組付方向ベクトル１６０９との内積計算行う際、頂点１６０７，１６０８の座標と共に、曲面１６０３の制御点１６０５，１６０６も計算の対象とする。その結果、組付部品１６０１の頂点と制御点の座標値と、組付方向ベクトル
１６０９との内積の最大値は、頂点１６０８の座標値と方向ベクトル１６０９の内積値
１６１０となる。また、被組付部品１６０２の頂点と制御点の座標値と、組付方向ベクトル１６０９との内積の最小値は、制御点１６０５の座標値と方向ベクトル１６０９の内積値１６１１となる。最小値１６１１と最大値１６１０の差より隙間量１６１２を引いた値１６１３が組付部品１６０１の移動量となる。図１７に移動後の形状データを示す。このようにして、頂点座標だけでは曲線や曲面を含む部品をすべて分離することができないが、曲線や曲面の制御点を用いることにより、すべての部品を分離した分解組立図を作成することができる。
【００２２】
本発明の他の実施例では、部品の形状データの頂点や制御点の代わりに、部品形状を包含する多角形であるバウンディングボックスの頂点を用いる。図１８に本実施例を実現する組付部品移動量計算プログラム１０９の構成を示す。本プログラムは、図２に示した組付部品移動量計算プログラム１０９にバウンディングボックス計算プログラム１８０１を追加したものである。バウンディングボックス計算プログラム１８０１は、形状データ
１０５を参照し、部品形状を包含する多角形を求める。内積最小値計算プログラム２０５は、組付済み部品メモリ２０４に記憶されている部品に対応するバウンディングボックスをバウンディングボックス計算プログラム１８０１から読みだし、１つ１つ頂点座標と組付方向メモリ２０８に記憶されている組付方向ベクトルとの内積を計算し、それらの中から最小値を求める。内積最大値計算プログラム２０６は、組付済み部品メモリ２０４に記憶されている部品に対応するバウンディングボックスをバウンディングボックス計算プログラム１８０１から読みだし、１つ１つの頂点座標と組付方向メモリ２０８に記憶されている組付方向ベクトルとの内積を計算し、それらの中から最大値を計算する。図１８のその他の部分は、図２と同様である。
【００２３】
部品形状を包含する多角形であるバウンディングボックスは、例えば図１９に示すような、部品座標系又は組立品座標系の座標軸１９０１に平行な立方体１９０２である。このようなバウンディングボックスは、部品形状を構成する頂点や制御点の座標値のｘ軸方向の最大値と最小値，ｙ軸方向の最大値と最小値，ｚ軸方向の最大値と最小値をそれぞれ求めることにより計算できる。バウンディングボックスの計算は、移動量を計算する前にあらかじめすべての部品のバウンディングボックスについて行ってもおいてもよいし、移動量計算中に行ってもよい。また、形状データ１０５に含めておいてもよい。このときは、バウンディングボックス計算プログラム１８０１は不要となる。バウンディングボックスは、部品形状を完全に包含しているため、組付部品の移動量は、頂点や制御点の座標を使って計算した移動量より、必ず大きくなるため、すべての部品を分離した分解組立図が作成できる。
【００２４】
尚、ここでバウンディングボックスを用いる本実施例について以下に具体的に説明する。図４４は、分解組立図上の部品配置を決定する手順を示すフローチャートである。処理４４０１では、組立の対象となる部品の形状データ及び組立完了状態における部品の配置位置を取り込む。処理４４０２では、部品の組立順序，組立方向のデータからなる組立手順データを取り込む。処理４４０３では、組付済みの部品のリストである被組付部品リストを空にしてから組立手順データの第１番目の組付部品を被組付部品リストにセットする。処理４４０４では、組立手順データの２番目の組付部品から最後の組付部品について組立順序の順に処理４４０５〜処理４４０９を繰り返す。処理４４０５では、組付部品のバウンディングボックスを算出する。次に処理４４０６では、被組付部品リストに含まれる部品をすべて包含するバウンディングボックスを算出する。処理４４０７では、組付方向と組付部品のバウンディングボックス、被組付部品のバウンディングボックスから、お互いのバウンディングボックスが隣接するような組付部品の移動量を計算する。処理4408では、組付部品を組付方向と反対方向に、処理４４０７にて求めた移動量だけ移動する。処理４４０９では、移動の終わった組付部品名を被組付部品リストに追加する。
【００２５】
図４５に処理４４０７の詳細なフローチャートを示す。処理４５０１では、組付部品のバウンディングボックスの各頂点を始点とし、組付方向の反対方向に延びる半直線を引く。二次元の場合は４本の半直線が引ける。三次元の場合は６本の半直線が引ける。処理
４５０２では、処理４５０１で作成した半直線と被組付部品のバウンディングボックスとの交点を求める。１つの半直線が被組付部品のバウンディングボックスと２つの交点を持つときは、始点から遠いほうを交点とする。処理４５０３では、それぞれの半直線について、始点から交点までの距離を算出する。交点がない場合は、距離は０とする。処理4504では、処理４５０３で求めた距離のうち最大値を選択し、それを移動量とする。
【００２６】
本実施例による分解組立図作成の実行例を図４６〜図４８に示す。図４６は、説明のための組立品の完成状態の図面である。プレート４６０１にボルト４６０２が固定されている様な構造になっている。ボルト４６０２が組付部品，プレート４６０１が被組付部品で、ボルト４６０２の組付方向が４６０３であるとする。図４７に計算の途中で使われるバウンディングボックス，半直線等の情報を図示しながら処理を説明する。まず、最初に処理４４０５および処理４４０６により被組付部品のバウンディングボックス４７０１および組付部品のバウンディングボックス４７０２を算出する。次に、処理４５０１により、組付部品のバウンディングボックス４７０２の頂点４７０３，４７０４，４７０５，4706から組付方向４６０３と反対方向に半直線４７０７，４７０８，４７０９，４７１０を引きだす。次に処理４５０２により半直線４７０７，４７０８，４７０９，４７１０と被組付部品のバウンディングボックス４７０１の交点４７１１，４７１２,４７１３,４７１４を算出する。次に処理４５０３により始点と交点の間の距離、つまり、頂点４７０３〜交点４７１１，頂点４７０４〜交点４７１２，頂点４７０５〜交点４７１３，頂点４７０６〜交点４７１４を算出する。さらに処理４５０４で始点と交点間の距離のうち最大値、したがって図４７の場合は頂点４７０３〜交点４７１１の距離を移動量とする。図４８は、処理４４０８により算出した移動量４８０１で組付部品４６０２を組付方向４６０３と反対方向に移動した状態を示す。このように図４５に示した処理フローにより計算した移動量を用いると、組付部品と被組付部品のバウンディングボックスが重ならない位置に組付部品を配置することができ、したがって、組付部品と被組付部品を分離して部品を配置することができる。これを組立手順の順に適用していけば、組立品全体の分解組立図を自動的に作成することができる。
【００２７】
本発明の更に他の実施例を以下に示す。図２０は、図１の分解組立図作成装置において、視線方向入力プログラム２００１を追加すると共に、組付部品移動プログラム１０９を視線方向を考慮した組付部品移動プログラム２００２に、分解組立図表示プログラム110を視線方向入力プログラム２００１によって入力された視線方向で表示するようにした分解組立図表示プログラム２００３に変更した機能構成図である。視線方向入力プログラム２００１は、入力装置１０１よりユーザの指示や他のプログラムや計算機からの視線ベクトルを取り込むものである。視線方向を考慮した組付部品移動プログラム２００２は、視線方向入力プログラム２００１から、視線方向ベクトルを受け取り、組立品の形状データ１０５と組立手順データ１０６と視線方向ベクトルから部品の移動量を決定し、形状データ１０５から読みだした部品の位置を変更し、形状データに書き込む。
【００２８】
図２１に視線方向を考慮した組付部品移動プログラム２００２の一実施例の構成図を示す。手順順次読みだしプログラム２０１は、組立手順データ１０６内の１つ１つの組立手順ステップを読みだし、組付部品メモリ２０２および組付方向メモリ２０８に格納する。組付方向１１２は、既に組立済みの部品に組付部品を組み付けるときの方向を表すもので、単位ベクトルで表す。これをＶa とする。また、組付済み部品メモリ２０４は、ある組立手順ステップ以前の手順ステップで取り付けた部品のリストを格納するものである。視線方向を法線とする平面への投影プログラム２１０１は、視線方向入力プログラム2001より視線方向ベクトルＶe を受け取り、また、組付方向メモリ２０８より組付方向ベクトルＶa を読みだし、以下の式（３）によって視線方向Ｖe を法線ベクトルとする平面への組付方向ベクトルＶa の投影ベクトルＶp を計算する。
（数３）
Ｖp＝（Ｖe×Ｖa）／｜Ｖe×Ｖa｜×Ｖe                            …（３）
内積最小値計算プログラム２１０２は、組付済み部品メモリ２０４から取り付け済み部品のリストを読みだし、それらの部品の頂点と投影ベクトルＶp の内積を計算し、その中の最小値を計算する。これをＤmin とする。内積最大値計算プログラム２１０３は、組付部品メモリ２０２より組み付ける部品を読みだし、それらの部品の頂点の座標値を形状データ１０５から取り出す。それらの点と投影ベクトルＶp の内積を計算し、その中の最大値を求める。これをＤmax とする。組付部品位置変更プログラム２１０４は、以下の式
（４）によって組付部品の移動ベクトルＶを求める。ただし、Ｄconst はあらかじめ定めた一定量のすきまである。
（数４）
Ｖ＝（Ｄmin−Ｄmax−Ｄconst）＊Ｖa／（Ｖp・Ｖa）                …（４）
そして、形状データ１０５より組付部品の位置Ｍo を取りだし、移動ベクトルＶから求めた移動マトリックスＭv をかけた値Ｍを新しい部品位置として形状データ１０５に書き込む、この計算は以下の式（２）による。
（数５）
Ｍ＝Ｍv＊Ｍo                                                    …（２）
組付済み部品追加プログラム２０８は、位置を変更した組付部品を組付済み部品メモリ２０４に追加する。
【００２９】
次に、具体的な例を用いて組付部品移動プログラム２００２が分解組立図を作成する原理を説明する。図２２は、２つの部品２２０１と２２０２が組み立てられた状態を示している。部品２２０１が組付済み部品，部品２２０２が組付部品とする。ベクトル２２０３は、部品２２０２の組付方向Ｖa を示している。視線方向ベクトルＶe は図２２において紙面に垂直に手前から向こう側への方向とする。図２３は、視線方向ベクトルＶe と組付方向ベクトルＶa に垂直な方向から図２２の組立品を見た図である。ベクトル２３０１は視線方向ベクトルＶe である。図２３の紙面に垂直な方向ベクトルＶt は、視線方向ベクトルＶe と垂直かつ、組付方向ベクトルＶa と垂直であるために、視線方向ベクトルＶe と組付方向ベクトルＶa の外積によって計算されるベクトルを正規化したベクトルである。したがって、Ｖt は以下の式（５）で求められる。
（数６）
Ｖt＝（Ｖe×Ｖa）／｜Ｖe×Ｖa｜                                 …（５）
ただし、Ｖt は図２３において手前から向こう側へ向かうベクトル２３０２とする。
【００３０】
視線方向Ｖe を法線ベクトルとする平面への組付方向ベクトルＶa の投影ベクトルＶp は、図２３では方向ベクトル２３０３となる。投影ベクトルＶp は、Ｖt と垂直かつ視線方向Ｖe と垂直なので、Ｖt とＶe の外積によって計算されるベクトルである。ただし、Ｖt とＶe は直交するので、正規化する必要がない。以上をまとめると、投影ベクトル
Ｖp は以下の式（６）で求められる。
（数７）
Ｖp＝Ｖt×Ｖe＝（Ｖe×Ｖa）／｜Ｖe×Ｖa｜×Ｖe                  …（６）
内積最小値計算プログラム２１０２では、取付済み部品２２０１の頂点の座標値と投影ベクトル２３０３の内積の最小値を求める。図２２の例では、図２３に示すとおり、頂点２３０４との内積が最小になり、その値は２３０５になる。一方、内積最大値計算プログラム２１０３では、組付部品２２０２の頂点の座標値と投影ベクトル２３０３との内積の最大値を求める。図２２の例では、図２３に示すとおり、頂点２３０６と投影ベクトル
２３０３の内積が最大となり、その値は２３０７となる。次に、最小値２３０５から最大値２３０７を引くと、その値は２３０８のようになる。２３０８の値からあらかじめ定めた一定量２３０９を引くと２３１０となる。２３１０は、投影ベクトル上での移動量なので、組付方向２２０３で投影ベクトル２３０３に投影した結果が２３１０となるような移動量を求める必要がある。これは、投影ベクトル２３０３方向の移動量２３１０を投影ベクトル２３０３と組付向ベクトル２２０３の内積で割ればよい。このようにして移動量
２３１１は計算できる。組付部品２２０２を組付方向２２０３に移動量２３１１だけ平行移動すると、図２４のようになり、視線方向から見ると図２５で示すように、組付済み部２２０１と組付部品２２０２の重なり部分がない分解組立図が得られる。
【００３１】
図２６に視線方向を考慮した組付部品移動プログラムの処理フローを示す。処理2601では、視線方向入力プログラムより視線方向ベクトルを取り込む。処理２６０２では、組立手順データ内の第１番目の手順ステップの組付部品を組付済み部品とする。処理２６０３では、第２番目の手順ステップから最後の手順ステップについて順次、処理２６０４〜処理２６１０を適用する。処理２６０４では、現在の手順ステップの組付部品と組付方向を組付手順データから読みだす。処理２６０５では、視線方向と組付方向が平行であるかどうかをチェックする、平行な場合は、外積が０となってしまうのでエラーとする。処理
２６０６では、投影組付方向Ｖp を上記の式（６）によって計算する。処理２６０７では、組付部品のすべての頂点座標を形状データから読みだし、１つ１つの頂点と投影組付方向の内積を計算し、その値のなかの最大値を求める。処理２６０８では、組付済み部品のすべての頂点座標を形状データから読みだし、１つ１つの頂点と投影組付方向の内積を計算し、その値のなかの最小値を求める。処理２６０９では、最小値から最大値を引き、さらに一定量を引いた値を組付方向と投影組付方向の内積で割った値に、組付方向をかけてえられるベクトル分だけ組付部品の位置を移動する。移動ベクトルをＶとすると、以下の式（４）で求められる。
（数８）
Ｖ＝（Ｄmin−Ｄmax−Ｄconst）／（Ｖp・Ｖa）＊Ｖa                …（４）
ただし、Ｄminは、処理２６０８で求めた内積の最小値、Ｄmaxは、処理２６０７で求めた内積の最大値、Ｄconst は一定量の隙間値、Ｖa は組付方向ベクトル、Ｖp は処理2606で求めた投影組付方向ベクトル、Ｖa は処理２６０４で読みだした組付方向ベクトルである。処理２６１０では、移動して分解状態になった組付部品を組付済み部品に追加する。
【００３２】
本実施例では、投影ベクトルとの内積計算に頂点の座標値を用いたが、曲面を含む場合には曲面の制御点の座標値も頂点座標値と共に用いてもよい。また、頂点や制御点の代わりに、部品の形状を包含する多面体であるバウンディングボックスの頂点座標を用いても良い。
【００３３】
図２７に、図１及び図２における組付部品移動プログラム１０９の更に他の実施例の詳細な構成２７０１を示す。手順順次読みだしプログラム２０１は、組立手順データ１０６内の１つ１つの組立手順ステップを読みだし、組付部品メモリ２０２および組付方向メモリ２０８に格納する。組付方向１１２は、既に組立済みの部品に組付部品を組み付けるときの方向を表すもので、単位ベクトルで表す。これをＶa とする。また、組付済み部品メモリ２０４は、ある組立手順ステップ以前の手順ステップで取り付けた部品のリストを格納するものである。接触面検出プログラム２７０２は、組付部品を組付部品メモリ２０２から読みだし、組付済み部品を組付済み部品メモリ２０４から読みだし、組付部品と組付済み部品の間の接触面を形状データ１０５を参照して検出する。
【００３４】
内積最小値計算プログラム２０５は、接触面検出プログラム２７０２より組付部品と組付済み部品の接触面を取り出し、その頂点と取り付け方向の内積を計算し、その中の最小値を計算する。これをＤmin とする。内積最大値計算プログラム２０６は、組付部品メモリ２０２より組み付ける部品を読みだし、それらの部品の頂点の座標値を形状データ105から取り出す。それらの点と組付方向の内積を計算し、その中の最大値を求める。これをＤmax とする。組付部品位置変更プログラム２０７は、上記の式（１）によって組付部品の移動ベクトルＶを求める。そして、形状データより組付部品の位置Ｍo を取りだし、移動ベクトルＶから求めた移動マトリックスＭv をかけた値Ｍを新しい部品位置として形状データに書き込む。この計算は上記の式（２）による。組付済み部品追加プログラム208は、位置を変更した組付部品を組付済み部品メモリ２０４に追加する。
【００３５】
次に、具体的な例を用いて組付部品移動プログラム１０９が分解組立図を作成する原理を説明する。図２８は、２つの部品２８０１と２８０２が組み立てられた状態を示している。部品２８０１が組付済み部品，部品２８０２が組付部品とする。ベクトル２８０３は、部品２８０２の組付方向を示している。まず、接触面検出プログラム２７０２は、組付済み部品２８０１と組付部品２８０２の間の接触面を検出し、図２９に示すように、ねじの座面２９０１とねじ面２９０２を得る。内積最小値計算プログラム２０５では、面2901と面２９０２の頂点の座標値と組付方向２８０３との内積の最小値を求める。図２９の例では、図３０に示すとおり、面２９０１の頂点３００１と方向ベクトル２８０３の内積が最小になり、その値は３００２になる。一方、内積最大値計算プログラム２０６では、組付部品２８０２の頂点の座標値と組付方向２８０３との内積を計算する。図２８の例では、図３０に示すとおり、頂点３００３と組付方向２８０３の内積が最大となり、その値は３００４となる。次に、最小値３００２から最大値３００４を引き、さらにあらかじめ定めた一定量３００５を引くと移動量は３００６となる。組付部品２８０２を組付方向2803に移動量３００６だけ平行移動すると、図３１のような組付済み部２８０１と組付部品
２８０２が分離された分解組立図が得られる。
【００３６】
本実施例では、接触面の頂点を内積計算に用いたが、曲面や曲線の制御点も頂点と共に内積計算に用いてもよい。また、接触面の頂点や制御点の代わりに、接触面を包含するバウンディングボックスをあらかじめ求めておき、このバウンディングボックスの頂点を組付方向ベクトルとの内積計算に用いてもよい。さらに、図２１に示した視線方向を考慮した組付部品移動プログラム２００２に接触面検索プログラムを組み込んで、部品の頂点の代わりに接触面の頂点を内積最小値計算に用いてもよい。
【００３７】
次に、本発明による更に他の実施例の構成を図３２に示す。図３２は、図２７の接触面検出プログラムを備えた組付部品移動プログラム２７０１に、組付部品の接触面と組付済み部品の接触面の対応を表す対応線を作成する対応線作成プログラム３２０１を追加したものである。図３３と図３４を用いて対応線作成プログラム３２０１の動作を説明する。対応線作成プログラム３２０１は、接触面検出プログラム２７０２より接触面を受け取り、例えばその重心を計算する。図３３の例では、接触面２９０１が接触面検出プログラム２７０２より渡され、重心３３０１が求められる。また、組付部品位置変更プログラム
２０７より組付部品の移動ベクトル３００６を受け取り、接触面の重心３３０１を移動ベクトル３００６だけ移動した点３３０２を求める。そして点３３０１と点３３０２の間を結ぶ線分を形状データ１０５に追加する。これを表示すると図３４のように、組付部品の接触面と組付済み部品の接触面の対応を表す対応線３４０１が分解組立図とともに表示できる。対応線３４０１は、図３４では一点鎖線で表したが、形状を表す線と異なる色や線の太さで表示してもよい。
【００３８】
これまで述べてきた実施例では、組付部品の移動ベクトルを計算する際に、一定値の隙間Ｄconst を用いてきたが、この隙間を視線方向ベクトルと組付方向ベクトルから計算してもよい。
【００３９】
図３５は、組付部品と組付済み部品との隙間が一定値の場合と、視線方向ベクトルと組付方向ベクトルから計算する場合の例を示している。視線方向をベクトル３５０１とする。部品３５０２と部品３５０３を組付方向３５０４で組み付けるとすると、隙間は3505となる。この場合、組付方向３５０４は視線方向３５０１に垂直なため、視線方向３５０１から見た見かけ上の隙間３５０７は実際の隙間３５０５と等しくなる。ところが、部品
３５０８と部品３５０９を組立方向３５１０で組み付ける場合、隙間は３５１１となり
３５０５と同じ大きさであるが、視線方向３５０１から見た見掛け上の隙間３５１２は
３５０７に比べて小さくなる。見掛け上の隙間が小さくなると、部品同士が近づいてみえて分解組立図としては分かりにくくなってしまう。見掛け上の隙間は、組付方向と視線方向が平行に近づくほど小さくなる。そこで、例えば、隙間Ｄconst を次式（７）のように計算する。
【００４０】
【数９】
0003651476.tif 000002
【００４１】
ただし、Ｖa は組付方向ベクトル、Ｖe は視線方向ベクトル、Ｃは正の定数とする。例えば、図３５における部品３５１３と部品３５１４を組付方向３５１５で組み付ける場合、組付方向３５１５に平行な長さ１のベクトル３５１６の見掛け上の長さ３５１７は、
３５１８の長さがＶa とＶe の内積の絶対値となるので上記の式（７）の分母となる。従って、隙間３５１９を、上記の式（７）で計算すれば、組立方向と視線方向の関係によらず見掛け上の隙間３５２０を一定値Ｃに保つことができる。
【００４２】
次に、組立品の構造によっては、１つずつ部品を組み付けることができず、いくつかの部品を組み立てたサブアッセンブリを組み立ててから組み付けなければ組み立てられない場合があるため、以下では、サブアッセンブリがある場合の実施例について説明する。先ず、図４９にこのような組立品の例を示す。図４９に示した組立品は、部品４９０１，
４９０２，４９０３の３つの部品からなる。このような組立品の場合、部品４９０１，
４９０２，４９０３の順に組み立てることはできない。まず部品４９０１を置いた後、部品４９０２と部品４９０３を組み立てた後、部品４９０１に組み付けなければならない。
【００４３】
このような組立品の組立手順データは、例えば、図５０の様に表現できる。部品レベルは、図５１に示すように組立品のサブアッセンブリ関係を木構造で表したときのルート
５１０１からの深さを表す。したがって部品４９０１の部品レベルは１、部品４９０２，４９０３の部品レベルは２、部品４９０２と４９０３を組み立てたサブアッセンブリのレベルは１となる。
【００４４】
本発明による組立途中にサブアッセンブリがあるような組立順序データから分解組立図を作成する方法の一実施例のフローチャートを図５２に示す。処理５２０１では、組立品を構成する部品の形状と組立完了状態での部品位置からなる形状データを入力する。処理５２０２では、図５０で示した様な、組立順序，組付部品，組立方向，部品レベルからなる組立手順データを入力する。処理５２０３では、組立手順データの第１番目の組付部品を被組付部品リストに設定する。処理５２０４では、組立手順データの２番目の組付部品から最後の組付部品について順番に処理５２０５以下の処理を適用する。処理５２０５では、組付部品がサブアッセンブリの最初の部品かどうかを判定する。例えば、図５０の様にサブアッセンブリを部品レベルで表す場合、組付部品の部品レベルが１つまえの組付部品の部品レベルより大きい場合、サブアッセンブリの最初の部品となり、処理５２０５では、yes の方へ分岐し、処理５２０６，５２０７を実行する。部品レベルが同じ場合や前の組付部品のレベルより小さいときは、noの方へ分岐し、処理５２０８〜５２１１を実行する。処理５２０６では、現在の被組付部品リストの内容を被組付部品保存用スタックにプッシュする。処理５２０７では、被組付部品リストを空にした後、現在の組付部品を被組付部品リストに設定する。処理５２０６および処理５２０７により、これまでに組み付けた部品の情報を一時保存し、サブアッセンブリの組立に関する分解組立図を作成する準備が整う。処理５２０８では、分解状態での組付部品の配置位置を組付部品、被組付部品の形状データと組付部品の組付方向から計算する。計算方法はこれまでの実施例で述べた通りである。処理５２０９では、処理５２０８で計算した配置位置に組付部品を配置する。処理５２１０では、現在の組付部品がサブアッセンブリ組立の最後の部品かどうかを判定し、最後の部品であれば処理５２１１に分岐する。現在の組付部品がサブアッセンブリ部品の最後の部品でないときは、noの方へ分岐し、処理５２１２に分岐する。例えば、図５０の様にサブアッセンブリを部品レベルで表す場合、現在の組付部品の部品レベルが１つ後の組付部品のレベルより大きいときにサブアッセンブリ組立の最後の部品となる。処理５２１１では、被組付部品保存用スタックに最後にプッシュした被組付部品をポップし、ポップした部品群を現在の被組付部品リストに設定する。処理５２１２では、組付部品を被組付部品リストに追加する。処理５２０４により処理５２０５を組立手順データのすべての組付部品に適用した後、処理５２１３にて移動後の形状データを表示する。これにより分解組立図が表示される。
【００４５】
被組付部品保存用のスタックは、例えば図５３の様な、スタックポインタ５３０１と部品名５３０３と部品個数５３０２の欄からなる表で実現する。スタックポインタ５３０１は、現在スタックに格納されている被組付部品リストの数を保存する。あらたに被組付部品リストがプッシュされたら、スタックポインタを１つだけ加算し、加算後のスタックポインタの値をインデックスとした行、この場合は３番目の行５３０４に、部品数と部品名のリストを格納する。逆に、スタックからポップする場合は、スタックポインタ５３０１の値をインデックスとした行の部品名リストをとりだすと共に、その行を表から削除し、スタックポインタ５３０１の値を１つだけ減算する。図５３の例では、スタックポインタ５３０１の値が２なので、二番目の行５３０５から部品名Ｃをとりだし、この行５３０５を削除し、スタックポインタ５３０１の値を１つ減算して１とする。このようにして後から記憶した部品名のリストを最初にとりだすことができる。
【００４６】
図５２の処理を図４９のデータおよび図５０の組立手順データに適用したときの分解組立図作成の様子を図を用いて説明する。処理５２０１，５２０２で、形状データ図４９と組立手順データ図５０を入力する。次に、処理５２０３を実行すると、図５０の最初の組立手順データの組付部品４９０１が被組付部品リストに設定される。次の組付部品4903について処理５２０５でサブアッセンブリ組立の最初の部品かどうかをチェックする。１つ前の組付部品４９０１のレベルは１であるが、現在の組付部品４９０３の部品レベルは２で、現在の組付部品の部品レベルの方が大きいので、サブアッセンブリ組立の最初であることがわかる。そこで、処理５２０６により被組付部品リストの内容、この場合は4901を被組付部品用スタックに格納する。そして、処理５２０７により現在の組付部品４９０３を被組付部品とする。この後、処理５２０４にてループし、組付部品４９０２に処理5205以下を適用する。まず、処理５２０５にてサブアッセンブリの最初であるかをチェックする。１つまえの組付部品４９０３の部品レベルと現在の組付部品４９０２の部品レベルは共に２で同一である。したがってサブアッセンブリ組立の最初の部品ではないのでnoに分岐し、処理５２０８に進む。ここで、組付部品４９０２と被組付部品４９０３の形状データと組付部品４９０２の組立方向データを用いて、分解状態の配置位置を計算する。その計算結果に基づいて処理５２０９にて４９０２を移動した状態を図５４に示す。次に処理５２１０にてサブアッセンブリ組立の最後であるかを調べる。部品４９０２の部品レベルが２で、次の組付部品４９０２＋４９０３の部品レベルが１なのでサブアッセンブリ組立の最後の部品である。したがってyes の方へ分岐し、被組付部品スタックから部品4901をポップし、被組付部品リストにセットする。この後、処理５２０４にてループし、組付部品４９０２＋４９０３に処理５２０５以下を適用する。組付部品４９０２＋４９０３とは、２つの部品４９０２と４９０３を組み立てて組み付けることを示している。処理5205では、部品４９０２＋４９０３の部品レベルは１で、１つ前の組付部品４９０２の部品レベルは２であり、サブアッセンブリ組立の最初の部品ではない。したがって、noに分岐し、処理５２０８に進む。ここでは、前のループで計算した分解状態の４９０２と４９０３の位置および形状データを組付部品、部品４９０１を被組付部品として４９０２と４９０３を分解した状態の位置を求め、処理５２０９で４９０２と４９０３を移動する。この状態を図５５に示す。以上の様にして、サブアッセンブリ組立のある組立手順データの分解組立図を作成することができる。
【００４７】
サブアッセンブリ組立のある組立手順データとして、図５０の様に部品レベルによりサブアッセンブリを表現する実施例を示したが、図５６の様に組立手順データにサブアッセンブリ組立の有無を示すフラグを設け、フラグが０のときは、サブアッセンブリ組立なし、１のときはサブアッセンブリ組立ありとしてもよい。サブアッセンブリ組立の組立手順は図５７のように別の組立手順データを用意して表現する。図５６のサブアッセンブリ組立付の組付部品４９０４とサブアッセンブリ組立の組立手順データとの対応は、組立手順データにサブアッセンブリ名を記憶しておくことにより、組付部品名とサブアッセンブリ名の一致を調べることにより、対応をとることができる。このような組立手順データの表現のときは、サブアッセンブリ組立の最初かどうかの判定は、サブアッセンブリフラグが１である場合となる。また、組付部品名と同じサブアッセンブリ名である組立手順データを検索し、その最初の組付部品を新しい被組付部品とする。サブアッセンブリ組立の最後かどうかの判定は、組立順データの最後まで到達したかによって判断する。
【００４８】
次に具体的な例を用いて、図１に示した分解組立図作成装置によって、組立品の組立手順を作成する様子を示す。図３６は、説明に用いる組立品の構造である。組立品は、部品３６０１，部品３６０２，部品３６０３，部品３６０４から構成されている。図３７にユーザが入力した組立手順の一例を示す。これは、最初に部品３６０１を置き、次に部品
３６０２を上方から取り付け、次に部品３６０３を横から取り付け、最後に部品３６０４を上方から取り付けるというものである。これを本発明による分解組立図作成装置によって分解組立図を作成すると図３７のようになる。図３７を見たユーザは、部品３６０３を横から取り付けようとするが部品３６０１が邪魔になって取り付けられないことが解かる。部品３６０３は部品３６０１に上方からしか取り付けられないので、ユーザは組立手順入力プログラム１０８に指示を与えて、図３９の組立手順のように部品３６０３の取り付け方向３９０１を上方からの取り付けに変更する。図３９の組立手順を元に組付部品移動プログラム１０９を起動によって分解組立図を作成し、分解組立図表示プログラム１１０で表示すると、図４０のようになる。図４０を見ると、ユーザは部品３６０２を取り付けてから部品３６０３を取り付けているため、部品３６０２が邪魔になって部品３６０３が取り付けられないことが解かる。そこでユーザは組立手順入力プログラム１０８に指示を与えて、図４１の組立手順のように部品３６０３の組付手順ステップ４１０１を部品3602の組立手順ステップ４１０２の前に変更する。図４１の組立手順を元に組付部品移動プログラム１０９を起動によって分解組立図を作成し、分解組立図表示プログラム１１０で表示すると、図４２のようになる。図４２を見ると、組立途中で部品がぶつかったりするような不具合がないことが解かる。このようにして、組立手順を入力し、分解組立図を作成することを繰り返すことによって正しい組立手順が得られる。
【００４９】
尚、ここで更に本発明による分解組立図を用いた組立手順の変更方法の一例を図５８に示す。処理５８０１では、分解組立図を作成する組立品を構成する部品の形状および組立完了状態での部品位置からなる形状データを入力する。処理５８０２では、組立順序，組付部品，組立方向からなる組立手順データを入力する。処理５８０３では、組立形状データと組立手順データから分解状態の部品位置を算出する。処理５８０４では、処理5803で算出した分解状態での部品位置に部品形状を表示し、分解組立図として表示する。処理
５８０５では、ユーザに組立手順の変更があるかどうかを問い合わせる。ユーザはキーボードやマウス等の入力機器を用いて変更の必要の有無を入力する。変更の必要がない場合は、手順変更処理を終了する。変更が必要なときは、処理５８０６を実行する。処理5806では、手順変更の指示をユーザに問い合わせる。ユーザは、変更が必要な部品と変更内容をキーボードやマウスを用いて入力する。複数の変更対象の部品を指示し、処理５８０７では、ユーザが入力した変更指示に基づいて組立手順データを変更する。変更指示としては、例えば２つの部品を指定してその部品の組立順序を入れ替える指示がある。また、別な例としては、変更対象の部品を複数、順次指示したあと、別に指定した部品の前又は後に指示した順に手順を挿入する指示がある。
【００５０】
図５９〜図６３に図５８で示した組立順序編集方法の実行例を示す。図５９は、処理
５８０１で入力される形状データの例である。この例では、組立品は、部品５９０１，
５９０２，５９０３，５９０４の４つの部品からなる。図６０は、処理５８０２で入力される組立手順データの例である。この組立手順データは、まず部品５９０１を置き、次に部品５９０２を−Ｙ軸方向から組み付け、次に部品５９０３を−Ｙ軸方向から組み付け、最後に部品５９０４を−Ｙ方向から組み付ける組立手順を表している。図６１は、処理
５８０１および処理５８０４によって生成された分解組立図である。処理５８０５により組立手順変更メニュー６１０１が表示され、ユーザは例えばマウスで入れ替えコマンド
６１０２を選択する。これにより処理５８０６に制御が移り、変更指示を入力する。例えば入れ替えコマンドの場合、２つの部品５９０３と部品５９０４を指示する。そうすると、処理５８０７により組立手順データ内の部品５９０２と部品５９０３の順序を入れ替える。図６２に変更後の組立手順データを示す。変更後の組立手順データと処理５８０１で入力した形状データを用いて処理５８０３で配置位置を計算し、処理５８０４で表示した結果は、図６３の様になる。変更後の分解組立図を表示後、再び処理５８０５により組立手順変更メニュー６１０１が表示される。ここで、ユーザは移動コマンド６１０３を選択すると、処理５８０６により変更指示を入力する。移動コマンドの場合には、順序移動対象の部品、移動先の部品を分解組立図上で指示し、移動先部品の前に移動するか後に移動するかをメニューで指示する。例えば図６３上で、順序変更部品として部品５９０３と部品５９０４の順で指示し、次に移動先部品として５９０２を指示する。そして、メニュー６３０１より「前に」を選択する。処理５８０７では、処理５８０６で入力された変更指示に従い、部品５９０３と部品５９０４をこの順で部品５９０２の前に移動し、その結果、図６４の様な組立手順データが得られる。図６４の組立手順データと図５９の形状データおよび配置データをもとに、処理５８０３で配置位置を計算し、処理５８０４で表示すると図６５のような分解組立図が得られる。処理５８０５にてメニュー６１０１を表示し、ユーザがこれ以上組立順序を変更する必要がないときは終了６１０４を選択して編集処理を終了する。
【００５１】
このようにして、分解組立図上で組立手順を指示すると、部品が分解されているので部品の指示が容易になると共に、分解組立図上では、組立順序の順に部品が並んでいるので、部品の組立順序の把握が容易になる。したがって、組立完了状態で順序を変更するよりも、分解組立図上で組立順序の変更をするほうが容易である。
【００５２】
以上、本発明の実施例によれば、少なくとも形状データと組立手順データがあれば、分解組立図を自動的作成できるため、分解組立図作成の工数を低減する効果がある。
【００５３】
また、部品形状の頂点や制御点の代わりに、部品形状を包含するバウンディングボックスの頂点を用いることにより、１つの部品について高々６つの頂点と組付方向ベクトルとの内積を計算するだけですむので、高速に分解組立図を作成できるという効果がある。
【００５４】
更にまた、組付部品の移動量計算に分解組立図の視線方向を用いることにより分解組立図においてばらした部品同士が見かけ上重なりのない図を作成できるので、理解しやすい分解組立図を作成できるという効果がある。
【００５５】
また、組付部品の移動量計算に分解組立図の視線方向をもちいることにより分解組立図においてばらした部品同士を見かけ上、等間隔に配置した図を作成できるので、理解しやすい分解組立図を作成できるという効果がある。
【００５６】
また、組立状態で接触する面を分解組立図上で線で結ぶことができるので、組立方向が理解しやすい分解組立図を作成できるという効果がある。
【００５７】
また、分解組立図を容易に作成できるので、組立手順データを入力してその分解組立図を表示させ、それを見て組立手順の不具合を見つけ、組立手順データを修正するというような作業が少ない手間で可能となり、製品の製造工程での組立手順の立案が容易になるという効果がある。
【図面の簡単な説明】
【００５８】
【図１】本発明の一実施例である分解組立図作成装置の構成図である。
【図２】図１の実施例における組付部品移動部の詳細構成図である。
【図３】組立品の状態図である。
【図４】図２に示す組付部品移動部の動作原理を説明する図である。
【図５】図２に示す組付部品移動部の動作原理を説明する図である。
【図６】組付部品移動部の処理手順を表す図である。
【図７】他の組立品の状態図である。
【図８】組立手順データのデ−タ構成を表す図である。
【図９】図７に示す組立品に対する組付部品移動部の動作を説明する図である。
【図１０】図７に示す組立品に対する組付部品移動部の動作を説明する図である。
【図１１】図７に示す組立品に対する組付部品移動部の動作を説明する図である。
【図１２】図７に示す組立品に対する組付部品移動部の動作を説明する図である。
【図１３】図７に示す組立品に対し本発明の一実施例によって作成した分解組立図である。
【図１４】三次元形状の組立品に対する組付部品移動部の動作を説明する図である。
【図１５】本発明の一実施例によって作成した三次元形状データに基づく分解組立図である。
【図１６】組付部品移動部の一実施例の動作を説明する図である。
【図１７】図１６に示す本発明の一実施例によって作成した分解組立図である。
【図１８】本発明の他の実施例である分解組立図作成装置の組付部品移動部の詳細構成図である。
【図１９】部品形状を包含するバウンディングボックスの一例を表す図である。
【図２０】本発明の他の実施例である分解組立図作成装置の構成図である。
【図２１】図２０に示す組付部品移動部の詳細構成図である。
【図２２】組立品の状態図である。
【図２３】図２２に示す組付部品移動部の動作を説明する図である。
【図２４】図２２に示す組付部品移動部の動作を説明する図である。
【図２５】本発明の一実施例によって作成した分解組立図である。
【図２６】図２２に示す組付部品移動部の処理手順を表す図である。
【図２７】本発明の他の実施例である分解組立図作成装置の組付部品移動部の詳細構成図である。
【図２８】組立品の状態図である。
【図２９】組立品の接触面の例を表す図である。
【図３０】図２７に示す組付部品移動部の動作を説明する図である。
【図３１】本発明の一実施例によって作成した分解組立図である。
【図３２】本発明の他の実施例である分解組立図作成装置の組付部品移動部の詳細構成図である。
【図３３】接触面の対応線を作成する原理を説明する図である。
【図３４】本発明の一実施例によって作成した対応線を含む分解組立図である。
【図３５】視線方向により、部品間の隙間を決定する方法の原理を説明する図である。
【図３６】組立品の状態図である。
【図３７】組立手順データのデ−タ構成を表す図である。
【図３８】本発明の一実施例の装置によって作成した分解組立図である。
【図３９】組立手順データのデ−タ構成を表す図である。
【図４０】本発明の一実施例の装置によって作成した分解組立図である。
【図４１】組立手順データのデ−タ構成を表す図である。
【図４２】本発明の一実施例の装置によって作成した分解組立図である。
【図４３】本発明の一実施例である分解組立図作成方法の処理フロ−図である。
【図４４】図１８に示す実施例の分解組立図作成方法の処理フロ−図である。
【図４５】図４４のステップ４４０７の詳細フロ−図である。
【図４６】組付品の状態図である。
【図４７】組付品に対しバウンディングボックス及び半直線が付加された図である。
【図４８】配置位置決定後の状態を表す図である。
【図４９】サブアッセンブリ組立のある組立品の形状データを示す図である。
【図５０】サブアッセンブリ組立のある組立手順データのデ−タ構成図である。
【図５１】木構造により組立品を表現した図である。
【図５２】本発明の他の実施例であるサブアッセンブリ組立に対応した分解組立図作成方法の処理手順を表す図である。
【図５３】被組付部品用スタックのデ−タ構成図である。
【図５４】分解組立図作成の途中状態を表す図である。
【図５５】分解組立図作成の最終状態を表す図である。
【図５６】サブアッセンブリ組立のある組立手順データのデ−タ構成図である。
【図５７】サブアッセンブリ組立のある組立手順データのデ−タ構成図である。
【図５８】本発明の他の実施例である分解組立図上での組立手順の編集を行う際の処理手順を表す図である。
【図５９】組立品の状態図である。
【図６０】組立手順データのデ−タ構成図である。
【図６１】分解組立図上での組立手順編集の指示方法を説明する図である。
【図６２】組立手順編集後の組立手順データのデ−タ構成図である。
【図６３】組立手順編集後の分解組立図である。
【図６４】組立手順編集後の組立手順データのデ−タ構成図である。
【図６５】組立手順編集後の分解組立図である。
【符号の説明】
【００５９】
１０１…入力装置、１０２…演算装置、１０３…記憶装置、１０４…出力装置、１０５…形状データ、１０６…組立手順データ、１０７…形状データ入力プログラム、１０８…組立手順入力プログラム、１０９…組付部品移動プログラム、１１０…分解組立図表示プログラム、１１１…組付部品データ、１１２…組付方向データ。
【図１】
0003651476.tif 000003
【図２】
0003651476.tif 000004
【図３】
0003651476.tif 000005
【図４】
0003651476.tif 000006
【図５】
0003651476.tif 000007
【図６】
0003651476.tif 000008
【図７】
0003651476.tif 000009
【図８】
0003651476.tif 000010
【図９】
0003651476.tif 000011
【図１０】
0003651476.tif 000012
【図１１】
0003651476.tif 000013
【図１２】
0003651476.tif 000014
【図１３】
0003651476.tif 000015
【図１４】
0003651476.tif 000016
【図１５】
0003651476.tif 000017
【図１６】
0003651476.tif 000018
【図１７】
0003651476.tif 000019
【図１８】
0003651476.tif 000020
【図１９】
0003651476.tif 000021
【図２０】
0003651476.tif 000022
【図２１】
0003651476.tif 000023
【図２２】
0003651476.tif 000024
【図２３】
0003651476.tif 000025
【図２４】
0003651476.tif 000026
【図２５】
0003651476.tif 000027
【図２６】
0003651476.tif 000028
【図２７】
0003651476.tif 000029
【図２８】
0003651476.tif 000030
【図２９】
0003651476.tif 000031
【図３０】
0003651476.tif 000032
【図３１】
0003651476.tif 000033
【図３２】
0003651476.tif 000034
【図３３】
0003651476.tif 000035
【図３４】
0003651476.tif 000036
【図３５】
0003651476.tif 000037
【図３６】
0003651476.tif 000038
【図３７】
0003651476.tif 000039
【図３８】
0003651476.tif 000040
【図３９】
0003651476.tif 000041
【図４０】
0003651476.tif 000042
【図４１】
0003651476.tif 000043
【図４２】
0003651476.tif 000044
【図４３】
0003651476.tif 000045
【図４４】
0003651476.tif 000046
【図４５】
0003651476.tif 000047
【図４６】
0003651476.tif 000048
【図４７】
0003651476.tif 000049
【図４８】
0003651476.tif 000050
【図４９】
0003651476.tif 000051
【図５０】
0003651476.tif 000052
【図５１】
0003651476.tif 000053
【図５２】
0003651476.tif 000054
【図５３】
0003651476.tif 000055
【図５４】
0003651476.tif 000056
【図５５】
0003651476.tif 000057
【図５６】
0003651476.tif 000058
【図５７】
0003651476.tif 000059
【図５８】
0003651476.tif 000060
【図５９】
0003651476.tif 000061
【図６０】
0003651476.tif 000062
【図６１】
0003651476.tif 000063
【図６２】
0003651476.tif 000064
【図６３】
0003651476.tif 000065
【図６４】
0003651476.tif 000066
【図６５】
0003651476.tif 000067