(57)【要約】      （修正有）【課題】部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供する。【解決手段】複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶し、第１の部品の穴の位置を特定し、第１の部品の背面側に位置する第２の部品の位置を特定し、穴の位置と当該第２の部品の位置とに基づいて、穴を介して打ち出し可能な位置に第２の部品が存在するか判定し、打ち出し可能な位置に第２の部品が存在すると判定された場合に、穴を介して第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する。【選択図】図１０
2020074125.tif 000002
【特許請求の範囲】
【請求項１】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置を制御するためのプログラムであって、
前記情報処理装置を、
第１の部品の穴の位置を特定する第１の特定手段と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定手段と、
前記第１の特定手段により特定された穴の位置と、前記第２の特定手段により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段として機能させるためのプログラム。
【請求項２】
前記記憶手段は、前記複数の部品の３次元空間上の位置を記憶しており、
前記情報処理装置を、
前記第１の部品の奥行き方向を特定する方向特定手段として機能させ、
前記第１の特定手段を、前記第１の部品の、前記奥行き方向と交差する方向における位置を特定する手段として機能させ、
前記第２の特定手段を、前記第２の部品、前記奥行き方向と交差する方向における位置を特定する手段として機能させ、
前記判定手段を、前記第１の特定手段により特定された前記奥行き方向と交差する方向における穴の位置と、前記第２の特定手段により特定された前記奥行き方向と交差する方向における前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する手段として機能させ、
前記制御手段を、前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、前記第３の部品と接する部材上の位置を前記第３の部品を配置する部材上の位置として決定すべく、前記第３の部品の３次元空間上の位置を決定する手段として機能させるための請求項１に記載のプログラム。
【請求項３】
前記奥行き方向と交差する方向における位置とは、前記奥行き方向に前記第１の部品の穴及び前記第２の部品を投影した投影面における前記穴の位置及び前記第２の部品の位置であり、
前記第１の特定手段を、前記第１の部品の、前記投影面における穴の位置を特定する手段として機能させ、
前記第２の特定手段を、前記投影面における前記第２の部品の位置を特定する手段として機能させ、
前記前記判定手段を、前記投影面における穴の位置と前記投影面における前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する手段として機能させるための請求項２に記載のプログラム。
【請求項４】
前記情報処理装置を、
前記第３の部品の形状を、前記穴を介して前記第２の部品を打ち出し可能な形状に決定する形状決定手段と、
前記形状決定手段により決定された形状の前記第３の部品を生成すべく制御する生成制御手段と、
として機能させるための請求項１乃至３のいずれか１項に記載のプログラム。
【請求項５】
前記情報処理装置を、
前記第３の部品のサイズを、前記穴を介して前記第２の部品を打ち出し可能なサイズに決定するサイズ決定手段と、
として機能させ、
前記生成制御手段を、前記サイズ決定手段により決定されたサイズの前記第３の部品を生成すべく制御する手段として機能させるための請求項４に記載のプログラム。
【請求項６】
前記情報処理装置を、
前記判定手段により穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された箇所を識別表示する識別表示手段として機能させるための請求項１乃至５のいずれか１項に記載のプログラム。
【請求項７】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置であって、
第１の部品の穴の位置を特定する第１の特定手段と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定手段と、
前記第１の特定手段により特定された穴の位置と、前記第２の特定手段により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段と、
を備えることを特徴とする情報処理装置。
【請求項８】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置の制御方法であって、
第１の部品の穴の位置を特定する第１の特定工程と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定工程と、
前記第１の特定工程により特定された穴の位置と、前記第２の特定工程により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定工程と、
前記判定工程により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御工程と、
を含むことを特徴とする制御方法。
【請求項９】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備える記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムを、
第１の部品の穴の位置を特定する第１の特定手段と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定手段と、
前記第１の特定手段により特定された穴の位置と、前記第２の特定手段により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段として機能させるためのプログラム。
【請求項１０】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備える記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムであって、
第１の部品の穴の位置を特定する第１の特定手段と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定手段と、
前記第１の特定手段により特定された穴の位置と、前記第２の特定手段により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段と、
を備えることを特徴とする情報処理システム。
【請求項１１】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備える記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムの制御方法であって、
第１の部品の穴の位置を特定する第１の特定工程と、
前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定工程と、
前記第１の特定工程により特定された穴の位置と、前記第２の特定工程により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定工程と、
前記判定工程により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御工程と、
を含むことを特徴とする制御方法。
【請求項１２】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置を制御するためのプログラムであって、
前記情報処理装置を、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付手段と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定手段と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定手段として機能させるためのプログラム。
【請求項１３】
前記判定手段を、前記奥行き方向に前記第１の部品の穴及び前記第２の部品を投影した投影面における前記穴の位置及び前記第２の部品の位置に基づいて、前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する手段として機能させることを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記情報処理装置を、
前記決定手段による決定に応じて、前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に存在する前記第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段として機能させるための請求項１２又は１３に記載のプログラム。
【請求項１５】
前記情報処理装置を、
前記第３の部品の形状を、前記穴を介して前記第２の部品を打ち出し可能な形状に決定する形状決定手段と、
前記形状決定手段により決定された形状の前記第３の部品を生成すべく制御する生成制御手段と、
として機能させるための請求項１４に記載のプログラム。
【請求項１６】
前記情報処理装置を、
前記第３の部品のサイズを、前記穴を介して前記第２の部品を打ち出し可能なサイズに決定するサイズ決定手段と、
として機能させ、
前記生成制御手段を、前記サイズ決定手段により決定されたサイズの前記第３の部品を生成すべく制御する手段として機能させるための請求項１５に記載のプログラム。
【請求項１７】
前記情報処理装置を、
前記判定手段により穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された箇所を識別表示する識別表示手段として機能させるための請求項１２乃至１６のいずれか１項に記載のプログラム。
【請求項１８】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置であって、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付手段と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定手段と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定手段と、
を備えることを特徴とする情報処理装置。
【請求項１９】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置の制御方法であって、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付工程と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定工程と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定工程と、
前記判定工程により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定工程と、
を含むことを特徴とする制御方法。
【請求項２０】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムを、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付手段と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定手段と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定手段として機能させるためのプログラム。
【請求項２１】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムであって、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付手段と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定手段と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定手段と、
前記判定手段により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定手段と、
を備えることを特徴とする情報処理システム。
【請求項２２】
複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶装置と、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置と、を含む情報処理システムの制御方法であって、
第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付工程と、
指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定工程と、
前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定工程と、
前記判定工程により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定工程と、
を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、ＣＡＤ（Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ）ソフトウェアを用いた３次元モデルの作成や、図面の作成が行われている。ＣＡＤソフトで作成した複数の３次元モデルを組み立てたり、分解したりすることで、ユーザが必要とする設計物を設計することが可能である。
【０００３】
例えば特許文献１には、組立対象の３次元モデルの回転や移動に一部制限をかけることで、複数の３次元モデルを３次元ＣＡＤ上で効率よく組み立て可能とすることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１５６５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
工場等においては、ＣＡＤソフトで設計した３次元モデルを基に製造した部品を複数組み合わせて自動で組み立てたり、分解したりする装置が用いられている。
【０００６】
組み立てを行うためには、例えば螺子止めをする穴が手前にあり、奥に螺子止めする対象となる部品が存在する位置に螺子を挿入することが必要となる。また、奥の部品に螺子穴が空いている場合、奥の部品の螺子穴の位置であって、手前に螺子止め対象の部品がある位置に螺子を挿入する必要がある。また、部品の一部を打ち抜いて（打ち出して）複数の部品を分離させたり、分解したりするためには、手前の部品に穴が空いている位置であり、奥に分離させたい部品が存在する位置を打ち抜く必要がある。
【０００７】
部品の種類によっては、これらの位置が部品上に多く存在する。例えば自動組立装置や分解装置に部品を組立、分解させるにあたり、螺子を挿入したり打ち抜いたりする位置や、打ち抜くための打ち抜き用部品の位置を、ＣＡＤソフトの画面上でユーザが手動で指定して決定するのは非常に手間であった。
【０００８】
本発明は、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置を制御するためのプログラムであって、前記情報処理装置を、第１の部品の穴の位置を特定する第１の特定手段と、前記第１の部品の背面側に位置する第２の部品の位置を特定する第２の特定手段と、前記第１の特定手段により特定された穴の位置と、前記第２の特定手段により特定された前記第２の部品の位置とに基づいて、当該穴を介して打ち出し可能な位置に前記第２の部品が存在するか判定する判定手段と、前記判定手段により当該穴を介して打ち出し可能な位置に前記第２の部品が存在すると判定された場合に、当該穴を介して当該第２の部品を打ち出す第３の部品を配置する部材上の位置を決定すべく制御する制御手段として機能させることを特徴とする。
また、本発明は、複数の部品を、奥行き方向における部品の位置関係を特定可能に記憶する記憶手段を備え、穴を介して部品を打ち出す部品打ち出し装置により用いられる打ち出し用部品の設計を行う情報処理装置を制御するためのプログラムであって、前記情報処理装置を、第１の部品を指定して、当該第１の部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理を実行する実行指示を受け付ける指示受付手段と、指定された前記第１の部品の奥行き方向において、前記第１の部品の背面側にある第２の部品を特定すべく制御する特定手段と、前記第１の部品の前面側に開いている穴を介して打ち出し可能な前記第１の部品の背面側の位置に前記第２の部品が存在するか判定する判定手段と、前記判定手段により打ち出し可能な前記第２の部品が存在すると判定された前記第１の部品の前面側に開いている穴を介して当該第２の部品を打ち出すことを決定する決定手段として機能させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態における、情報処理システムのシステム構成の一例を示す図である。
【図２】本発明の第１の実施形態における、各種装置のハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施形態における、各種装置及びソフトの機能構成の一例を示す図である。
【図４】本発明の第１の実施形態における、処理の概要を示すフローチャートである。
【図５】本発明の第１の実施形態における、重なり判定処理の流れを示すフローチャートである。
【図６】本発明の第１の実施形態における、新規オブジェクト生成・配置処理の流れを示すフローチャートである。
【図７】本発明の第１の実施形態における、各種データ構成の一例を示す図である。
【図８】本発明の第１の実施形態における、３次元モデルの構成の一例を示す図である。
【図９】本発明の第１の実施形態における、上面図及び正面図の一例を示す図である。
【図１０】本発明の第１の実施形態における、打ち抜き対象部の識別表示の一例を示す図である。
【図１１】本発明の第１の実施形態における、穴に挿入する新規モデルの一例を示す図である。
【図１２】本発明の第１の実施形態における、３次元モデルの構成の一例を示す図である。
【図１３】本発明の第１の実施形態における、上面図、正面図、及び打ち抜き対象部の識別表示の一例を示す図である。
【図１４】本発明の第１の実施形態における、ダイアログの構成の一例を示す図である。
【図１５】本発明の第１の実施形態における、穴の空いたモデルが背面にある３次元モデルの一例を示す図である。
【図１６】本発明の第１の実施形態における、画面の構成の一例を示す図である。
【図１７】本発明の第２の実施形態における、重なり判定処理の流れを示すフローチャートである。
【図１８】本発明の第２の実施形態における、打ち抜き対象部の特定の様子及び識別表示の一例を示す図である。
【図１９】本発明の第３の実施形態における、仮想直線の始点の設定処理の流れを示すフローチャートである。
【図２０】本発明の第３の実施形態における、仮想直線の始点の設定処理の流れを示すフローチャートである。
【図２１】本発明の第３の実施形態における、仮想直線の始点の設定の様子を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明の実施の形態の一例について説明する。
【００１３】
＜第１の実施形態＞
まず図１を参照して、本発明の第１の実施形態における、情報処理システムの構成の一例について説明する。
【００１４】
本発明の情報処理システムは、ＰＣ１００、サーバ２００がＬＡＮ１０１（ローカルエリアネットワーク）によって通信可能に接続されて構成されている。サーバ２００には、ＣＡＤソフト（ＣＡＤソフトウェア）によって生成された３次元モデルのデータ（アセンブリファイルや部品ファイル等）が記憶されている。例えば、図８の８０１、８０２のようなデータが記憶されている。
【００１５】
図８の８００に示す、８０１及び８０２から成る３次元モデルは、例えば図８の８１０における、８０１と８０３を接触させた状態で、８０３の溝部分に樹脂を流し込み、固めることで生成される成果物の形状を示す。
【００１６】
ＰＣ１００にはＣＡＤソフトと、当該ＣＡＤソフトから取得した情報をもとに、部品の重なりを判定する重なり判定ツールがインストールされているものとする。重なり判定ツールは、３次元モデルを上面から見た際に、上面（前面）にあるモデル（３次モデル（部品））の穴と、下面側（上面にとっての背面側）にあるモデルとが重なっているか判定し、重なっている位置を特定する。そして、重なっていると判定した位置を、当該穴を通して背面の部品を打ち抜くための打ち抜き箇所として決定する。つまり、背面の部品を打ち出すことを決定する。
【００１７】
これにより、例えば、図１１の１１００における１１０１に示すような、８０１の板の穴を貫通して８０２の部品を打ち抜き、図１１の１１１０に示すように、８０１から不要な部品である８０２を剥離させて、８０２と連結していた１１０６と８０１だけを必要な部品として残すための、新たな部品（打ち抜き用モデル／図１１の１１０２、１１０３等）を容易に作成することができるようになる。
【００１８】
つまりＰＣ１００は、例えば上から下方向に向けて、プレス機のように打ち抜き用モデル（打ち出し用部品）を移動させて当該不要な部品を剥離させる部品打ち出し装置で用いる、当該打ち出し用部品の設計をする装置である。以上が図１の説明である。
【００１９】
以下、図２を用いて、本発明の第１の実施形態における各種装置のハードウェア構成の一例について説明する。
【００２０】
図２において、２０１はＣＰＵで、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。また、ＲＯＭ２０２あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）や、各サーバ或いは各ＰＣの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
【００２１】
２０３はＲＡＭで、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＯＭ２０２あるいは外部メモリ２１１からＲＡＭ２０３にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
【００２２】
また、２０５は入力コントローラで、キーボード（ＫＢ）２０９や不図示のマウス等のポインティングデバイス等からの入力を制御する。２０６はビデオコントローラで、ＣＲＴディスプレイ（ＣＲＴ２１０）等の表示器への表示を制御する。なお、図２では、ＣＲＴ２１０と記載しているが、表示器はＣＲＴだけでなく、液晶ディスプレイ等の他の表示器であってもよい。これらは必要に応じて管理者が使用するものである。
【００２３】
２０７はメモリコントローラで、ブートプログラム，各種のアプリケーション，フォントデータ，ユーザファイル，編集ファイル，各種データ等を記憶するハードディスク（ＨＤ）や、フレキシブルディスク（ＦＤ）、或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等の外部メモリ２１１へのアクセスを制御する。
【００２４】
２０８は通信Ｉ／Ｆコントローラで、ネットワーク（例えば、図１に示したＬＡＮ１０１）を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いた通信等が可能である。
【００２５】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ＣＲＴ２１０上での表示を可能としている。また、ＣＰＵ２０１は、ＣＲＴ２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００２６】
本発明を実現するための後述する各種プログラムは、外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０３にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ２１１に格納されており、これらについての詳細な説明も後述する。以上が図２の説明である。
【００２７】
次に図３を参照して、本発明の第１の実施形態における機能構成の機能構成の一例について説明する。
【００２８】
３次元モデル記憶部３３１は、３次元モデルを記憶する記憶部である。例えば３次元モデルの名称（ファイル名）、参照関係、Ｘ，Ｙ，Ｚ＝０，０，０を原点とした３次元空間上の３次元モデルの位置（Ｘ，Ｙ，Ｚ）や方向（Ｘ，Ｙ，Ｚ）、形状のデータを、３次元モデルのデータとして記憶している。Ｘ，Ｙ，Ｚはそれぞれ、３次元空間における縦、横、高さ方向の軸であるものとする。
【００２９】
３次元モデル生成部３１１は、３次元モデル生成部指示受付部３１２において受け付けたユーザ操作又は重なり判定ツール等のツールからの指示により３次元モデルを生成する生成部である。３次元モデル記憶制御部３１３は、生成した３次元モデルを記憶部に記憶する制御部である。例えばサーバ２００に３次元モデルのデータを送信して３次元モデル記憶部３３１に記憶するよう指示する。３次元モデル表示部３１４は、生成した３次元モデルを表示画面に表示する表示部である。
【００３０】
オブジェクト記憶部３２１は、ＣＡＤソフトから取得した３次元モデルの輪郭（輪郭を形成する線の集合）をオブジェクトとして記憶して管理する。輪郭線は、３次元モデルをある方向から投影した場合における３次元モデルの輪郭を示す線であり、輪郭を投影する二次元の面を投影面、輪郭線を投影した二次元の図を投影図というものとする。例えば、正面図、右側面図、左側面図、上面図等が投影図である。重なり判定部３２２は、複数のオブジェクトが重なっているか判定する判定部である。例えば、３次元モデルの上面図において、当該上面（前面）にあるモデルの穴であって、下面（上面にとっての背面）側のモデルと重なる位置にある穴があるか判定する。
【００３１】
つまり、前面から開いている穴の向こう側に打ち抜き可能な別の部品があるか判定する判定部である。
【００３２】
打ち抜き対象特定部３２３は、重なり判定部で重なっていると判定された穴（穴の位置）を、例えば上方向から下方向に向けて別部品を挿入して背面にある部品を打ち抜く場所、として特定（決定）して記憶する。
【００３３】
識別表示部３２４は、重なり判定部３２２で重なっていると判定された場所を識別表示する表示部である。例えば、背面側の別モデルと重なる位置にある前面側の（手前の）モデルの穴を、打ち抜き対象の穴として特定して、色を変えて識別表示する。背面に別のモデルがない穴は打ち抜き対象として特定せず、識別表示もしない。
【００３４】
打ち抜き用モデル形状決定部３２５は、打ち抜き対象の箇所を打ち抜く３次元モデルの形状を決定する決定部である。打ち抜き用モデル生成指示部３２６は、打ち抜き用モデル形状決定部３２５で決定された３次元モデルを生成するようＣＡＤソフトに指示する指示部である。
【００３５】
位置決定部３２７は、打ち抜き対象の箇所を打ち抜く３次元モデルを配置する位置であって、当該３次元モデルを設置する土台となる部材上の当該３次元モデルの位置を決定する決定部である。打ち抜き用モデル生成指示部３２６は、位置決定部３２７で決定された位置に当該３次元モデルを配置するようＣＡＤソフトに指示する。以上が図３の説明である。
【００３６】
次に図４を参照して、本発明の第１の実施形態における処理の概要について説明する。
【００３７】
以下、図４〜図６の各ステップに示す処理は、ＰＣ１００のＣＰＵ２０１が、ＰＣ１００にインストールされたＣＡＤソフト又は重なり判定ツールの機能を用いて実行するものとする。
【００３８】
ユーザ操作により指定されたＣＡＤファイル（３次元モデル）を展開して当該ＣＡＤファイルの情報を表示画面に表示する。例えば、アセンブリファイルの選択、展開操作を受け付け、図１６の１６００に示すような画面を表示する。１６００ではアセンブリ１を展開している。参照関係の情報は各アセンブリファイルが保持している。参照関係の情報は、参照関係を保持するアセンブリファイルが、どのアセンブリ又は部品を参照しているかの情報、及び参照しているアセンブリ又は部品の３次元空間上におけるＸ，Ｙ，Ｚ座標を有する。つまり、部品同士の３次元空間（奥行き方向）における位置関係を記憶している。例えば高さ方向は、縦方向及び横方向に伸びる面にとっての奥行き方向である。
【００３９】
１６０１はアセンブリファイルの参照している他のアセンブリファイルや部品のデータの参照関係を示すツリーを表示する表示部である。１６０３は、展開中のアセンブリの参照関係の情報に従って、部品形状を記憶した部品データを読みだして３次元空間上に配置して表示する表示部である。１６０２は、重なり判定ツールの起動ボタンである。
【００４０】
ＣＡＤソフトは、ユーザ操作により重なり判定ツールの起動ボタンの押下の操作（起動指示）を受け付け、それに応じて重なり判定ツールを起動する（ステップＳ４０１）。ＣＡＤソフトからの指示により起動した重なり判定ツールは（ステップＳ４０２）、メインダイアログ１６１０を表示し（ステップＳ４０３）、当該メインダイアログ１６１０に表示しているラジオボタン１６１２の選択を受け付けている状態で、「輪郭要求」ボタン１６１３の押下の操作を受け付ける。当該操作に応じて重なり判定ツールは、ＣＡＤソフトのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いて、ＣＡＤソフトで開いているファイル（３次元モデル）の輪郭の取得要求を行う（ステップＳ４０４）。
【００４１】
当該「輪郭要求」ボタン１６１３の押下は、対象部品の指定及び指定された部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理の実行指示である。
【００４２】
具体的には、ＣＡＤソフトに対して、ＣＡＤソフトで展開中のモデルの面の一覧を要求して取得し、当該面の一覧から任意の条件（具体的にはＺ軸方向の上面等）に合致する面を取得する。そして、当該面の輪郭線のうち、所定のモデル（予め重なり判定ツールに登録されているファイル名の部品）の輪郭線と、当該所定のモデルの背面側にある別のモデルの輪郭（外形線）を要求する。例えば所定のモデルＸの前面側（例：高さ方向における上面側）に位置するモデルのファイル名にはｆｒｏｎｔという文字列が含まれ、背面側に位置するモデルのファイル名にはｂａｃｋという文字列が含まれるよう、モデルを生成して記憶しておく。そして、重なり判定ツールは、モデル名称＝Ｘの部品の輪郭線と、ファイル名にｂａｃｋの文字列が含まれるモデルの輪郭線をＣＡＤソフトに要求するものとする。
【００４３】
更に具体的には、ここでいう展開中のモデルとは、複数の部品の３次元モデルを参照しているアセンブリファイルであり、重なり判定ツールは「輪郭要求」ボタン１６１３の押下を受け付けることで当該アセンブリが参照している複数の部品の面（例えば上面）を特定するようＣＡＤソフトに指示する。
【００４４】
つまり、３次元空間における上から下に直行するＺ軸の方向を特定して、当該Ｚ軸方向における部品の前面（上面）の特定指示をしている。
【００４５】
また、それらの面の中で所定の部品（例：モデルＸ）の上面と、その部品の背面側にある部品の上面の輪郭線をＣＡＤソフトに要求する。つまり、上面に直交する方向である高さ方向を特定し（方向特定手段に該当）、当該方向において当該部品の裏側（背面側）にある部品の輪郭線を要求する。なお、当該所定のモデルのファイル名は予めＰＣ１００の外部メモリに記憶されているものとする。
【００４６】
「輪郭要求」ボタン１６１３の押下は、ＣＡＤソフトで展開中のアセンブリファイルを指定し、当該指定によりアセンブリファイルが参照している部品の中の所定の部品を指定し、指定した部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理の実行操作である。
【００４７】
ＣＡＤソフトは当該指示及び要求を受け付けて（ステップＳ４０５）、要求に応じて、上から（Ｚ軸方向のプラスからマイナスに向かう方向から）３次元モデルを見た場合における、展開中のファイルの中のモデルＸの輪郭線及びモデルＸの背面側にある部品の輪郭線を生成し、重なり判定ツールに返信する（ステップＳ４０６）。例えば３次元モデルの上面図のような輪郭線のＸ，Ｙ座標（Ｚ軸方向と交差する平面における各輪郭線の頂点位置）の集合を生成して返信する。上面図の輪郭の一例を図９に示す。図９の９００に、図８の８００に示す３次元モデルの輪郭線を示す。
【００４８】
生成して重なり判定ツールに返信する輪郭線の座標の情報の中の、部品Ｘの背面側の部品の輪郭線の情報の一例を図７の背面オブジェクト情報７２０に示す。この時点ではオブジェクト名は空である。
【００４９】
重なり判定ツールは当該所定のモデル（部品Ｘ）とその背面側にある各部品の輪郭線の情報をＣＡＤソフトから受信して取得し、所定のモデルの輪郭線のうち当該所定のモデル上に存在する穴の輪郭線（穴オブジェクト）を抽出してオブジェクト情報７１０に挿入し、外部メモリに記憶する（ステップＳ４０７）。つまり、所定のモデルの上面から開いている穴の位置の情報を特定して記憶する。また、当該所定のモデルの背面側にあるモデルの外形線を抽出して、当該外形線を示す輪郭線の情報を図７の７２０に挿入し、外部メモリに記憶する。
【００５０】
図７のオブジェクト情報７１０は、３次元モデル７１１（部品）において、線（線名称７１３）が繋がって形成されるオブジェクト（オブジェクト名７１２）の輪郭を示す情報である。線種別７１４は各線（線名称７１３）の線分の属性を示す。
【００５１】
重なり判定ツールは、取得したオブジェクトにオブジェクト名を付与し、オブジェクトを構成する線（線分、具体的にはモデル上のエッジ）に対して直線・円弧・真円の線種別を付与して整理（ＣＡＤソフトから取得した輪郭線の各線分の属性に含まれる線の種別をオブジェクト情報７１０に書き込み）、スプライン等のその他線分は始終点を結ぶ直線に置換してオブジェクト情報７１０へ格納する。ｌｉｎｅは直線を示し、ａｒｃは円弧を示し、ｃｉｒｃｌｅは真円を示す。それぞれの線は、始点，終点７１５、半径７１６、中央座標７１７、開始角度・回転角度７１８を、それぞれ必要な値だけ保持しているものとする。どの線種別の線がどの項目に値を保持しているかは例えば７１０に示す通りである。オブジェクト情報７１０には、ステップＳ４０４で重なり判定ツールがファイル名を指定した所定のモデルの輪郭線の情報であって、当該モデル上の穴の輪郭線を記憶しているものとする。例えば図８の８０１上の穴の輪郭線の情報を示す。
【００５２】
背面オブジェクト情報７２０は、オブジェクト情報７１０の示すオブジェクトの背面側にある３次元モデルの外形の輪郭線の情報を示す。例えば図８の８０２の部品の外形線の情報である。各項目の値は７１０の説明で上述したとおりのため説明は割愛する。
【００５３】
重なり判定ツールはステップＳ４０７で記憶したオブジェクトの情報（輪郭線の情報／図７の７１０、７２０）をメモリに読み出す（ステップＳ４０８／取得する）。そして処理をステップＳ４０９に移行し、重なり判定処理を実行する（ステップＳ４０９）。第１の実施形態におけるステップＳ４０９の処理の詳細は図５の説明で後述する。
【００５４】
ここで図５を参照して、本発明の第１の実施形態における、重なり判定処理の流れについて説明する。
【００５５】
重なり判定ツールは、オブジェクト情報７１０の中の未処理の穴オブジェクト（オブジェクト名でグルーピングされた線の集合）を１つ取得し（ステップＳ５０１）、背面オブジェクト情報７２０のオブジェクトを１つ取得する（ステップＳ５０２）。そして、ステップＳ５０２で取得したオブジェクト（背面オブジェクト）の線分のうち、未処理の線分を１つ取得し（ステップＳ５０３）、図７の７３０に示すカウンタを初期化して（ステップＳ５０４）、ステップＳ５０２（または後述するステップＳ５１６）で取得した背面オブジェクトのオブジェクト名をオブジェクト名７３１に、ステップＳ５０３（または後述するステップＳ５１７）で取得した線分の名称を線名称７３２に、ステップＳ５０１（または後述するステップＳ５１８）で取得したオブジェクト名をカウント対象オブジェクト名７３３に挿入して記憶する。当該カウンタ７３０の役割については後述する。
【００５６】
重なり判定ツールは、図１０の１０００に示すような、水平方向へ仰角１度以上の任意角度に傾いた仮想の直線（仮想直線１００１）を生成し、図１０に示すように、ステップＳ５０３で取得した線分の始点に配置する（ステップＳ５０５）。
【００５７】
例えば任意角度（所定の仰角）は３度であるものとする。所定の仰角の値はＰＣ１００の外部メモリに記憶されており、不図示の設定画面を介したユーザ操作で任意に設定変更可能であるものとする。そして、ステップＳ５０１で取得したオブジェクトの線分のうち、未処理の線分を１つ取得する（ステップＳ５０６）。
【００５８】
重なり判定ツールは、ステップＳ５０５で配置した仮想直線１００１と、取得した穴のオブジェクトを構成する線分に交点があるか判定し（ステップＳ５０７）、交点がある場合はカウンタ７３０の交点数７３４を１カウントアップして（ステップＳ５０８）処理をステップＳ５０９に移行する。交点がない場合は、処理をステップＳ５０９に移行する。
【００５９】
重なり判定ツールは、ステップＳ５０７で交点の有無を判定した穴の線分（７１０の線分）が、ステップＳ５０１で取得した穴のオブジェクトを構成する未処理の線分のうち最後の線分か判定する（ステップＳ５０９／つまりステップＳ５０１で取得した穴の線分全てを処理したか判定する）。未処理の線分がまだ残っている場合には、ステップＳ５０１で取得した穴のオブジェクトの線分のうち未処理の線分を１つ取得して（ステップＳ５１５）処理をステップＳ５０７に移行する。
【００６０】
ステップＳ５０１で取得した穴オブジェクトの全ての線分を処理した場合、重なり判定ツールは、カウンタ７３０の交点数７３４の値が奇数か偶数か判定する（ステップＳ５１０）。交点数が奇数の場合には、図１０に示すように、ステップＳ５０３（または後述するステップＳ５１６）で取得した処理中の背面オブジェクトの線分は、ステップＳ５０１（または後述するステップＳ５１８）で取得した、仮想直線が交差した穴オブジェクトと重なっていると判定（決定）し、処理をステップＳ５１４に移行する。また、当該ステップＳ５０１で取得した穴オブジェクト（または後述するステップＳ５１８で取得した穴オブジェクト）を、背面のオブジェクトと重なる位置にある穴であって、背面のモデルを打ち抜く場所として特定し、外部メモリに記憶する（ステップＳ５１４）。具体的には、図７の７４０に示すように、どのモデル（部品名７４１）の、どのオブジェクト（対象部７４２）が打ち抜き対象の場所を示すかを記憶する。
【００６１】
つまり、カウンタ７３０の交点数７３４の値が奇数であった穴について、当該穴を介して打ち抜き可能な背面側の部品が存在すると判定し、当該穴を介して背面側の部品を打ち出すことを決定する。
【００６２】
交点数が偶数又は０の場合には、図１０に示すように、ステップＳ５０３等（または後述するステップＳ５１６）で取得した処理中の背面オブジェクトの線分は、穴オブジェクトと重なっていないと判定（決定）し、処理をステップＳ５１１に移行する。
【００６３】
重なり判定ツールは、処理中の背面オブジェクトの線分は、当該背面オブジェクトを形成する未処理の線分のうち最後の線分か判定する（ステップＳ５１１／つまり、ステップＳ５０２または後述するＳ５１７で取得したオブジェクトであって、所定の部品Ｘの背面側にあるオブジェクトの全ての線分を処理したか判定する）。未処理の線分がある場合には、処理中の背面オブジェクトの線分のうち未処理の線分を１つ取得して（ステップＳ５１６）、処理をステップＳ５０４に移行する。
【００６４】
処理中の背面オブジェクトを構成する線分の全てを処理した場合には、重なり判定ツールは、背面オブジェクト情報７２０内の全ての背面オブジェクトを処理したか判定する（ステップＳ５１２）。未処理の背面オブジェクトがある場合は、未処理の背面オブジェクトを１つ取得して（ステップＳ５１７）、処理をステップＳ５０３に移行する。全ての背面オブジェクトを処理済みの場合は処理をステップＳ５１３に移行する。
【００６５】
重なり判定ツールは、オブジェクト情報７１０内の全ての穴オブジェクトを処理したか判定する（ステップＳ５１３）。
【００６６】
つまり、ユーザ操作で指定された所定の部品Ｘの前面に開いている穴（例：高さ方向において上面に開いている穴）の中に、処理中の背面オブジェクトと重なっているかの判定を行っていない穴があるか判定する。未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを取得して（ステップＳ５１８）、処理をステップＳ５０２に移行する。全ての穴オブジェクトを処理している場合は、図５の処理を終了する。以上が図５の説明である。
【００６７】
図４の説明に戻る。重なり判定ツールは、ステップＳ４１０で、ステップＳ４０９の判定結果（図７の打ち抜き対象部７４０）をメモリから読み出して取得し、対象部７４２の示すオブジェクトを表示画面上に識別表示する（ステップＳ４１０）。
【００６８】
例えば、打ち抜き対象部７４０に記憶された穴オブジェクトを選択状態とし、選択状態の穴オブジェクトの色を選択状態であることを示す色（例：赤色）に変更して識別表示する。識別表示の様子の一例を、図１０の１０１０における、１０１１等に示す。その後処理をステップＳ４１１に移行する。ステップＳ４１１の処理の詳細は図６の説明で後述する。
【００６９】
以上説明したように、本発明によれば、部品の穴と別の部品が重なる位置を容易に特定可能な仕組みを提供することができる。
【００７０】
例えば、所定のモデルの穴の向こう側に別のモデルが存在する場合に、当該別のモデルを打ち抜く対象として、当該穴を特定して記憶することができる。
【００７１】
つまり、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
【００７２】
また、当該特定した打ち抜き対象の穴を表示画面上に識別表示することで、打ち抜き対象箇所をユーザに確認させることができる。
【００７３】
次に図６を参照して、本発明の第１の実施形態における、新規オブジェクトの生成・配置処理の流れについて説明する。
【００７４】
重なり判定ツールは、打ち抜き対象部７４０の穴の軸方向と同じ軸上（同じ方向上）に、当該穴と同じ方向（例えば上から下）を向いて配置されている３次元モデルの一覧をＣＡＤソフトに要求する（ステップＳ６０１）。なお、要求するモデル一覧は、例えば穴の空いた３次元モデル（例：図８の８０１）よりも、Ｚ軸上の上から下に向けた方向において、当該穴よりも手前に配置されている（名称にｆｒｏｎｔの文字列が含まれている）モデルのうち、穴と同じ軸上に穴と同じ方向を向いて配置されているモデルの一覧である。
【００７５】
更に具体的には、重なり判定ツールは、打ち抜き対象部７４０をＣＡＤソフトに送信すると共に、当該打ち抜き対象部７４０に含まれる各穴の中心軸の仮想線を生成して当該仮想線と干渉する部品の中の当該軸の穴よりも手前側にある部品一覧を要求する。
【００７６】
ＣＡＤソフトは当該要求を受け付けると（ステップＳ６０２）、要求に応じたモデルの一覧を重なり判定ツールに返信する（ステップＳ６０３）。
【００７７】
具体的には、ＣＡＤソフトは、重なり判定ツールからの要求に応じて、重なり判定ツールから受信した打ち抜き対象部７４０に含まれる各穴の中心軸の仮想線を生成し、当該仮想線と干渉する部品の中で、干渉した軸の穴よりも手前側にある部品のファイル名一覧を穴ごと（ループしている線の各線分の線名称及び各線分の始点・終点の位置のグループ）ごとに生成して、重なり判定ツールに返信する。
【００７８】
重なり判定ツールはこれを受信し（ステップＳ６０４）、全ての穴オブジェクトについて、穴に対応する形状の３次元モデルが、穴と同じ軸上に配置されているか判定する（ステップＳ６０５）。つまり、ＣＡＤソフトから受信した各穴の手前にある部品のファイル名一覧に、当該穴に対応する形状の部品が存在するか判定する。
【００７９】
穴に対応する形状の３次元モデルとは、ＰＣ１００の外部メモリに予め記憶されている不図示の対応付けファイルに記憶されている、穴オブジェクトを構成する線種別の組み合わせに対応するファイル名の３次元モデルである。例えば、線種別＝ｃｉｒｃｌｅには、円柱形のモデル１つから構成される３次元モデルのファイル名（例：ｘ０１．ｐｒｔ）が対応付けられている。また、線種別＝ｌｉｎｅ及びａｒｃの組み合わせには、円柱形のモデル２つから構成される３次元モデルのファイル名（アセンブリファイル名／例：ｘ０２．ａｓｍ）が対応付けられているものとする。
【００８０】
重なり判定ツールは、全ての穴オブジェクトについて、穴に対応する形状の３次元モデルが、穴と同じ軸上に配置されていると判定した場合、処理を終了する。対応する３次元モデルが配置されていない穴があると判定された場合は、図１４に示すようなダイアログを表示画面に表示する（ステップＳ６０６）。
【００８１】
重なり判定ツールは、ダイアログ１４００（図１４）において、穴に対応する形状の３次元モデルの生成・配置の操作を受け付けたか（「はい」ボタンの押下を受け付けたか）判定する（ステップＳ６０７）。穴に対応する形状の３次元モデルの生成・配置の操作を受け付けなかった場合（「いいえ」ボタンの押下を受け付けた場合）は処理を終了する。穴に対応する形状の３次元モデルの生成・配置の操作を受け付けた場合は、処理をステップＳ６０８に移行する。
【００８２】
重なり判定ツールは、ステップＳ６０８で、打ち抜き対象部７４０における対象部７４２（穴オブジェクト）の形状を取得する（ステップＳ６０８）。
【００８３】
具体的には、重なり判定ツールは、対応する形状の３次元モデルが３次元空間上に配置されていない穴オブジェクトのオブジェクト名を、オブジェクト情報７１０に記憶されたオブジェクト名と線名称及び線の始点・終点の位置と、ＣＡＤソフトから受信した一覧と、外部メモリに記憶されている穴に対応する形状の３次元モデルの情報とを用いて特定する。
【００８４】
つまり、打ち抜き対象部７４０の中で、対応する形状の３次元モデルが３次元空間上に配置されていない穴オブジェクトを特定する。
【００８５】
以降、対応する形状の３次元モデルが３次元空間上に配置されていない穴オブジェクトの数だけ、ステップＳ６０９〜Ｓ６１１の処理を繰り返し実行する。
【００８６】
重なり判定ツールは、ステップS６０８で取得した、対応する形状の３次元モデルが３次元空間上に配置されていない穴オブジェクトのうち、未処理の穴オブジェクトを１つ取得する。
【００８７】
そして、例えば、取得した当該対象部７４２の示す、穴オブジェクトがどの種類の線分の組み合わせから成るかを、当該オブジェクトを構成する線種別を取得することで特定する。そして、当該穴オブジェクトの形状に対応するファイル名のモデルを外部メモリから読み出して取得する（ステップＳ６０９）。つまり、穴を介して部品を打ち抜く打ち抜き用部品の形状を決定する。当該３次元モデルのファイルはサーバ２００の所定の記憶領域に予め記憶されているものとする。
【００８８】
重なり判定ツールは、取得した穴の直径から、所定の長さだけクリアランスを設けた輪郭を穴の内側に生成し、ステップＳ６０９で取得したモデルの直径を当該生成した輪郭の直径とすることを決定する。つまり、新規に生成する部品の形状、サイズを決定する（サイズ決定手段に該当）。
【００８９】
重なり判定ツールは、ステップＳ６０９で取得した３次元モデルのファイル名をＣＡＤソフトに通知し、当該ファイル名のモデルを、所定の位置に配置するようＣＡＤソフトに指示する（ステップＳ６１１／生成制御手段、配置制御手段に該当）。ここでいう所定の位置とは、例えば処理中の３次元モデル（例：図８、図１１の８０１）に対応付けて記憶されている位置であって、（例えばステップＳ６０８で取得した穴オブジェクトがｃｉｒｃｌｅの場合）当該穴オブジェクトの示す３次元モデル上の穴の軸上の点であり、当該穴の中心点から所定距離分Ｚ軸方向に距離をとった位置である。例えば図１１の穴１１０４にとっての所定の位置は１１０２である。穴の中心点とは、例えば部品８０１の上面と同じ平面ベクトル上における穴の中心の位置である。また、ステップＳ６０８で取得した穴オブジェクトがａｒｃ（円弧）を含む場合、ａｒｃの中央点から所定距離分Ｚ軸方向に距離をとった位置を、前記所定の位置とする（位置決定手段に該当）。穴１１０５に対応する所定の位置は、複数の位置１１０３（複数の点）である。重なり判定ツールは当該所定の位置を特定してＣＡＤソフトに通知して、当該所定の位置に、ステップＳ６０９で取得した３次元モデルを、ステップＳ６１０で決定した直径に変更して配置するよう指示する。
【００９０】
ＣＡＤソフトは当該指示を受け付け（ステップＳ６１２）、受け付けた指示に従って、穴に対応する３次元モデルを取得してコピーし（生成し）、サイズ変更し、所定の位置に配置する処理を行う（ステップＳ６１３）。例えば、図１１に示す１１０１〜１１０３のようなピン状の打ち抜き用の３次元モデルを生成し、３次元モデル（部品８０１）を参照しているアセンブリに参照させるようアセンブリを編集して記憶することで、１１００に示す８０１と１１０１〜１１０３を１つの表示画面上に表示する。図１１の１１１０は、不要な部品８０２（除去部）を打ち抜いて除去した際のイメージを示す。
【００９１】
図１１の所定の位置１１０２及び所定の位置１１０３は、打ち抜き用の３次元モデルの一部とするピン状の部品の位置（１１０２及び１１０３の位置）を、当該ピン状の部品が、打ち抜き用の３次元モデルにおける土台である１１０１に接する位置である。つまり、穴の中心点からピン状の部品が土台となる部材（部品）に接する距離分（所定距離分）Ｚ軸方向に距離をとった位置である。
【００９２】
当該ピン状の部品が接している土台の部材上の位置が、当該ピン状の部品を配置する当該部材上の位置である。すなわち、重なり判定ツールは、穴を介して背面オブジェクトを打ち出すピン状の部品の当該部材上の位置を決定している。
【００９３】
なお、８０１の部品と１１０１の部品の距離が一定の場合には、ピン状の部品を配置する高さ方向（Ｚ軸方向）の位置は予め決定しておき、当該ピン状の部品を配置する縦軸・横軸方向（Ｘ軸、Ｙ軸方向）の位置を、背面の部品を打ち出すべき穴の位置に決定するようにしてもよい。
【００９４】
重なり判定ツールは、ステップＳ６０８で特定して取得した、対応する形状の３次元モデルが３次元空間上に配置されていない穴オブジェクトの中の全ての穴オブジェクトについて、ステップＳ６０９〜Ｓ６１１の処理を実行済か判定する。
【００９５】
未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを１つ取得し、処理をステップＳ６０９に戻して、Ｓ６０９〜Ｓ６１１の処理を実行する。すべての穴オブジェクトを処理済の場合は図６の処理を終了する。以上が図６の説明である。
【００９６】
図６の処理によれば、別の部品と重なる穴に対応する新しい部品を容易に生成し、配置することができる。
【００９７】
また、背面側にある部品を穴を介して打ち出すための新しい部品を配置する部材上の位置を決定することができる。
【００９８】
なお、図５のステップＳ５１２とステップＳ５１３の判定のタイミングを入れ替えて本発明を実現してもよい。
【００９９】
具体的には、重なり判定ツールが、図５のステップＳ５１１において、処理中の背面オブジェクトの線分が当該背面オブジェクトを形成する未処理の線分のうち最後の線分であると判定された場合（ステップＳ５１１でＹＥＳの場合）は処理をステップＳ５１３に移行する。
【０１００】
ステップＳ５１３においては、オブジェクト情報７１０内の全ての穴オブジェクトについて処理中の背面オブジェクトとの重なりを判定したか判定する。そして、オブジェクト情報７１０内の全ての穴オブジェクトについて処理中の背面オブジェクトとの重なりを判定済であると判定された場合は処理をステップＳ５１８に移行し、判定済でないと判定された場合（つまり、当該波面オブジェクトの線分から引いた仮想直線との交点の有無を判定し終わっていない穴オブジェクトが残っている場合）は、処理をステップＳ５１２に移行する。
【０１０１】
ステップＳ５１２では、重なり判定ツールは、背面オブジェクト情報７２０内の全ての背面オブジェクトを処理したか判定する（ステップＳ５１２）。つまり、全ての背面オブジェクトについて、穴オブジェクトとの交点数をカウント済か判定する。未処理の背面オブジェクトがある場合は処理をステップＳ５１７に移行して未処理の背面オブジェクトを１つ取得し、ステップＳ５０３に処理を移行する。全ての背面オブジェクトを処理済みの場合は図５の処理を終了する。
【０１０２】
＜第２の実施形態＞
次に図１７、図１８を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、穴を基準として、当該穴の開いている部品の背面側にある部品と当該穴が重なっているかを判定する。
【０１０３】
穴を完全に背面の部品が覆ってしまっている３次元モデルにおいては、例えば図１８の背面オブジェクト１８０１と穴オブジェクト１８０２の関係に示すように、背面オブジェクトの頂点が全て穴の外側に位置している場合がある。つまり、背面オブジェクトの外形線上の点（例：各オブジェクトにおける各線分の始点）から仮想線分を引いたとしても、仮想線分と背面オブジェクトの交点数は０又は偶数になってしまうことがある。
【０１０４】
第２の実施形態における、穴を基準とした重なり判定の処理は、例えば、穴を完全に背面の部品が覆ってしまっているような３次元モデルにおいて部品を打ち抜く箇所を特定する場合等に有用である。
【０１０５】
図１７を参照して、本発明の第２の実施形態における、重なり判定処理の流れについて説明する。第２の実施形態においては、図１７の処理を、第１の実施形態における図５の処理の代わりに実行する。
【０１０６】
図１７の各ステップに示す処理は、ＰＣ１００のＣＰＵ２０１が、ＰＣ１００にインストールされたＣＡＤソフト又は重なり判定ツールの機能を用いて実行するものとする。
【０１０７】
第１の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
【０１０８】
ステップＳ１７０１の処理は図５のステップＳ５０１の処理と同じである。また、ステップＳ１７０２の処理は図５のステップＳ５０２の処理と同じである。よって、説明は割愛する。
【０１０９】
重なり判定ツールは、ステップＳ１７０１で取得したオブジェクト（穴オブジェクト）の線分のうち、未処理の線分を１つ取得し（ステップＳ１７０３）、図７の７３０に示すカウンタを初期化して（ステップＳ１７０４）、ステップＳ１７０１（または後述するステップＳ１７１８）で取得した穴オブジェクトのオブジェクト名をオブジェクト名７３１に、ステップＳ１７０３（または後述するステップＳ１７１６）で取得した線分の名称を線名称７３２に、ステップＳ１７０２（または後述するステップＳ１７１７）で取得した背面オブジェクトのオブジェクト名をカウント対象オブジェクト名７３３に挿入して記憶する。
【０１１０】
重なり判定ツールは、例えば図１８の１８０３、１８０４等に示すような、対象の線分の方向を０度として、穴の外側に仰角１度以上の任意角度に傾いた仮想直線を生成し、例えば１８０３に示すように、ステップＳ１７０３で取得した線分の始点に配置する（ステップＳ１７０５）。
【０１１１】
なお、穴が円形の場合は穴の線分の始点は１点である。円形の穴の始点においては、当該始点と接点を持つ仮想線を作成し、当該仮想線の方向を０度として、穴の外側に向けて任意角度で仮想線をひくものとする。
【０１１２】
例えば任意角度（所定の仰角）は６０度であるものとする。所定の仰角の値はＰＣ１００の外部メモリに記憶されており、不図示の設定画面を介したユーザ操作で任意に設定変更可能であるものとする。重なり判定ツールは、ステップＳ１７０２で取得した背面オブジェクトの線分のうち、未処理の線分を１つ取得する（ステップＳ１７０６）。
【０１１３】
重なり判定ツールは、ステップＳ１７０５で配置した仮想直線１８０３と、取得した背面オブジェクトを構成する線分に交点があるか判定し（ステップＳ１７０７）、交点がある場合はカウンタ７３０の交点数７３４を１カウントアップして（ステップＳ１７０８）処理をステップＳ１７０９に移行する。交点がない場合は、処理をステップＳ１７０９に移行する。
【０１１４】
重なり判定ツールは、ステップＳ１７０７で交点の有無を判定した背面オブジェクトの線分（７１０の線分）が、当該背面オブジェクトの線分のうち最後の線分か判定する（ステップＳ１７０９）。未処理の線分がまだ残っている場合には、ステップＳ１７０２で取得した穴のオブジェクトの線分のうち未処理の線分を１つ取得して（ステップＳ１７１５）処理をステップＳ１７０７に移行する。
【０１１５】
ステップＳ１７０２で取得した背面オブジェクトの全ての線分を処理した場合、重なり判定ツールは、カウンタ７３０の交点数７３４の値が奇数か偶数か判定する（ステップＳ１７１０）。
【０１１６】
交点数が奇数の場合には、図１８の１８０１及び１８０２の関係に示すように、ステップＳ１７０１（または後述するステップＳ１７１８）で取得した処理中の穴オブジェクトは、ステップＳ１７０２（または後述するステップＳ１７１７）で取得した、仮想直線が交差した背面オブジェクトと重なっていると判定（決定）し、処理をステップＳ１７１４に移行する。
【０１１７】
また、当該ステップＳ１７０１で取得した穴オブジェクト（または後述するステップＳ１７１８で取得した穴オブジェクト）を、背面のオブジェクトと重なる位置にある穴であって、背面のモデルを打ち抜く場所として特定し、外部メモリに記憶する（ステップＳ１７１４）。具体的には、図７の７４０に示すように、どのモデル（部品名７４１）の、どのオブジェクト（対象部７４２）が打ち抜き対象の場所を示すかを記憶する。
【０１１８】
つまり、カウンタ７３０の交点数７３４の値が奇数であった穴について、当該穴を介して打ち抜き可能な背面側の部品が存在すると判定し、当該穴を介して背面側の部品を打ち抜くことを決定する。
【０１１９】
交点数が偶数又は０の場合には、図１８に示すように、ステップＳ１７０１（または後述するステップＳ５１８）で取得した処理中の穴オブジェクトは、判定対象の背面オブジェクトと重なっていないと判定（決定）し、処理をステップＳ１７１１に移行する。
【０１２０】
重なり判定ツールは、処理中の穴オブジェクトの線分は、当該穴オブジェクトを形成する未処理の線分のうち最後の線分か判定する（ステップＳ１７１１）。未処理の線分がある場合には、処理中の穴オブジェクトの線分のうち未処理の線分を１つ取得して（ステップＳ１７１６）、処理をステップＳ１７０４に移行する。
【０１２１】
処理中の穴オブジェクトを構成する線分の全てを処理した場合には、重なり判定ツールは、背面オブジェクト情報７２０内の全ての穴オブジェクトを処理したか判定する（ステップＳ１７１２）。未処理の背面オブジェクトがある場合は、未処理の背面オブジェクトを１つ取得して（ステップＳ１７１７）、処理をステップＳ１７０３に移行する。
【０１２２】
以降、処理中の穴オブジェクトの線分を全て未処理の線分として決定し、処理中の穴オブジェクトとステップＳ１７１７で新たに取得した背面オブジェクトとを対象に、ステップＳ１７０３以降の処理を実行する。なお、全ての背面オブジェクトを処理済みの場合は処理をステップＳ１７１３に移行する。
【０１２３】
重なり判定ツールは、オブジェクト情報７１０内の全ての穴オブジェクトを処理したか判定する（ステップＳ１７１３）。
【０１２４】
つまり、ユーザ操作で指定された所定の部品Ｘの前面に開いている穴（例：高さ方向において上面に開いている穴）の中に、背面オブジェクトと重なっているかの判定を行っていない穴があるか判定する。未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを取得して（ステップＳ１７１８）、処理をステップＳ１７０２に移行する。全ての穴オブジェクトを処理している場合は、図１７の処理を終了する。以上が図１７の説明である。
【０１２５】
以上説明したように、本発明の第２の実施形態によれば、部品の穴と別の部品が重なる位置を、たとえ当該別の部品が穴を覆ってしまっている場合であっても容易に特定し、当該別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
【０１２６】
なお、上述した第１の実施形態と第２の実施形態とを組み合わせて実行してもよい。例えば、図４のステップＳ４０９の重なり判定処理として、まず第１の実施形態の図５の処理を実行する。その後、図５の処理で背面オブジェクトと重なっていないと判定された穴（背面側に打ち抜き可能な部品が存在しないと判定された穴）を対象として、第２の実施形態における図１７の処理を実行する。
【０１２７】
背面オブジェクトと重なっていないと判定された穴とは、ステップＳ４０７で取得した、所定の部品Ｘの前面に開いている穴（例：高さ方向において上面に開いている穴）のうち、図５の処理終了時点で、図７の打ち抜き対象部７４０（背面にオブジェクトがあると判定された穴の一覧）に含まれてない穴オブジェクトである。
【０１２８】
図５の処理及び図１７の処理を組み合わせて実行することで、例えば背面オブジェクトが穴の一部と重なっている設計と、背面オブジェクトが穴の全部を覆っている設計とが混在する３次元モデルにおいて、穴と部品の重なり判定の精度を高めることができる。
【０１２９】
なお、上述した第２の実施形態の説明においては、穴の線分の始点から穴の外側に向けて所定の仰角の仮想直線をひくものとしたが、図１８の１８０５に示すように、穴の内側に向けて所定の仰角の仮想直線をひいてもよい。
【０１３０】
＜第３の実施形態＞
図１９〜図２１を参照して、本発明の第３の実施形態について説明する。第３の実施形態では、仮想直線の始点を穴又は背面オブジェクトの始点の他にも設定可能とし、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無を容易に特定可能な仕組みを提供する。
【０１３１】
例えば、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品が存在するにも関わらず、穴の辺の始点に背面オブジェクトが重なっておらず、また、背面オブジェクトの辺の始点が穴の中にない場合がある。
【０１３２】
つまり、穴の辺の始点から仮想直線を引いて背面オブジェクトと仮想直線の交点の数を求めても、背面オブジェクトの辺の始点から仮想直線を引いて穴と仮想直線の交点の数を求めても、本当は部品の穴を介して打ち抜き可能な別の部品が存在するにも関わらず、当該滅の部品が存在してないと判定されてしまうことがある。
【０１３３】
例えば図２０の２１００の図によれば、穴の始点から仮想直線を引いた場合の、当該仮想直線と背面オブジェクトの辺との交点数は０又は偶数となる。また、２１００において背面オブジェクトの始点から仮想直線を引いた場合の、当該仮想直線と穴の辺との交点数は０又は偶数となる。
【０１３４】
第３の実施形態においては、ある基準に基づいて仮想直線の始点を設定可能とすることで、仮想直線を穴の始点又は背面オブジェクトの始点から引くだけの場合に比べて部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の存在の特定処理における精度を向上しつつ、当該別の部品の有無に伴う決定を容易に行うことが可能な仕組みを提供する。
【０１３５】
穴を完全に背面の部品が覆ってしまっている３次元モデルにおいては、例えば図１８の背面オブジェクト１８０１と穴オブジェクト１８０２の関係に示すように、背面オブジェクトの頂点が全て穴の外側に位置している場合がある。つまり、背面オブジェクトの外形線上の点（例：各オブジェクトにおける各線分の始点）から仮想線分を引いたとしても、仮想線分と背面オブジェクトの交点数は０又は偶数になってしまうことがある。
【０１３６】
第２の実施形態における、穴を基準とした重なり判定の処理は、例えば、穴を完全に背面の部品が覆ってしまっているような３次元モデルにおいて部品を打ち抜く箇所を特定する場合等に有用である。
【０１３７】
図１９を参照して、本発明の第３の実施形態における、仮想直線の始点の設定処理の一例について説明する。なお、図１９の各ステップに示す処理は、ＰＣ１００のＣＰＵ２０１が、ＰＣ１００にインストールされた重なり判定ツールの機能を用いて実行するものとする。
【０１３８】
第１の実施形態、第２の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
【０１３９】
図１９の処理は、例えば図５のステップ５０４の後、ステップＳ５０５の処理実行前に実行する。つまり、第１の実施形態において、ある基準に基づいて仮想直線の始点を設定可能な処理である。
【０１４０】
重なり判定ツールは、ＰＣ１００の外部メモリに記憶されている所定の間隔（距離）の値を取得する（ステップＳ１９０１）。所定の間隔の値（Ｎｍｍ）は、背面オブジェクトの輪郭線上の、仮想直線の始点を設定する距離間隔の基準値であり、例えば穴の幅や部品の幅より狭い（短い）幅が設定されているものとする。当該基準値の値は、不図示の設定画面を介したユーザ操作により変更・設定可能である。
【０１４１】
重なり判定ツールは、オブジェクト情報７１０の各穴オブジェクトの穴の幅を計測し、最も短い幅を特定する。穴オブジェクトが円形の場合には、円の直径を当該穴オブジェクトの幅として特定し、当該穴オブジェクトに対応付けて７１０に記憶する。
【０１４２】
穴オブジェクトが円形でない場合、例えば図２１の２１０１に示すように部品２１０３に開いた穴が矩形の穴の場合には、穴オブジェクトの辺（線分）ごとに、始点、終点及び中点を抽出し、それぞれの点から当該辺に対して直角な方向に仮想直線を引く。当該穴オブジェクトの輪郭線と仮想直線との交点を特定して、当該交点の二次元における位置（Ｘ，Ｙ座標）を特定する。
【０１４３】
当該交点までの仮想直線の中で最も長い仮想直線の長さを、当該穴オブジェクトの辺に対応する幅としてＲＡＭに記憶し、１つの穴オブジェクトの全ての辺に対応する当該幅の中で最も短い幅を、当該穴オブジェクトの幅として決定（特定）して７１０に記憶する。
【０１４４】
そして、重なり判定ツールは、オブジェクト情報７１０に記憶された全ての穴の幅の中で最も短い幅の値を取得する（ステップＳ１９０２）。例えば、図２１の２１００においては、２．１ｍｍが穴オブジェクト２１０１の最短の幅である。
【０１４５】
重なり判定ツールは、ステップＳ１９０１で取得した基準値とステップＳ１９０２で取得した最短の穴の幅とを比較し、基準値より当該最短の穴の幅の方が短いか否かを判定する（ステップＳ１９０３）。
【０１４６】
基準値の方が短い場合は処理をステップＳ１９０４に移行し、最短の穴の幅の方が短い場合は処理をステップＳ１９０５に移行する。
【０１４７】
ステップＳ１９０４では、ステップＳ５０３で取得した背面オブジェクトの辺上に、当該辺の始点から終点に向けて、基準値が示す間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のＸ，Ｙ座標を対応付けてＲＡＭ上に記憶する（ステップＳ１９０４）。
【０１４８】
ステップＳ１９０５では、ステップＳ５０３で取得した背面オブジェクトの辺上に、当該辺の始点から終点に向けて、ステップＳ１９０２で特定した最短の穴の幅より短い間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のＸ，Ｙ座標を対応付けてＲＡＭ上に記憶する（ステップＳ１９０５）。
【０１４９】
背面オブジェクトの一例を図２１の２１０２に示す。また、仮想の点の一例を図２１の２１１０における２１１１〜２１１４に示す。２１１０は、最短の穴の幅を用いて仮想直線の始点を設定した例である。辺の始点である２１１５から仮想の点２１１４までの距離は、最短の穴の幅である２．１ｍｍより０．１ｍｍ短い２．０ｍｍとして決定し、仮想の点を設定している。２１１３と２１１４の間の距離も２．０ｍｍである。
【０１５０】
その後、重なり判定ツールは、図５のステップＳ５０５において、ステップＳ１９０４又はＳ１９０５で設定された仮想の点と、背面オブジェクトの辺の始点を仮想直線の始点として、所定の仰角で仮想直線を引く。仮想直線の一例を図２１の２１２０に示す。
【０１５１】
重なり判定ツールは、各仮想直線について、ステップＳ５１０で穴オブジェクトとの交点数が奇数であると判定されるまで、ステップＳ５０７〜Ｓ５１１の処理を実行する。ステップＳ５１４では、ステップＳ５０１で取得した穴を、背面側にある別の部品を打ち出し可能な穴であると決定し、図７の７４０に記憶する。
【０１５２】
どの仮想直線との交点数も０又は偶数の穴は、部品と重なっていない穴である。つまり、当該穴を介して打ち抜き可能な背面側の部品が存在しない穴であると判断するものとする。
【０１５３】
上述の処理を実行することで、図２１の２１２０に示すように、どの辺の始点から引かれた仮想直線においても穴との交点数が０又は偶数であるような重なり方の穴と背面オブジェクトにおいても、仮想直線２１２１に示すように穴との交点を奇数として特定可能である。つまり、始点のみから仮想直線を引いて穴と背面オブジェクトの重なりを判定する場合に比べ、重なり判定の精度が向上する。
【０１５４】
次に図２０を参照して、本発明の第３の実施形態における、仮想直線の始点の設定処理の一例について説明する。なお、図２０の各ステップに示す処理は、ＰＣ１００のＣＰＵ２０１が、ＰＣ１００にインストールされた重なり判定ツールの機能を用いて実行するものとする。
【０１５５】
第１の実施形態、第２の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
【０１５６】
図２０の処理は、例えば図１７のステップ１７０４の後、ステップＳ１７０５の処理実行前に実行する。つまり、第２の実施形態において、ある基準に基づいて仮想直線の始点を設定可能な処理である。
【０１５７】
重なり判定ツールは、ＰＣ１００の外部メモリに記憶されている所定の間隔（距離）の値を取得する（ステップＳ２００１）。この間隔は、穴オブジェクトの輪郭線上の、仮想直線の始点を設定する距離間隔の基準値である。当該基準値の値は、不図示の設定画面を介したユーザ操作により変更・設定可能である。
【０１５８】
重なり判定ツールは、背面オブジェクト情報７２０の各背面オブジェクトの幅を計測し、最も短い幅を特定する。背面オブジェクトが円形の場合には、円の直径を当該背面オブジェクトの幅として特定し、当該背面オブジェクトに対応付けて７２０に記憶する。
【０１５９】
背面オブジェクトが円形でない場合、例えば図２１の２１０２に示すように矩形のオブジェクトの場合には、背面オブジェクトの辺（線分）ごとに、始点、終点及び中点を抽出し、それぞれの点から当該辺に対して直角な方向に仮想直線を引く。当該背面オブジェクトの輪郭線と仮想直線との交点を特定して、当該交点の二次元における位置（Ｘ，Ｙ座標）を特定する。
【０１６０】
当該交点までの仮想直線の中で最も長い仮想直線の長さを、当該背面オブジェクトの辺に対応する幅としてＲＡＭに記憶し、１つの背面オブジェクトの全ての辺に対応する当該幅の中で最も短い幅を、当該背面オブジェクトの幅として決定（特定）して７２０に記憶する。
【０１６１】
そして、重なり判定ツールは、背面オブジェクト情報７２０に記憶された全ての背面オブジェクトの幅の中で最も短い幅の値を取得する（ステップＳ２００２）。例えば図２１の２１５０においては、１．１ｍｍが背面オブジェクト２１０２の最短の幅である。
【０１６２】
重なり判定ツールは、ステップＳ２００１で取得した基準値とステップＳ２００２で取得した最短の背面オブジェクトの幅とを比較し、基準値より当該最短の背面オブジェクトの幅の方が短いか否かを判定する（ステップＳ２００３）。
【０１６３】
基準値の方が短い場合は処理をステップＳ２００４に移行し、最短の穴の幅の方が短い場合は処理をステップＳ２００５に移行する。
【０１６４】
ステップＳ２００４では、ステップＳ１７０３で取得した穴オブジェクトの辺上に、当該辺の始点から終点に向けて、基準値が示す間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のＸ，Ｙ座標を対応付けてＲＡＭ上に記憶する（ステップＳ２００４）。
【０１６５】
ステップＳ２００５では、ステップＳ１７０３で取得した穴オブジェクトの辺上に、当該辺の始点から終点に向けて、ステップＳ２００２で特定した最短の背面オブジェクトの幅より短い間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のＸ，Ｙ座標を対応付けてＲＡＭ上に記憶する（ステップＳ２００５）。
【０１６６】
仮想の点の一例を図２１の２１６０における２１６１〜２１６８に示す。２１６０は、最短の背面オブジェクトの幅を用いて仮想直線の始点を設定した例である。辺の始点である２１６９から仮想の点２１６１までの距離は、最短の穴の幅である１．１ｍｍより０．１ｍｍ短い１．０ｍｍとして決定し、仮想の点を設定している。２１６１と２１６２の間の距離も１．０ｍｍである。
【０１６７】
その後、重なり判定ツールは、図１７のステップＳ１７０５において、ステップＳ２００４又はＳ２００５で設定された仮想の点と、穴オブジェクトの辺の始点を仮想直線の始点として、所定の仰角で仮想直線を引く。仮想直線の一例を図２１の２１７０に示す。
【０１６８】
重なり判定ツールは、各仮想直線について、ステップＳ１７１０で背面オブジェクトとの交点数が奇数であると判定されるまで、ステップＳ１７０７〜Ｓ１７１１の処理を実行する。ステップＳ１７１４では、ステップＳ１７０１で取得した穴を、背面側にある別の部品を打ち出し可能な穴であると決定し、図７の７４０に記憶する。
【０１６９】
どの仮想直線においても背面オブジェクトとの交点数が０又は偶数の穴は、部品と重なっていない穴である。つまり、当該穴を介して打ち抜き可能な背面側の部品が存在しない穴であると判断するものとする。
【０１７０】
上述の処理を実行することで、図２１の２１７０に示すように、どの辺の始点から引かれた仮想直線においても背面オブジェクトとの交点数が０又は偶数であるような重なり方の穴と背面オブジェクトにおいても、仮想直線２１７１に示すように穴との交点を奇数として特定可能である。つまり、始点のみから仮想直線を引いて背面オブジェクトと穴の重なりを判定する場合に比べ、重なり判定の精度が向上する。
【０１７１】
以上説明したように、本発明の第３の実施形態によれば、ある基準に基づいて仮想直線の始点を設定可能とすることで、仮想直線を穴の始点又は背面オブジェクトの始点から引くだけの場合に比べて部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の存在の特定処理における精度を向上しつつ、当該別の部品の有無に伴う決定を容易に行うことが可能な仕組みを提供することができる。
【０１７２】
＜その他の実施形態＞
なお、上述した実施形態においては、不要な部品を打ち抜いて取り除く例について説明したが、例えば図１２に示すように、３次元モデル１２０１と１２０４を螺子１２０５（３次元モデル）で接着させて組み立てるために本発明を用いてもよい。
【０１７３】
図１３に示す１２０４のように、１２０１の背面に、穴１２０２より大きな背面オブジェクト１２０４が穴１２０２と重なる位置にあった場合に、当該穴を打ち抜き対象（接着用モデル（螺子）の挿入対象）として決定するようにしてもよい。
【０１７４】
例えば３次元モデル１２０１を８０１の代わりとして、ステップＳ５０１において穴１２０２の輪郭を取得する。またステップＳ５０３で１２０４の輪郭を取得する。図１２のモデルの輪郭を図１３の１３００に示す。重なり判定ツールは、取得した穴の輪郭ごとに、穴の輪郭を包含する（囲んでいる）、背面オブジェクト（図１３の１２０４）の輪郭があるか判定する（つまり、穴と背面オブジェクトが重なる位置にあるかの判定（重なり判定処理）をする。重なっていると判定した場合は、処理をステップＳ５１４に移行し、重なっていないと判定した場合は未処理の背面オブジェクトの輪郭を取得して、未処理の背面オブジェクトがなくなるまで、上記重なりの判定処理を繰り返す。全ての穴オブジェクトについて重なり判定処理が終了する、又はステップＳ５１４の処理が終了した場合には処理を終了する。また、ステップＳ６１１において、穴１２０２に対応する螺子のモデルである図１２の１２０５、その螺子に対応するドライバのモデルである１２０３を生成して所定の位置に配置するようＣＡＤソフトに指示する。
【０１７５】
当該重なり判定処理は、例えば図１７の処理（特にステップＳ１７１０）によって行う。
【０１７６】
例えば、当該重なり判定処理によって、穴と背面オブジェクトが重なっていると判定された場合に、穴を背面オブジェクトの輪郭が囲んでいると判定する。
【０１７７】
穴を背面オブジェクトの輪郭が囲んでいる場合（背面オブジェクトと穴の交点数が奇数の場合）、処理をステップＳ１７１４に移行するようにしてもよい。その後、図６のステップＳ６１１において、穴１２０２に対応する螺子のモデルである図１２の１２０５、その螺子に対応するドライバのモデルである１２０３を生成して所定の位置に配置するようＣＡＤソフトに指示するようにしてもよい。
【０１７８】
これにより、部品の穴より大きな別の部品が当該穴に重なるように位置している場合も、当該穴の位置を容易に特定可能な仕組みを提供することができる。
【０１７９】
また、別の部品と重なる穴に対応する新しい複数の部品を容易に生成し、配置することができる。
【０１８０】
また、上述した実施形態においては、ステップＳ４０４で、ファイル名にｂａｃｋの文字列が含まれるモデルの輪郭線を要求して取得するものとしたが、例えばｆｒｏｎｔの文字列が含まれるモデルの一覧を要求して取得し、上述した実施形態において説明した背面オブジェクトの代わりに、当該ｆｒｏｎｔの文字列をファイル名に含むモデルの輪郭（オブジェクト）を用いて重なりの判定を行うようにしてもよい。これにより、例えば図１５に示すような部品１５０３（ファイル名にｆｒｏｎｔの文字列を含むモデル）と、背面側にある所定のモデル１５０１の穴１５０２との重なりを判定し、図１５の１５１０に示すように、前面側にあるオブジェクトと重なる位置にある穴１５０２をステップＳ５１４（又はステップＳ１７１４）で決定して、識別表示することができる。
【０１８１】
よって、１５０１と接着させたい部品１５０３が前面側にある場合でも、１５０１に空いた穴１５０２（例えば螺子穴）の位置を自動で決定することができる。また識別表示することができる。
【０１８２】
また、上述した実施形態においては、図４のステップＳ４０３で表示されるメインダイアログ１６１０において、ラジオボタン１６１２の選択を受け付けている状態で、「輪郭要求」ボタン１６１３の押下の操作を受け付けることで、ＣＡＤソフトで開いているファイル（３次元モデル）を重なり判定の処理の対象とする指定を受け付けるものとしたが、ユーザ操作により任意の３次元モデルを重なり判定の処理の対象とする指定してもよい。
【０１８３】
具体的には、メインダイアログ１６１０のラジオボタン１６１１の選択を受け付け、「参照」ボタンの押下を受け付けることでＰＣ１００の外部メモリに記憶されている又はサーバ２００等のＰＣ１００が通信・参照可能な記憶装置に記憶されている３次元モデルのファイル一覧を表示する。
【０１８４】
当該ファイル一覧から選択された３次元モデルのファイル名及び格納場所をＲＡＭ２０３に保持し、「輪郭要求」ボタン１６１３の押下を受け付けることで、選択された３次元モデルのファイル名及び格納場所をＣＡＤソフトに送信して展開するよう指示する。
【０１８５】
ＣＡＤソフトは当該指示に応じてファイルを展開する。また、重なり判定ツールは、ステップＳ４０４に処理を移行し、当該指示に応じて展開されたファイルの３次元モデルの輪郭をＣＡＤソフトに要求する。輪郭要求の方法の詳細はステップＳ４０４の説明で上述したため説明は割愛する。
【０１８６】
また、背面の部品を打ち出す対象である穴（図７の７４０の穴）の軸方向において、穴から所定距離離れた位置を打ち出し用部品の位置として決定してもよい。穴の軸方向はＣＡＤソフトに問い合わせて、穴ごとに取得するものとする。
【０１８７】
また、上面から下面に貫通している穴を抽出して、当該貫通している穴の輪郭をＣＡＤソフトに要求して取得し、重なり判定の処理対象としてオブジェクト情報７１０に記憶するようにしてもよい。背面側にある部品を打ち出すためには、手前の部品の背面側に向けて（例えば上面から下面に向けて）穴が貫通している必要があるためである。
【０１８８】
以上説明したように、本発明によれば、部品の穴と別の部品が重なる位置を容易に特定可能な仕組みを提供することができる。
【０１８９】
また、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
【０１９０】
尚、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１９１】
具体的には、ＰＣ１００とサーバ２００が一体であってもよいし、ＣＤＡソフトと重なり判定ツールが一体であり、上述した実施形態の各フローチャートの処理を実行するようにしてもよい。
【０１９２】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【０１９３】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１９４】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１９５】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１９６】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１９７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１９８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１９９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０２００】
尚、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。
即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０２０１】
１００  ＰＣ
１０１  ＬＡＮ
２００  サーバ
【図１】
2020074125.tif 000003
【図２】
2020074125.tif 000004
【図３】
2020074125.tif 000005
【図４】
2020074125.tif 000006
【図５】
2020074125.tif 000007
【図６】
2020074125.tif 000008
【図７】
2020074125.tif 000009
【図８】
2020074125.tif 000010
【図９】
2020074125.tif 000011
【図１０】
2020074125.tif 000012
【図１１】
2020074125.tif 000013
【図１２】
2020074125.tif 000014
【図１３】
2020074125.tif 000015
【図１４】
2020074125.tif 000016
【図１５】
2020074125.tif 000017
【図１６】
2020074125.tif 000018
【図１７】
2020074125.tif 000019
【図１８】
2020074125.tif 000020
【図１９】
2020074125.tif 000021
【図２０】
2020074125.tif 000022
【図２１】
2020074125.tif 000023