以下、図面を参照して、本発明の実施の形態の一例について説明する。
<第1の実施形態>
まず図1を参照して、本発明の第1の実施形態における、情報処理システムの構成の一例について説明する。
本発明の情報処理システムは、PC100、サーバ200がLAN101(ローカルエリアネットワーク)によって通信可能に接続されて構成されている。サーバ200には、CADソフト(CADソフトウェア)によって生成された3次元モデルのデータ(アセンブリファイルや部品ファイル等)が記憶されている。例えば、図8の801、802のようなデータが記憶されている。
図8の800に示す、801及び802から成る3次元モデルは、例えば図8の810における、801と803を接触させた状態で、803の溝部分に樹脂を流し込み、固めることで生成される成果物の形状を示す。
PC100にはCADソフトと、当該CADソフトから取得した情報をもとに、部品の重なりを判定する重なり判定ツールがインストールされているものとする。重なり判定ツールは、3次元モデルを上面から見た際に、上面(前面)にあるモデル(3次モデル(部品))の穴と、下面側(上面にとっての背面側)にあるモデルとが重なっているか判定し、重なっている位置を特定する。そして、重なっていると判定した位置を、当該穴を通して背面の部品を打ち抜くための打ち抜き箇所として決定する。つまり、背面の部品を打ち出すことを決定する。
これにより、例えば、図11の1100における1101に示すような、801の板の穴を貫通して802の部品を打ち抜き、図11の1110に示すように、801から不要な部品である802を剥離させて、802と連結していた1106と801だけを必要な部品として残すための、新たな部品(打ち抜き用モデル/図11の1102、1103等)を容易に作成することができるようになる。
つまりPC100は、例えば上から下方向に向けて、プレス機のように打ち抜き用モデル(打ち出し用部品)を移動させて当該不要な部品を剥離させる部品打ち出し装置で用いる、当該打ち出し用部品の設計をする装置である。以上が図1の説明である。
以下、図2を用いて、本発明の第1の実施形態における各種装置のハードウェア構成の一例について説明する。
図2において、201はCPUで、システムバス204に接続される各デバイスやコントローラを統括的に制御する。また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
203はRAMで、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ211からRAM203にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
また、205は入力コントローラで、キーボード(KB)209や不図示のマウス等のポインティングデバイス等からの入力を制御する。206はビデオコントローラで、CRTディスプレイ(CRT210)等の表示器への表示を制御する。なお、図2では、CRT210と記載しているが、表示器はCRTだけでなく、液晶ディスプレイ等の他の表示器であってもよい。これらは必要に応じて管理者が使用するものである。
207はメモリコントローラで、ブートプログラム,各種のアプリケーション,フォントデータ,ユーザファイル,編集ファイル,各種データ等を記憶するハードディスク(HD)や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ211へのアクセスを制御する。
208は通信I/Fコントローラで、ネットワーク(例えば、図1に示したLAN101)を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
なお、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT210上での表示を可能としている。また、CPU201は、CRT210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明を実現するための後述する各種プログラムは、外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ211に格納されており、これらについての詳細な説明も後述する。以上が図2の説明である。
次に図3を参照して、本発明の第1の実施形態における機能構成の機能構成の一例について説明する。
3次元モデル記憶部331は、3次元モデルを記憶する記憶部である。例えば3次元モデルの名称(ファイル名)、参照関係、X,Y,Z=0,0,0を原点とした3次元空間上の3次元モデルの位置(X,Y,Z)や方向(X,Y,Z)、形状のデータを、3次元モデルのデータとして記憶している。X,Y,Zはそれぞれ、3次元空間における縦、横、高さ方向の軸であるものとする。
3次元モデル生成部311は、3次元モデル生成部指示受付部312において受け付けたユーザ操作又は重なり判定ツール等のツールからの指示により3次元モデルを生成する生成部である。3次元モデル記憶制御部313は、生成した3次元モデルを記憶部に記憶する制御部である。例えばサーバ200に3次元モデルのデータを送信して3次元モデル記憶部331に記憶するよう指示する。3次元モデル表示部314は、生成した3次元モデルを表示画面に表示する表示部である。
オブジェクト記憶部321は、CADソフトから取得した3次元モデルの輪郭(輪郭を形成する線の集合)をオブジェクトとして記憶して管理する。輪郭線は、3次元モデルをある方向から投影した場合における3次元モデルの輪郭を示す線であり、輪郭を投影する二次元の面を投影面、輪郭線を投影した二次元の図を投影図というものとする。例えば、正面図、右側面図、左側面図、上面図等が投影図である。重なり判定部322は、複数のオブジェクトが重なっているか判定する判定部である。例えば、3次元モデルの上面図において、当該上面(前面)にあるモデルの穴であって、下面(上面にとっての背面)側のモデルと重なる位置にある穴があるか判定する。
つまり、前面から開いている穴の向こう側に打ち抜き可能な別の部品があるか判定する判定部である。
打ち抜き対象特定部323は、重なり判定部で重なっていると判定された穴(穴の位置)を、例えば上方向から下方向に向けて別部品を挿入して背面にある部品を打ち抜く場所、として特定(決定)して記憶する。
識別表示部324は、重なり判定部322で重なっていると判定された場所を識別表示する表示部である。例えば、背面側の別モデルと重なる位置にある前面側の(手前の)モデルの穴を、打ち抜き対象の穴として特定して、色を変えて識別表示する。背面に別のモデルがない穴は打ち抜き対象として特定せず、識別表示もしない。
打ち抜き用モデル形状決定部325は、打ち抜き対象の箇所を打ち抜く3次元モデルの形状を決定する決定部である。打ち抜き用モデル生成指示部326は、打ち抜き用モデル形状決定部325で決定された3次元モデルを生成するようCADソフトに指示する指示部である。
位置決定部327は、打ち抜き対象の箇所を打ち抜く3次元モデルを配置する位置であって、当該3次元モデルを設置する土台となる部材上の当該3次元モデルの位置を決定する決定部である。打ち抜き用モデル生成指示部326は、位置決定部327で決定された位置に当該3次元モデルを配置するようCADソフトに指示する。以上が図3の説明である。
次に図4を参照して、本発明の第1の実施形態における処理の概要について説明する。
以下、図4〜図6の各ステップに示す処理は、PC100のCPU201が、PC100にインストールされたCADソフト又は重なり判定ツールの機能を用いて実行するものとする。
ユーザ操作により指定されたCADファイル(3次元モデル)を展開して当該CADファイルの情報を表示画面に表示する。例えば、アセンブリファイルの選択、展開操作を受け付け、図16の1600に示すような画面を表示する。1600ではアセンブリ1を展開している。参照関係の情報は各アセンブリファイルが保持している。参照関係の情報は、参照関係を保持するアセンブリファイルが、どのアセンブリ又は部品を参照しているかの情報、及び参照しているアセンブリ又は部品の3次元空間上におけるX,Y,Z座標を有する。つまり、部品同士の3次元空間(奥行き方向)における位置関係を記憶している。例えば高さ方向は、縦方向及び横方向に伸びる面にとっての奥行き方向である。
1601はアセンブリファイルの参照している他のアセンブリファイルや部品のデータの参照関係を示すツリーを表示する表示部である。1603は、展開中のアセンブリの参照関係の情報に従って、部品形状を記憶した部品データを読みだして3次元空間上に配置して表示する表示部である。1602は、重なり判定ツールの起動ボタンである。
CADソフトは、ユーザ操作により重なり判定ツールの起動ボタンの押下の操作(起動指示)を受け付け、それに応じて重なり判定ツールを起動する(ステップS401)。CADソフトからの指示により起動した重なり判定ツールは(ステップS402)、メインダイアログ1610を表示し(ステップS403)、当該メインダイアログ1610に表示しているラジオボタン1612の選択を受け付けている状態で、「輪郭要求」ボタン1613の押下の操作を受け付ける。当該操作に応じて重なり判定ツールは、CADソフトのAPI(Application Programming Interface)を用いて、CADソフトで開いているファイル(3次元モデル)の輪郭の取得要求を行う(ステップS404)。
当該「輪郭要求」ボタン1613の押下は、対象部品の指定及び指定された部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理の実行指示である。
具体的には、CADソフトに対して、CADソフトで展開中のモデルの面の一覧を要求して取得し、当該面の一覧から任意の条件(具体的にはZ軸方向の上面等)に合致する面を取得する。そして、当該面の輪郭線のうち、所定のモデル(予め重なり判定ツールに登録されているファイル名の部品)の輪郭線と、当該所定のモデルの背面側にある別のモデルの輪郭(外形線)を要求する。例えば所定のモデルXの前面側(例:高さ方向における上面側)に位置するモデルのファイル名にはfrontという文字列が含まれ、背面側に位置するモデルのファイル名にはbackという文字列が含まれるよう、モデルを生成して記憶しておく。そして、重なり判定ツールは、モデル名称=Xの部品の輪郭線と、ファイル名にbackの文字列が含まれるモデルの輪郭線をCADソフトに要求するものとする。
更に具体的には、ここでいう展開中のモデルとは、複数の部品の3次元モデルを参照しているアセンブリファイルであり、重なり判定ツールは「輪郭要求」ボタン1613の押下を受け付けることで当該アセンブリが参照している複数の部品の面(例えば上面)を特定するようCADソフトに指示する。
つまり、3次元空間における上から下に直行するZ軸の方向を特定して、当該Z軸方向における部品の前面(上面)の特定指示をしている。
また、それらの面の中で所定の部品(例:モデルX)の上面と、その部品の背面側にある部品の上面の輪郭線をCADソフトに要求する。つまり、上面に直交する方向である高さ方向を特定し(方向特定手段に該当)、当該方向において当該部品の裏側(背面側)にある部品の輪郭線を要求する。なお、当該所定のモデルのファイル名は予めPC100の外部メモリに記憶されているものとする。
「輪郭要求」ボタン1613の押下は、CADソフトで展開中のアセンブリファイルを指定し、当該指定によりアセンブリファイルが参照している部品の中の所定の部品を指定し、指定した部品の穴を介して打ち出し可能な別の部品の存在を確認するための処理の実行操作である。
CADソフトは当該指示及び要求を受け付けて(ステップS405)、要求に応じて、上から(Z軸方向のプラスからマイナスに向かう方向から)3次元モデルを見た場合における、展開中のファイルの中のモデルXの輪郭線及びモデルXの背面側にある部品の輪郭線を生成し、重なり判定ツールに返信する(ステップS406)。例えば3次元モデルの上面図のような輪郭線のX,Y座標(Z軸方向と交差する平面における各輪郭線の頂点位置)の集合を生成して返信する。上面図の輪郭の一例を図9に示す。図9の900に、図8の800に示す3次元モデルの輪郭線を示す。
生成して重なり判定ツールに返信する輪郭線の座標の情報の中の、部品Xの背面側の部品の輪郭線の情報の一例を図7の背面オブジェクト情報720に示す。この時点ではオブジェクト名は空である。
重なり判定ツールは当該所定のモデル(部品X)とその背面側にある各部品の輪郭線の情報をCADソフトから受信して取得し、所定のモデルの輪郭線のうち当該所定のモデル上に存在する穴の輪郭線(穴オブジェクト)を抽出してオブジェクト情報710に挿入し、外部メモリに記憶する(ステップS407)。つまり、所定のモデルの上面から開いている穴の位置の情報を特定して記憶する。また、当該所定のモデルの背面側にあるモデルの外形線を抽出して、当該外形線を示す輪郭線の情報を図7の720に挿入し、外部メモリに記憶する。
図7のオブジェクト情報710は、3次元モデル711(部品)において、線(線名称713)が繋がって形成されるオブジェクト(オブジェクト名712)の輪郭を示す情報である。線種別714は各線(線名称713)の線分の属性を示す。
重なり判定ツールは、取得したオブジェクトにオブジェクト名を付与し、オブジェクトを構成する線(線分、具体的にはモデル上のエッジ)に対して直線・円弧・真円の線種別を付与して整理(CADソフトから取得した輪郭線の各線分の属性に含まれる線の種別をオブジェクト情報710に書き込み)、スプライン等のその他線分は始終点を結ぶ直線に置換してオブジェクト情報710へ格納する。lineは直線を示し、arcは円弧を示し、circleは真円を示す。それぞれの線は、始点,終点715、半径716、中央座標717、開始角度・回転角度718を、それぞれ必要な値だけ保持しているものとする。どの線種別の線がどの項目に値を保持しているかは例えば710に示す通りである。オブジェクト情報710には、ステップS404で重なり判定ツールがファイル名を指定した所定のモデルの輪郭線の情報であって、当該モデル上の穴の輪郭線を記憶しているものとする。例えば図8の801上の穴の輪郭線の情報を示す。
背面オブジェクト情報720は、オブジェクト情報710の示すオブジェクトの背面側にある3次元モデルの外形の輪郭線の情報を示す。例えば図8の802の部品の外形線の情報である。各項目の値は710の説明で上述したとおりのため説明は割愛する。
重なり判定ツールはステップS407で記憶したオブジェクトの情報(輪郭線の情報/図7の710、720)をメモリに読み出す(ステップS408/取得する)。そして処理をステップS409に移行し、重なり判定処理を実行する(ステップS409)。第1の実施形態におけるステップS409の処理の詳細は図5の説明で後述する。
ここで図5を参照して、本発明の第1の実施形態における、重なり判定処理の流れについて説明する。
重なり判定ツールは、オブジェクト情報710の中の未処理の穴オブジェクト(オブジェクト名でグルーピングされた線の集合)を1つ取得し(ステップS501)、背面オブジェクト情報720のオブジェクトを1つ取得する(ステップS502)。そして、ステップS502で取得したオブジェクト(背面オブジェクト)の線分のうち、未処理の線分を1つ取得し(ステップS503)、図7の730に示すカウンタを初期化して(ステップS504)、ステップS502(または後述するステップS516)で取得した背面オブジェクトのオブジェクト名をオブジェクト名731に、ステップS503(または後述するステップS517)で取得した線分の名称を線名称732に、ステップS501(または後述するステップS518)で取得したオブジェクト名をカウント対象オブジェクト名733に挿入して記憶する。当該カウンタ730の役割については後述する。
重なり判定ツールは、図10の1000に示すような、水平方向へ仰角1度以上の任意角度に傾いた仮想の直線(仮想直線1001)を生成し、図10に示すように、ステップS503で取得した線分の始点に配置する(ステップS505)。
例えば任意角度(所定の仰角)は3度であるものとする。所定の仰角の値はPC100の外部メモリに記憶されており、不図示の設定画面を介したユーザ操作で任意に設定変更可能であるものとする。そして、ステップS501で取得したオブジェクトの線分のうち、未処理の線分を1つ取得する(ステップS506)。
重なり判定ツールは、ステップS505で配置した仮想直線1001と、取得した穴のオブジェクトを構成する線分に交点があるか判定し(ステップS507)、交点がある場合はカウンタ730の交点数734を1カウントアップして(ステップS508)処理をステップS509に移行する。交点がない場合は、処理をステップS509に移行する。
重なり判定ツールは、ステップS507で交点の有無を判定した穴の線分(710の線分)が、ステップS501で取得した穴のオブジェクトを構成する未処理の線分のうち最後の線分か判定する(ステップS509/つまりステップS501で取得した穴の線分全てを処理したか判定する)。未処理の線分がまだ残っている場合には、ステップS501で取得した穴のオブジェクトの線分のうち未処理の線分を1つ取得して(ステップS515)処理をステップS507に移行する。
ステップS501で取得した穴オブジェクトの全ての線分を処理した場合、重なり判定ツールは、カウンタ730の交点数734の値が奇数か偶数か判定する(ステップS510)。交点数が奇数の場合には、図10に示すように、ステップS503(または後述するステップS516)で取得した処理中の背面オブジェクトの線分は、ステップS501(または後述するステップS518)で取得した、仮想直線が交差した穴オブジェクトと重なっていると判定(決定)し、処理をステップS514に移行する。また、当該ステップS501で取得した穴オブジェクト(または後述するステップS518で取得した穴オブジェクト)を、背面のオブジェクトと重なる位置にある穴であって、背面のモデルを打ち抜く場所として特定し、外部メモリに記憶する(ステップS514)。具体的には、図7の740に示すように、どのモデル(部品名741)の、どのオブジェクト(対象部742)が打ち抜き対象の場所を示すかを記憶する。
つまり、カウンタ730の交点数734の値が奇数であった穴について、当該穴を介して打ち抜き可能な背面側の部品が存在すると判定し、当該穴を介して背面側の部品を打ち出すことを決定する。
交点数が偶数又は0の場合には、図10に示すように、ステップS503等(または後述するステップS516)で取得した処理中の背面オブジェクトの線分は、穴オブジェクトと重なっていないと判定(決定)し、処理をステップS511に移行する。
重なり判定ツールは、処理中の背面オブジェクトの線分は、当該背面オブジェクトを形成する未処理の線分のうち最後の線分か判定する(ステップS511/つまり、ステップS502または後述するS517で取得したオブジェクトであって、所定の部品Xの背面側にあるオブジェクトの全ての線分を処理したか判定する)。未処理の線分がある場合には、処理中の背面オブジェクトの線分のうち未処理の線分を1つ取得して(ステップS516)、処理をステップS504に移行する。
処理中の背面オブジェクトを構成する線分の全てを処理した場合には、重なり判定ツールは、背面オブジェクト情報720内の全ての背面オブジェクトを処理したか判定する(ステップS512)。未処理の背面オブジェクトがある場合は、未処理の背面オブジェクトを1つ取得して(ステップS517)、処理をステップS503に移行する。全ての背面オブジェクトを処理済みの場合は処理をステップS513に移行する。
重なり判定ツールは、オブジェクト情報710内の全ての穴オブジェクトを処理したか判定する(ステップS513)。
つまり、ユーザ操作で指定された所定の部品Xの前面に開いている穴(例:高さ方向において上面に開いている穴)の中に、処理中の背面オブジェクトと重なっているかの判定を行っていない穴があるか判定する。未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを取得して(ステップS518)、処理をステップS502に移行する。全ての穴オブジェクトを処理している場合は、図5の処理を終了する。以上が図5の説明である。
図4の説明に戻る。重なり判定ツールは、ステップS410で、ステップS409の判定結果(図7の打ち抜き対象部740)をメモリから読み出して取得し、対象部742の示すオブジェクトを表示画面上に識別表示する(ステップS410)。
例えば、打ち抜き対象部740に記憶された穴オブジェクトを選択状態とし、選択状態の穴オブジェクトの色を選択状態であることを示す色(例:赤色)に変更して識別表示する。識別表示の様子の一例を、図10の1010における、1011等に示す。その後処理をステップS411に移行する。ステップS411の処理の詳細は図6の説明で後述する。
以上説明したように、本発明によれば、部品の穴と別の部品が重なる位置を容易に特定可能な仕組みを提供することができる。
例えば、所定のモデルの穴の向こう側に別のモデルが存在する場合に、当該別のモデルを打ち抜く対象として、当該穴を特定して記憶することができる。
つまり、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
また、当該特定した打ち抜き対象の穴を表示画面上に識別表示することで、打ち抜き対象箇所をユーザに確認させることができる。
次に図6を参照して、本発明の第1の実施形態における、新規オブジェクトの生成・配置処理の流れについて説明する。
重なり判定ツールは、打ち抜き対象部740の穴の軸方向と同じ軸上(同じ方向上)に、当該穴と同じ方向(例えば上から下)を向いて配置されている3次元モデルの一覧をCADソフトに要求する(ステップS601)。なお、要求するモデル一覧は、例えば穴の空いた3次元モデル(例:図8の801)よりも、Z軸上の上から下に向けた方向において、当該穴よりも手前に配置されている(名称にfrontの文字列が含まれている)モデルのうち、穴と同じ軸上に穴と同じ方向を向いて配置されているモデルの一覧である。
更に具体的には、重なり判定ツールは、打ち抜き対象部740をCADソフトに送信すると共に、当該打ち抜き対象部740に含まれる各穴の中心軸の仮想線を生成して当該仮想線と干渉する部品の中の当該軸の穴よりも手前側にある部品一覧を要求する。
CADソフトは当該要求を受け付けると(ステップS602)、要求に応じたモデルの一覧を重なり判定ツールに返信する(ステップS603)。
具体的には、CADソフトは、重なり判定ツールからの要求に応じて、重なり判定ツールから受信した打ち抜き対象部740に含まれる各穴の中心軸の仮想線を生成し、当該仮想線と干渉する部品の中で、干渉した軸の穴よりも手前側にある部品のファイル名一覧を穴ごと(ループしている線の各線分の線名称及び各線分の始点・終点の位置のグループ)ごとに生成して、重なり判定ツールに返信する。
重なり判定ツールはこれを受信し(ステップS604)、全ての穴オブジェクトについて、穴に対応する形状の3次元モデルが、穴と同じ軸上に配置されているか判定する(ステップS605)。つまり、CADソフトから受信した各穴の手前にある部品のファイル名一覧に、当該穴に対応する形状の部品が存在するか判定する。
穴に対応する形状の3次元モデルとは、PC100の外部メモリに予め記憶されている不図示の対応付けファイルに記憶されている、穴オブジェクトを構成する線種別の組み合わせに対応するファイル名の3次元モデルである。例えば、線種別=circleには、円柱形のモデル1つから構成される3次元モデルのファイル名(例:x01.prt)が対応付けられている。また、線種別=line及びarcの組み合わせには、円柱形のモデル2つから構成される3次元モデルのファイル名(アセンブリファイル名/例:x02.asm)が対応付けられているものとする。
重なり判定ツールは、全ての穴オブジェクトについて、穴に対応する形状の3次元モデルが、穴と同じ軸上に配置されていると判定した場合、処理を終了する。対応する3次元モデルが配置されていない穴があると判定された場合は、図14に示すようなダイアログを表示画面に表示する(ステップS606)。
重なり判定ツールは、ダイアログ1400(図14)において、穴に対応する形状の3次元モデルの生成・配置の操作を受け付けたか(「はい」ボタンの押下を受け付けたか)判定する(ステップS607)。穴に対応する形状の3次元モデルの生成・配置の操作を受け付けなかった場合(「いいえ」ボタンの押下を受け付けた場合)は処理を終了する。穴に対応する形状の3次元モデルの生成・配置の操作を受け付けた場合は、処理をステップS608に移行する。
重なり判定ツールは、ステップS608で、打ち抜き対象部740における対象部742(穴オブジェクト)の形状を取得する(ステップS608)。
具体的には、重なり判定ツールは、対応する形状の3次元モデルが3次元空間上に配置されていない穴オブジェクトのオブジェクト名を、オブジェクト情報710に記憶されたオブジェクト名と線名称及び線の始点・終点の位置と、CADソフトから受信した一覧と、外部メモリに記憶されている穴に対応する形状の3次元モデルの情報とを用いて特定する。
つまり、打ち抜き対象部740の中で、対応する形状の3次元モデルが3次元空間上に配置されていない穴オブジェクトを特定する。
以降、対応する形状の3次元モデルが3次元空間上に配置されていない穴オブジェクトの数だけ、ステップS609〜S611の処理を繰り返し実行する。
重なり判定ツールは、ステップS608で取得した、対応する形状の3次元モデルが3次元空間上に配置されていない穴オブジェクトのうち、未処理の穴オブジェクトを1つ取得する。
そして、例えば、取得した当該対象部742の示す、穴オブジェクトがどの種類の線分の組み合わせから成るかを、当該オブジェクトを構成する線種別を取得することで特定する。そして、当該穴オブジェクトの形状に対応するファイル名のモデルを外部メモリから読み出して取得する(ステップS609)。つまり、穴を介して部品を打ち抜く打ち抜き用部品の形状を決定する。当該3次元モデルのファイルはサーバ200の所定の記憶領域に予め記憶されているものとする。
重なり判定ツールは、取得した穴の直径から、所定の長さだけクリアランスを設けた輪郭を穴の内側に生成し、ステップS609で取得したモデルの直径を当該生成した輪郭の直径とすることを決定する。つまり、新規に生成する部品の形状、サイズを決定する(サイズ決定手段に該当)。
重なり判定ツールは、ステップS609で取得した3次元モデルのファイル名をCADソフトに通知し、当該ファイル名のモデルを、所定の位置に配置するようCADソフトに指示する(ステップS611/生成制御手段、配置制御手段に該当)。ここでいう所定の位置とは、例えば処理中の3次元モデル(例:図8、図11の801)に対応付けて記憶されている位置であって、(例えばステップS608で取得した穴オブジェクトがcircleの場合)当該穴オブジェクトの示す3次元モデル上の穴の軸上の点であり、当該穴の中心点から所定距離分Z軸方向に距離をとった位置である。例えば図11の穴1104にとっての所定の位置は1102である。穴の中心点とは、例えば部品801の上面と同じ平面ベクトル上における穴の中心の位置である。また、ステップS608で取得した穴オブジェクトがarc(円弧)を含む場合、arcの中央点から所定距離分Z軸方向に距離をとった位置を、前記所定の位置とする(位置決定手段に該当)。穴1105に対応する所定の位置は、複数の位置1103(複数の点)である。重なり判定ツールは当該所定の位置を特定してCADソフトに通知して、当該所定の位置に、ステップS609で取得した3次元モデルを、ステップS610で決定した直径に変更して配置するよう指示する。
CADソフトは当該指示を受け付け(ステップS612)、受け付けた指示に従って、穴に対応する3次元モデルを取得してコピーし(生成し)、サイズ変更し、所定の位置に配置する処理を行う(ステップS613)。例えば、図11に示す1101〜1103のようなピン状の打ち抜き用の3次元モデルを生成し、3次元モデル(部品801)を参照しているアセンブリに参照させるようアセンブリを編集して記憶することで、1100に示す801と1101〜1103を1つの表示画面上に表示する。図11の1110は、不要な部品802(除去部)を打ち抜いて除去した際のイメージを示す。
図11の所定の位置1102及び所定の位置1103は、打ち抜き用の3次元モデルの一部とするピン状の部品の位置(1102及び1103の位置)を、当該ピン状の部品が、打ち抜き用の3次元モデルにおける土台である1101に接する位置である。つまり、穴の中心点からピン状の部品が土台となる部材(部品)に接する距離分(所定距離分)Z軸方向に距離をとった位置である。
当該ピン状の部品が接している土台の部材上の位置が、当該ピン状の部品を配置する当該部材上の位置である。すなわち、重なり判定ツールは、穴を介して背面オブジェクトを打ち出すピン状の部品の当該部材上の位置を決定している。
なお、801の部品と1101の部品の距離が一定の場合には、ピン状の部品を配置する高さ方向(Z軸方向)の位置は予め決定しておき、当該ピン状の部品を配置する縦軸・横軸方向(X軸、Y軸方向)の位置を、背面の部品を打ち出すべき穴の位置に決定するようにしてもよい。
重なり判定ツールは、ステップS608で特定して取得した、対応する形状の3次元モデルが3次元空間上に配置されていない穴オブジェクトの中の全ての穴オブジェクトについて、ステップS609〜S611の処理を実行済か判定する。
未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを1つ取得し、処理をステップS609に戻して、S609〜S611の処理を実行する。すべての穴オブジェクトを処理済の場合は図6の処理を終了する。以上が図6の説明である。
図6の処理によれば、別の部品と重なる穴に対応する新しい部品を容易に生成し、配置することができる。
また、背面側にある部品を穴を介して打ち出すための新しい部品を配置する部材上の位置を決定することができる。
なお、図5のステップS512とステップS513の判定のタイミングを入れ替えて本発明を実現してもよい。
具体的には、重なり判定ツールが、図5のステップS511において、処理中の背面オブジェクトの線分が当該背面オブジェクトを形成する未処理の線分のうち最後の線分であると判定された場合(ステップS511でYESの場合)は処理をステップS513に移行する。
ステップS513においては、オブジェクト情報710内の全ての穴オブジェクトについて処理中の背面オブジェクトとの重なりを判定したか判定する。そして、オブジェクト情報710内の全ての穴オブジェクトについて処理中の背面オブジェクトとの重なりを判定済であると判定された場合は処理をステップS518に移行し、判定済でないと判定された場合(つまり、当該波面オブジェクトの線分から引いた仮想直線との交点の有無を判定し終わっていない穴オブジェクトが残っている場合)は、処理をステップS512に移行する。
ステップS512では、重なり判定ツールは、背面オブジェクト情報720内の全ての背面オブジェクトを処理したか判定する(ステップS512)。つまり、全ての背面オブジェクトについて、穴オブジェクトとの交点数をカウント済か判定する。未処理の背面オブジェクトがある場合は処理をステップS517に移行して未処理の背面オブジェクトを1つ取得し、ステップS503に処理を移行する。全ての背面オブジェクトを処理済みの場合は図5の処理を終了する。
<第2の実施形態>
次に図17、図18を参照して、本発明の第2の実施形態について説明する。第2の実施形態では、穴を基準として、当該穴の開いている部品の背面側にある部品と当該穴が重なっているかを判定する。
穴を完全に背面の部品が覆ってしまっている3次元モデルにおいては、例えば図18の背面オブジェクト1801と穴オブジェクト1802の関係に示すように、背面オブジェクトの頂点が全て穴の外側に位置している場合がある。つまり、背面オブジェクトの外形線上の点(例:各オブジェクトにおける各線分の始点)から仮想線分を引いたとしても、仮想線分と背面オブジェクトの交点数は0又は偶数になってしまうことがある。
第2の実施形態における、穴を基準とした重なり判定の処理は、例えば、穴を完全に背面の部品が覆ってしまっているような3次元モデルにおいて部品を打ち抜く箇所を特定する場合等に有用である。
図17を参照して、本発明の第2の実施形態における、重なり判定処理の流れについて説明する。第2の実施形態においては、図17の処理を、第1の実施形態における図5の処理の代わりに実行する。
図17の各ステップに示す処理は、PC100のCPU201が、PC100にインストールされたCADソフト又は重なり判定ツールの機能を用いて実行するものとする。
第1の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
ステップS1701の処理は図5のステップS501の処理と同じである。また、ステップS1702の処理は図5のステップS502の処理と同じである。よって、説明は割愛する。
重なり判定ツールは、ステップS1701で取得したオブジェクト(穴オブジェクト)の線分のうち、未処理の線分を1つ取得し(ステップS1703)、図7の730に示すカウンタを初期化して(ステップS1704)、ステップS1701(または後述するステップS1718)で取得した穴オブジェクトのオブジェクト名をオブジェクト名731に、ステップS1703(または後述するステップS1716)で取得した線分の名称を線名称732に、ステップS1702(または後述するステップS1717)で取得した背面オブジェクトのオブジェクト名をカウント対象オブジェクト名733に挿入して記憶する。
重なり判定ツールは、例えば図18の1803、1804等に示すような、対象の線分の方向を0度として、穴の外側に仰角1度以上の任意角度に傾いた仮想直線を生成し、例えば1803に示すように、ステップS1703で取得した線分の始点に配置する(ステップS1705)。
なお、穴が円形の場合は穴の線分の始点は1点である。円形の穴の始点においては、当該始点と接点を持つ仮想線を作成し、当該仮想線の方向を0度として、穴の外側に向けて任意角度で仮想線をひくものとする。
例えば任意角度(所定の仰角)は60度であるものとする。所定の仰角の値はPC100の外部メモリに記憶されており、不図示の設定画面を介したユーザ操作で任意に設定変更可能であるものとする。重なり判定ツールは、ステップS1702で取得した背面オブジェクトの線分のうち、未処理の線分を1つ取得する(ステップS1706)。
重なり判定ツールは、ステップS1705で配置した仮想直線1803と、取得した背面オブジェクトを構成する線分に交点があるか判定し(ステップS1707)、交点がある場合はカウンタ730の交点数734を1カウントアップして(ステップS1708)処理をステップS1709に移行する。交点がない場合は、処理をステップS1709に移行する。
重なり判定ツールは、ステップS1707で交点の有無を判定した背面オブジェクトの線分(710の線分)が、当該背面オブジェクトの線分のうち最後の線分か判定する(ステップS1709)。未処理の線分がまだ残っている場合には、ステップS1702で取得した穴のオブジェクトの線分のうち未処理の線分を1つ取得して(ステップS1715)処理をステップS1707に移行する。
ステップS1702で取得した背面オブジェクトの全ての線分を処理した場合、重なり判定ツールは、カウンタ730の交点数734の値が奇数か偶数か判定する(ステップS1710)。
交点数が奇数の場合には、図18の1801及び1802の関係に示すように、ステップS1701(または後述するステップS1718)で取得した処理中の穴オブジェクトは、ステップS1702(または後述するステップS1717)で取得した、仮想直線が交差した背面オブジェクトと重なっていると判定(決定)し、処理をステップS1714に移行する。
また、当該ステップS1701で取得した穴オブジェクト(または後述するステップS1718で取得した穴オブジェクト)を、背面のオブジェクトと重なる位置にある穴であって、背面のモデルを打ち抜く場所として特定し、外部メモリに記憶する(ステップS1714)。具体的には、図7の740に示すように、どのモデル(部品名741)の、どのオブジェクト(対象部742)が打ち抜き対象の場所を示すかを記憶する。
つまり、カウンタ730の交点数734の値が奇数であった穴について、当該穴を介して打ち抜き可能な背面側の部品が存在すると判定し、当該穴を介して背面側の部品を打ち抜くことを決定する。
交点数が偶数又は0の場合には、図18に示すように、ステップS1701(または後述するステップS518)で取得した処理中の穴オブジェクトは、判定対象の背面オブジェクトと重なっていないと判定(決定)し、処理をステップS1711に移行する。
重なり判定ツールは、処理中の穴オブジェクトの線分は、当該穴オブジェクトを形成する未処理の線分のうち最後の線分か判定する(ステップS1711)。未処理の線分がある場合には、処理中の穴オブジェクトの線分のうち未処理の線分を1つ取得して(ステップS1716)、処理をステップS1704に移行する。
処理中の穴オブジェクトを構成する線分の全てを処理した場合には、重なり判定ツールは、背面オブジェクト情報720内の全ての穴オブジェクトを処理したか判定する(ステップS1712)。未処理の背面オブジェクトがある場合は、未処理の背面オブジェクトを1つ取得して(ステップS1717)、処理をステップS1703に移行する。
以降、処理中の穴オブジェクトの線分を全て未処理の線分として決定し、処理中の穴オブジェクトとステップS1717で新たに取得した背面オブジェクトとを対象に、ステップS1703以降の処理を実行する。なお、全ての背面オブジェクトを処理済みの場合は処理をステップS1713に移行する。
重なり判定ツールは、オブジェクト情報710内の全ての穴オブジェクトを処理したか判定する(ステップS1713)。
つまり、ユーザ操作で指定された所定の部品Xの前面に開いている穴(例:高さ方向において上面に開いている穴)の中に、背面オブジェクトと重なっているかの判定を行っていない穴があるか判定する。未処理の穴オブジェクトがある場合は、未処理の穴オブジェクトを取得して(ステップS1718)、処理をステップS1702に移行する。全ての穴オブジェクトを処理している場合は、図17の処理を終了する。以上が図17の説明である。
以上説明したように、本発明の第2の実施形態によれば、部品の穴と別の部品が重なる位置を、たとえ当該別の部品が穴を覆ってしまっている場合であっても容易に特定し、当該別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
なお、上述した第1の実施形態と第2の実施形態とを組み合わせて実行してもよい。例えば、図4のステップS409の重なり判定処理として、まず第1の実施形態の図5の処理を実行する。その後、図5の処理で背面オブジェクトと重なっていないと判定された穴(背面側に打ち抜き可能な部品が存在しないと判定された穴)を対象として、第2の実施形態における図17の処理を実行する。
背面オブジェクトと重なっていないと判定された穴とは、ステップS407で取得した、所定の部品Xの前面に開いている穴(例:高さ方向において上面に開いている穴)のうち、図5の処理終了時点で、図7の打ち抜き対象部740(背面にオブジェクトがあると判定された穴の一覧)に含まれてない穴オブジェクトである。
図5の処理及び図17の処理を組み合わせて実行することで、例えば背面オブジェクトが穴の一部と重なっている設計と、背面オブジェクトが穴の全部を覆っている設計とが混在する3次元モデルにおいて、穴と部品の重なり判定の精度を高めることができる。
なお、上述した第2の実施形態の説明においては、穴の線分の始点から穴の外側に向けて所定の仰角の仮想直線をひくものとしたが、図18の1805に示すように、穴の内側に向けて所定の仰角の仮想直線をひいてもよい。
<第3の実施形態>
図19〜図21を参照して、本発明の第3の実施形態について説明する。第3の実施形態では、仮想直線の始点を穴又は背面オブジェクトの始点の他にも設定可能とし、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無を容易に特定可能な仕組みを提供する。
例えば、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品が存在するにも関わらず、穴の辺の始点に背面オブジェクトが重なっておらず、また、背面オブジェクトの辺の始点が穴の中にない場合がある。
つまり、穴の辺の始点から仮想直線を引いて背面オブジェクトと仮想直線の交点の数を求めても、背面オブジェクトの辺の始点から仮想直線を引いて穴と仮想直線の交点の数を求めても、本当は部品の穴を介して打ち抜き可能な別の部品が存在するにも関わらず、当該滅の部品が存在してないと判定されてしまうことがある。
例えば図20の2100の図によれば、穴の始点から仮想直線を引いた場合の、当該仮想直線と背面オブジェクトの辺との交点数は0又は偶数となる。また、2100において背面オブジェクトの始点から仮想直線を引いた場合の、当該仮想直線と穴の辺との交点数は0又は偶数となる。
第3の実施形態においては、ある基準に基づいて仮想直線の始点を設定可能とすることで、仮想直線を穴の始点又は背面オブジェクトの始点から引くだけの場合に比べて部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の存在の特定処理における精度を向上しつつ、当該別の部品の有無に伴う決定を容易に行うことが可能な仕組みを提供する。
穴を完全に背面の部品が覆ってしまっている3次元モデルにおいては、例えば図18の背面オブジェクト1801と穴オブジェクト1802の関係に示すように、背面オブジェクトの頂点が全て穴の外側に位置している場合がある。つまり、背面オブジェクトの外形線上の点(例:各オブジェクトにおける各線分の始点)から仮想線分を引いたとしても、仮想線分と背面オブジェクトの交点数は0又は偶数になってしまうことがある。
第2の実施形態における、穴を基準とした重なり判定の処理は、例えば、穴を完全に背面の部品が覆ってしまっているような3次元モデルにおいて部品を打ち抜く箇所を特定する場合等に有用である。
図19を参照して、本発明の第3の実施形態における、仮想直線の始点の設定処理の一例について説明する。なお、図19の各ステップに示す処理は、PC100のCPU201が、PC100にインストールされた重なり判定ツールの機能を用いて実行するものとする。
第1の実施形態、第2の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
図19の処理は、例えば図5のステップ504の後、ステップS505の処理実行前に実行する。つまり、第1の実施形態において、ある基準に基づいて仮想直線の始点を設定可能な処理である。
重なり判定ツールは、PC100の外部メモリに記憶されている所定の間隔(距離)の値を取得する(ステップS1901)。所定の間隔の値(Nmm)は、背面オブジェクトの輪郭線上の、仮想直線の始点を設定する距離間隔の基準値であり、例えば穴の幅や部品の幅より狭い(短い)幅が設定されているものとする。当該基準値の値は、不図示の設定画面を介したユーザ操作により変更・設定可能である。
重なり判定ツールは、オブジェクト情報710の各穴オブジェクトの穴の幅を計測し、最も短い幅を特定する。穴オブジェクトが円形の場合には、円の直径を当該穴オブジェクトの幅として特定し、当該穴オブジェクトに対応付けて710に記憶する。
穴オブジェクトが円形でない場合、例えば図21の2101に示すように部品2103に開いた穴が矩形の穴の場合には、穴オブジェクトの辺(線分)ごとに、始点、終点及び中点を抽出し、それぞれの点から当該辺に対して直角な方向に仮想直線を引く。当該穴オブジェクトの輪郭線と仮想直線との交点を特定して、当該交点の二次元における位置(X,Y座標)を特定する。
当該交点までの仮想直線の中で最も長い仮想直線の長さを、当該穴オブジェクトの辺に対応する幅としてRAMに記憶し、1つの穴オブジェクトの全ての辺に対応する当該幅の中で最も短い幅を、当該穴オブジェクトの幅として決定(特定)して710に記憶する。
そして、重なり判定ツールは、オブジェクト情報710に記憶された全ての穴の幅の中で最も短い幅の値を取得する(ステップS1902)。例えば、図21の2100においては、2.1mmが穴オブジェクト2101の最短の幅である。
重なり判定ツールは、ステップS1901で取得した基準値とステップS1902で取得した最短の穴の幅とを比較し、基準値より当該最短の穴の幅の方が短いか否かを判定する(ステップS1903)。
基準値の方が短い場合は処理をステップS1904に移行し、最短の穴の幅の方が短い場合は処理をステップS1905に移行する。
ステップS1904では、ステップS503で取得した背面オブジェクトの辺上に、当該辺の始点から終点に向けて、基準値が示す間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のX,Y座標を対応付けてRAM上に記憶する(ステップS1904)。
ステップS1905では、ステップS503で取得した背面オブジェクトの辺上に、当該辺の始点から終点に向けて、ステップS1902で特定した最短の穴の幅より短い間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のX,Y座標を対応付けてRAM上に記憶する(ステップS1905)。
背面オブジェクトの一例を図21の2102に示す。また、仮想の点の一例を図21の2110における2111〜2114に示す。2110は、最短の穴の幅を用いて仮想直線の始点を設定した例である。辺の始点である2115から仮想の点2114までの距離は、最短の穴の幅である2.1mmより0.1mm短い2.0mmとして決定し、仮想の点を設定している。2113と2114の間の距離も2.0mmである。
その後、重なり判定ツールは、図5のステップS505において、ステップS1904又はS1905で設定された仮想の点と、背面オブジェクトの辺の始点を仮想直線の始点として、所定の仰角で仮想直線を引く。仮想直線の一例を図21の2120に示す。
重なり判定ツールは、各仮想直線について、ステップS510で穴オブジェクトとの交点数が奇数であると判定されるまで、ステップS507〜S511の処理を実行する。ステップS514では、ステップS501で取得した穴を、背面側にある別の部品を打ち出し可能な穴であると決定し、図7の740に記憶する。
どの仮想直線との交点数も0又は偶数の穴は、部品と重なっていない穴である。つまり、当該穴を介して打ち抜き可能な背面側の部品が存在しない穴であると判断するものとする。
上述の処理を実行することで、図21の2120に示すように、どの辺の始点から引かれた仮想直線においても穴との交点数が0又は偶数であるような重なり方の穴と背面オブジェクトにおいても、仮想直線2121に示すように穴との交点を奇数として特定可能である。つまり、始点のみから仮想直線を引いて穴と背面オブジェクトの重なりを判定する場合に比べ、重なり判定の精度が向上する。
次に図20を参照して、本発明の第3の実施形態における、仮想直線の始点の設定処理の一例について説明する。なお、図20の各ステップに示す処理は、PC100のCPU201が、PC100にインストールされた重なり判定ツールの機能を用いて実行するものとする。
第1の実施形態、第2の実施形態と共通する図、処理、データ、画面や部品の説明は割愛する。
図20の処理は、例えば図17のステップ1704の後、ステップS1705の処理実行前に実行する。つまり、第2の実施形態において、ある基準に基づいて仮想直線の始点を設定可能な処理である。
重なり判定ツールは、PC100の外部メモリに記憶されている所定の間隔(距離)の値を取得する(ステップS2001)。この間隔は、穴オブジェクトの輪郭線上の、仮想直線の始点を設定する距離間隔の基準値である。当該基準値の値は、不図示の設定画面を介したユーザ操作により変更・設定可能である。
重なり判定ツールは、背面オブジェクト情報720の各背面オブジェクトの幅を計測し、最も短い幅を特定する。背面オブジェクトが円形の場合には、円の直径を当該背面オブジェクトの幅として特定し、当該背面オブジェクトに対応付けて720に記憶する。
背面オブジェクトが円形でない場合、例えば図21の2102に示すように矩形のオブジェクトの場合には、背面オブジェクトの辺(線分)ごとに、始点、終点及び中点を抽出し、それぞれの点から当該辺に対して直角な方向に仮想直線を引く。当該背面オブジェクトの輪郭線と仮想直線との交点を特定して、当該交点の二次元における位置(X,Y座標)を特定する。
当該交点までの仮想直線の中で最も長い仮想直線の長さを、当該背面オブジェクトの辺に対応する幅としてRAMに記憶し、1つの背面オブジェクトの全ての辺に対応する当該幅の中で最も短い幅を、当該背面オブジェクトの幅として決定(特定)して720に記憶する。
そして、重なり判定ツールは、背面オブジェクト情報720に記憶された全ての背面オブジェクトの幅の中で最も短い幅の値を取得する(ステップS2002)。例えば図21の2150においては、1.1mmが背面オブジェクト2102の最短の幅である。
重なり判定ツールは、ステップS2001で取得した基準値とステップS2002で取得した最短の背面オブジェクトの幅とを比較し、基準値より当該最短の背面オブジェクトの幅の方が短いか否かを判定する(ステップS2003)。
基準値の方が短い場合は処理をステップS2004に移行し、最短の穴の幅の方が短い場合は処理をステップS2005に移行する。
ステップS2004では、ステップS1703で取得した穴オブジェクトの辺上に、当該辺の始点から終点に向けて、基準値が示す間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のX,Y座標を対応付けてRAM上に記憶する(ステップS2004)。
ステップS2005では、ステップS1703で取得した穴オブジェクトの辺上に、当該辺の始点から終点に向けて、ステップS2002で特定した最短の背面オブジェクトの幅より短い間隔で仮想直線の始点とする仮想の点を設定する。例えば、当該辺の名称と仮想の点のX,Y座標を対応付けてRAM上に記憶する(ステップS2005)。
仮想の点の一例を図21の2160における2161〜2168に示す。2160は、最短の背面オブジェクトの幅を用いて仮想直線の始点を設定した例である。辺の始点である2169から仮想の点2161までの距離は、最短の穴の幅である1.1mmより0.1mm短い1.0mmとして決定し、仮想の点を設定している。2161と2162の間の距離も1.0mmである。
その後、重なり判定ツールは、図17のステップS1705において、ステップS2004又はS2005で設定された仮想の点と、穴オブジェクトの辺の始点を仮想直線の始点として、所定の仰角で仮想直線を引く。仮想直線の一例を図21の2170に示す。
重なり判定ツールは、各仮想直線について、ステップS1710で背面オブジェクトとの交点数が奇数であると判定されるまで、ステップS1707〜S1711の処理を実行する。ステップS1714では、ステップS1701で取得した穴を、背面側にある別の部品を打ち出し可能な穴であると決定し、図7の740に記憶する。
どの仮想直線においても背面オブジェクトとの交点数が0又は偶数の穴は、部品と重なっていない穴である。つまり、当該穴を介して打ち抜き可能な背面側の部品が存在しない穴であると判断するものとする。
上述の処理を実行することで、図21の2170に示すように、どの辺の始点から引かれた仮想直線においても背面オブジェクトとの交点数が0又は偶数であるような重なり方の穴と背面オブジェクトにおいても、仮想直線2171に示すように穴との交点を奇数として特定可能である。つまり、始点のみから仮想直線を引いて背面オブジェクトと穴の重なりを判定する場合に比べ、重なり判定の精度が向上する。
以上説明したように、本発明の第3の実施形態によれば、ある基準に基づいて仮想直線の始点を設定可能とすることで、仮想直線を穴の始点又は背面オブジェクトの始点から引くだけの場合に比べて部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の存在の特定処理における精度を向上しつつ、当該別の部品の有無に伴う決定を容易に行うことが可能な仕組みを提供することができる。
<その他の実施形態>
なお、上述した実施形態においては、不要な部品を打ち抜いて取り除く例について説明したが、例えば図12に示すように、3次元モデル1201と1204を螺子1205(3次元モデル)で接着させて組み立てるために本発明を用いてもよい。
図13に示す1204のように、1201の背面に、穴1202より大きな背面オブジェクト1204が穴1202と重なる位置にあった場合に、当該穴を打ち抜き対象(接着用モデル(螺子)の挿入対象)として決定するようにしてもよい。
例えば3次元モデル1201を801の代わりとして、ステップS501において穴1202の輪郭を取得する。またステップS503で1204の輪郭を取得する。図12のモデルの輪郭を図13の1300に示す。重なり判定ツールは、取得した穴の輪郭ごとに、穴の輪郭を包含する(囲んでいる)、背面オブジェクト(図13の1204)の輪郭があるか判定する(つまり、穴と背面オブジェクトが重なる位置にあるかの判定(重なり判定処理)をする。重なっていると判定した場合は、処理をステップS514に移行し、重なっていないと判定した場合は未処理の背面オブジェクトの輪郭を取得して、未処理の背面オブジェクトがなくなるまで、上記重なりの判定処理を繰り返す。全ての穴オブジェクトについて重なり判定処理が終了する、又はステップS514の処理が終了した場合には処理を終了する。また、ステップS611において、穴1202に対応する螺子のモデルである図12の1205、その螺子に対応するドライバのモデルである1203を生成して所定の位置に配置するようCADソフトに指示する。
当該重なり判定処理は、例えば図17の処理(特にステップS1710)によって行う。
例えば、当該重なり判定処理によって、穴と背面オブジェクトが重なっていると判定された場合に、穴を背面オブジェクトの輪郭が囲んでいると判定する。
穴を背面オブジェクトの輪郭が囲んでいる場合(背面オブジェクトと穴の交点数が奇数の場合)、処理をステップS1714に移行するようにしてもよい。その後、図6のステップS611において、穴1202に対応する螺子のモデルである図12の1205、その螺子に対応するドライバのモデルである1203を生成して所定の位置に配置するようCADソフトに指示するようにしてもよい。
これにより、部品の穴より大きな別の部品が当該穴に重なるように位置している場合も、当該穴の位置を容易に特定可能な仕組みを提供することができる。
また、別の部品と重なる穴に対応する新しい複数の部品を容易に生成し、配置することができる。
また、上述した実施形態においては、ステップS404で、ファイル名にbackの文字列が含まれるモデルの輪郭線を要求して取得するものとしたが、例えばfrontの文字列が含まれるモデルの一覧を要求して取得し、上述した実施形態において説明した背面オブジェクトの代わりに、当該frontの文字列をファイル名に含むモデルの輪郭(オブジェクト)を用いて重なりの判定を行うようにしてもよい。これにより、例えば図15に示すような部品1503(ファイル名にfrontの文字列を含むモデル)と、背面側にある所定のモデル1501の穴1502との重なりを判定し、図15の1510に示すように、前面側にあるオブジェクトと重なる位置にある穴1502をステップS514(又はステップS1714)で決定して、識別表示することができる。
よって、1501と接着させたい部品1503が前面側にある場合でも、1501に空いた穴1502(例えば螺子穴)の位置を自動で決定することができる。また識別表示することができる。
また、上述した実施形態においては、図4のステップS403で表示されるメインダイアログ1610において、ラジオボタン1612の選択を受け付けている状態で、「輪郭要求」ボタン1613の押下の操作を受け付けることで、CADソフトで開いているファイル(3次元モデル)を重なり判定の処理の対象とする指定を受け付けるものとしたが、ユーザ操作により任意の3次元モデルを重なり判定の処理の対象とする指定してもよい。
具体的には、メインダイアログ1610のラジオボタン1611の選択を受け付け、「参照」ボタンの押下を受け付けることでPC100の外部メモリに記憶されている又はサーバ200等のPC100が通信・参照可能な記憶装置に記憶されている3次元モデルのファイル一覧を表示する。
当該ファイル一覧から選択された3次元モデルのファイル名及び格納場所をRAM203に保持し、「輪郭要求」ボタン1613の押下を受け付けることで、選択された3次元モデルのファイル名及び格納場所をCADソフトに送信して展開するよう指示する。
CADソフトは当該指示に応じてファイルを展開する。また、重なり判定ツールは、ステップS404に処理を移行し、当該指示に応じて展開されたファイルの3次元モデルの輪郭をCADソフトに要求する。輪郭要求の方法の詳細はステップS404の説明で上述したため説明は割愛する。
また、背面の部品を打ち出す対象である穴(図7の740の穴)の軸方向において、穴から所定距離離れた位置を打ち出し用部品の位置として決定してもよい。穴の軸方向はCADソフトに問い合わせて、穴ごとに取得するものとする。
また、上面から下面に貫通している穴を抽出して、当該貫通している穴の輪郭をCADソフトに要求して取得し、重なり判定の処理対象としてオブジェクト情報710に記憶するようにしてもよい。背面側にある部品を打ち出すためには、手前の部品の背面側に向けて(例えば上面から下面に向けて)穴が貫通している必要があるためである。
以上説明したように、本発明によれば、部品の穴と別の部品が重なる位置を容易に特定可能な仕組みを提供することができる。
また、部品の背面側にある当該部品の穴を介して打ち抜き可能な別の部品の有無に伴う決定を容易に行うことができる仕組みを提供することができる。
尚、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
具体的には、PC100とサーバ200が一体であってもよいし、CDAソフトと重なり判定ツールが一体であり、上述した実施形態の各フローチャートの処理を実行するようにしてもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
尚、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。
即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。