(実施の形態1)
以下に、本発明を実施するための形態について図面を参照して詳細に説明する。
図1は、この発明の実施の形態1に係る寸法生成装置1の構成例を示すブロック図である。寸法生成装置1は、3次元モデルに対して、1つ又は複数の要素を選択して、これらの要素と関連づける寸法を生成する装置である。3次元モデルは、例えば、3D-CAD装置により生成され、対象物の3次元形状、位置及び姿勢を3次元表示したモデルである。寸法生成装置1は、3D-CAD装置が作成した3次元モデルに対して寸法を生成して付加する装置でもよく、あるいは、寸法生成機能を有する3D-CAD装置の一部分であってもよい。
寸法生成装置1は、3次元モデルのデータが保存されている記憶部110と、3次元モデルの1つ又は複数の要素に関連づける寸法を生成する処理を実行する演算部120と、オペレータが情報を入力する入力部130と、寸法を含む3次元モデルの情報を出力する出力部140と、を備える。
記憶部110に記憶されている3次元モデルのデータは、対象物の3次元形状、位置及び姿勢を示すものであり、3次元モデルに含まれる各要素に対応づけられている。3次元モデルに含まれる要素は、例えば、頂点、稜線、面、円筒中心軸である。また、記憶部110は、演算部120が実行するプログラムも格納している。
演算部120は、記憶部110に格納されているプログラムを実行する演算処理装置であり、例えば、CPU(Central Processing Unit)である。演算部120は、プログラムを実行することにより、寸法生成の基準となる座標系を決定する基準座標系決定部121と、生成する寸法が関連づけられるモデル要素を検出するモデル要素検出部122と、検出したモデル要素に対する寸法を生成するか否かを判定する生成寸法判定部123と、生成すると判定した寸法を生成し、3次元モデルに対して寸法を付加した情報を出力する寸法生成部124として機能する。
基準座標系決定部121は、オペレータの入力部130への入力に基づいて、3次元の基準座標系を決定し、基準座標系の各座標軸の方向の寸法を生成する際に基準となる基準要素を決定する。本実施の形態では、互いに直交するX軸、Y軸、Z軸を有する直交座標系を決定する。また、基準座標系決定部121は、決定した基準座標系及び基準要素の識別情報を生成寸法判定部123に出力する。
モデル要素検出部122は、記憶部110に記憶されている3次元モデルから要素を順次検出する。例えば、モデル要素検出部122は、3次元モデルの全ての面を検出し、番号を割り当てた後に、番号順に面及び各面に含まれる稜線、頂点の少なくとも一部を含む要素の形状、位置及び姿勢を検出して、生成寸法判定部123に出力する。
生成寸法判定部123は、基準座標系決定部121が決定した基準座標系及び基準要素と、モデル要素検出部122が検出した要素の形状、位置又は姿勢と、に基づいて、各要素と関連づける寸法の生成の要否を判定する。例えば、モデル要素検出部122が検出した要素が、寸法生成の基準となる基準要素自身又はその一部でなく、基準座標系の座標軸のいずれかと直交し、かつ、同じ寸法が生成されてない場合に、寸法の生成は必要であると判定する。そして、生成する寸法に関連づける他の要素を判定する。一方、モデル要素検出部122が検出した要素が、寸法生成の基準となる基準要素自身又はその一部であるか、基準座標系のいずれの座標軸とも直交しないか、又は、既に同じ寸法が生成されている場合には寸法の生成は必要ないと判定する。
寸法生成部124は、生成寸法判定部123が寸法生成の必要があると判定した要素に対して寸法、及び、当該寸法に関連づける要素を示す寸法要素情報を生成し、記憶部110に記憶する。また、寸法生成部124は、寸法を3次元モデルに付加する処理を行い、寸法を付加した3次元モデルのデータ又は寸法要素情報を出力部140に出力する。
入力部130は、情報を入力する任意のデバイスであり、例えば、キーボート又はマウス、タッチパネルを含むポインティングデバイスである。入力部130には、演算部120の処理に必要な情報がオペレータにより入力される。例えば、基準座標系及び各座標軸の基準要素を決定する際に必要となる3つの互いに直交する要素をオペレータが選択して入力部130に対して入力する。入力部130に入力された情報は演算部120の基準座標系決定部121に出力される。
出力部140は、画像又は文字情報を表示するディスプレイを含む。出力部140は、寸法を付加した3次元モデルをディスプレイに表示させる。また、出力部140は、寸法及びその寸法に関連づけられた寸法要素情報を配列した表をディスプレイに表示してもよい。
以上のように構成された寸法生成装置1の動作について、図2に示すフローチャートを用いて説明する。図2は、寸法生成処理を示すフローチャートである。なお、寸法生成処理を開始する時点で、寸法を生成する対象の3次元モデルのデータが記憶部110に記憶されている。
まず、演算部120のモデル要素検出部122が、3次元モデルのすべての面に対して、番号を割り当てる(ステップS201)。このとき割り当てた面の番号の最大値をnとする。本実施の形態では、番号を割り当てた面が全て平面である場合について説明する。
次に、オペレータが、寸法生成の基準となる3つの直交する要素を、3次元モデルの要素の中から選択して入力部130に入力したときに、その入力に基づいて、基準座標系決定部121が互いに直交する基準座標系及び各座標軸方向の基準要素を決定する(ステップS202)。
ステップS202の基準座標系決定処理について、図3のフローチャートを用いて詳細に説明する。まず、オペレータは、3次元モデル上で1つの直交座標系を想定して、その各座標軸に直交する3つの要素を選択し、入力部130に入力する。選択可能な要素は、各座標軸に直交する平面、直線の稜線、円筒中心軸である。このオペレータの入力に基づいて、基準座標系決定部121は、基準座標系を決定する(ステップS301)。基準座標系は予め設定しておいた直交座標系から選択してもよく、又は、演算部120が新規に直交座標系を作成してもよい。
次に、基準座標系決定部121は、ステップS301で決定した基準座標系のX軸方向の寸法を生成する際の基準となる基準要素を決定する(ステップS302)。基準要素はX軸に直交する要素であり、例えばX軸に直交する平面、直線の稜線又は円筒中心軸である。ここで、基準座標系決定部121は、予め定めた優先順位に従って基準要素を決定してもよく、又は、オペレータに基準要素の選択入力を促し、オペレータの入力に基づいて決定してもよい。
同様に、基準座標系決定部121は、Y軸方向の寸法を生成する際の基準となる基準要素を決定し(ステップS303)、Z軸方向の寸法を生成する際の基準となる基準要素を決定して(ステップS304)、基準座標系決定処理を終了する。
本実施の形態では、X軸方向の基準要素が平面である基準要素面Exであり、Y軸方向の基準要素が平面である基準要素面Eyであり、Z軸方向の基準要素が平面である基準要素面Ezである場合について説明する。
図2のフローチャートにおいて、ステップS202の基準座標系決定処理の後に、変数Pに0を代入する(ステップS203)。ここで、Pは0以上の整数である。次に、変数Pに1を加算する(ステップS204)。その後、生成寸法判定部123は、番号Pの面が、ステップS202にて基準要素面として指定された面か否かを判定する(ステップS205)。以下、番号Pの面をEPと表す。
ステップS205において、番号Pの面EPが基準要素面である場合にはS207に進む。番号Pの面EPが基準要素面でない場合には、平面寸法生成処理を実行する(ステップS206)。平面寸法生成処理が終了した後、変数Pの値が、面の番号の最大値nより小さいか否かを判定する(ステップS207)。変数Pがnより小さい場合(ステップS207:Yes)、まだ処理していない面があるためS204へ戻る。変数Pがn以上である場合(ステップS207:No)、番号を付したすべての面に対してステップS205,S206の処理を実行したため、本フローの処理を終了する。
ステップS206で実行した平面寸法生成処理について詳細に説明する。図4は平面寸法生成処理を示したフローチャートである。
まず、生成寸法判定部123は、番号Pの面EPが基準座標系のX軸、Y軸、Z軸のいずれかに直交するか否か判定する(ステップS401)。いずれの軸とも直交しない場合は(ステップS401:No)ステップS403に進む。
面EPがX軸、Y軸、Z軸のいずれかに直交する場合(ステップS401:Yes)、EPに直交する軸を軸A、直交する軸Aの基準要素面をEaとする(ステップS402)。つまり、軸AはX軸、Y軸、Z軸のうちEPに直交する軸であり、EaはEx,Ey,Ezのうち、軸Aの基準要素面である。
生成寸法判定部123は、既に生成した寸法の中に、EaからEPまでの軸Aの方向の直線距離と同一である寸法があるか否かを判定する(ステップS404)。同一距離の寸法がない場合(ステップS404:No)、寸法生成部124が、基準要素面Eaと番号Pの面EPに関連づける軸Aの方向の直線距離の寸法を生成し(ステップS405)、本フローの処理を終了する。
生成寸法判定部123は、同一距離の生成済の寸法がある場合に(ステップS404:Yes)、その寸法Dtと関連づけられた要素の集合EtにEPを追加する(ステップS406)。次に、要素の集合Etの中にEPの面を構成する稜線又は頂点が含まれているか否かを判定する(ステップS407)。含まれていない場合は(ステップS407:No)、本フローの処理を終了する。含まれている場合(ステップS407:Yes)、当該稜線又は頂点を寸法Dtと関連づけられた要素の集合Etから除外して(ステップS408)、本フローの処理を終了する。これにより、集合EtにEPを追加した後に、EPの構成要素である稜線又は頂点を除外するため、関連づけの重複を回避することができる。
ステップS401において、番号Pの面EPが基準座標系のX軸、Y軸、Z軸のいずれの軸とも直交しない場合は(ステップS401:No)、EPの面の構成要素である稜線の寸法を生成する稜線寸法生成処理を実行した後に(ステップS403)、本フローの処理を終了する。
ステップS403で実行する稜線寸法生成処理について詳細に説明する。図5は稜線寸法生成処理を示したフローチャートである。
まず、モデル要素検出部122が、EPの面を構成する1つ又は複数の稜線に1から順に番号を割り当てる(ステップS501)。割り当てた番号の最大値をmとする。以下、番号Pの面EPを構成する番号Qの稜線をLPQと表す。次に、変数Qに0を代入する(ステップS502)。次に、変数Qに1を加算する(ステップS503)。
次に、生成寸法判定部123は、稜線LPQがX軸、Y軸、Z軸のいずれか2つの軸に直交するか否かを判定する(ステップS504)。直交しない場合は(ステップS504:No)ステップS505に進む。稜線LPQがX軸、Y軸、Z軸のいずれか2つの軸に直交する場合は(ステップS504:Yes)、直交する2つの軸を軸Awとし、軸Awの基準要素面をEawとする(ステップS506)。ここで、wは0以上の整数である。つまり、軸AwはX軸、Y軸、Z軸のうち稜線LPQに直交する2つの軸であり、EawはEx,Ey,Ezのうち、稜線LPQに直交する2つの軸Awそれぞれの基準要素面である。
次に、変数wに0を代入し(ステップS507)、変数wに1を加算する(ステップS508)。そして、そのときの変数wについて、稜線LPQに直交する軸Awの方向の稜線LPQの寸法を生成する直交稜線寸法生成処理を実行する(ステップS509)。その後、変数wの値が2より小さい場合(ステップS510:Yes)、軸A2方向の寸法が未処理であるためステップS508に戻る。変数wが2以上の場合(ステップS510:No)、ステップS514に進む。
ステップS504において、稜線LPQがX軸、Y軸、Z軸のいずれか2つの軸に直交しないが(ステップS504:No)、稜線LPQがX軸、Y軸、Z軸のいずれか1つの軸に直交する場合には(ステップS505:Yes)、直交する1つの軸を軸Awとし、軸Awの基準要素面をEawとする(ステップS511)。ここで、wは1である。つまり、軸AwはX軸、Y軸、Z軸のうち稜線LPQに直交する1つの軸であり、EawはEx,Ey,Ezのうち、稜線LPQに直交する1つの軸Awの基準要素面である。
次に、稜線LPQに直交する軸Awの方向の稜線LPQの寸法を生成する直交稜線寸法生成処理を実行する(ステップS512)。その後、ステップS513に進む。また、ステップS505において、稜線LPQがX軸、Y軸、Z軸のいずれとも直交しない場合に(ステップS505:No)、ステップS513に進む。ステップS513において、稜線LPQをの始点及び終点である頂点と基準要素面との間の寸法を生成する頂点寸法生成処理を実行する(ステップS513)。
次のステップS514において、変数Qがmより小さいか否かを判定する。mより小さい場合は(ステップS514:Yes)、まだ寸法生成処理を実行していない稜線があるため、ステップS503に戻る。変数Qがm以上の場合(ステップS514:No)、面EPを構成する稜線すべてについて寸法生成処理が完了しているため本フローの処理を終了する。
図5のフローチャートにおいて、ステップS509及びS512で実行する直交稜線寸法生成処理、並びにステップS513で実行する頂点寸法生成処理について、図6、7のフローチャートを用いて詳細に説明する。図6は、直交稜線寸法生成処理を示すフローチャートであり、図7は、頂点寸法生成処理を示すフローチャートである。
図6に示す直交稜線寸法生成処理において、まず、生成寸法判定部123が、Q番目の稜線LPQに直交する軸Awの基準要素面Eawの構成要素に、稜線LPQが含まれているか否かを判定する(ステップS601)。稜線LPQが基準要素面Eawの構成要素に含まれている場合には(ステップS601:Yes)、寸法生成の必要がないため、本フローの処理を終了する。
稜線LPQが基準要素面Eawの構成要素でない場合には(ステップS601:No)、既に生成した寸法の中で、基準要素面Eawから稜線LPQまでの軸Aw方向の直線距離と同一である寸法があるか否かを生成寸法判定部123が判定する(ステップS602)。同一距離の生成済の寸法がない場合(ステップS602:No)、寸法生成部124が、基準要素面Eawと稜線LPQに関連づけられた軸Aw方向の直線寸法を生成し(ステップS603)、本フローの処理を終了する。
基準要素面Eawから稜線LPQまでの軸Aw方向の直線距離と同一である寸法が1つ又は複数ある場合(ステップS602:Yes)、その寸法をDt、その寸法に関連づいた要素の集合をEtとしたとき、生成寸法判定部123は集合Etの中にLPQ自身が含まれているかを判定する(ステップS604)。集合Etの中にLPQ自身が含まれている場合は(ステップS604:Yes)、本フローの処理を終了する。
生成寸法判定部123は、集合Etの中にLPQ自身が含まれておらず(ステップS604:No)、かつ、集合Etの中に、LPQを構成要素として有する面が含まれているか否かを判定する(ステップS605)。含まれる場合(ステップS605:Yes)、本フローの処理を終了する。
集合Etの中に、LPQを構成要素としてもつ面が含まれていない場合は(ステップS605:No)、寸法Dtと関連づけられた要素の集合EtにLPQを追加で関連づける(ステップS606)。そして、集合Etの中に、LPQの始点又は終点である頂点が含まれている場合(ステップS607:Yes)、対象の頂点を寸法Dtと関連づけられた要素の集合Etから除外して(ステップS608)、本フローの処理を終了する。これにより、集合EtにLPQを追加した後に、LPQの構成要素である始点又は終点を除外するため、関連づけの重複を回避することができる。集合Etの中に、LPQの始点又は終点である頂点が含まれていない場合(ステップS607:No)はそのまま処理を終了する。
図7に示す頂点寸法生成処理において、まず、稜線LPQの始点と終点の頂点をそれぞれOPQ1、OPQ2とする(ステップS701)。次に、変数U及びVに0を代入する(ステップS702)。次に、変数Uに1を加算し(ステップS703)、変数Vに1を加算する(ステップS704)。
次に、変数Vが1のとき、軸AをX軸とし軸Aの基準要素面EaをExとする。変数Vが2のとき、軸AをY軸とし軸Aの基準要素面EaをEyとする。変数Vが3のとき、軸AをZ軸とし軸Aの基準要素面EaをEzとする(ステップS705)。
次に、生成寸法判定部123が、変数Uに対する頂点OPQUがEaの構成要素であるか判定し、構成要素である場合は(ステップS706:Yes)、頂点寸法を生成せずにステップS712に進む。一方、頂点OPQUがEaの構成要素でない場合は(ステップS706:No)、既に生成した寸法の中で、基準要素面Eaから頂点OPQUまでの軸A方向の直線距離と同一の寸法があるか否かを判定する(ステップS707)。
同一距離の寸法がない場合(ステップS707:No)、寸法生成部124が基準要素面Ea及び頂点OPQUに関連づける軸A方向の直線寸法を新規に生成する(ステップS708)。ステップS707において、同一距離の生成済の寸法があると判定した場合は(ステップS707:Yes)、ステップS709に進む。
同一距離の生成済みの寸法をDtとし、その寸法に関連づけられた要素の集合をEtとしたとき、集合Etの中にOPQU自身が含まれている場合は(ステップS709:Yes)、ステップS712に進む。一方、集合Etの中にOPQUが含まれていないときは(ステップS709:No)、生成寸法判定部123が、寸法Dtと関連づけられた要素の集合Etの中に、OPQUを構成要素として有する面又は稜線が含まれているか否かを判定する(ステップS710)。
集合Etの中に、OPQUを構成要素としてもつ面又は稜線が含まれていない場合は(ステップS710:No)、Dtと関連づけられた要素の集合EtにOPQUを追加する(ステップS711)。集合Etの中に、OPQUを構成要素としてもつ面又は稜線が含まれている場合は(ステップS710:Yes)、そのままステップS712に進む。
ステップS712において、変数Vの値が3より小さい場合は(ステップS712:Yes)、まだ処理していない軸方向があるため、S704に戻る。変数Vが3以上の場合(ステップS712:No)、X軸、Y軸、Z軸の3つの軸方向すべてに対して寸法生成の処理を完了しているためS713に進む。
ステップS713において、変数Uの値が2より小さい場合は(ステップS713:Yes)、始点又は終点の頂点について未処理であるためS703に戻る。変数Uが2以上の場合、始点及び終点の頂点に対して寸法生成の処理が完了しているため本フローの処理を終了する。
このように、図2から図7のフローチャートに示した寸法生成処理を実行することにより、3次元モデルの全ての面及び各面の構成要素である稜線、頂点の基準要素面に対する寸法を、重複なく要素と関連づけて生成することができる。
寸法生成部124は、生成した寸法を付加した3次元モデルデータ及びその寸法に関連づけられた寸法要素情報を記憶部110に記憶するとともに出力部140に出力する。出力部140は、寸法を付加した3次元モデルをディスプレイに表示させる。また、出力部140は、寸法及びその寸法に関連づけられた寸法要素情報を配列した表をディスプレイに表示してもよい。
以上説明したように本実施の形態に係る寸法生成装置1は、モデル要素検出部122が、3次元モデルの要素である面及び各面に含まれる稜線、頂点を検出し、生成寸法判定部123が、検出した各要素の寸法の生成の要否を判定する。生成寸法判定部123は、検出した各要素が寸法生成の基準となる基準要素面又はその構成要素でなく、各要素が基準座標系の座標軸に直交し、かつ、同一距離の寸法が生成されてない場合に、寸法の生成が必要であると判定する。そして、生成寸法判定部123が寸法生成の必要があると判定した要素について、寸法生成部124が寸法を生成し、3次元モデルに付加する処理を行うとした。これにより、3次元モデルに対して、重複なく寸法を生成し、3次元モデルの各要素と寸法とを正しく関連づけることが可能となる。
(実施の形態2)
以下に、この発明の実施の形態2について図面を参照して詳細に説明する。寸法生成装置1の構成は実施の形態1と同様であるが、演算部120が実行する寸法生成処理が実施の形態1と一部異なる。本実施の形態に係る寸法生成処理について詳細に説明する。
図8は、本実施の形態に係る寸法生成処理のフローチャートである。実施の形態1と同様に、寸法生成処理を開始する時点では、寸法を生成する対象の3次元モデルのデータが記憶部110に記憶されている状態である。
図8に示す寸法生成処理において、ステップS801~S805の処理は、図2に示す実施の形態1に係る寸法生成処理のステップS201~S205と同様である。なお、ステップS801において、モデル要素検出部122が番号を割り当てる面は、平面、円筒面及びその他の曲面を含む。
ステップS805において、番号Pの面EPが基準要素面である場合にはS811に進む。生成寸法判定部123は、番号Pの面EPが基準要素面でない場合に(ステップS805:No)、面EPが平面であるか判定し(ステップS806)、EPが平面である場合は(ステップS806:Yes)、平面寸法生成処理を実行する(ステップS807)。平面寸法生成処理は、実施の形態1と同様の図4に示す処理である。
生成寸法判定部123は、EPが平面でなかった場合に(ステップS806:No)、EPが円筒面又は円筒面の一部であるか否かを判定する(ステップS808)。EPが円筒面又は円筒面の一部であった場合は(ステップS808:Yes)、円筒面に係る寸法を生成する円筒面寸法生成処理を実行する(ステップS809)。
生成寸法判定部123は、EPが円筒面又は円筒面の一部でなかった場合に(ステップS808:No)、EPが寸法自動生成の対象外の面であると判定し、記憶部110に面の番号Pを記憶する(ステップ810)。その後、変数Pが面の番号の最大値nより小さい場合は(ステップS811:Yes)、まだ未処理の面があるため、ステップS804に戻る。一方、変数Pがn以上である場合は、全ての面について寸法生成の処理が完了しているため、ステップS812に進む。
ステップS812において、寸法生成部124が、寸法を自動生成できなかった要素を画面上に表示させ(ステップS812)、オペレータに手動での寸法生成を促し、オペレータの入力に基づいて、自動生成不可箇所の寸法を生成して出力部140に出力する。その後、本フローの処理を終了する。
ステップS809の、円筒面寸法生成処理の詳細について説明する。図9は円筒面寸法生成処理を示すフローチャートである。
まず、生成寸法判定部123が、EPの円筒面の角度が180°以上であるか否かを判定する(ステップS901)。寸法生成部124は、180°以上の場合(ステップS901:Yes)、円筒面EPの直径寸法を生成し(ステップS902)、180°より小さい場合(ステップS901:No)、円筒面EPの半径寸法を生成する(ステップS903)。
次に、生成寸法判定部123が、円筒面EPを有する円筒の中心軸CPがX軸、Y軸、Z軸のいずれか2つの軸に直交するか否かを判定し(ステップS904)、直交しない場合は(ステップS904:No)ステップS905に進む。中心軸CPがX軸、Y軸、Z軸のいずれか2つの軸に直交する場合は(ステップS904:Yes)、直交する2つの軸を軸Awとし、軸Awの基準要素面をEawとする(ステップS906)。ここで、wは0以上の整数である。つまり、軸AwはX軸、Y軸、Z軸のうち中心軸CPに直交する2つの軸であり、EawはEx,Ey,Ezのうち、中心軸CPに直交する2つの軸Awそれぞれの基準要素面である。
次に、変数wに0を代入し(ステップS907)、変数wに1を加算する(ステップS908)。そして、そのときの変数wについて、中心軸CPに直交する軸Awの方向の中心軸CPの寸法を生成する中心軸寸法生成処理を実行する(ステップS909)。その後、変数wの値が2より小さい場合(ステップS910:Yes)、軸A2方向の寸法が未処理であるためステップS908に戻る。変数wが2以上の場合(ステップS910:No)、本フローの処理を終了する。
ステップS904において、中心軸CPがX軸、Y軸、Z軸のいずれか2つの軸に直交しないが(ステップS904:No)、中心軸CPがX軸、Y軸、Z軸のいずれか1つの軸に直交する場合には(ステップS905:Yes)、直交する1つの軸を軸Awとし、軸Awの基準要素面をEawとする(ステップS911)。ここで、wは1である。つまり、軸AwはX軸、Y軸、Z軸のうち中心軸CPに直交する1つの軸であり、EawはEx,Ey,Ezのうち、中心軸CPに直交する1つの軸Awの基準要素面である。
次に、中心軸CPに直交する軸Awの方向の中心軸CPの寸法を生成する中心軸寸法生成処理を実行する(ステップS912)。その後、ステップS913に進む。また、ステップS905において、中心軸CPがX軸、Y軸、Z軸のいずれとも直交しない場合に(ステップS905:No)、ステップS913に進む。ステップS913において、中心軸CPの始点及び終点である頂点と基準要素面との間の寸法を生成する頂点寸法生成処理を実行し(ステップS913)、その後、本フローの処理を終了する。
図9のフローチャートにおいて、ステップS909及びS912で実行する中心軸寸法生成処理、並びにステップS913で実行する頂点寸法生成処理について、図10、11のフローチャートを用いて詳細に説明する。図10は、中心軸寸法生成処理を示すフローチャートであり、図11は、頂点寸法生成処理を示すフローチャートである。
図10に示す中心軸寸法生成処理において、まず、生成寸法判定部123は、円筒の中心軸CPに直交する軸Awの基準要素面Eawの構成要素に、中心軸CPが含まれているか否かを判定する(ステップS1001)。中心軸CPが基準要素面Eawの構成要素に含まれている場合には(ステップS1001:Yes)、寸法生成の必要がないため、本フローの処理を終了する。
生成寸法判定部123は、中心軸CPが基準要素面Eawの構成要素でない場合には(ステップS1001:No)、既に生成した寸法の中に、基準要素面Eawから中心軸CPまでの軸Aw方向の直線距離と同一である寸法があるか否かを判定する(ステップS1002)。同一距離の生成済の寸法がない場合(ステップS1002:No)、寸法生成部124が中心軸CPに関連づける軸Aw方向の直線寸法を生成し(ステップS1003)、本フローの処理を終了する。
基準要素面Eawから中心軸CPまでの軸Aw方向の直線距離と同一である寸法が1つ又は複数ある場合(ステップS1002:Yes)、その寸法Dtと関連づけられた要素の集合Etに中心軸CPを追加で関連づけて(ステップS1004)、本フローの処理を終了する。
図11に示す頂点寸法生成処理において、まず、円筒の中心軸CPの始点と終点の頂点をそれぞれOPQ1、OPQ2とする(ステップS1101)。次に、変数U及びVに0を代入する(ステップS1102)。次に、変数Uに1を加算し(ステップS1103)、変数Vに1を加算する(ステップS1104)。
次に、変数Vが1のとき、軸AをX軸とし軸Aの基準要素面EaをExとする。変数Vが2のとき、軸AをY軸とし軸Aの基準要素面EaをEyとする。変数Vが3のとき、軸AをZ軸とし軸Aの基準要素面EaをEzとする(ステップS1105)。
次に、生成寸法判定部123が、変数Uに対する頂点OPQUがEaの構成要素であるか否かを判定し、構成要素である場合は(ステップS1106:Yes)、頂点寸法を生成せずにステップS1111に進む。一方、頂点OPQUがEaの構成要素でない場合は(ステップS1106:No)、既に生成した寸法の中で、基準要素面Eaから頂点OPQUまでの軸A方向の直線距離と同一の寸法があるか否かを判定する(ステップS1107)。
同一距離の寸法がない場合(ステップS1107:No)、寸法生成部124が基準要素面Ea及び頂点OPQUに関連づけられた軸A方向の直線寸法を新規に生成する(ステップS1110)。ステップS1107において、同一距離の生成済の寸法があると判定した場合は(ステップS1107:Yes)、Dtと関連づけられた要素の集合EtにOPQUを追加する(ステップS1109)。
その後、ステップS1111において、変数Vの値が3より小さい場合は(ステップS1111:Yes)、まだ処理していない軸方向があるため、ステップS1104に戻る。変数Vが3以上の場合は(ステップS1111:No)、3つのX軸、Y軸、Z軸の軸方向すべてに対して寸法生成の処理を完了しているためステップS1112に進む。
ステップS1112において、変数Uの値が2より小さい場合は(ステップS1112:Yes)、始点又は終点の頂点について未処理であるとしてステップS1103に戻る。変数Uが2以上の場合、始点及び終点の頂点に対して寸法の処理が完了しているため本フローの処理を終了する。
このように、図8から図11のフローチャートに示した寸法生成処理を実行することにより、3次元モデルの円筒面及びその他の曲面を含む全ての面及びそれを構成する稜線、円筒の中心軸、頂点の基準要素面に対する寸法を、重複なく関連づけて生成することができる。
寸法生成部124は、生成した寸法を付加した3次元モデルデータ及びその寸法に関連づけられた寸法要素情報を記憶部110に記憶するとともに出力部140に出力する。出力部140は、寸法を付加した3次元モデルをディスプレイに表示させる。また、出力部140は、寸法及びその寸法に関連づけられた寸法要素情報を配列した表をディスプレイに表示してもよい。
以上説明したように本実施の形態に係る寸法生成処理は、モデル要素検出部122が、3次元モデルの要素である円筒面を含む面及び各面に含まれる稜線、頂点を検出し、生成寸法判定部123が、面が円筒面であった場合に、円筒の中心軸及び中心軸を構成する頂点の基準要素面に対する寸法の要否を判定する。そして、生成寸法判定部123が寸法生成の必要があると判定した要素について、寸法生成部124が寸法を生成し、3次元モデルに付加する処理を行うとした。これにより、3次元モデルに円筒面が含まれる場合にも、重複なく寸法を生成し、円筒の中心軸及び頂点を含む各要素と寸法とを正しく関連づけることが可能となる。
(実施例)
本実施の形態に係る寸法生成装置1が実行する寸法生成の実施例について、図12に示す3次元モデルを例として用いて説明する。図12は3次元モデルの例を示す図である。この3次元モデルは円筒面を含むため、図8に示す実施の形態2に係る寸法生成処理のフローチャートに沿って説明する。
まず、モデル要素検出部122がモデルの面に番号を割り当てる(ステップS801)。底面1201、正面1202、右側面1203、背面1204、左側面1205、円筒面1206、曲面1207、第1上面1208、第2上面1209にそれぞれ1から9までの番号を割り当てる。最大値nは9である。ここでは、図13に示すように割り当てられている。図13は、3次元モデルの面と、番号と、基準要素面との対応関係を示す表である。
次に、オペレータの選択入力に基づいて基準座標系決定部121が基準座標系および基準要素面を決定する(ステップS802)。その詳細なフローは図3に示した通りである。基準座標系として、図12に示した座標系1210に決定する(ステップS301)。X軸方向の基準要素面Exを左側面1205に決定する(ステップS302)。Y軸方向の基準要素面Eyを底面1201に決定する(ステップS303)。Z軸方向の基準要素面Ezを正面1202に決定する(ステップS304)。
ステップS803、S804により変数Pが1となるため、面EPは底面1201である。底面1201は基準要素面Eyであるため(ステップS805:Yes)、ステップS811に進む。
ステップS811において、P<nであるため(ステップS811:Yes)、ステップS804に戻り、P=2となる(ステップS804)。このとき面EPは正面1202である。正面1202は基準要素面Ezであるため(ステップS805:Yes)、ステップS811に進む。
ステップS811において、P<nであるため(ステップS811:Yes)、ステップS804に戻り、P=3となる(ステップS804)。このとき面EPは右側面1203である。右側面1203は基準要素面でないため(ステップS805:No)、ステップS806に進む。右側面1203は平面であるため(ステップS806:Yes)、平面寸法生成処理を実行する(ステップS807)。
図4に示す平面寸法生成処理において、右側面1203はX軸、Y軸、Z軸のいずれの軸とも直交しないため(ステップS401:No)、稜線寸法生成処理を実行する(ステップS403)。
図5に示す稜線寸法生成処理において、モデル要素検出部122がEPである右側面1203に含まれる稜線に番号を割り当てる(ステップS501)。稜線の割り当ては、図14、図15に示すように、第1稜線1401、第2稜線1402、第3稜線1403、第4稜線1404にそれぞれ1から4までの番号を割り当てる。最大値mは4である。図14は3次元モデルの例を示す図であり、図15は右側面1203の稜線と、番号との対応関係を示す表である。
ステップS502、S503により変数Qが1であるとき、稜線LPQは第1稜線1401である。稜線LPQはX軸とY軸の2つの軸に直交するため(ステップS504:Yes)、ステップS506に進み、軸A1がX軸となり、Ea1がExとなり、軸A2がY軸となり、Ea2がEyとなる(ステップS506)。ステップS507、S508によりw=1となった後に、軸A1の方向であるX軸方向における稜線LPQの寸法について、直交稜線寸法生成処理を実行する(ステップS509)。
図6に示す直交稜線寸法生成処理において、稜線LPQが基準要素面Eawの構成要素であるか否かを判定する(ステップS601)。稜線LPQである第1稜線1401は、基準要素面Eaw(Ex)である左側面1205の構成要素でないため、ステップS602に進む。
既に生成した寸法の中で、基準要素面Eawである左側面1205から稜線LPQである第1稜線1401までのX軸方向の直線距離と同一の寸法があるか否かを判定するが(ステップS602)、まだ生成済みの寸法はないため(ステップS602:No)、寸法生成部124が軸AwであるX軸方向の直線寸法を新規に生成する(ステップS603)。図16は、3次元モデルにステップS603で生成した寸法1601を付加した図であり、図17は、寸法1601と関連づけられた要素を表した表である。
その後、図5のステップS510に進み、w<2であるため(ステップS510:Yes)、ステップS508に戻り、w=2となった後に、A2であるY軸方向における稜線LPQの寸法について、直交稜線寸法生成処理を実行する(ステップS509)。
図6に示す直交稜線寸法生成処理において、稜線LPQである第1稜線1401は、基準要素面Eaw(Ey)である底面1201の構成要素であるため(ステップS601:Yes)、図5のフローに戻り、ステップS510に進む。w=2であり(ステップS510:No)、Q<mであるため、ステップS503に戻り、Qは2となる。
Q=2のとき、稜線LPQは第2稜線1402である。稜線LPQはZ軸とのみ直交するため(ステップS504:No,ステップS505:Yes)、ステップS511において軸A1がZ軸となり、Ea1がEzとなる。軸A1の方向であるZ軸方向における稜線LPQの寸法について、直交稜線寸法生成処理を実行する(ステップS512)。
図6に示す直交稜線寸法生成処理において、稜線LPQである第2稜線1402は、基準要素面Eaw(Ez)である正面1202の構成要素であるため(ステップS601:Yes)、図5のフローに戻り、頂点寸法生成処理を実行する(ステップS513)。
図7に示す頂点寸法生成処理において、稜線LPQである第2稜線1402の始点及び終点の頂点をそれぞれOPQ1、OPQ2とする(ステップS701)。図18は3次元モデルの頂点の位置を示した図である。ここでは、OPQ1が第1頂点1801であり、OPQ2が第3頂点1803である。そして、変数U,Vをそれぞれ変数U=1、V=1に設定する(ステップS702,S703,S704)。
V=1であるため、軸AはX軸であり、EaはExである(ステップS705)。OPQ1である第1頂点1801は、Exである左側面1205の構成要素でない(ステップS706:No)。よって、既に生成した寸法の中に、ExからOPQ1までのX軸方向の直線距離と同一距離の寸法があるか否かを判定する(ステップS707)。ここで、図16及び図17に示す寸法1601が同一距離の寸法に該当する(ステップS707:Yes)。ここで、寸法1601をDtとし、その寸法に関連づけられた要素の集合をEtとする。
このDtに関連づけられた要素の集合EtにOPQ1自身が含まれていないため(ステップS709:No)、OPQ1が構成要素である面又は稜線があるか否かを判定する(ステップS710)。ここで、OPQ1である第1頂点1801を含む面は、底面1201、正面1202、右側面1203の3つである。また、OPQ1である第1頂点1801を含む稜線は、図18に示すように、第1稜線1401、第2稜線1402、第5稜線1805の3つである。図17に示すように、寸法1601に関連づけられた要素の集合Etは第1稜線1401を含んでいるため(ステップS710:Yes)、ステップS712に進む。V<3であるため(ステップS712:Yes)、ステップS704に戻る。
V=2、V=3のときも同様に処理を進めるが、いずれの場合もステップS706において、OPQ1である第1頂点1801がEyである底面1201、Ezである正面1202の構成要素であるため(ステップS706:Yes)、寸法生成(ステップS708)やEtへの追加(ステップS711)の処理は行われない。
その後、U<2であるため(ステップS713:Yes)U=2となり(ステップS703)、OPQ2である第3頂点1803について、OPQ1のときと同様に頂点寸法生成処理を行う。V=2のときは、ステップS707において、OPQ2である第3頂点1803からEyである底面1201までの直線距離と同一距離のY軸方向の寸法がないため、Y軸方向の寸法1902を新規に生成する(ステップS708)。V=3のときは、ステップS706において、OPQ2である第3頂点1803は、Ezである正面1202の構成要素であるため(ステップS706:Yes)、寸法生成(ステップS708)やEtへの追加(ステップS711)の処理は行われない。
頂点寸法生成処理が終了後は、図5のステップS514に進み、Q<4であるため(ステップS514:Yes)、ステップS503に戻る。その後、同様の処理を実行し、第3稜線1403及び第4稜線1404に対する稜線寸法生成処理を実行する。
図5の稜線寸法生成処理の終了により、図4の平面寸法生成処理も終了する。つまり、図8のステップS807が実行済みとなる。この時点で生成されている寸法を図19、図20に示す。図19は、3次元モデルに寸法1601,1901,1902,1903を付加した図であり、図20は、各寸法と関連づけられた要素を表した表である。
ここで、各寸法に関連づけられた要素は、基準要素面及び基準要素面以外の要素が過不足なく選択されている。例えば、上述の図7のステップS708において、OPQ2である第3頂点1803からEyである底面1201までの直線距離を寸法1902として生成したが、その後の第4稜線1404に係る図6の直交稜線寸法生成処理において、第4稜線1404の始点又は終点である第3頂点1803をEtから除外しているため(ステップS608)、重複なく寸法が生成され、寸法に関連づけられた要素を正確に選択することができる。
図8のステップS807の後、P<9であるため(ステップS811:Yes)、ステップS804に戻る。その後、P=4~9の場合について、同様に図8の処理を実行する。
P=7のとき番号7の面である曲面1207は、平面でも円筒面でもないため(ステップS806:No、ステップS808:No)、自動生成の対象外として記憶部110に記憶されている(ステップS810)。
P=9のときのステップS811の段階で、生成されている寸法を図21及び図22に示す。図21は、3次元モデルに寸法を追加した図であり、図22は、各寸法と関連づけられた要素を表した表である。
P=9のときのステップS811において、Pはn以上になるため(ステップS811:No)、ステップS812に進む。ステップS812において、ステップS810で記憶された、出力部140が寸法の自動生成不可箇所をディスプレイに表示し、オペレータに対して手動での寸法生成を促す。寸法の自動生成不可箇所の表示例を図23に示す。本実施例では、曲面1207がハイライトされ、自動生成の対象外であることが示されている。ステップS812の処理が終了後、図8に示す寸法生成処理を終了する。
このように、実施の形態1,2に係る寸法生成装置1は、関連づける要素である面、稜線、円筒の中心軸、頂点について順次、寸法生成の要否を判定して寸法を生成している。このため、加工プログラム又は測定プログラムの自動生成に寸法を用いる場合に、対象要素が抜け落ちることを回避することができる。例えば、図12,14,21のモデルにおいて、寸法1902に関連づけられた要素が第4稜線1404のみになることはなく、第4稜線1404を含む第2上面1209が寸法1902に正確に関連づけられる。これにより、加工又は測定の対象から第2上面1209が抜け落ちることを回避することができる。
また、基準要素面である底面1201からの寸法が同じである第1上面1208及び第2上面1209の両方を、寸法1902と正確に関連づけることができる。これにより、加工又は測定の対象から第1上面1208と第2上面1209のいずれか一方が抜け落ちることを回避することができる。一方、寸法の表示については、第1上面1208及び第2上面1209に関連する寸法1902を1つのみ表示しているため、重複して見づらくなることもない。
このように本発明は、3次元モデルの寸法生成において、3次元モデルの面、稜線及び頂点の少なくとも一部を含む要素の形状、位置又は姿勢を検出し、検出した要素の形状、位置又は姿勢に基づいて、要素の各々と関連づける寸法の生成の要否、及び、寸法に関連づける他の要素を判定し、生成を要すると判定した寸法、及び、当該寸法と関連づける要素を示す寸法要素情報を生成することとした。これにより、3次元モデルに対して、重複なく寸法を生成し、寸法とその対象となる3次元モデルの要素とを正しく関連づけることが可能となる。
なお、本発明は、上記実施の形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
例えば、上記実施の形態において、面に関して平面及び円筒面の寸法の生成処理を実行し、その他の面については自動生成しないとしたが、平面、円筒面以外の面についても寸法を自動生成してもよい。例えば、断面が楕円である楕円筒又は円錐を含む面について自動生成する処理を追加してもよい。
また、上記実施例において、3次元モデルに寸法を付加した例を図21に示したが、オペレータが画面に表示された寸法をポインタで選択したときに、寸法と関連づけられた要素をハイライトで表示してもよい。これにより、寸法の対象の要素を視覚的に捉えることが容易になる。
また、上記実施の形態に示したハードウェア構成及びフローチャートは一例であり、任意に変更及び修正が可能である。記憶部110及び演算部120で実現する各機能は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
例えば、上記実施の形態の動作を実行するためのプログラムを、コンピュータが読み取り可能なCD-ROM(Compact Disc Read-Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto Optical Disc)、メモリカード等の記録媒体に格納して配布し、プログラムをコンピュータにインストールすることにより、各機能を実現することができるコンピュータを構成してもよい。そして、各機能をOS(Operating System)とアプリケーションとの分担、又はOSとアプリケーションとの協同により実現する場合には、OS以外の部分のみを記録媒体に格納してもよい。