(57)【特許請求の範囲】
【請求項１】
検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断する形状判断部と、
前記三次元モデルの中から、前記形状判断部により判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出する抽出部と、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成する作成部と、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出部が抽出した図形が穴を形成する図形か突起を形成する図形かを判断する判断部と、
を有することを特徴とする設計支援装置。
【請求項２】
前記形状判断部が、前記平面に穴の入り口または突起のベースを形成する稜線が形成する図形が円であると判断した場合、前記作成部は、前記抽出部が抽出した図形が円筒か円錐かを判断し、円筒である場合は、前記円の中心から前記平面に設けられた稜線に対向する対向稜線が形成する円の中心への前記比較用ベクトルを作成することを特徴とする請求項１記載の設計支援装置。
【請求項３】
前記抽出部は、前記三次元モデルの中から、前記対向稜線の形状に一致する、前記平面に設けられた稜線以外の稜線を有する図形または平面を抽出することを特徴とする請求項２記載の設計支援装置。
【請求項４】
前記判断部は、前記抽出部が前記平面に設けられた稜線以外の稜線を有する図形を抽出した場合、抽出した前記図形が穴を形成する図形か突起を形成する図形かを判断することを特徴とする請求項３記載の設計支援装置。
【請求項５】
前記形状判断部が、前記平面に穴の入り口または突起のベースを形成する稜線が形成する図形が円であると判断した場合、前記作成部は、前記抽出部が抽出した図形が円筒か円錐かを判断し、円錐である場合は、前記円の中心から前記円錐の頂点への前記比較用ベクトルを作成することを特徴とする請求項１記載の設計支援装置。
【請求項６】
前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度が０°である場合は、前記抽出部が抽出した図形が突起を形成する面を含む図形であると判断することを特徴とする請求項１ないし５のいずれかに記載の設計支援装置。
【請求項７】
前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度が１８０°である場合は、前記抽出部が抽出した図形が穴を形成する面を含む図形であると判断することを特徴とする請求項１ないし６のいずれかに記載の設計支援装置。
【請求項８】
前記形状判断部が、前記平面に設けられた稜線が形成する図形が円弧と直線を含むと判断した場合、前記抽出部は、前記円弧および前記直線それぞれに一致する稜線を有する図形を抽出することを特徴とする請求項１記載の設計支援装置。
【請求項９】
前記作成部は、前記抽出部が抽出した図形で共通する稜線を抽出し、抽出した前記稜線を、前記図形が形成する穴または突起の深さ方向の稜線であると特定することを特徴とする請求項８記載の設計支援装置。
【請求項１０】
前記抽出部は、当該抽出部が抽出した図形の、前記平面と対向する稜線の形状に一致する対向平面を抽出し、
前記作成部は、前記平面に設けられた稜線の任意の点から、前記対向平面に設けられた稜線の任意の点に向かう前記比較用ベクトルを作成することを特徴とする請求項８または９に記載の設計支援装置。
【請求項１１】
前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度の絶対値が９０°未満である場合は、前記抽出部が抽出した図形が突起を形成する面を含む図形であると判断することを特徴とする請求項８ないし１０のいずれかに記載の設計支援装置。
【請求項１２】
前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度の絶対値が９０°以上である場合は、前記抽出部が抽出した図形が穴を形成する面を含む図形であると判断することを特徴とする請求項８ないし１０のいずれかに記載の設計支援装置。
【請求項１３】
前記三次元モデルの平面を形成する稜線を、前記稜線が形成する図形の形状に応じて複数のグループに分別する分別部と、
前記複数のグループのうち、前記稜線で囲まれる図形の面積が最大以外のグループを、前記平面で穴または突起を形成する稜線のグループであると判断するグループ判断部と、
をさらに有することを特徴とする請求項１ないし１２のいずれかに記載の設計支援装置。
【請求項１４】
コンピュータが、
検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断し、
前記三次元モデルの中から、判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出し、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成し、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出した図形が穴を形成する図形か突起を形成する図形かを判断する、
ことを特徴とする設計支援方法。
【請求項１５】
コンピュータに、
検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断し、
前記三次元モデルの中から、判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出し、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成し、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出した図形が穴を形成する図形か突起を形成する図形かを判断する、
処理を実行させることを特徴とする設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は設計支援装置、設計支援方法および設計支援プログラムに関する。
【背景技術】
【０００２】
三次元ＣＡＤ（Computer Aided Design）において、部品の穴や突起を表現した円筒形状に対して、穴の種類（ボルト穴等）を示す穴属性情報を付加することが知られている。
三次元ＣＡＤにおいて作成された製品を作成する際等に、穴属性情報が付加された穴形状情報を検索し、検索された穴形状情報を、穴属性情報が有する穴形状の径および深さと穴属性との組合せにより分類する方法が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３４１９１６号公報
【特許文献２】特開２００９−１３４３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、他のＣＡＤシステムで使用する際に穴属性情報が付加された穴形状情報を変換すると、穴属性情報がうまく変換できずに消失したり、穴形状情報と穴属性情報の整合がとれなくなったりする場合がある。この場合、穴の属性が特定できなくなるという問題があった。
【０００５】
また、穴属性情報の消失を抑制するためＣＡＤシステム毎に穴属性情報を作成すると、メインテナンス費用がかかるという問題があった。
本発明はこのような点に鑑みてなされたものであり、三次元モデルが有する図形が穴か突起かを特定する設計支援装置、設計支援方法および設計支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、開示の設計支援装置が提供される。この設計支援装置は、形状判断部と、抽出部と、作成部と、判断部とを有している。
形状判断部は、検証対象の三次元モデルが有する平面に設けられ、平面に穴の入り口または突起のベースを形成する稜線の形状を判断する。
【０００７】
抽出部は、三次元モデルの中から、形状判断部により判断された稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出する。
作成部は、抽出した図形の種別に応じて平面の法線ベクトルの方向と比較する比較用ベクトルを作成する。
【０００８】
判断部は、法線ベクトルと比較用ベクトルの角度に応じて、抽出部が抽出した図形が穴を形成する図形か突起を形成する図形かを判断する。
【発明の効果】
【０００９】
三次元モデルが有する図形が穴か突起かを特定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態の設計支援装置を示す図である。
【図２】第２の実施の形態の設計支援装置のハードウェアの一構成例を示す図である。
【図３】第２の実施の形態の設計支援装置の機能を示すブロック図である。
【図４】３Ｄ面分類部の処理を説明する図である。
【図５】円形関連面を説明する図である。
【図６】円形関連面情報フォーマットを説明する図である。
【図７】円形関連面情報フォーマットを説明する図である。
【図８】平面情報フォーマットおよびその他の面情報フォーマットを説明する図である。
【図９】グループの分類を説明する図である。
【図１０】平面詳細情報フォーマットを説明する図である。
【図１１】穴／突起形成稜線グループ単位情報を説明する図である。
【図１２】平面詳細情報フォーマットを説明する図である。
【図１３】穴／突起面抽出用円稜線および穴／突起面抽出用基準平面を説明する図である。
【図１４】円形関連面情報フォーマットの円形関連面が、穴形状を形成するのか、突起形状を形成するのかを判断する処理を説明する図である。
【図１５】処理１−１〜処理１−３の繰り返しを説明する図である。
【図１６】穴／突起面グループ情報フォーマットを説明する図である。
【図１７】初期稜線ＩＤリストの判断方法を説明する図である。
【図１８】初期稜線ＩＤリストの判断方法を説明する図である。
【図１９】四角形状の稜線に関する穴／突起形成稜線グループ単位情報を説明する図である。
【図２０】稜線のＩＤリスト内の円弧稜線を持つ円形関連面の抽出を説明する図である。
【図２１】穴／突起面抽出用基準平面と、抽出した平面の角度チェックを説明する図である。
【図２２】抽出した面間で重複する稜線の抽出、および、重複する稜線の長さチェックを説明する図である。
【図２３】穴／突起面抽出用基準平面とは反対側の面の穴／突起用稜線の抽出を説明する図である。
【図２４】穴／突起面抽出用基準平面とは反対側の平面の抽出を説明する図である。
【図２５】穴または突起を判断する方法を説明する図である。
【図２６】穴／突起面グループ情報フォーマットを説明する図である。
【図２７】穴形状別面構成データベース格納部に格納されている情報を示す図である。
【図２８】穴／突起情報表示部が出力した穴数情報の一例を示す図である。
【図２９】設計支援装置の全体処理を示すフローチャートである。
【図３０】３Ｄ面分類部の処理を示すフローチャートである。
【図３１】グループ分類部の領域面積の取得処理を示すフローチャートである。
【図３２】平面内稜線情報分類部の処理を示すフローチャートである。
【図３３】平面内稜線情報分類部の処理を示すフローチャートである。
【図３４】Ａ処理を示すフローチャートである。
【図３５】Ａ処理を示すフローチャートである。
【図３６】平面情報フォーマットを穴／突起形成稜線グループに変換する処理を示すフローチャートである。
【図３７】穴／突起を形成する面情報を抽出する処理を示すフローチャートである。
【図３８】Ｂ処理を示すフローチャートである。
【図３９】Ｂ処理を示すフローチャートである。
【図４０】Ｃ処理を示すフローチャートである。
【図４１】Ｄ処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態の設計支援装置を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態の設計支援装置を示す図である。
【００１２】
第１の実施の形態の設計支援装置（コンピュータ）１は、三次元モデル格納部１ａと、形状判断部１ｂと、抽出部１ｃと、作成部１ｄと、判断部１ｅと、グループ情報作成部１ｆと、表示部１ｇとを有している。
【００１３】
三次元モデル格納部１ａには、穴または突起（以下、「穴／突起」と表記）の情報を抽出する対象の三次元モデルが格納されている。なお、図１では、設計支援装置１が三次元モデル格納部１ａを有する場合を図示しているが、三次元モデル格納部１ａは、設計支援装置１の外部に設けられていてもよい。
【００１４】
形状判断部１ｂは、三次元モデルが有する平面に設けられ、平面に穴の入り口または突起のベースを形成する稜線の形状を判断する。図１では、三次元モデルが有する平面２を図示している。形状判断部１ｂは、平面２に設けられた稜線２ａの形状を円であると判断する。
【００１５】
抽出部１ｃは、三次元モデルの中から、形状判断部１ｂにより判断された稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出する。図１では、円を形成する稜線２ａに一致する稜線３ａを有する円筒３を抽出する。
【００１６】
作成部１ｄは、抽出した図形の種別に応じて平面の法線ベクトルＶ１の方向と比較する比較用ベクトルを作成する。図１では、抽出した図形が円筒３であるため、稜線３ａが形成する円の中心から稜線３ａに対向する稜線３ｂが形成する円の中心への比較用ベクトルＶ２を作成する。なお、円筒以外の比較用ベクトルの作成方法は、第２の実施の形態にて詳述する。
【００１７】
判断部１ｅは、法線ベクトルＶ１と比較用ベクトルＶ２の角度に応じて、抽出部１ｃが抽出した図形が穴を形成する図形か突起を形成する図形かを判断する。図１では、法線ベクトルＶ１と比較用ベクトルＶ２の角度は１８０°（ベクトルの方向が反対）であるため、判断部１ｅは、円筒３が、穴を形成する図形であると判断する。なお、図示していないが、法線ベクトルＶ１と比較用ベクトルの角度が０°（ベクトルの方向が一致）である場合、判断部１ｅは、抽出部１ｃが抽出した図形が、突起を形成する図形であると判断する。
【００１８】
設計支援装置１によれば、三次元モデルが有する図形の形状に基づいて穴情報を抽出しているため、他のＣＡＤシステムから変換した三次元モデルに予め付加された穴／突起情報の有無に関わらず、穴／突起の種別（および数）を特定することができる。
【００１９】
また、抽出部１ｃは、抽出した図形が円筒３であるため、円筒３の稜線３ａと反対側の稜線３ｂに一致する稜線を有する他の図形または平面が存在すると判断する。このため、抽出部１ｃは、稜線３ｂの形状に一致する、平面２に設けられた稜線３ａ以外の稜線を有する図形または平面を抽出する。図１では、稜線３ｂの形状に一致する稜線４ａを有するテーパ状円筒４を抽出する。作成部１ｄおよび判断部１ｅは、テーパ状円筒４に対し、円筒３と同様の処理を行う。すなわち、作成部１ｄは、稜線４ａが形成する円の中心から稜線４ａに対向する稜線４ｂが形成する円の中心への比較用ベクトルＶ３を作成する。
【００２０】
判断部１ｅは、法線ベクトルＶ１と比較用ベクトルＶ３の角度に応じて、抽出部１ｃが抽出した図形が穴を形成する図形か突起を形成する図形かを判断する。図１では、法線ベクトルＶ１と比較用ベクトルＶ３の角度は１８０°（ベクトルの方向が反対）であるため、判断部１ｅは、テーパ状円筒４が、穴を形成する図形であると判断する。
【００２１】
また、抽出部１ｃは、今回抽出した図形がテーパ状円筒４であるため、テーパ状円筒４の稜線４ａと反対側の稜線４ｂに一致する稜線を有する他の図形または平面が存在すると判断する。このため、抽出部１ｃは、稜線４ｂの形状に一致する、稜線４ａ以外の稜線を有する図形または平面を抽出する。図１では、稜線４ｂの形状に一致する稜線５ａを有する平面５を抽出する。
【００２２】
グループ情報作成部１ｆは、１つの穴または突起を形成する図形および平面をグループ化したグループ情報を作成する。図１では、グループ情報の一例であるグループ情報テーブル１ｆ１を示している。グループ情報テーブル１ｆ１には、円筒の情報、テーパ状円筒の情報および平面情報の欄が設けられている。円筒の情報の欄には、円筒３の側面を識別する「面のＩＤ」、円筒であることを識別する「円筒」および円筒３が穴であることを示す「穴」が設定されている。テーパ状円筒の情報の欄には、テーパ状円筒４の側面を識別する「面のＩＤ」、テーパ状円筒であることを識別する「テーパ状円筒」およびテーパ状円筒４が穴であることを示す「穴」が設定されている。平面情報の欄には、平面２を識別する「上面のＩＤ」および平面５を識別する「下面のＩＤ」が設定されている。
【００２３】
表示部１ｇは、グループ情報作成部１ｆが作成したグループ情報に基づいて、三次元モデルが有する穴や突起の数、および穴や突起の種類を示す情報を設計支援装置１が接続されたモニタ（図示せず）に表示する。三次元モデルが有する穴や突起の数、および穴や突起の種類を示す情報を表示することにより、設計者は、三次元モデルが有する穴や突起の数、および穴や突起の種類を示す情報を容易に把握することができる。従って、設計者は、目視により穴や突起の数を把握したり、目視により穴や突起の種類を把握したりする工数を削減することができる。また、設計者は、目視により穴や突起の数を数えたり、目視により穴や突起の種類を把握したりすることにより生ずる数え間違いや、把握ミスを抑制することができる。
【００２４】
なお、設計支援装置１は、グループ情報テーブル１ｆ１をモニタに表示するようにしてもよい。グループ情報テーブル１ｆ１を表示することにより、設計者は、穴を形成する円筒や、円錐の種別を容易に把握することができる。
【００２５】
なお、形状判断部１ｂ、抽出部１ｃ、作成部１ｄ、判断部１ｅ、グループ情報作成部１ｆおよび表示部１ｇは、設計支援装置１が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。また、三次元モデル格納部１ａは、設計支援装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）等が備える情報記憶領域により実現することができる。
【００２６】
以下、実施の形態の設計支援装置をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態の設計支援装置のハードウェアの一構成例を示す図である。設計支援装置１０は、ＣＰＵ２０１によって装置全体が制御されている。ＣＰＵ２０１には、バス２０８を介してＲＡＭ２０２と複数の周辺機器が接続されている。
【００２７】
ＲＡＭ２０２は、設計支援装置１０の主記憶装置として使用される。ＲＡＭ２０２には、ＣＰＵ２０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、ＣＰＵ２０１による処理に使用する各種情報が格納される。
【００２８】
バス２０８に接続されている周辺機器としては、ハードディスクドライブ２０３、グラフィック処理装置２０４、入力インタフェース２０５、ドライブ装置２０６、および通信インタフェース２０７がある。
【００２９】
ハードディスクドライブ２０３は、内蔵したディスクに対して、磁気的に情報の書き込みおよび読み出しを行う。ハードディスクドライブ２０３は、設計支援装置１０の二次記憶装置として使用される。ハードディスクドライブ２０３には、ＯＳのプログラム、アプリケーションプログラム、および各種情報が格納される。なお、二次記憶装置としては、フラッシュメモリ等の半導体記憶装置を使用することもできる。
【００３０】
グラフィック処理装置２０４には、モニタ２０４ａが接続されている。グラフィック処理装置２０４は、ＣＰＵ２０１からの命令に従って、画像をモニタ２０４ａの画面に表示させる。モニタ２０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた液晶表示装置等が挙げられる。
【００３１】
入力インタフェース２０５には、キーボード２０５ａとマウス２０５ｂとが接続されている。入力インタフェース２０５は、キーボード２０５ａやマウス２０５ｂから送られてくる信号をＣＰＵ２０１に送信する。なお、マウス２０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボール等が挙げられる。
【００３２】
ドライブ装置２０６は、例えば、光の反射によって読み取り可能なように情報が記録された光ディスクや、ＵＳＢ（Universal Serial Bus）メモリ等の持ち運び可能な記録媒体に記録された情報の読み取りを行う。例えば、ドライブ装置２０６が光学ドライブ装置である場合、レーザ光等を利用して、光ディスク２００に記録された情報の読み取りを行う。光ディスク２００には、Ｂｌｕ−ｒａｙ（登録商標）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。
【００３３】
通信インタフェース２０７は、ネットワーク２０９に接続されている。通信インタフェース２０７は、ネットワーク２０９を介して、他のコンピュータまたは通信機器との間で情報の送受信を行う。
【００３４】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
このようなハードウェア構成の設計支援装置１０内には、以下のような機能が設けられる。
【００３５】
図３は、第２の実施の形態の設計支援装置の機能を示すブロック図である。
設計支援装置１０は、３Ｄモデル格納部１１と、３Ｄ面分類部１２と、３Ｄ面情報格納部１３と、平面内稜線情報分類部１４と、平面詳細情報格納部１５と、穴／突起情報作成部１６と、穴／突起面グループ情報格納部１７と、穴／突起特定部１８と、穴／突起情報表示部１９とを有している。
【００３６】
３Ｄモデル格納部１１は、穴／突起情報を作成する３Ｄモデルを記憶する。
３Ｄ面分類部１２は、３Ｄモデルを構成する面情報を取得する。そして、３Ｄ面分類部１２は取得した面情報を３Ｄ面情報格納部１３に格納する。
【００３７】
平面内稜線情報分類部１４は、平面内の稜線情報を分類する。そして、平面内稜線情報分類部１４は、分類した平面内の稜線情報を平面詳細情報格納部１５に格納する。
穴／突起情報作成部１６は、１つの穴または突起を形成する１つ、または複数の面を互いに関連づけてグループ化した穴／突起面グループ情報フォーマットを作成する。そして、穴／突起情報作成部１６は、作成した穴／突起面グループ情報フォーマットを穴／突起面グループ情報格納部１７に格納する。
【００３８】
穴／突起特定部１８は、穴／突起の種類を特定する。
穴／突起情報表示部１９は、穴／突起特定部１８が特定した穴／突起情報を出力する。
以下、各機能について詳しく説明する。
【００３９】
３Ｄ面分類部１２は、３Ｄ面抽出部１２ａと、面形状分類部１２ｂと、面情報作成部１２ｃとを有している。
図４は、３Ｄ面分類部の処理を説明する図である。
【００４０】
図４には、３Ｄモデル格納部１１に記憶されている３Ｄモデル１１ａを図示している。
３Ｄ面抽出部１２ａは、３Ｄモデル１１ａを形成する全ての面を抽出する。面の抽出は、例えば従来公知の３ＤＣＡＤの機能を使用する。図４に示す３Ｄモデル１１ａには、穴または突起を形成する複数の面が含まれている。例えば、円平面１１１ａ、円柱面１１２ａ、ドーナツ状平面１１３ａおよび、円柱面１１４ａにより、平面１１５ａ、１１６ａ間を貫通する１つの穴が形成されている。また、円平面１１７ａ、円柱面１１８ａ、円平面１１９ａにより、平面１２０ａ、１１６ａ間を貫通する１つの穴が形成されている。また、３Ｄモデル１１ａには、円環面１２１ａ等も含まれている。
【００４１】
面形状分類部１２ｂは、３Ｄ面抽出部１２ａが３Ｄモデルから抽出した、穴または突起を形成する面を、円形関連面、一般平面、その他の面の情報に分類する。
図５は、円形関連面を説明する図である。なお、面形状分類部１２ｂは、形状判断部の一例である。
【００４２】
面形状分類部１２ｂは、円柱面、円弧面、円錐面Ａ、円錐面Ｂ、円環面、円平面、ドーナツ状平面を円形関連面と定義する。それぞれの面の判定方法は以下による。
面形状分類部１２ｂは、図５（ａ）に示すように、表面が円柱形状で、２つの円稜線（円形稜線）２２ａ、２２ｂにより形成されている面２１を円柱面であると判定する。面２１の表面が円柱形状であることは、３ＤＣＡＤの機能により判別することができる。
【００４３】
面形状分類部１２ｂは、図５（ｂ）に示すように、表面が円柱形状で、２つの円弧稜線２３ａ、２３ｂおよび、２つの直線稜線２３ｃ、２３ｄにより形成されており、円弧稜線２３ａ、２３ｂと直線稜線２３ｃ、２３ｄの交点での、互いの稜線間の角度が９０度である面２３を円弧面と判定する。
【００４４】
面形状分類部１２ｂは、図５（ｃ）に示すように、表面が円錐形状で、２つの円稜線２５、２６により形成されている面２４を円錐面Ａと判定する。なお、面２４の表面が円錐形状であることは３ＤＣＡＤの機能により判別することができる。
【００４５】
面形状分類部１２ｂは、図５（ｄ）に示すように、表面が円錐形状で、１つの円稜線２８により形成されている面２７を円錐面Ｂと判定する。
面形状分類部１２ｂは、図５（ｅ）に示すように、表面が円環面形状で、２つの円稜線２９ａ、２９ｂにより形成されている面２９を円環面と判定する。なお、面２９の表面が円環面形状であることは３ＤＣＡＤの機能により判別することができる。
【００４６】
面形状分類部１２ｂは、図５（ｆ）に示すように、表面が平面で、１つの円稜線３０ａにより形成されている面３０を円平面と判定する。なお、面３０の表面が平面形状であることは３ＤＣＡＤの機能により判別することができる。
【００４７】
面形状分類部１２ｂは、図５（ｇ）に示すように、表面が平面で、中心座標が同じ２つの円稜線３１ａ、３１ｂにより形成されている面３１をドーナツ状平面と判定する。なお、面を形成する稜線の抽出、および、稜線種類の判別は、３ＤＣＡＤの機能を使用する。
【００４８】
また、面形状分類部１２ｂは、円形関連面以外の平面を一般平面と定義する。なお、３Ｄモデルから抽出した面が平面か否かの判別は、３ＤＣＡＤの機能を使用する。
また、面形状分類部１２ｂは、円形関連面、および、一般平面以外の面を、その他の面と定義する。
【００４９】
面情報作成部１２ｃは、面形状分類部１２ｂが円形関連面と判定した面に関する円形関連面情報フォーマットを作成する。また、面情報作成部１２ｃは、面形状分類部１２ｂが一般平面と判定した面に関する平面情報フォーマットを作成する。さらに面情報作成部１２ｃは、面形状分類部１２ｂがその他の面と判定した面に関するその他の面情報フォーマットを作成する。
【００５０】
図６および図７は、円形関連面情報フォーマットを説明する図である。
図６および図７に示す各円形関連面情報フォーマットは、円形関連面の情報を設定するフォーマットである。図６（ａ）に示す円形関連面情報フォーマット４１は、円柱面の情報を設定するフォーマットである。円形関連面情報フォーマット４１には、円柱面のＩＤ（識別情報）、面の種類、円稜線＃１のＩＤ、円稜線＃２のＩＤ、円柱の直径および円柱の高さが設定される。図６（ａ）に示す円柱面の場合、円形関連面情報フォーマット４１には、面２１のＩＤ、円柱面、円稜線２２ａのＩＤ、円稜線２２ｂのＩＤ、円稜線２２ａ、２２ｂが形成する円柱の直径および円稜線２２ａ、２２ｂそれぞれが形成する円の中心間の直線距離が設定される。
【００５１】
図６（ｂ）に示す円形関連面情報フォーマット４２は、円錐面Ａの情報を設定するフォーマットである。円形関連面情報フォーマット４２には、面のＩＤ、面の種類、円稜線＃１のＩＤ、円稜線＃２のＩＤ、円稜線＃１の直径、円稜線＃２の直径および円柱の高さが設定される。図６（ｂ）に示す円錐面の場合、面２４のＩＤ、円錐面Ａ、円稜線２５のＩＤ、円稜線２６のＩＤ、円稜線２５が形成する円の直径、円稜線２６が形成する円の直径および円稜線２５、２６それぞれが形成する円の中心間の直線距離が設定される。
【００５２】
図６（ｃ）に示す円形関連面情報フォーマット４３は、円弧面の情報を設定するフォーマットである。円形関連面情報フォーマット４３には、面のＩＤ、面の種類、円弧稜線＃１のＩＤ、円弧稜線＃２のＩＤ、直線稜線＃１のＩＤ、直線稜線＃２のＩＤ、円弧面の直径および円弧面の高さが設定される。図６（ｃ）に示す円弧面の場合、面２３のＩＤ、円弧面、円弧稜線２３ａのＩＤ、円弧稜線２３ｂのＩＤ、直線稜線２３ｃのＩＤ、直線稜線２３ｄのＩＤ、円弧面２３の直径および直線稜線２３ｃまたは直線稜線２３ｄの長さが設定される。
【００５３】
図６（ｄ）に示す円形関連面情報フォーマット４４は、円錐面Ｂの情報を設定するフォーマットである。円形関連面情報フォーマット４４には、面のＩＤ、面の種類、円稜線＃１のＩＤ、頂点のＩＤ、円稜線＃１の直径、および円錐の高さが設定されている。図６（ｄ）に示す円錐面Ｂの場合、面２７のＩＤ、円錐面Ｂ、円稜線２８のＩＤ、頂点２７ａのＩＤ、円稜線２８が形成する円の直径、円稜線２８が形成する円の中心から頂点２７ａまでの直線距離が設定される。
【００５４】
図７（ａ）に示す円形関連面情報フォーマット４５は、円環面の情報を設定するフォーマットである。円形関連面情報フォーマット４５には、面のＩＤ、面の種類、円稜線＃１のＩＤ、円稜線＃２のＩＤ、円稜線＃１の直径、円稜線＃２の直径および円柱の高さが設定される。図７（ａ）に示す円環面の場合、面２９のＩＤ、円環面、円稜線２９ａのＩＤ、円稜線２９ｂのＩＤ、円稜線２９ａが形成する円の直径、円稜線２９ｂが形成する円の直径および円稜線２９ａ、２９ｂそれぞれが形成する円の中心間の直線距離が設定される。
【００５５】
図７（ｂ）に示す円形関連面情報フォーマット４６は、円平面の情報を設定するフォーマットである。円形関連面情報フォーマット４６には、面のＩＤ、面の種類、円稜線＃１のＩＤが設定されている。図７（ｂ）に示す円平面の場合、面３０のＩＤ、円平面、円稜線３０ａのＩＤが設定される。
【００５６】
図７（ｃ）に示す円形関連面情報フォーマット４７は、ドーナツ状平面の情報を設定するフォーマットである。円形関連面情報フォーマット４７には、面のＩＤ、面の種類、円稜線＃１のＩＤ、円稜線＃２のＩＤ、円稜線＃１の直径、および円稜線＃２の直径が設定される。図７（ｃ）に示すドーナツ状平面の場合、面３１のＩＤ、ドーナツ状平面、円稜線３１ａのＩＤ、円稜線３１ｂのＩＤ、円稜線３１ａが形成する円の直径、円稜線３１ｂが形成する円の直径が設定される。なお、円形関連面情報フォーマット４１〜４７に設定する情報は、３ＤＣＡＤの機能を使用することにより取得することができる。
【００５７】
図８は、平面情報フォーマットおよびその他の面情報フォーマットを説明する図である。
平面情報フォーマット４８は、面のＩＤと面を形成する稜線のＩＤを有している。図８（ａ）に示す平面の場合、面３２のＩＤ、稜線３３のＩＤ、稜線３４のＩＤ、稜線３５のＩＤ、稜線３６のＩＤ、稜線３７のＩＤ、稜線３８のＩＤ、稜線３９のＩＤが設定される。この際、直線の稜線には、直線稜線であることを識別する情報が付加される。
【００５８】
その他の面情報フォーマット４９は、面のＩＤを有している。図８（ｂ）に示す平面の場合、面４０のＩＤが設定される。
再び図３に戻って説明する。
【００５９】
３Ｄ面情報格納部１３は、円形関連面情報格納部１３ａと、平面情報格納部１３ｂと、その他の面情報格納部１３ｃとを有している。
面情報作成部１２ｃは、作成した円形関連面情報フォーマットを、円形関連面情報格納部１３ａに格納する。作成した平面情報フォーマットを、平面情報格納部１３ｂに格納する。作成したその他の面情報フォーマットを、その他の面情報格納部１３ｃに格納する。
【００６０】
平面内稜線情報分類部１４は、グループ分類部１４ａと、平面詳細情報作成部１４ｂとを有している。
グループ分類部１４ａは、平面情報格納部１３ｂに格納されている平面情報フォーマットに含まれる稜線のＩＤを、平面の外形を形成する稜線のグループ（外形形成稜線グループ）と、平面内で穴／突起形状を形成する稜線のグループ（穴／突起形成稜線グループ）に分類する。
【００６１】
図９は、グループの分類を説明する図である。
まず、グループ分類部１４ａは、平面情報フォーマットの平面内の稜線を複数のグループに分類する。具体的には、グループ分類部１４ａは、平面情報内の稜線の中から、端点（始点または終点）座標が同じ稜線を接続していくと、これらの稜線で囲まれた１つの領域が形成される。グループ分類部１４ａは、これらの稜線を１つのグループに分類する。
【００６２】
図９に示す平面５０は、平面情報フォーマットにより具現される平面の一例を示している。この平面５０において、稜線５１は、端点５５で稜線５２に接続されている。稜線５２は、端点５６で稜線５３に接続されている。稜線５３は、端点５７で稜線５４に接続されている。稜線５４は、端点５８で稜線５１に接続されている。これらの稜線５１〜５４で、囲まれた１つの領域が形成される。グループ分類部１４ａは、これらの稜線５１〜５４を１つのグループＧ１に分類する。
【００６３】
グループ分類部１４ａは、円稜線等に関しては、円稜線１つで囲まれた領域を形成しているため、円稜線それぞれを、１つのグループに分類する。図９では、稜線５９、６０、６１は円稜線であり、稜線５９、６０、６１で囲まれた１つの領域を形成している。このため、グループ分類部１４ａは、稜線５９、６０、６１それぞれをグループＧ２、Ｇ３、Ｇ４に分類する。
【００６４】
同様に他の稜線もグループ化すると、図９に示す平面５０は６個の稜線グループＧ１〜Ｇ６に分類される。
次に、グループ分類部１４ａは、分類された稜線グループで形成される領域の面積を取得する。そして、グループ分類部１４ａは、領域の面積が最大の稜線を外形形成稜線グループと判断する。また、グループ分類部１４ａは、外形形成稜線グループ以外の稜線グループを穴／突起形成稜線グループと判断する。図９に示す例では、グループ分類部１４ａは、グループＧ１を外形形成稜線グループと判断する。グループ分類部１４ａは、グループＧ１以外のグループＧ２〜Ｇ６を穴／突起形成稜線グループと判断する。
【００６５】
平面詳細情報作成部１４ｂは、グループ分類部１４ａが分類した稜線グループの情報を含む平面詳細情報フォーマットを作成する。
図１０は、平面詳細情報フォーマットを説明する図である。
【００６６】
平面詳細情報フォーマット７１には、平面のＩＤ、外形形成稜線グループのＩＤリスト、穴／突起形成稜線グループのリストの欄が設けられている。
平面のＩＤの欄には、平面を識別するＩＤが設定される。例えば、図９に示す平面５０であれば、平面５０のＩＤが設定される。外形形成稜線グループのＩＤリストの欄には、外形形成稜線グループを形成する稜線のＩＤおよび稜線の種別がリスト化されて設定される。例えば、図９に示す平面５０であれば、グループＧ１を形成する稜線５１〜５４のＩＤがリスト化されて設定される。また、稜線５１〜５４が直線稜線であることが設定される。穴／突起形成稜線グループのリストの欄には、穴／突起形成稜線グループを形成する稜線のＩＤおよび稜線の種別がリスト化されて設定される。例えば、図９に示す平面５０であれば、グループＧ２〜Ｇ６を形成する稜線のＩＤがリスト化されてそれぞれ設定される。また、グループＧ２〜Ｇ４が円稜線であり、グループＧ５、Ｇ６が直線稜線であることが設定される。
【００６７】
平面詳細情報作成部１４ｂは、変換した平面詳細情報フォーマット７１を、平面詳細情報格納部１５に格納する。平面内稜線情報分類部１４は、平面情報格納部１３ｂに格納されている全ての平面情報フォーマットについて、平面詳細情報フォーマットを作成し、平面詳細情報格納部１５に格納する。
【００６８】
再び図３に戻って説明する。
穴／突起情報作成部１６は、穴／突起形成稜線抽出部１６ａと、穴／突起形成稜線グループ単位情報格納部１６ｂと、外形のみ平面情報格納部１６ｃと、穴／突起面抽出部１６ｄとを有している。
【００６９】
穴／突起形成稜線抽出部１６ａは、平面詳細情報格納部１５に格納されている平面詳細情報フォーマットを、穴／突起形成稜線グループ単位の情報（以下、「穴／突起形成稜線グループ単位情報」と言う）に変換する。
【００７０】
図１１は、穴／突起形成稜線グループ単位情報を説明する図である。
図１１には、平面詳細情報フォーマット７１および穴／突起形成稜線抽出部１６ａが平面詳細情報フォーマット７１を変換した穴／突起形成稜線グループ単位情報７１ａ〜７１ｅを図示している。穴／突起形成稜線グループ単位情報７１ａには、穴／突起形成稜線グループを形成する稜線のＩＤのリストと、その稜線が含まれる平面のＩＤとが関連づけられている。例えば、図９に示す平面５０の平面詳細情報フォーマット７１を変換した穴／突起形成稜線グループ単位情報７１ａには、グループＧ２と平面５０のＩＤとが関連づけられている。穴／突起形成稜線グループ単位情報７１ｂには、グループＧ３と平面５０のＩＤとが関連づけられている。穴／突起形成稜線グループ単位情報７１ｃには、グループＧ４と平面５０のＩＤとが関連づけられている。穴／突起形成稜線グループ単位情報７１ｄには、グループＧ５と平面５０のＩＤとが関連づけられている。穴／突起形成稜線グループ単位情報７１ｅには、グループＧ６と平面５０のＩＤとが関連づけられている。
【００７１】
穴／突起形成稜線抽出部１６ａは、変換した穴／突起形成稜線グループ単位情報７１ａ〜７１ｅを、穴／突起形成稜線グループ単位情報格納部１６ｂに格納する。また、穴／突起形成稜線抽出部１６ａは、平面詳細情報格納部１５に格納されている平面詳細情報フォーマット７２、７３についても、それぞれ穴／突起形成稜線グループ単位情報に変換する。そして、穴／突起形成稜線抽出部１６ａは、変換した穴／突起形成稜線グループ単位情報を、穴／突起形成稜線グループ単位情報格納部１６ｂに格納する。
【００７２】
また、穴／突起形成稜線抽出部１６ａは、平面詳細情報格納部１５に格納されている平面詳細情報フォーマットに、穴／突起形成稜線グループのリストが存在しない場合、外形のみの平面詳細情報フォーマットと判断する。
【００７３】
図１２は、平面詳細情報フォーマットを説明する図である。
図１２に示す平面詳細情報フォーマット７４には、平面詳細情報フォーマット７１とは異なり、穴／突起形成稜線グループのリストが存在しない。この平面詳細情報フォーマット７４は、平面に穴または突起を形成する稜線が存在しないことを示している。穴／突起形成稜線抽出部１６ａは、穴／突起形成稜線グループのリストが存在しない平面詳細情報フォーマット７４を、外形のみの平面に関するフォーマットであると判断し、外形のみ平面情報格納部１６ｃに格納する。
【００７４】
穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起形成稜線グループ単位情報に含まれる稜線が形成する図形の形状に応じて、１つの穴／突起を形成する面の情報がグループ化された穴／突起面グループ情報フォーマットを作成する。そして、穴／突起面抽出部１６ｄは、作成した穴／突起面グループ情報フォーマットを、穴／突起面グループ情報格納部１７に格納する。なお、穴／突起面抽出部１６ｄは、抽出部、作成部および判断部の一例である。
【００７５】
以下、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起形成稜線グループ単位情報に円稜線が１つだけ含まれている場合の穴／突起面抽出部１６ｄの処理を「処理１」において説明する。また、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起形成稜線グループ単位情報に含まれる稜線が、複数の円弧、直線で形成されている場合の穴／突起面抽出部１６ｄの処理を「処理２」において説明する。
【００７６】
＜処理１＞
穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起形成稜線グループ単位情報に円稜線が１つだけ含まれている場合、以下の処理１−１〜処理１−３を実行する。以下、穴／突起形成稜線グループ単位情報に円稜線が１つだけ含まれている場合、この１つの円稜線を「穴／突起面抽出用円稜線」と言う。また、穴／突起面抽出用円稜線を含む平面を「穴／突起面抽出用基準平面」と言う。
【００７７】
図１３は、穴／突起面抽出用円稜線および穴／突起面抽出用基準平面を説明する図である。
図１３に示す穴／突起形成稜線グループ単位情報７１ａのグループ＃１に含まれる稜線のＩＤリストには、円を形成する稜線６４のＩＤのみが格納されているものとする。また、穴／突起形成稜線グループ単位情報７１ａの稜線が含まれる平面のＩＤには、平面６５のＩＤが格納されているものとする。穴／突起形成稜線グループ単位情報７１ａに円稜線が１つだけ含まれているので、穴／突起面抽出部１６ｄは、処理１を実行する。以下、稜線６４を、穴／突起面抽出用円稜線６４と言う。また、穴／突起面抽出用円稜線６４を含む平面６５が穴／突起面抽出用基準平面となる。以下、平面６５を穴／突起面抽出用基準平面６５と言う。
【００７８】
＜処理１−１＞
穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線６４のＩＤと同じ稜線のＩＤを含む円形関連面情報フォーマットを、円形関連面情報格納部１３ａから抽出する。
【００７９】
＜処理１−２＞
穴／突起面抽出部１６ｄは、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットにより具現される円形関連面が、穴形状を形成するのか、突起形状を形成するのかを判断する。この判断を行う際に、穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤと同じ稜線のＩＤを含む円形関連面情報フォーマットが、円柱面、円錐面Ａ、円環面または、円錐面Ｂのどのフォーマットであるかを判断する。具体的には、穴／突起面抽出部１６ｄは、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットに含まれる円稜線のＩＤの数が２つで、かつ、２つの円稜線中心座標が異なっている条件を満たすか否かを判断する。そして、条件を満たす場合、穴／突起面抽出部１６ｄは、抽出した円形関連面情報フォーマットは、円柱面、円錐面Ａまたは円環面のフォーマットであると判断する。他方、条件を満たさない場合、穴／突起面抽出部１６ｄは、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットに含まれる円稜線のＩＤの数が１つであるか否かを判断する。そして、条件を満たす場合、穴／突起面抽出部１６ｄは、抽出した円形関連面情報フォーマットは、円錐面Ｂのフォーマットであると判断する。
【００８０】
穴／突起面抽出用円稜線のＩＤと同じ稜線のＩＤを含む円形関連面情報フォーマットの円形関連面の種別の判断が終わると、穴／突起面抽出部１６ｄは、判断したフォーマットの円形関連面が、穴形状を形成するのか、突起形状を形成するのかを判断する。
【００８１】
円形関連面情報フォーマットが、円柱面、円錐面Ａまたは円環面のフォーマットであると判断した穴／突起面抽出部１６ｄは、円中心間ベクトルを作成する。この円中心間ベクトルは、円形関連面情報フォーマットに含まれる２つの円稜線のうち、穴／突起面抽出用円稜線の中心から、穴／突起面抽出用円稜線ではない稜線の中心に向かうベクトルである。そして、穴／突起面抽出部１６ｄは、作成した円中心間ベクトルと、穴／突起面抽出用基準平面の法線ベクトルの方向が一致するか否かを判断する。そして、穴／突起面抽出部１６ｄは、判断結果に基づいて、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットの円形関連面が、穴形状を形成するのか、突起形状を形成するのかを判断する。
【００８２】
また、抽出された円形関連面が円錐面Ｂであると判断した穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線の中心から円錐面Ｂの頂点にベクトルを作成する。そして、穴／突起面抽出部１６ｄは、作成したベクトルと、穴／突起面抽出用基準平面法線ベクトルの方向が一致するか否かを判断する。そして、穴／突起面抽出部１６ｄは、判断結果に基づいて、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットの円錐面Ｂが、穴形状を形成するのか、突起形状を形成するのかを判断する。
【００８３】
図１４は、円形関連面情報フォーマットの円形関連面が、穴形状を形成するのか、突起形状を形成するのかを判断する処理を説明する図である。
図１４（ａ）は、穴／突起面抽出部１６ｄが抽出した、穴／突起面抽出用円稜線６４と同じＩＤを持つ稜線を含む円形関連面情報フォーマット４１により具現される円柱面６６を示している。ここで、穴／突起面抽出用円稜線６４のＩＤと、円稜線６７ａのＩＤが一致するものとする。
【００８４】
穴／突起面抽出部１６ｄは、抽出した円形関連面情報フォーマット４１に含まれる円形関連面の円稜線のＩＤの数が２つで、かつ、２つの円稜線中心座標が異なっている条件を満たすか否かを判断すると、条件を満たしている。従って、穴／突起面抽出部１６ｄは、円稜線６７ａ、６７ｂのうち、穴／突起面抽出用円稜線６４の中心から、穴／突起面抽出用円稜線６４のＩＤに一致しない円稜線６７ｂの中心にベクトルＶ１１を作成する。そして、穴／突起面抽出部１６ｄは、作成したベクトルＶ１１と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１１と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致しないと判断する。次に、穴／突起面抽出部１６ｄは、作成したベクトルＶ１１と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の、逆方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１１と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の逆方向が一致すると判断する。従って、穴／突起面抽出部１６ｄは、円柱面６６は、穴形状を形成する面であると判断する。また、図示していないが、穴／突起面抽出部１６ｄは、作成したベクトルと、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致する場合、抽出した円形関連面情報フォーマットの円形関連面が、突起形状を形成すると判断する。なお、図１４（ａ）では、円柱面について説明したが、円錐面Ａ、円環面についても円柱面と同様の方法で判断することができる。
【００８５】
図１４（ｂ）は、穴／突起面抽出部１６ｄが抽出した、穴／突起面抽出用円稜線６４と同じＩＤを持つ稜線を含む円形関連面情報フォーマット４４により具現される円錐面６８（円錐面Ｂ）を示している。ここで、穴／突起面抽出用円稜線６４のＩＤと、円稜線６９のＩＤが一致するものとする。
【００８６】
穴／突起面抽出部１６ｄは、抽出した円形関連面情報フォーマットが円錐面Ｂである場合は、穴／突起面抽出用円稜線６４の中心から円錐面６８の頂点６８ａに作成したベクトルＶ１３と穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１３と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致すると判断する。従って、穴／突起面抽出部１６ｄは、円錐面６８は、突起形状を形成する面であると判断する。また、図示していないが、穴／突起面抽出部１６ｄは、作成したベクトルと、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の逆方向が一致する場合、円形関連面情報格納部１３ａから抽出した円形関連面情報フォーマットの円形関連面が、穴形状（止まり穴、ダボ等）を形成すると判断する。
【００８７】
＜処理１−３＞
穴／突起面抽出部１６ｄは、抽出した円形関連面情報フォーマットに含まれる円稜線のＩＤの数が２つの場合、（この円形関連面は、以後、旧円形関連面と言う）穴／突起面抽出部１６ｄは、旧円形関連面情報フォーマットの２つ円稜線のうち穴／突起面抽出用円稜線のＩＤに一致しない円稜線を、新たな穴／突起面抽出用円稜線に設定する。そして、穴／突起面抽出部１６ｄは、処理１−１〜処理１−３を繰り返し実行し、新たな円形関連面の抽出と、穴形状、突起形状のどちらを形成する円形関連面かの判断を行う。
【００８８】
図１５は、処理１−１〜処理１−３の繰り返しを説明する図である。
穴／突起面抽出部１６ｄは、旧円形関連面情報フォーマット４１に含まれる２つの円稜線のうち穴／突起面抽出用円稜線６４のＩＤに一致しない円稜線６７ｂを新たな穴／突起面抽出用円稜線に設定する。以下、新たに設定した穴／突起面抽出用円稜線を、穴／突起面抽出用円稜線６７ｂと言う。
【００８９】
図１５（ａ）は、穴／突起面抽出部１６ｄが抽出した、穴／突起面抽出用円稜線６７ｂと同じＩＤを持つ稜線を含む円形関連面情報フォーマット４２により具現される円錐面８１（円錐面Ａ）を示している。ここで、穴／突起面抽出用円稜線６７ｂのＩＤと、円稜線８２ａのＩＤが一致するものとする。
【００９０】
穴／突起面抽出部１６ｄは、新たに抽出した円形関連面情報フォーマット４２に含まれる円形関連面の円稜線のＩＤの数が２つで、かつ、２つの円稜線の中心座標が異なっている条件を満たすか否かを判断すると、条件を満たしている。従って、穴／突起面抽出部１６ｄは、円稜線８２ａ、８２ｂのうち、穴／突起面抽出用円稜線６７ｂの中心から、穴／突起面抽出用円稜線６７ｂのＩＤに一致しない円稜線８２ｂの中心にベクトルＶ１４を作成する。そして、穴／突起面抽出部１６ｄは、作成したベクトルＶ１４と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１４と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致しないと判断する。次に、穴／突起面抽出部１６ｄは、作成したベクトルＶ１４と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の、逆方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１４と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の逆方向が一致すると判断する。従って、穴／突起面抽出部１６ｄは、円錐面８１は、穴形状を形成する面であると判断する。
【００９１】
図１５（ｂ）は、穴／突起面抽出部１６ｄが抽出した、穴／突起面抽出用円稜線６７ｂと同じＩＤを持つ稜線を含む円形関連面情報フォーマット４４により具現される円錐面８３（円錐面Ｂ）を示している。ここで、穴／突起面抽出用円稜線６７ｂのＩＤと、円稜線８４のＩＤが一致するものとする。
【００９２】
穴／突起面抽出部１６ｄは、新たに抽出した円形関連面情報フォーマットが円錐面Ｂである場合は、穴／突起面抽出用円稜線６７ｂの中心から円錐面８３の頂点８３ａに作成したベクトルＶ１５と穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１５と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の方向が一致しないと判断する。次に、穴／突起面抽出部１６ｄは、作成したベクトルＶ１５と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の、逆方向が一致するか否かを判断する。穴／突起面抽出部１６ｄは、作成したベクトルＶ１５と、穴／突起面抽出用基準平面６５の法線ベクトルＶ１２の逆方向が一致すると判断する。従って、穴／突起面抽出部１６ｄは、円錐面８３は、穴形状を形成する面であると判断する。
【００９３】
穴／突起面抽出部１６ｄは、図１４および図１５に示す方法を、繰り返し実行する。そして、穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線を持つ円形関連面情報フォーマットが円形関連面情報格納部１３ａに存在しない場合、図１４および図１５に示す方法で抽出した円形関連面情報フォーマットを１つのグループに関連づける。そして、関連づけた円形関連面情報フォーマットを、穴／突起面グループ情報格納部１７に格納する。
【００９４】
また、穴／突起面抽出用円稜線情報が、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起を形成する稜線のＩＤリストに存在する場合（貫通丸穴、貫通さら穴等）も、図１４および図１５に示す方法で抽出した円形関連面情報フォーマットに基づいて、穴／突起面グループ情報フォーマットを作成する。そして、作成した穴／突起面グループ情報フォーマットを、穴／突起面グループ情報格納部１７に格納する。
【００９５】
図１６は、穴／突起面グループ情報フォーマットを説明する図である。
穴／突起面グループ情報フォーマット１７ａは、穴／突起を形成する円形関連面グループの情報を格納する円形関連面グループ情報格納領域１７０ａと、穴／突起を形成する平面の情報を格納する平面情報格納領域１７０ｂとを有している。
【００９６】
円形関連面グループ情報格納領域１７０ａには、円形関連面グループを構成する全ての円形関連面の情報（以下、「円形関連面グループ情報」と言う）が、円形関連面を抽出した順番に設定される。図１６に示す円形関連面グループ情報格納領域１７０ａには、円柱面６６の円形関連面グループ情報１７１ａと、円錐面８１（円錐面Ａ）の円形関連面グループ情報１７２ａとが設定されている。円形関連面グループ情報１７１ａは、円柱面６６のＩＤ、面の種類を示す「円柱面」、円柱の直径、円柱の高さおよび穴であることを示す「穴」の情報を有している。また、円形関連面グループ情報１７２ａは、円錐面８１のＩＤ、面の種類を示す「円錐面Ａ」、円稜線８２ａが形成する円の直径、円稜線８２ｂが形成する円の直径および穴であることを示す「穴」の情報を有している。なお、円平面等、穴か突起かの判断ができない場合は、穴または突起を示す欄には「不要」が設定される。
【００９７】
平面情報格納領域１７０ｂには、円形関連面グループを構成する全ての平面情報が設定される。図１６に示す平面情報１７３ａは、穴／突起面抽出用基準平面６５のＩＤおよび穴の終端となる面８５のＩＤを有している。なお、止まり穴、ダボ等、下側の平面が存在しない場合は、「無し」が設定される。
【００９８】
＜処理２＞
前述したように、穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納された穴／突起形成稜線グループ単位情報に含まれる稜線が、複数の円弧、直線で形成されている場合、以下の処理２−１〜処理２−８を実行する。
【００９９】
＜処理２−１＞
穴／突起面抽出部１６ｄは、以下の（条件１）〜（条件５）の全てを満たす稜線のＩＤリストを含む穴／突起形成稜線グループ単位情報は、長円形状、または、Ｒ（円弧半径）付き多角形状の稜線に関する穴／突起形成稜線グループ単位情報と判断する。
【０１００】
（条件１）穴／突起形成稜線グループ単位情報の稜線のＩＤリストにより特定される円弧と直線の数が同じ。（条件２）全ての円弧の半径、中心角が同じ。（条件３）各円弧の始点、終点に接続する稜線が直線。（条件４）所定の円弧（以下、「第１の円弧」と言う）の終点に接続する直線に、始点が接続する円弧（以下、「第２の円弧」と言う）が存在する。（条件５）第１の円弧の終点でのベクトル、第２の円弧の始点でのベクトル、第１の円弧の終点から第２の円弧の始点へのベクトルの方向が一致。なお、円弧の始点、終点でのベクトルは、３ＤＣＡＤの機能を使用して取得する。
【０１０１】
以下、長円形状、または、Ｒ付き多角形状の稜線のＩＤリストを初期稜線ＩＤリストと言う。
図１７および図１８は、初期稜線ＩＤリストの判断方法を説明する図である。
【０１０２】
図１７に示す稜線９０は、穴／突起形成稜線グループ単位情報に含まれる１つの穴／突起形成稜線グループに含まれる稜線のＩＤリストにより具現される稜線を示している。稜線９０は、長円形状をなしている。なお、図１７に示す稜線９０は、長円形状の円弧部分と直線部分を分離して示している。
【０１０３】
稜線９０の円弧の数は、２つ、また、稜線９０の直線の数は、２つであり、上記条件１は満たしている。また、円弧９１を第１の円弧に設定し、円弧９２を第２の円弧に設定すると、円弧９１の半径と円弧９２の半径は等しい。また、円弧９１の中心角と円弧９２の中心角は、１８０°である。従って、上記条件２を満たしている。また、円弧９１の始点９１ａおよび終点９１ｂには、直線である稜線９３、９４が接続されている。また、円弧９２の始点９２ａおよび終点９２ｂには、直線である稜線９４、９３が接続されている。従って、上記条件３を満たしている。また、円弧９１の終点９１ｂに接続する稜線９４に、始点９２ａが接続する円弧９２が存在する。また、円弧９２の終点９２ｂに接続する稜線９３に、始点９１ａが接続する円弧９１が存在する。このため、上記条件４を満たしている。また、円弧９１の終点９１ｂでのベクトルＶ１６、円弧９２の始点９２ａでのベクトルＶ１７、および円弧９１の終点９１ｂから円弧９２の始点９２ａへのベクトルの向きが同じ、かつ、円弧９２の終点９２ｂでのベクトルＶ１９、円弧９１の始点９１ａでのベクトルＶ２０、および円弧９２の終点９２ｂから円弧９１の始点９１ａへのベクトルＶ２１の向きが同じである。このため、上記条件５を満たしている。
【０１０４】
図１８に示す稜線１００は、穴／突起形成稜線グループ単位情報に含まれる１つの穴／突起形成稜線グループに含まれる稜線のＩＤリストにより具現される稜線を示している。稜線１００は、Ｒ付き四角形状をなしている。なお、図１８に示す稜線１００は、四角形状の円弧部分と直線部分を分離して示している。
【０１０５】
稜線１００の円弧の数は、４つ、また、稜線１００の直線の数は、４つであり、上記条件１は満たしている。また、円弧１０１、１０２、１０３、１０４の半径はそれぞれ等しい。また、円弧１０１、１０２、１０３、１０４の中心角は、それぞれ９０°で等しい。従って、上記条件２は満たしている。また、円弧１０１、１０２、１０３、１０４それぞれの始点および終点には、直線である稜線が接続されている。従って、上記条件３を満たしている。また、円弧１０１を第１の円弧に設定し、円弧１０２を第２の円弧に設定すると、円弧１０１の終点１０１ａに接続する直線１０５と、円弧１０１の終点１０１ａ以外の点で円弧の始点と接続する円弧１０２が存在する。なお、円弧１０２と円弧１０３の関係、円弧１０３と円弧１０４の関係、および円弧１０４と円弧１０１の関係も同様である。従って、上記条件４は満たしている。また、円弧１０１の終点１０１ａでのベクトルＶ２２、円弧１０２の始点１０２ａでのベクトルＶ２３、および円弧１０１の終点１０１ａから円弧１０２の始点１０２ａへのベクトルＶ２４の向きが同じである。なお、円弧１０２と円弧１０３の関係、円弧１０３と円弧１０４の関係、および円弧１０４と円弧１０１の関係も同様である。従って、上記条件５は満たしている。
【０１０６】
＜処理２−２＞
穴／突起面抽出部１６ｄは、以下の（条件６）〜（条件７）の全てを満たす稜線のＩＤリストを含む穴／突起形成稜線グループ単位情報は、多角形状の稜線に関する穴／突起形成稜線グループ単位情報と判断する。
【０１０７】
（条件６）稜線の全てが直線。（条件７）各交点から、交点に接続する２つの直線の交点とは別の端点にそれぞれ作成した２つのベクトル間の角度が、（１８０°―３６０°÷稜線数）に一致する。なお、角度はベクトルの内積を活用することにより求めることができる。また、穴／突起面抽出部１６ｄは、各直線の長さを比較し、全ての直線の長さが同じ場合、正多角形の稜線に関する穴／突起形成稜線グループ単位情報と判断する。
【０１０８】
図１９は、四角形状の稜線に関する穴／突起形成稜線グループ単位情報を説明する図である。
図１９に示す稜線１１１〜１１４は、穴／突起形成稜線グループ単位情報に含まれる１つの穴／突起形成稜線グループに含まれる稜線のＩＤリストにより具現される稜線を示している。
【０１０９】
稜線１１１〜１１４の全てが直線である。このため、上記条件６を満たしている。また、稜線１１１の稜線１１２との交点Ｐ１から、稜線１１１の交点Ｐ１とは別の端点Ｐ２へのベクトルＶ２５と、稜線１１２の稜線１１１との交点Ｐ１から、稜線１１２の交点Ｐ１とは別の端点Ｐ３へのベクトルＶ２６との間の角度は、９０°（＝１８０°―３６０°÷４）である。このため、上記条件７を満たしている。
【０１１０】
＜処理２−３  円形関連面および平面の抽出＞
穴／突起面抽出部１６ｄは、処理２−１の条件を満たした穴／突起形成稜線グループ単位情報に含まれる円弧稜線のＩＤに一致するＩＤを持つ稜線の円形関連面情報フォーマットを、円形関連面情報格納部１３ａから抽出する。また、穴／突起面抽出部１６ｄは、処理２−１の条件を満たした穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリスト内の直線稜線のＩＤに一致するＩＤを持つ稜線の平面詳細情報フォーマットを、外形のみ平面情報格納部１６ｃから抽出する。
【０１１１】
図２０は、稜線のＩＤリスト内の円弧稜線を持つ円形関連面の抽出を説明する図である。
図２０（ａ）に示す稜線１２１は、処理２−１の条件を満たす穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより具現された稜線を示している。この稜線１２１を含む平面１２０が穴／突起面抽出用基準平面となる。また、円弧面１２２、１２３は、穴／突起面抽出部１６ｄにより抽出された、処理２−１の条件を満たす稜線のＩＤリスト内の円弧のＩＤに一致するＩＤを持つ円形関連面情報フォーマットにより具現される円形関連面を示している。
【０１１２】
また、図２０（ｂ）に示す平面１２４、１２５は、穴／突起面抽出部１６ｄにより抽出された、処理２−１の条件を満たした稜線のＩＤリスト内の直線稜線のＩＤに一致するＩＤを持つ平面詳細情報フォーマットにより具現される、外形のみで形成される平面を示している。
【０１１３】
＜処理２−４  平面の法線ベクトル間の角度を計算＞
穴／突起面抽出部１６ｄは、処理２−３で抽出した各平面の法線ベクトルと、穴／突起面抽出用基準平面の法線ベクトル間の角度を計算する。なお、角度はベクトルの内積を活用する。また、穴／突起面抽出部１６ｄは、計算した各角度をチェックする。
【０１１４】
図２１は、穴／突起面抽出用基準平面と、抽出した平面の角度チェックを説明する図である。
図２１に示す平面１３１、１３２、１３３、１３４は、外形のみ平面情報格納部１６ｃから抽出した平面詳細情報フォーマットにより具現される、外形のみで形成される平面を示している。また、穴／突起面抽出用基準平面１３５は、処理２−２の条件を満たす穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより具現された稜線を含む平面を示している。各平面１３１、１３２、１３３、１３４の法線ベクトルＶ３１、Ｖ３２、Ｖ３３、Ｖ３４と、穴／突起面抽出用基準平面１３５の法線ベクトルＶ３５間の角度は、それぞれ９０°である。
【０１１５】
＜処理２−５  穴／突起の深さ／高さ方向の稜線を特定＞
穴／突起面抽出部１６ｄは、処理２−３で抽出した各面（円形関連面、平面）の全ての直線稜線から、重複する（各面間で共通）の稜線を抽出することで、穴／突起の深さおよび高さ方向の稜線を特定する。また、穴／突起面抽出部１６ｄは、抽出した稜線の長さをチェックする。
【０１１６】
図２２は、抽出した面間で重複する稜線の抽出、および、重複する稜線の長さチェックを説明する図である。
図２２（ａ）には、処理２−３にて抽出した円弧面（円形関連面）１２２、１２３および平面１２４、１２５を図示している。
【０１１７】
穴／突起面抽出部１６ｄは、重複する稜線として、円弧面１２２の紙面手前側の直線稜線１２２ａと平面１２４の直線稜線１２４ａを抽出する。円弧面１２２の紙面奥側の直線稜線１２２ｂと平面１２５の直線稜線１２５ａを抽出する。円弧面１２３の紙面手前側の直線稜線１２３ａと平面１２４の直線稜線１２４ｂを抽出する。円弧面１２３の紙面手前側の直線稜線１２３ｂと平面１２５の直線稜線１２５ｂを抽出する。穴／突起面抽出部１６ｄは、重複する稜線の長さは全て同じであると判断する。なお、重複する稜線の長さは、３ＤＣＡＤの機能を使用して取得する。
【０１１８】
また、図２２（ｂ）には、処理２−３にて抽出した平面１３１、１３２、１３３、１３４を図示している。
穴／突起面抽出部１６ｄは、重複する稜線として、平面１３１の紙面手前側の直線稜線１３１ａと平面１３２の直線稜線１３２ａを抽出する。平面１３１の紙面奥側の直線稜線１３１ｂと平面１３４の直線稜線１３４ａを抽出する。平面１３３の紙面手前側の直線稜線１３３ａと平面１３２の直線稜線１３２ｂを抽出する。平面１３３の紙面手前側の直線稜線１３３ｂと平面１３４の直線稜線１３４ｂを抽出する。穴／突起面抽出部１６ｄは、重複する稜線の長さは全て同じであると判断する。
【０１１９】
＜処理２−６＞
穴／突起面抽出部１６ｄは、処理２−３で抽出した円形関連面情報フォーマットおよび平面詳細情報フォーマットの全ての直線稜線から、処理２−１の初期稜線ＩＤリスト、および、処理２−５で抽出した重複する稜線を除外することで、穴／突起面抽出用基準平面とは反対側の面の穴／突起用稜線の候補を特定する。
【０１２０】
図２３は、穴／突起面抽出用基準平面とは反対側の面の穴／突起用稜線の抽出を説明する図である。
穴／突起面抽出部１６ｄは、円弧面１２２の初期稜線１２２ｃおよび直線稜線１２２ａ、１２２ｂを、円弧面１２２の円形関連面情報フォーマットから除外する。円弧面１２３の初期稜線１２３ｃおよび直線稜線１２３ａ、１２３ｂを、円弧面１２３の円形関連面情報フォーマットから除外する。平面１２４の初期稜線１２４ｃおよび直線稜線１２４ａ、１２４ｂを、平面１２４の平面詳細情報フォーマットから除外する。平面１２５の初期稜線１２５ｃおよび直線稜線１２５ａ、１２５ｂを、平面１２５の平面詳細情報フォーマットから除外する。この処理により、円弧面１２２の円形関連面情報フォーマットには、稜線１２２ｄのＩＤが残る。円弧面１２３の円形関連面情報フォーマットには、稜線１２３ｄのＩＤが残る。平面１２４の平面詳細情報フォーマットには、直線稜線１２４ｄのＩＤが残る。平面１２５の平面詳細情報フォーマットには、直線稜線１２５ｄのＩＤが残る。
【０１２１】
＜処理２−７＞
穴／突起面抽出部１６ｄは、処理２−６で特定した、穴／突起面抽出用基準平面とは反対側の穴／突起用稜線の候補を持つ平面を、穴／突起形成稜線グループ単位情報格納部１６ｂ、または、外形のみ平面情報格納部１６ｃから抽出する。
【０１２２】
図２４は、穴／突起面抽出用基準平面とは反対側の平面の抽出を説明する図である。
図２４（ａ）は、穴／突起面抽出用基準平面とは反対側の穴／突起用稜線の候補を持つ平面を、穴／突起形成稜線グループ単位情報格納部１６ｂから抽出した一例を示している。
【０１２３】
穴／突起面抽出部１６ｄは、円形関連面情報フォーマットに残った稜線１２２ｄ、１２３ｄ、および直線稜線１２４ｄ、１２５ｄそれぞれのＩＤに一致するＩＤを持つ稜線１２６ａ、１２６ｂ、１２６ｃ、１２６ｄを含む穴／突起形成稜線グループ単位情報を特定する。そして、穴／突起面抽出部１６ｄは、特定した穴／突起形成稜線グループ単位情報に含まれる平面１２６を抽出する。
【０１２４】
図２４（ｂ）は、穴／突起面抽出用基準平面とは反対側の穴／突起用稜線の候補を持つ平面を、外形のみ平面情報格納部１６ｃから抽出した一例を示している。
穴／突起面抽出部１６ｄは、円形関連面情報フォーマットに残った稜線１２２ｄ、１２３ｄ、および直線稜線１２４ｄ、１２５ｄそれぞれのＩＤに一致するＩＤを持つ稜線１２７ａ、１２７ｂ、１２７ｃ、１２７ｄを含む平面詳細情報フォーマットを特定する。そして、穴／突起面抽出部１６ｄは、特定した平面詳細情報フォーマットに含まれる平面１２７を抽出する。
【０１２５】
＜処理２−８＞
穴／突起面抽出部１６ｄは、穴／突起面抽出用基準平面上で、初期稜線ＩＤリスト内の任意の端点から、処理２−７で抽出した穴／突起面抽出用基準平面とは反対側の面の穴／突起用稜線候補内の任意の端点に作成したベクトルと、穴／突起面抽出用基準平面の法線ベクトル間の角度を算出する。穴／突起面抽出部１６ｄは、−９０°＜ベクトル間の角度＜９０°の場合は、処理２−３で抽出した円形関連面または平面が、突起を形成する面であると判断する。また、穴／突起面抽出部１６ｄは、算出した結果、−９０°≧ベクトル間の角度≧９０°の場合は、処理２−３で抽出した円形関連面または平面が、穴を形成する面であると判断する。
【０１２６】
図２５は、穴または突起を判断する方法を説明する図である。
穴／突起面抽出部１６ｄは、穴／突起面抽出用基準平面１２０上で、初期稜線ＩＤリストに含まれるＩＤにより具現される稜線１２１ｂの端点から、穴／突起面抽出用基準平面とは反対側の面１２６の稜線１２６ｄの端点にベクトルＶ４１を作成する。そして、穴／突起面抽出部１６ｄは、作成したベクトルＶ４１と、穴／突起面抽出用基準平面の法線ベクトルＶ４２間の角度を算出する。穴／突起面抽出部１６ｄは、算出した結果に応じて円弧面１２２、１２３が突起を形成する面か穴を形成する面かを判断する。
【０１２７】
＜処理２−９＞
穴／突起面抽出部１６ｄは、処理２−１〜処理２−７にて抽出した穴／突起を形成する面に、処理２−８の判断結果を関連づけた穴／突起面グループ情報フォーマットを作成する。そして、穴／突起面抽出部１６ｄは、作成した穴／突起面グループ情報フォーマットを、穴／突起面グループ情報格納部１７に格納（追加）する。
【０１２８】
図２６は、穴／突起面グループ情報フォーマットを説明する図である。
穴／突起面グループ情報フォーマット１７ｂは、穴／突起形成面情報格納領域１７０ｃ、穴／突起詳細情報格納領域１７０ｄおよび平面情報格納領域１７０ｅを有している。
【０１２９】
穴／突起形成面情報格納領域１７０ｃには、処理２−３にて抽出した穴／突起面を形成する全ての円形関連面および平面の情報（以下、「穴／突起形成面グループ情報」と言う）が設定される。図２５に示す穴／突起形成面情報格納領域１７０ｃには、円弧面１２２の穴／突起形成面グループ情報１７１ｂと、平面１２４の穴／突起形成面グループ情報１７２ｂとが設定されている。穴／突起形成面グループ情報１７１ｂは、円弧面１２２のＩＤ、面の種類を示す「円弧面」、および円弧面の直径の情報を有している。また、穴／突起形成面グループ情報１７２ｂは、平面１２４のＩＤ、および面の種類を示す「平面」の情報を有している。なお、円弧面１２３および平面１２５の穴／突起形成面グループ情報も、円弧面１２２、平面１２４の情報と同様に設定されるが、紙面の都合上、図示を省略している。
【０１３０】
穴／突起詳細情報格納領域１７０ｄには、処理２−９にて判断した突起を形成する面または穴を形成する面の情報、および処理２−５にて抽出した重複する稜線の長さの情報が設定される。以下、これら２つの情報をまとめて「穴／突起詳細情報」と言う。図２５に示す穴／突起詳細情報格納領域１７０ｄには、穴／突起詳細情報１７３ｂが設定されている。この穴／突起詳細情報１７３ｂには、処理２−９にて判断した、穴であることを示す「穴」が設定されている。また、処理２−５にて抽出した、重複する稜線の長さ「２．４（ｍｍ）」が設定されている。
【０１３１】
平面情報格納領域１７０ｅには、穴／突起面抽出用基準平面のＩＤおよび穴／突起面抽出用基準平面とは反対側の面に関する情報（以下、「穴／突起平面情報」と言う）が設定される。図２５に示す平面情報格納領域１７０ｅには、穴／突起平面情報１７４ｂが設定されている。この穴／突起平面情報１７４ｂは、穴／突起面抽出用基準平面１２０のＩＤ、平面１２６のＩＤおよび平面１２６が、穴／突起を形成する稜線に接続されていることを示す情報を有している。なお、下面が、外形を形成する稜線である場合は、下面の情報の欄には、外形を形成する稜線に接続されていることを示す情報が設定される。
【０１３２】
再び図３に戻って説明する。
穴／突起特定部１８は、穴形状別面構成データベース格納部１８ａと、穴／突起名称特定部１８ｂとを有している。
【０１３３】
図２７は、穴形状別面構成データベース格納部に格納されている情報を示す図である。
図２７に示す穴形状別面構成データベース１８１ａには、穴形状別に、形状毎の面構成情報と、面の寸法情報が記載されている。例えば、すきま穴−Ｍ２（ねじの呼び径）は、直径が２．４ｍｍの１つの円柱面で構成されている。また、さら穴−Ｍ２は、円の直径が２．４ｍｍの円柱面と、両端部の円の直径がそれぞれ２．４ｍｍ、４．８ｍｍの円錐面とで構成されている。
【０１３４】
穴／突起名称特定部１８ｂは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起面グループ情報フォーマットと、穴形状別面構成データベース１８１ａの情報から穴／突起の種類を特定する。図１６に示す穴／突起面グループ情報フォーマット１７ａを例にとる。円形関連面グループ情報１７１ａの円柱の直径が、２．４ｍｍであり、円形関連面グループ情報１７２ａの円錐面Ａの２つの円稜線により形成される円の直径がそれぞれ２．４ｍｍ、４．８ｍｍであれば、穴／突起面グループ情報フォーマット１７ａが示す穴は、さら穴−Ｍ２であることが特定できる。
【０１３５】
そして、穴／突起名称特定部１８ｂは、穴／突起種類別に３Ｄモデルの穴数を示す穴数情報を作成する。穴／突起情報表示部１９は、穴／突起名称特定部１８ｂが作成した穴数情報をモニタ２０４ａに出力する。
【０１３６】
図２８は、穴／突起情報表示部が出力した穴数情報の一例を示す図である。
図２８に示す穴数情報管理テーブル１９ａの横方向の欄には、穴／突起の種類および穴の径を識別する情報が設定されている。また、縦方向の欄には、３Ｄモデルを識別する情報が設定されている。例えば、モデルＡとすきま穴の重なる部分には「２」が格納されている。これは、モデルＡに設けられたすきま穴の数が２つであることを示している。
【０１３７】
以下、前述した設計支援装置１０の処理を、フローチャートを用いて説明する。
図２９は、設計支援装置の全体処理を示すフローチャートである。
［ステップＳ１］  設計支援装置１０は、設計者による対象モデルの指定を受け付ける。その後、ステップＳ２に遷移する。
【０１３８】
［ステップＳ２］  設計支援装置１０は、円形関連面情報格納部１３ａを初期化する。その後、ステップＳ３に遷移する。
［ステップＳ３］  設計支援装置１０は、平面情報格納部１３ｂを初期化する。その後、ステップＳ４に遷移する。
【０１３９】
［ステップＳ４］  設計支援装置１０は、その他の面情報格納部１３ｃを初期化する。その後、ステップＳ５に遷移する。
［ステップＳ５］  設計支援装置１０は、平面詳細情報格納部１５を初期化する。その後、ステップＳ６に遷移する。
【０１４０】
［ステップＳ６］  設計支援装置１０は、穴／突起形成稜線グループ単位情報格納部１６ｂを初期化する。その後、ステップＳ７に遷移する。
［ステップＳ７］  設計支援装置１０は、穴／突起面グループ情報格納部１７を初期化する。その後、ステップＳ８に遷移する。
【０１４１】
［ステップＳ８］  ３Ｄ面分類部１２は、３Ｄモデルを形成する面情報を、円形関連面、一般平面、およびその他の面に分類する。その後、ステップＳ９に遷移する。
［ステップＳ９］  平面内稜線情報分類部１４は、平面情報内に稜線情報を分類する。その後、ステップＳ１０に遷移する。
【０１４２】
［ステップＳ１０］  穴／突起情報作成部１６は、穴／突起面の情報を作成する。その後、ステップＳ１１に遷移する。
［ステップＳ１１］  穴／突起特定部１８は、穴／突起面の種類を特定する。その後、ステップＳ１２に遷移する。
【０１４３】
［ステップＳ１２］  穴／突起情報表示部１９は、穴数情報をモニタ２０４ａに表示する。その後、図２９に示す処理を終了する。
以上で、図２９に示す処理の説明を終了する。なお、ステップＳ２〜Ｓ７の処理の順番は、図示のものに限定されない。
【０１４４】
図３０は、３Ｄ面分類部の処理を示すフローチャートである。
［ステップＳ２１］  ３Ｄ面抽出部１２ａは、３Ｄを形成している全ての面を３Ｄモデルから抽出する。その後、ステップＳ２２に遷移する。
【０１４５】
［ステップＳ２２］  面形状分類部１２ｂは、ステップＳ２１にて抽出した面を１つ選択する。その後、ステップＳ２３に遷移する。
［ステップＳ２３］  面形状分類部１２ｂは、ステップＳ２２にて選択した面が、平面か否かを判断する。ステップＳ２２にて選択した面が、平面であると判断した場合（ステップＳ２３のＹｅｓ）、ステップＳ２４に遷移する。ステップＳ２２にて選択した面が、平面ではないと判断した場合（ステップＳ２３のＮｏ）、ステップＳ３１に遷移する。
【０１４６】
［ステップＳ２４］  面形状分類部１２ｂは、ステップＳ２２にて選択した平面に含まれる稜線を抽出する。その後、ステップＳ２５に遷移する。
［ステップＳ２５］  面形状分類部１２ｂは、ステップＳ２４にて抽出した面が、１つの円稜線のみで形成されている平面か否か、すなわち、円平面か否かを判断する。ステップＳ２４にて抽出した面が、円平面であると判断した場合（ステップＳ２５のＹｅｓ）、ステップＳ２９に遷移する。ステップＳ２４にて抽出した面が、円平面ではないと判断した場合（ステップＳ２５のＮｏ）、ステップＳ２６に遷移する。
【０１４７】
［ステップＳ２６］  面形状分類部１２ｂは、ステップＳ２４にて抽出した面が、中心座標が同じ２つの円稜線で形成されている平面か否か、すなわち、ドーナツ状平面か否かを判断する。ステップＳ２４にて抽出した面が、ドーナツ状平面であると判断した場合（ステップＳ２６のＹｅｓ）、ステップＳ２９に遷移する。ステップＳ２４にて抽出した面が、ドーナツ状平面ではないと判断した場合（ステップＳ２６のＮｏ）、ステップＳ２７に遷移する。
【０１４８】
［ステップＳ２７］  面情報作成部１２ｃは、ステップＳ２２にて選択した面について一般平面リストを作成する。その後、ステップＳ２８に遷移する。
［ステップＳ２８］  面情報作成部１２ｃは、ステップＳ２７にて作成した一般平面リストを平面情報格納部１３ｂに格納する。その後、ステップＳ３６に遷移する。
【０１４９】
［ステップＳ２９］  面情報作成部１２ｃは、ステップＳ２２にて選択した面について円形関連面リストを作成する。その後、ステップＳ３０に遷移する。
［ステップＳ３０］  面情報作成部１２ｃは、ステップＳ２６にて作成した円形関連面リストを円形関連面情報格納部１３ａに格納する。その後、ステップＳ３６に遷移する。
【０１５０】
［ステップＳ３１］  面形状分類部１２ｂは、ステップＳ２２にて選択した面が、円柱面、円弧面、円錐面または円環面のうちのいずれか１つか否かを判断する。ステップＳ２２にて選択した面が、円柱面、円弧面、円錐面または円環面のうちのいずれか１つであると判断した場合（ステップＳ３１のＹｅｓ）、ステップＳ３２に遷移する。ステップＳ２２にて選択した面が、円柱面、円弧面、円錐面または円環面のいずれにも該当しないと判断した場合（ステップＳ３１のＮｏ）、ステップＳ３４に遷移する。
【０１５１】
［ステップＳ３２］  面情報作成部１２ｃは、ステップＳ２２にて選択した面についての円形関連面リストを作成する。その後、ステップＳ３３に遷移する。
［ステップＳ３３］  面情報作成部１２ｃは、ステップＳ３２にて作成した円形関連面リストを円形関連面情報格納部１３ａに格納する。その後、ステップＳ３６に遷移する。
【０１５２】
［ステップＳ３４］  面情報作成部１２ｃは、ステップＳ２２にて選択した面についてその他の面リストを作成する。その後、ステップＳ３５に遷移する。
［ステップＳ３５］  面情報作成部１２ｃは、ステップＳ３４にて作成したその他の面リストをその他の面情報格納部１３ｃに格納する。その後、ステップＳ３６に遷移する。
【０１５３】
［ステップＳ３６］  ３Ｄ面抽出部１２ａは、ステップＳ２１にて抽出した全ての面について、ステップＳ２３〜Ｓ３５の処理が終了したか否かを判断する。ステップＳ２１にて抽出した全ての面について、ステップＳ２３〜Ｓ３５の処理が終了した場合（ステップＳ３６のＹｅｓ）、図３０に示す処理を終了する。ステップＳ２１にて抽出した全ての面について、ステップＳ２３〜Ｓ３５の処理が終了していない場合（ステップＳ３６のＮｏ）、ステップＳ２２に遷移し、ステップＳ２２以降の処理を引き続き行う。
【０１５４】
以上で、図３０に示す処理の説明を終了する。
次に、グループ分類部１４ａの領域面積の取得処理を説明する。
図３１は、グループ分類部の領域面積の取得処理を示すフローチャートである。
【０１５５】
［ステップＳ４１］  グループ分類部１４ａは、平面情報格納部１３ｂに格納されている平面情報フォーマットに設定された稜線のグループで形成される面を作成する。その後、ステップＳ４２に遷移する。
【０１５６】
［ステップＳ４２］  グループ分類部１４ａは、ステップＳ４１にて作成した面の面積を取得する。その後、ステップＳ４３に遷移する。
［ステップＳ４３］  グループ分類部１４ａは、ステップＳ４１にて作成した面を削除する。その後、図３１に示す処理を終了する。
【０１５７】
以上で、図３１に示す処理の説明を終了する。
次に、平面内稜線情報分類部１４の処理を説明する。
図３２および図３３は、平面内稜線情報分類部の処理を示すフローチャートである。
【０１５８】
［ステップＳ５１］  グループ分類部１４ａは、平面情報格納部１３ｂに格納されている平面情報フォーマット１つを取り出す。その後、ステップＳ５２に遷移する。
［ステップＳ５２］  グループ分類部１４ａは、面積最大値を代入するパラメータＸを宣言する。パラメータＸの初期値は０に設定する。その後、ステップＳ５３に遷移する。
【０１５９】
［ステップＳ５３］  グループ分類部１４ａは、処理対象の稜線（以下、「処理対象稜線」と言う）のＩＤを一時記憶する処理対象稜線のＩＤリストを初期化する。その後、ステップＳ５４に遷移する。
【０１６０】
［ステップＳ５４］  グループ分類部１４ａは、外形形成稜線グループを一時記憶する外形形成稜線グループリストを初期化する。その後、ステップＳ５５に遷移する。
［ステップＳ５５］  グループ分類部１４ａは、穴／突起形成用稜線グループを一時記憶する穴／突起形成用稜線グループリストを初期化する。その後、ステップＳ５６に遷移する。
【０１６１】
［ステップＳ５６］  グループ分類部１４ａは、処理対象稜線のＩＤを一時保管する稜線ＩＤ一時保管リストを初期化する。その後、ステップＳ５７に遷移する。
［ステップＳ５７］  グループ分類部１４ａは、ステップＳ５１にて取り出した平面詳細情報フォーマットに設定されている最初（一番上）の稜線のＩＤにより特定される稜線を処理対象稜線に設定する。その後、ステップＳ５８に遷移する。
【０１６２】
［ステップＳ５８］  グループ分類部１４ａは、Ａ処理を行って、ステップＳ５７にて選択した稜線を含む稜線により、１つの囲まれた領域を形成する稜線グループを作成する。その後、ステップＳ５９に遷移する。なお、Ａ処理は、図９にて説明した処理を実行する処理である。Ａ処理の内容については後に詳述する。
【０１６３】
［ステップＳ５９］  グループ分類部１４ａは、Ａ処理を行った結果、稜線ＩＤ一時保管リストに稜線のＩＤが存在するか否かを判断する。稜線ＩＤ一時保管リストに稜線のＩＤが存在する場合（ステップＳ５９のＹｅｓ）、ステップＳ６０に遷移する。稜線ＩＤ一時保管リストに稜線のＩＤが存在しない場合（ステップＳ５９のＮｏ）、ステップＳ６６に遷移する。
【０１６４】
［ステップＳ６０］  グループ分類部１４ａは、稜線ＩＤ一時保管リスト内の稜線のＩＤにより特定される稜線で囲まれる面積を取得する。その後、ステップＳ６１に遷移する。
【０１６５】
［ステップＳ６１］  グループ分類部１４ａは、ステップＳ６０にて取得した面積の値が、パラメータＸより大きいか否かを判断する。ステップＳ６０にて取得した面積の値が、パラメータＸより大きい場合（ステップＳ６１のＹｅｓ）、ステップＳ６２に遷移する。ステップＳ６０にて取得した面積の値が、パラメータＸ以下である場合（ステップＳ６１のＮｏ）、ステップＳ６５に遷移する。
【０１６６】
［ステップＳ６２］  グループ分類部１４ａは、パラメータＸに関連づけられていた稜線グループを構成する稜線のＩＤを、穴／突起形成用稜線グループと判断する。そして、判断した稜線グループを構成する稜線のＩＤを、穴／突起形成用稜線グループリストに追加する。その後、ステップＳ６３に遷移する。
【０１６７】
［ステップＳ６３］  グループ分類部１４ａは、パラメータＸに関連づけられていた稜線グループを、ステップＳ５７にて選択した稜線グループに置き換える。この処理により、今回ステップＳ５７にて選択した稜線グループが、パラメータＸの稜線グループに関連づけられる。その後、ステップＳ６４に遷移する。
【０１６８】
［ステップＳ６４］  グループ分類部１４ａは、パラメータＸを、今回ステップＳ５７にて選択した稜線グループの面積の値（ステップＳ６０にて取得）に置き換える。その後、ステップＳ６６に遷移する。
【０１６９】
［ステップＳ６５］  グループ分類部１４ａは、Ａ処理にて得られた稜線グループを穴／突起形成用稜線グループと判断する。そして、穴／突起形成用稜線グループを構成する稜線のＩＤを、穴／突起形成用稜線グループリストに追加する。その後、ステップＳ６６に遷移する。
【０１７０】
［ステップＳ６６］  グループ分類部１４ａは、ステップＳ５１にて取り出した平面情報フォーマット内に未選択の稜線のＩＤが存在するか否かを判断する。ステップＳ５１にて取り出した平面情報フォーマット内に未選択の稜線のＩＤが存在する場合（ステップＳ６６のＹｅｓ）、ステップＳ５７に遷移し、未選択の稜線のＩＤを１つ選択する。そして、選択したＩＤにより特定される稜線を処理対象稜線に設定し、ステップＳ５８以降の処理を引き続き行う。ステップＳ５１にて取り出した平面情報フォーマット内に未選択の稜線のＩＤが存在しない場合（ステップＳ６６のＮｏ）、ステップＳ６７に遷移する。
【０１７１】
［ステップＳ６７］  平面詳細情報作成部１４ｂは、穴／突起形成用稜線グループリストに追加された稜線グループを構成する稜線のＩＤに基づいて、平面詳細情報フォーマットを作成する。その後、ステップＳ６８に遷移する。
【０１７２】
［ステップＳ６８］  平面詳細情報作成部１４ｂは、ステップＳ６７にて作成した平面詳細情報フォーマットを、平面詳細情報格納部１５に格納する。その後、ステップＳ６９に遷移する。
【０１７３】
［ステップＳ６９］  グループ分類部１４ａは、平面情報格納部１３ｂに格納されている全ての平面情報フォーマットについてステップＳ５２〜Ｓ６８の処理が終了したか否かを判断する。平面情報格納部１３ｂに格納されている全ての平面情報フォーマットについてステップＳ５２〜Ｓ６８の処理が終了した場合（ステップＳ６９のＹｅｓ）、図３２および図３３に示す処理を終了する。平面情報格納部１３ｂに格納されている全ての平面情報フォーマットについてステップＳ５２〜Ｓ６８の処理が終了していない場合（ステップＳ６９のＮｏ）、ステップＳ５１に遷移して、未処理の平面情報フォーマットについて、ステップＳ５１以降の処理を引き続き行う。
【０１７４】
以上で、図３２および図３３に示す処理の説明を終了する。次に、ステップＳ５８のＡ処理を説明する。
図３４および図３５は、Ａ処理を示すフローチャートである。
【０１７５】
［ステップＳ５８ａ］  グループ分類部１４ａは、処理対象稜線の座標を代入する初期座標を宣言する。初期座標の初期値は０に設定する。その後、ステップＳ５８ｂに遷移する。
【０１７６】
［ステップＳ５８ｂ］  グループ分類部１４ａは、処理対象稜線の座標を代入する接続座標を宣言する。接続座標の初期値は０に設定する。その後、ステップＳ５８ｃに遷移する。
【０１７７】
［ステップＳ５８ｃ］  グループ分類部１４ａは、稜線ＩＤ一時保管リストに処理対象稜線のＩＤを追加する。その後、ステップＳ５８ｄに遷移する。
［ステップＳ５８ｄ］  グループ分類部１４ａは、平面情報フォーマットから処理対象稜線のＩＤを除外する。その後、ステップＳ５８ｅに遷移する。
【０１７８】
［ステップＳ５８ｅ］  グループ分類部１４ａは、処理対象稜線が、１つの領域を形成している稜線か否かを判断する。処理対象稜線が、１つの領域を形成している稜線である場合（ステップＳ５８ｅのＹｅｓ）、Ａ処理を終了する。処理対象の稜線が、１つの領域を形成している稜線ではない場合（ステップＳ５８ｅのＮｏ）、ステップＳ５８ｆに遷移する。
【０１７９】
［ステップＳ５８ｆ］  グループ分類部１４ａは、処理対象の稜線の始点座標を初期座標に設定する。その後、ステップＳ５８ｇに遷移する。
［ステップＳ５８ｇ］  グループ分類部１４ａは、処理対象の稜線の終点座標を接続座標に設定する。その後、ステップＳ５８ｈに遷移する。
【０１８０】
［ステップＳ５８ｈ］  グループ分類部１４ａは、接続座標と同じ始点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在するか否かを判断する。接続座標と同じ始点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在する場合（ステップＳ５８ｈのＹｅｓ）、ステップＳ５８ｉに遷移する。接続座標と同じ始点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在しない場合（ステップＳ５８ｈのＮｏ）、ステップＳ５８ｋに遷移する。
【０１８１】
［ステップＳ５８ｉ］  グループ分類部１４ａは、接続座標と同じ始点座標を持つ稜線を処理対象稜線に設定する。その後、ステップＳ５８ｊに遷移する。
［ステップＳ５８ｊ］  グループ分類部１４ａは、処理対象稜線の終点座標を接続座標に設定する。その後、ステップＳ５８ｐに遷移する。
【０１８２】
［ステップＳ５８ｋ］  グループ分類部１４ａは、接続座標と同じ終点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在するか否かを判断する。接続座標と同じ終点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在する場合（ステップＳ５８ｋのＹｅｓ）、ステップＳ５８ｍに遷移する。接続座標と同じ終点座標を持つ稜線のＩＤが、ステップＳ５１にて取り出した平面情報フォーマット内に存在しない場合（ステップＳ５８ｋのＮｏ）、ステップＳ５８ｒに遷移する。
【０１８３】
［ステップＳ５８ｍ］  グループ分類部１４ａは、接続座標と同じ終点座標を持つ稜線を処理対象稜線に設定する。その後、ステップＳ５８ｎに遷移する。
［ステップＳ５８ｎ］  グループ分類部１４ａは、処理対象稜線の始点座標を接続座標に設定する。その後、ステップＳ５８ｐに遷移する。
【０１８４】
［ステップＳ５８ｐ］  グループ分類部１４ａは、稜線ＩＤ一時保管リストに処理対象稜線のＩＤを追加する。その後、ステップＳ５８ｑに遷移する。
［ステップＳ５８ｑ］  グループ分類部１４ａは、ステップＳ５１にて取り出した平面情報フォーマットから処理対象稜線のＩＤを除外する。その後、ステップＳ５８ｈに遷移する。
【０１８５】
［ステップＳ５８ｒ］  グループ分類部１４ａは、接続座標が初期座標に一致するか否かを判断する。接続座標が初期座標に一致する場合（ステップＳ５８ｒのＹｅｓ）、Ａ処理を終了する。接続座標が初期座標に一致しない場合（ステップＳ５８ｒのＮｏ）、ステップＳ５８ｓに遷移する。
【０１８６】
［ステップＳ５８ｓ］  グループ分類部１４ａは、稜線ＩＤ一時保管リストをクリアする。その後、Ａ処理を終了する。
以上で、図３４および図３５に示す処理の説明を終了する。
【０１８７】
図３６は、平面情報フォーマットを穴／突起形成稜線グループに変換する処理を示すフローチャートである。
［ステップＳ７１］  穴／突起形成稜線抽出部１６ａは、平面詳細情報格納部１５に格納されている平面詳細情報フォーマットを１つ選択する。その後、ステップＳ７２に遷移する。
【０１８８】
［ステップＳ７２］  穴／突起形成稜線抽出部１６ａは、ステップＳ７１にて選択した平面詳細情報フォーマットに穴／突起形成稜線グループが存在するか否かを判断する。ステップＳ７１にて選択した平面詳細情報フォーマットに穴／突起形成稜線グループが存在する場合（ステップＳ７２のＹｅｓ）、ステップＳ７３に遷移する。ステップＳ７１にて選択した平面詳細情報フォーマットに穴／突起形成稜線グループが存在しない場合（ステップＳ７２のＮｏ）、ステップＳ７８に遷移する。
【０１８９】
［ステップＳ７３］  穴／突起形成稜線抽出部１６ａは、ステップＳ７１にて選択した平面詳細情報フォーマットに含まれる平面のＩＤを取得する。その後、ステップＳ７４に遷移する。
【０１９０】
［ステップＳ７４］  穴／突起形成稜線抽出部１６ａは、穴／突起形成稜線グループが有する稜線のＩＤリストを１つ選択する。その後、ステップＳ７５に遷移する。
［ステップＳ７５］  穴／突起形成稜線抽出部１６ａは、ステップＳ７３にて取得した平面のＩＤにステップＳ７４にて選択した稜線のＩＤリストを関連づけた、穴／突起形成稜線グループ単位情報を作成する。その後、ステップＳ７６に遷移する。
【０１９１】
［ステップＳ７６］  穴／突起形成稜線抽出部１６ａは、ステップＳ７５にて作成した穴／突起形成稜線グループ単位情報を、穴／突起形成稜線グループ単位情報格納部１６ｂに格納する。その後、ステップＳ７７に遷移する。
【０１９２】
［ステップＳ７７］  穴／突起形成稜線抽出部１６ａは、未処理の稜線のＩＤリストがステップＳ７１にて選択した平面詳細情報フォーマットに存在するか否かを判断する。未処理の稜線のＩＤリストがステップＳ７１にて選択した平面詳細情報フォーマットに存在する場合（ステップＳ７７のＹｅｓ）、ステップＳ７４に遷移し、ステップＳ７４以降の処理を引き続き行う。未処理の稜線のＩＤリストがステップＳ７１にて選択した平面詳細情報フォーマットに存在しない場合（ステップＳ７７のＮｏ）、ステップＳ７９に遷移する。
【０１９３】
［ステップＳ７８］  穴／突起形成稜線抽出部１６ａは、ステップＳ７１にて選択した平面詳細情報フォーマットを、外形のみ平面情報格納部１６ｃに格納する。その後、ステップＳ７９に遷移する。
【０１９４】
［ステップＳ７９］  穴／突起形成稜線抽出部１６ａは、平面詳細情報格納部１５に格納されている全ての平面詳細情報フォーマットについてステップＳ７２〜Ｓ７８の処理が終了したか否かを判断する。平面詳細情報格納部１５に格納されている全ての平面詳細情報フォーマットについてステップＳ７２〜Ｓ７８の処理が終了した場合（ステップＳ７９のＹｅｓ）、図３６に示す処理を終了する。平面詳細情報格納部１５に格納されている全ての平面詳細情報フォーマットについてステップＳ７２〜Ｓ７８の処理が終了していない場合（ステップＳ７９のＮｏ）、ステップＳ７１に遷移し、未選択の平面詳細情報フォーマットを１つ選択する。そして、ステップＳ７２以降の処理を引き続き行う。
【０１９５】
以上で、図３６に示す処理の説明を終了する。
図３７は、穴／突起を形成する面情報を抽出する処理を示すフローチャートである。
［ステップＳ８１］  穴／突起面抽出部１６ｄは、円形関連面グループ情報を一時的に記憶する第１の記憶部２０２ａを初期化する。この第１の記憶部２０２ａは、例えばＲＡＭ２０２の記憶領域の一部で形成することができる。
【０１９６】
［ステップＳ８２］  穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起形成稜線グループ単位情報の１つを選択する。そして、選択した穴／突起形成稜線グループ単位情報に含まれる穴／突起形成稜線グループを、処理対象稜線グループに設定する。その後、ステップＳ８３に遷移する。
【０１９７】
［ステップＳ８３］  穴／突起面抽出部１６ｄは、ステップＳ８２にて設定した処理対象稜線グループを含む穴／突起形成稜線グループ単位情報を、穴／突起形成稜線グループ単位情報格納部１６ｂから削除する。その後、ステップＳ８４に遷移する。
【０１９８】
［ステップＳ８４］  穴／突起面抽出部１６ｄは、処理対象稜線グループが含まれている穴／突起形成稜線グループ単位情報の、稜線が含まれる平面のＩＤにより特定される平面の法線ベクトルを取得する。その後、ステップＳ８５に遷移する。
【０１９９】
［ステップＳ８５］  穴／突起面抽出部１６ｄは、処理対象稜線グループが含まれている穴／突起形成稜線グループ単位情報に基づいて、処理対象稜線グループ内の稜線数が１、かつ、稜線の種類が円か否かを判断する。処理対象稜線グループ内の稜線数が１、かつ、稜線の種類が円である場合（ステップＳ８５のＹｅｓ）、ステップＳ８６に遷移する。処理対象稜線グループ内の稜線数が１ではない、または、稜線の種類が円ではない場合（ステップＳ８５のＮｏ）、ステップＳ８９に遷移する。
【０２００】
［ステップＳ８６］  穴／突起面抽出部１６ｄは、パラメータとして穴／突起面抽出用円稜線を用意する。穴／突起面抽出用円稜線の初期値は０に設定する。その後、ステップＳ８７に遷移する。
【０２０１】
［ステップＳ８７］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線に処理対象稜線グループ内の稜線を設定する。その後、ステップＳ８８に遷移する。
［ステップＳ８８］  穴／突起面抽出部１６ｄは、Ｂ処理を行う。なお、Ｂ処理は、図１３〜図１６にて説明した処理である。Ｂ処理の内容は後に詳述する。Ｂ処理が終了すると、ステップＳ９２に遷移する。
【０２０２】
［ステップＳ８９］  穴／突起面抽出部１６ｄは、パラメータとして穴／突起面抽出用円弧稜線を用意する。穴／突起面抽出用円弧稜線の初期値は０に設定する。その後、ステップＳ９０に遷移する。
【０２０３】
［ステップＳ９０］  穴／突起面抽出部１６ｄは、パラメータとして穴／突起面抽出用直線稜線を用意する。穴／突起面抽出用直線稜線の初期値は０に設定する。その後、ステップＳ９１に遷移する。
【０２０４】
［ステップＳ９１］  穴／突起面抽出部１６ｄは、Ｃ処理を行う。なお、Ｃ処理は、図１７〜図１９にて説明した処理である。Ｃ処理の内容は、後に詳述する。Ｃ処理が終了すると、ステップＳ９２に遷移する。
【０２０５】
［ステップＳ９２］  穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂ内に未処理の（ステップＳ８２〜Ｓ９１の処理を行っていない）穴／突起形成稜線グループ単位情報が存在するか否かを判断する。未処理の穴／突起形成稜線グループ単位情報が存在する場合（ステップＳ９２のＹｅｓ）、ステップＳ８２に遷移する。そして、未処理の穴／突起形成稜線グループ単位情報を選択し、ステップＳ８３以降の処理を引き続き行う。未処理の穴／突起形成稜線グループ単位情報が存在しない場合（ステップＳ９２のＮｏ）、図３７に示す処理を終了する。
【０２０６】
以上で、図３７に示す処理の説明を終了する。次にステップＳ８８のＢ処理を説明する。
図３８および図３９は、Ｂ処理を示すフローチャートである。
【０２０７】
［ステップＳ８８ａ］  穴／突起面抽出部１６ｄは、円形関連面情報格納部１３ａ内に穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットが存在するか否かを判断する。穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットが存在する場合（ステップＳ８８ａのＹｅｓ）、ステップＳ８８ｂに遷移する。穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットが存在しない場合（ステップＳ８８ａのＮｏ）、ステップＳ８８ｔに遷移する。
【０２０８】
［ステップＳ８８ｂ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットに含まれる円稜線の数が２であるか否かを判断する。円形関連面情報フォーマットに含まれる円稜線の数が２である場合（ステップＳ８８ｂのＹｅｓ）、ステップＳ８８ｃに遷移する。円形関連面情報フォーマットに含まれる円稜線の数が２ではない場合（ステップＳ８８ｂのＮｏ）、ステップＳ８８ｋに遷移する。
【０２０９】
［ステップＳ８８ｃ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットを構成する円形関連面が、円柱面、円錐面Ａ、または円環面か否かを判断する。円形関連面が、円柱面、円錐面Ａ、または円環面のいずれかである場合（ステップＳ８８ｃのＹｅｓ）、ステップＳ８８ｄに遷移する。円形関連面が、円柱面、円錐面Ａ、円環面のいずれにも該当しない場合（ステップＳ８８ｃのＮｏ）、ステップＳ８８ｇに遷移する。
【０２１０】
［ステップＳ８８ｄ］  円柱面、円錐面Ａまたは円環面のフォーマットであると判断した穴／突起面抽出部１６ｄは、円形関連面情報フォーマットに含まれる２つの円稜線のうち、穴／突起面抽出用円稜線の中心から、穴／突起面抽出用円稜線ではない稜線の中心に円中心間ベクトルを作成する。その後、ステップＳ８８ｅに遷移する。
【０２１１】
［ステップＳ８８ｅ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用基準平面の法線ベクトルと円中心間ベクトルとを比較して、ステップＳ８８ｃにて判断した円形関連面が、穴／突起のいずれを形成している面かを判断する。その後、ステップＳ８８ｆに遷移する。
【０２１２】
［ステップＳ８８ｆ］  穴／突起面抽出部１６ｄは、ステップＳ８８ｅにて判断した情報等を含む円柱面、円錐面Ａまたは円環面の円形関連面グループ情報を作成する。その後、ステップＳ８８ｈに遷移する。
【０２１３】
［ステップＳ８８ｇ］  穴／突起面抽出部１６ｄは、ドーナツ状平面の円形関連面グループ情報を作成する。その後、ステップＳ８８ｈに遷移する。
［ステップＳ８８ｈ］  穴／突起面抽出部１６ｄは、ステップＳ８８ｆまたはステップＳ８８ｇにて作成した円形関連面グループ情報を、ステップＳ８１にて用意した第１の記憶部２０２ａに記憶する。その後、ステップＳ８８ｉに遷移する。
【０２１４】
［ステップＳ８８ｉ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線を、対象面内の穴／突起面抽出用円稜線とは別の円稜線に置き換える。その後、ステップＳ８８ｊに遷移する。
【０２１５】
［ステップＳ８８ｊ］  穴／突起面抽出部１６ｄは、ステップＳ８８ｉにて置き換えられた（旧）穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットを、円形関連面情報格納部１３ａから除外する。その後、ステップＳ８８ａに遷移する。
【０２１６】
［ステップＳ８８ｋ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットに含まれる円稜線の数が１か否かを判断する。円形関連面情報フォーマットに含まれる円稜線の数が１である場合（ステップＳ８８ｋのＹｅｓ）、ステップＳ８８ｍに遷移する。円形関連面情報フォーマットに含まれる円稜線の数が１ではない場合（ステップＳ８８ｋのＮｏ）、ステップＳ８８ｗに遷移する。
【０２１７】
［ステップＳ８８ｍ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットを構成する円形関連面が、円錐面Ｂか否かを判断する。円形関連面が円錐面Ｂである場合（ステップＳ８８ｍのＹｅｓ）、ステップＳ８８ｎに遷移する。円形関連面が円錐面Ｂではない場合（ステップＳ８８ｍのＮｏ）、ステップＳ８８ｑに遷移する。
【０２１８】
［ステップＳ８８ｎ］  穴／突起面抽出部１６ｄは、円錐面Ｂのフォーマットであると判断した穴／突起面抽出部１６ｄは、円形関連面情報フォーマットに含まれる、円錐面Ｂの円稜線の中心から、円錐面Ｂの頂点への円中心間ベクトルを作成する。その後、ステップＳ８８ｏに遷移する。
【０２１９】
［ステップＳ８８ｏ］  穴／突起面抽出部１６ｄは、法線ベクトルと円中心間ベクトルを比較して、ステップＳ８８ｃにて判断した円形関連面が、穴／突起のいずれを形成している面かを判断する。その後、ステップＳ８８ｐに遷移する。
【０２２０】
［ステップＳ８８ｐ］  穴／突起面抽出部１６ｄは、円錐面Ｂの円形関連面グループ情報を作成する。その後、ステップＳ８８ｒに遷移する。
［ステップＳ８８ｑ］  穴／突起面抽出部１６ｄは、円平面の円形関連面グループ情報を作成する。その後、ステップＳ８８ｒに遷移する。
【０２２１】
［ステップＳ８８ｒ］  穴／突起面抽出部１６ｄは、ステップＳ８８ｐまたはステップＳ８８ｑにて作成した円形関連面グループ情報を第１の記憶部２０２ａに記憶する。その後、ステップＳ８８ｓに遷移する。
【０２２２】
［ステップＳ８８ｓ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円稜線のＩＤに一致する稜線のＩＤを含む円形関連面情報フォーマットを円形関連面情報格納部１３ａから除外する。その後、ステップＳ８８ｖに遷移する。
【０２２３】
［ステップＳ８８ｔ］  穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起形成稜線グループ単位情報に穴／突起面抽出用円稜線が存在するか否かを判断する。穴／突起形成稜線グループ単位情報に穴／突起面抽出用円稜線が存在する場合（ステップＳ８８ｔのＹｅｓ）、ステップＳ８８ｕに遷移する。穴／突起形成稜線グループ単位情報に穴／突起面抽出用円稜線が存在しない場合（ステップＳ８８ｔのＮｏ）、ステップＳ８８ｗに遷移する。
【０２２４】
［ステップＳ８８ｕ］  穴／突起面抽出部１６ｄは、穴／突起形成稜線グループ単位情報格納部１６ｂから穴／突起面抽出用円稜線のＩＤに一致するＩＤを有する穴／突起形成稜線グループ単位情報を除外する。その後、ステップＳ８８ｖに遷移する。
【０２２５】
［ステップＳ８８ｖ］  穴／突起面抽出部１６ｄは、第１の記憶部２０２ａに記憶されている円形関連面グループ情報を用いて穴／突起面グループ情報フォーマット１７ａを作成する。そして、穴／突起面抽出部１６ｄは、作成した穴／突起面グループ情報フォーマット１７ａを穴／突起面グループ情報格納部１７に格納する。その後、図３８および図３９に示す処理を終了する。
【０２２６】
［ステップＳ８８ｗ］  穴／突起面抽出部１６ｄは、第１の記憶部２０２ａを初期化する。その後、図３８および図３９に示す処理を終了する。
以上で、図３８および図３９に示す処理の説明を終了する。次に、ステップＳ９１のＣ処理を説明する。
【０２２７】
図４０は、Ｃ処理を示すフローチャートである。
［ステップＳ９１ａ］  穴／突起面抽出部１６ｄは、穴／突起形成面グループ情報、穴／突起詳細情報および穴／突起平面情報を一時的に記憶する第１の記憶部２０２ａを初期化する。その後、ステップＳ９１ｂに遷移する。
【０２２８】
［ステップＳ９１ｂ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線が、円弧と直線の組合せであり、かつ、円弧の数が直線の数に等しいか否かを判断する。稜線が、円弧と直線の組合せであり、かつ、円弧の数が直線の数に等しい場合（ステップＳ９１ｂのＹｅｓ）、ステップＳ９１ｃに遷移する。稜線が、円弧と直線の組合せではない、または、円弧の数が直線の数に等しくない場合（ステップＳ９１ｂのＮｏ）、ステップＳ９１ｊに遷移する。
【０２２９】
［ステップＳ９１ｃ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線の全ての円弧の半径が同じ、かつ中心角が同じか否かを判断する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線の全ての円弧の半径が同じ、かつ中心角が同じである場合（ステップＳ９１ｃのＹｅｓ）、ステップＳ９１ｄに遷移する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線の全ての円弧の半径が同じ、かつ中心角が同じではない場合（ステップＳ９１ｃのＮｏ）、図４０に示す処理を終了する。
【０２３０】
［ステップＳ９１ｄ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される全ての円弧稜線を穴／突起面抽出用円弧稜線情報に追加する。その後、ステップＳ９１ｅに遷移する。
【０２３１】
［ステップＳ９１ｅ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用円弧稜線情報内の円弧を１つ選択する。そして、穴／突起面抽出部１６ｄは、選択した円弧を第１の円弧に設定する。その後、ステップＳ９１ｆに遷移する。
【０２３２】
［ステップＳ９１ｆ］  穴／突起面抽出部１６ｄは、第１の円弧の終点に接続する直線を取得する。その後、ステップＳ９１ｇに遷移する。
［ステップＳ９１ｇ］  穴／突起面抽出部１６ｄは、第１の円弧の終点に接続する直線が存在するか否かを判断する。第１の円弧の終点に接続する直線が存在する場合（ステップＳ９１ｇのＹｅｓ）、ステップＳ９１ｈに遷移する。第１の円弧の終点に接続する直線が存在しない場合（ステップＳ９１ｇのＮｏ）、Ｃ処理を終了する。
【０２３３】
［ステップＳ９１ｈ］  穴／突起面抽出部１６ｄは、第１の円弧の終点に接続する直線に、始点で接続する第２の円弧を取得する。その後、ステップＳ９１ｉに遷移する。
［ステップＳ９１ｉ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される全ての円弧稜線についてステップＳ９１ｅ〜Ｓ９１ｈの処理を行ったか否かを判断する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される全ての円弧稜線についてステップ９１ｆ〜９１ｈの処理を行った場合（ステップＳ９１ｉのＹｅｓ）、ステップＳ９１ｓに遷移する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される全ての円弧稜線についてステップ９１ｆ〜９１ｈの処理を行っていない場合、ステップＳ９１ｅに遷移し、未選択の円弧稜線を選択し、ステップＳ９１ｆ以降の処理を引き続き行う。
【０２３４】
［ステップＳ９１ｊ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線が全て直線か否かを判断する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線が全て直線である場合（ステップＳ９１ｊのＹｅｓ）、ステップＳ９１ｋに遷移する。ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線が全て直線ではない場合（ステップＳ９１ｊのＮｏ）、Ｃ処理を終了する。
【０２３５】
［ステップＳ９１ｋ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｍ〜Ｓ９１ｒの処理にて使用する交点リストを初期化する。その後、ステップＳ９１ｍに遷移する。
［ステップＳ９１ｍ］  穴／突起面抽出部１６ｄは、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される全ての稜線間の交点の情報（以下、交点情報と言う）を交点リストに追加する。その後、ステップＳ９１ｎに遷移する。
【０２３６】
［ステップＳ９１ｎ］  穴／突起面抽出部１６ｄは、交点リストに追加された交点情報を１つ選択する。その後、ステップＳ９１ｏに遷移する。
［ステップＳ９１ｏ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｎにて選択した交点情報に含まれる交点に接続する直線を取得する。その後、ステップＳ９１ｐに遷移する。
【０２３７】
［ステップＳ９１ｐ］  穴／突起面抽出部１６ｄは、各直線の交点から各直線の交点とは別の端点へのベクトルを取得する。その後、ステップＳ９１ｑに遷移する。
［ステップＳ９１ｑ］  穴／突起面抽出部１６ｄは、ベクトル間の角度が、（１８０°−３６０°／全稜線数）に一致するか否かを判断する。ベクトル間の角度が、（１８０°−３６０°／全稜線数）に一致する場合（ステップＳ９１ｑのＹｅｓ）、ステップＳ９１ｒに遷移する。ベクトル間の角度が、（１８０°−３６０°／全稜線数）に一致しない場合（ステップＳ９１ｑのＮｏ）、Ｃ処理を終了する。
【０２３８】
［ステップＳ９１ｒ］  穴／突起面抽出部１６ｄは、交点リストに追加された全ての交点情報を選択したか否かを判断する。交点リストに追加された全ての交点情報を選択した場合（ステップＳ９１ｒのＹｅｓ）、ステップＳ９１ｓに遷移する。交点リストに追加された全ての交点情報を選択していない場合（ステップＳ９１ｒのＮｏ）、ステップＳ９１ｎに遷移し、未選択の交点情報を選択する。そして、ステップＳ９１ｏ以降の処理を引き続き行う。
【０２３９】
［ステップＳ９１ｓ］  穴／突起面抽出部１６ｄは、穴／突起面グループ情報フォーマット１７ｂを作成するＤ処理を行う。Ｄ処理が終了すると、Ｃ処理を終了する。
以上で、図４０に示す処理の説明を終了する。次に、ステップＳ９１ｓのＤ処理を説明する。
【０２４０】
図４１は、Ｄ処理を示すフローチャートである。なお、Ｄ処理は、図２０〜図２６にて説明した処理である。
［ステップＳ９１ｓａ］  穴／突起面抽出部１６ｄは、円形関連面情報格納部１３ａから、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線を持つ円形関連面情報フォーマットを抽出する。その後、ステップＳ９１ｓｂに遷移する。
【０２４１】
［ステップＳ９１ｓｂ］  穴／突起面抽出部１６ｄは、外形のみ平面情報格納部１６ｃから、ステップＳ８２にて選択された穴／突起形成稜線グループ単位情報に含まれる稜線のＩＤリストにより特定される稜線を持つ平面詳細情報フォーマットを抽出する。その後、ステップＳ９１ｓｃに遷移する。
【０２４２】
［ステップＳ９１ｓｃ］  穴／突起面抽出部１６ｄは、初期稜線ＩＤリストに含まれるＩＤの数が、ステップＳ９１ｓａ〜Ｓ９１ｓｂにて抽出した各フォーマットの面のＩＤの数に一致するか否かを判断する。初期稜線ＩＤリストに含まれるＩＤの数が、ステップＳ９１ｓａおよびステップＳ９１ｓｂにて抽出した各フォーマットの面のＩＤの数に一致する場合（ステップＳ９１ｓｃのＹｅｓ）、ステップＳ９１ｓｄに遷移する。初期稜線ＩＤリストに含まれるＩＤの数が、抽出した面のＩＤの数に一致しない場合（ステップＳ９１ｓｃのＮｏ）、Ｄ処理を終了する。
【０２４３】
［ステップＳ９１ｓｄ］  穴／突起面抽出部１６ｄは、穴／突起面抽出用基準平面とステップＳ９１ｃにて抽出した平面詳細情報フォーマットにより特定される平面間の角度が９０°か否かを判断する。穴／突起面抽出用基準平面と抽出した平面詳細情報フォーマットにより特定される平面間の角度が９０°である場合（ステップＳ９１ｓｄのＹｅｓ）、ステップＳ９１ｓｅに遷移する。穴／突起面抽出用基準平面と抽出した平面詳細情報フォーマットにより特定される平面間の角度が９０°ではない場合（ステップＳ９１ｓｄのＮｏ）、Ｄ処理を終了する。
【０２４４】
［ステップＳ９１ｓｅ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓａおよびステップＳ９１ｓｂにて抽出した各フォーマットの稜線のＩＤリストの全ての直線稜線のうち、重複するＩＤを有する直線稜線のＩＤ（１つまたは複数）を抽出する。また、抽出した直線稜線の長さも抽出する。その後、ステップＳ９１ｓｆに遷移する。
【０２４５】
［ステップＳ９１ｓｆ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｅで抽出した重複する直線稜線のＩＤから、初期稜線ＩＤリストに含まれるＩＤと重複する直線稜線のＩＤを除外する。その後、ステップＳ９１ｓｇに遷移する。
【０２４６】
［ステップＳ９１ｓｇ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｆにて重複する稜線を除外した初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起形成稜線グループ単位情報に存在するか否かを判断する。初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起形成稜線グループ単位情報に存在する場合（ステップＳ９１ｓｇのＹｅｓ）、ステップＳ９１ｓｉに遷移する。初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、穴／突起形成稜線グループ単位情報格納部１６ｂに格納されている穴／突起形成稜線グループ単位情報に存在しない場合（ステップＳ９１ｓｇのＮｏ）、ステップＳ９１ｓｈに遷移する。
【０２４７】
［ステップＳ９１ｓｈ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｆにて重複する稜線を除外した初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、外形のみ平面情報格納部１６ｃに格納されている平面詳細情報フォーマットに存在するか否かを判断する。初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、外形のみ平面情報格納部１６ｃに格納されている平面詳細情報フォーマットに存在する場合（ステップＳ９１ｓｈのＹｅｓ）、ステップＳ９１ｓｉに遷移する。初期稜線ＩＤリストに含まれるＩＤに一致するＩＤが、外形のみ平面情報格納部１６ｃに格納されている平面詳細情報フォーマットに存在しない場合（ステップＳ９１ｓｈのＮｏ）、Ｄ処理を終了する。
【０２４８】
［ステップＳ９１ｓｉ］  穴／突起面抽出部１６ｄは、初期稜線ＩＤリスト内の任意の端点から、穴／突起面抽出用基準平面とは反対側の面の穴／突起用稜線候補内の任意の端点にベクトルを作成する。その後、ステップＳ９１ｓｊに遷移する。
【０２４９】
［ステップＳ９１ｓｊ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｉにて作成したベクトルと、穴／突起面抽出用基準平面の法線ベクトル間の角度を算出することにより、ステップＳ９１ｓａまたはステップＳ９１ｓｂにて抽出したフォーマットの円形関連面または平面が、穴を形成する面か突起を形成する面かを判断する。その後、ステップＳ９１ｓｋに遷移する。
【０２５０】
［ステップＳ９１ｓｋ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｇにて一致したＩＤが穴／突起形成稜線グループ単位情報に存在する場合、その一致したＩＤを含む穴／突起平面情報を作成する。また、ステップＳ９１ｓｈにて一致したＩＤが平面詳細情報フォーマットに存在する場合、その一致したＩＤを含む穴／突起平面情報を作成する。そして、ステップＳ９１ｓｅにて抽出した直線稜線のＩＤに基づき穴／突起形成面グループ情報を作成する。さらに、ステップＳ９１ｓｅにて抽出した直線稜線の長さに基づいて、穴／突起詳細情報を作成する。そして、穴／突起面抽出部１６ｄは、穴／突起面グループ情報フォーマット１７ｂを作成する。その後、ステップＳ９１ｓｍに遷移する。
【０２５１】
［ステップＳ９１ｓｍ］  穴／突起面抽出部１６ｄは、ステップＳ９１ｓｋにて作成した穴／突起面グループ情報フォーマット１７ｂを穴／突起面グループ情報格納部１７に格納する。その後、Ｄ処理を終了する。
【０２５２】
以上で、図４１に示す処理の説明を終了する。
以上述べたように、設計支援装置１０によれば、穴／突起情報作成部１６が、平面詳細情報フォーマットに基づき穴／突起面グループ情報フォーマットを作成するようにした。そして、穴／突起名称特定部１８ｂが穴数情報を作成するようにした。穴／突起情報作成部１６および穴／突起名称特定部１８ｂの処理により、設計支援装置１０は、穴／突起の種類および穴／突起の数を正確に、かつ、自動で特定することができる。従って、設計者自身が穴／突起の種類および穴／突起の数を数える手間を省略することができる。また、設計者自身が穴／突起の種類および穴／突起の数を数えることによる、数え間違いを抑制することができる。また、あるＣＡＤアプリケーションで作成された三次元モデルのデータを他のＣＡＤアプリケーションで使用する際に変換した場合に、三次元モデルに付加された穴／突起面の穴数情報が消失してしまう場合がある。この場合にも、設計支援装置１０が穴数情報を作成することができるため、設計者は、設計者自身が穴／突起の種類および穴／突起の数を数える手間を省略することができる。
【０２５３】
なお、設計支援装置１０が行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、１つの装置が、平面詳細情報フォーマットを作成し、他の装置が、その平面詳細情報フォーマットを用いて穴／突起面グループ情報フォーマットを作成し、穴数情報をモニタ２０４ａに出力するようにしてもよい。
【０２５４】
以上、本発明の設計支援装置、設計支援方法および設計支援プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０２５５】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、設計支援装置１、１０が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０２５６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２５７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２５８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０２５９】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断する形状判断部と、
前記三次元モデルの中から、前記形状判断部により判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出する抽出部と、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成する作成部と、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出部が抽出した図形が穴を形成する図形か突起を形成する図形かを判断する判断部と、
を有することを特徴とする設計支援装置。
【０２６０】
（付記２）  前記形状判断部が、前記稜線が形成する図形が円であると判断した場合、前記作成部は、前記抽出部が抽出した図形が円筒か円錐かを判断し、円筒である場合は、前記円の中心から前記平面に設けられた稜線に対向する対向稜線が形成する円の中心への前記比較用ベクトルを作成することを特徴とする付記１記載の設計支援装置。
【０２６１】
（付記３）  前記抽出部は、前記三次元モデルの中から、前記対向稜線の形状に一致する、前記平面に設けられた稜線以外の稜線を有する図形または平面を抽出することを特徴とする付記２記載の設計支援装置。
【０２６２】
（付記４）  前記判断部は、前記抽出部が前記平面に設けられた稜線以外の稜線を有する図形を抽出した場合、抽出した前記図形が穴を形成する図形か突起を形成する図形かを判断することを特徴とする付記３記載の設計支援装置。
【０２６３】
（付記５）  前記判断部は、前記抽出部が抽出した図形が、円錐であると判断した場合、抽出した全ての図形をグループ化した情報を作成することを特徴とする付記３記載の設計支援装置。
【０２６４】
（付記６）  前記判断部は、前記抽出部が平面を抽出した場合、抽出した全ての図形をグループ化した情報を作成することを特徴とする付記３記載の設計支援装置。
（付記７）  前記形状判断部が、前記稜線が形成する図形が円であると判断した場合、前記作成部は、前記抽出部が抽出した図形が円筒か円錐かを判断し、円錐である場合は、前記円の中心から前記円錐の頂点への前記比較用ベクトルを作成することを特徴とする付記１記載の設計支援装置。
【０２６５】
（付記８）  前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度が０°である場合は、前記抽出部が抽出した図形が突起を形成する面を含む図形であると判断することを特徴とする付記１ないし７のいずれかに記載の設計支援装置。
【０２６６】
（付記９）  前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度が１８０°である場合は、前記抽出部が抽出した図形が穴を形成する面を含む図形であると判断することを特徴とする付記１ないし７のいずれかに記載の設計支援装置。
【０２６７】
（付記１０）  前記形状判断部が、前記平面に設けられた稜線が形成する図形が円弧と直線を含むと判断した場合、前記抽出部は、前記円弧および前記直線それぞれに一致する稜線を有する図形を抽出することを特徴とする付記１記載の設計支援装置。
【０２６８】
（付記１１）  前記作成部は、前記抽出部が抽出した図形で共通する稜線を抽出し、抽出した前記稜線を、前記図形が形成する穴または突起の深さ方向の稜線であると特定することを特徴とする付記１０記載の設計支援装置。
【０２６９】
（付記１２）  前記抽出部は、当該抽出部が抽出した図形の、前記平面と対向する稜線の形状に一致する対向平面を抽出し、
前記作成部は、前記平面に設けられた稜線の任意の点から、前記対向平面に設けられた稜線の任意の点に向かう前記比較用ベクトルを作成することを特徴とする付記１０または１１に記載の設計支援装置。
【０２７０】
（付記１３）  前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度の絶対値が９０°未満である場合は、前記抽出部が抽出した図形が突起を形成する面を含む図形であると判断することを特徴とする付記１０ないし１２のいずれかに記載の設計支援装置。
【０２７１】
（付記１４）  前記判断部は、前記法線ベクトルと前記比較用ベクトルの角度の絶対値が９０°以上である場合は、前記抽出部が抽出した図形が穴を形成する面を含む図形であると判断することを特徴とする付記１０ないし１２のいずれかに記載の設計支援装置。
【０２７２】
（付記１５）  前記三次元モデルの平面を形成する稜線を、前記稜線が形成する図形の形状に応じて複数のグループに分別する分別部と、
前記複数のグループのうち、前記稜線で囲まれる図形の面積が最大以外のグループを、前記平面で穴または突起を形成する稜線のグループであると判断するグループ判断部と、
をさらに有することを特徴とする付記１ないし１４のいずれかに記載の設計支援装置。
【０２７３】
（付記１６）  コンピュータが、
検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断し、
前記三次元モデルの中から、判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出し、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成し、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出した図形が穴を形成する図形か突起を形成する図形かを判断する、
ことを特徴とする設計支援方法。
【０２７４】
（付記１７）  コンピュータに、
検証対象の三次元モデルが有する平面に設けられ、前記平面に穴の入り口または突起のベースを形成する稜線の形状を判断し、
前記三次元モデルの中から、判断された前記稜線の形状の少なくとも一部に一致する稜線を有する図形を抽出し、
抽出した図形の種別に応じて前記平面の法線ベクトルの方向と比較する比較用ベクトルを作成し、
前記法線ベクトルと前記比較用ベクトルの角度に応じて、前記抽出した図形が穴を形成する図形か突起を形成する図形かを判断する、
処理を実行させることを特徴とする設計支援プログラム。
【符号の説明】
【０２７５】
１、１０  設計支援装置
１ａ  三次元モデル格納部
１ｂ  形状判断部
１ｃ  抽出部
１ｄ  作成部
１ｅ  判断部
１ｆ  グループ情報作成部
１ｇ  表示部
１１  ３Ｄモデル格納部
１２  ３Ｄ面分類部
１２ａ  ３Ｄ面抽出部
１２ｂ  面形状分類部
１２ｃ  面情報作成部
１３  ３Ｄ面情報格納部
１３ａ  円形関連面情報格納部
１３ｂ  平面情報格納部
１３ｃ  その他の面情報格納部
１４  平面内稜線情報分類部
１４ａ  グループ分類部
１４ｂ  平面詳細情報作成部
１５  平面詳細情報格納部
１６  穴／突起情報作成部
１６ａ  穴／突起形成稜線抽出部
１６ｂ  穴／突起形成稜線グループ単位情報格納部
１６ｃ  外形のみ平面情報格納部
１６ｄ  穴／突起面抽出部
１７  穴／突起面グループ情報格納部
１７ａ、１７ｂ  穴／突起面グループ情報フォーマット
１７０ａ  円形関連面グループ情報格納領域
１７０ｂ、１７０ｅ  平面情報格納領域
１７０ｃ  穴／突起形成面情報格納領域
１７０ｄ  穴／突起詳細情報格納領域
１７１ａ、１７２ａ  円形関連面グループ情報
１７３ａ  平面情報
１７１ｂ、１７２ｂ  穴／突起形成面グループ情報
１７３ｂ  穴／突起詳細情報
１７４ｂ  穴／突起平面情報
１８  穴／突起特定部
１８ａ  穴形状別面構成データベース格納部
１８１ａ  穴形状別面構成データベース
１８ｂ  穴／突起名称特定部
１９  穴／突起情報表示部
１９ａ  穴数情報管理テーブル
４１〜４７  円形関連面情報フォーマット
４８  平面情報フォーマット
４９  その他の面情報フォーマット
７１〜７４  平面詳細情報フォーマット
７１ａ〜７１ｅ  穴／突起形成稜線グループ単位情報
【図１】
0005760604.tif 000002
【図２】
0005760604.tif 000003
【図３】
0005760604.tif 000004
【図４】
0005760604.tif 000005
【図５】
0005760604.tif 000006
【図６】
0005760604.tif 000007
【図７】
0005760604.tif 000008
【図８】
0005760604.tif 000009
【図９】
0005760604.tif 000010
【図１０】
0005760604.tif 000011
【図１１】
0005760604.tif 000012
【図１２】
0005760604.tif 000013
【図１３】
0005760604.tif 000014
【図１４】
0005760604.tif 000015
【図１５】
0005760604.tif 000016
【図１６】
0005760604.tif 000017
【図１７】
0005760604.tif 000018
【図１８】
0005760604.tif 000019
【図１９】
0005760604.tif 000020
【図２０】
0005760604.tif 000021
【図２１】
0005760604.tif 000022
【図２２】
0005760604.tif 000023
【図２３】
0005760604.tif 000024
【図２４】
0005760604.tif 000025
【図２５】
0005760604.tif 000026
【図２６】
0005760604.tif 000027
【図２７】
0005760604.tif 000028
【図２８】
0005760604.tif 000029
【図２９】
0005760604.tif 000030
【図３０】
0005760604.tif 000031
【図３１】
0005760604.tif 000032
【図３２】
0005760604.tif 000033
【図３３】
0005760604.tif 000034
【図３４】
0005760604.tif 000035
【図３５】
0005760604.tif 000036
【図３６】
0005760604.tif 000037
【図３７】
0005760604.tif 000038
【図３８】
0005760604.tif 000039
【図３９】
0005760604.tif 000040
【図４０】
0005760604.tif 000041
【図４１】
0005760604.tif 000042