(57)【要約】【課題】３Ｄモデルの部分形状を簡単な操作で検索することを課題とする。【解決手段】情報検索装置１は、３Ｄモデル（three  dimensional  model）の類似部分の検索時に利用者による指定点を含む複数の断面を求め、最小の断面を部品の体積が小さい方に移動させ、移動前後の断面が挟む部分形状を比較範囲とする。そして、情報検索装置１は、３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部２ｂに記憶された部分モデルの中から、比較範囲とした部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する。【選択図】図１
2011150667.tif 000002
【特許請求の範囲】
【請求項１】
部品を表す３Ｄモデルを記憶する３Ｄモデル記憶部と、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部と、
表示部に表示された３Ｄモデル上で、起点とする位置の指定を受け付ける受付部と、
前記３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付部によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出部と、
前記断面算出部によって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出部と、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出部による指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定部と、
前記移動方向決定部によって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出部と、
前記部分モデル抽出部によって抽出された部分モデルの特徴量を算出する特徴量算出部と、
前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出部によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索部と
を有することを特徴とする情報検索装置。
【請求項２】
前記部分モデル抽出部は、前記基準断面と平行に前記断面を移動させるか、或いは前記基準断面との間で面の向きが所定の角度まで変化することを許容して前記断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出することを特徴とする請求項１に記載の情報検索装置。
【請求項３】
前記部分モデル抽出部は、前記３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭に沿って前記断面をさらに移動させることにより他の部分モデルを抽出し、
前記特徴量算出部は、前記部分モデル抽出部によって前記部分モデルとともに抽出された他の部分モデルの特徴量をさらに算出し、
前記検索部は、前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出部によって算出された各部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索することを特徴とする請求項２に記載の情報検索装置。
【請求項４】
前記検索部によって各部分モデルごとに検索された検索結果の数が所定の最適値に近い度合いを示す評価値を算出する評価値算出部と、
前記検索部によって検索された各部分モデルの検索結果のうち、前記評価値算出部によって算出された評価値が最も高い部分モデルの検索結果を選択する検索結果選択部とをさらに有することを特徴とする請求項３に記載の情報検索装置。
【請求項５】
前記検索部による検索結果として得られた部分モデルのうち、最も高い類似度を有する部分モデルを選択する検索結果選択部をさらに有することを特徴とする請求項３に記載の情報検索装置。
【請求項６】
表示部に表示された部品を表す３Ｄモデル上で、起点とする位置の指定を受け付ける受付手順と、
前記３Ｄモデルを記憶する３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付手順によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出手順と、
前記断面算出手順によって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出手順と、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出手順による指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定手順と、
前記移動方向決定手順によって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出手順と、
前記部分モデル抽出手順によって抽出された部分モデルの特徴量を算出する特徴量算出手順と、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出手順によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索手順と
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項７】
表示部に表示された部品を表す３Ｄモデル上で、起点とする位置の指定を受け付ける受付ステップと、
前記３Ｄモデルを記憶する３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付ステップによって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出ステップと、
前記断面算出ステップによって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出ステップと、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出ステップによる指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定ステップと、
前記移動方向決定ステップによって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出ステップと、
前記部分モデル抽出ステップによって抽出された部分モデルの特徴量を算出する特徴量算出ステップと、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出ステップによって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索ステップと
をコンピュータが実行することを特徴とする情報検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報検索装置、情報検索プログラム及び情報検索方法に関する。
【背景技術】
【０００２】
近年、商品の多品種少量化が進むに伴って類似する製品の開発が並行して進行することが多くなっている。かかる開発体制下では、ある製品の開発で得られた技術や知識などのノウハウ（know-how）を他の製品の開発においても有効に活用することが開発効率を向上させるために重要である。
【０００３】
このようなノウハウを共有するための仕組みとして、ナレッジマネージメントシステム（knowledge  management  system）と呼ばれる情報提供システムが知られている。ナレッジマネージメントシステムは、各種のノウハウを記述した知識情報をデータベース（data  base）に蓄積する。例えば、ナレッジマネージメントシステムは、３Ｄモデル（three  dimensional  model）で表現された部品と、その部品の不具合などを示す障害情報などが記載された文書とを関連付けてデータベースに保存する。
【０００４】
このナレッジマネージメントシステムによれば、利用者は、自身が指定する部品に関する知識情報をデータベースから検索することができる。これを説明すると、ナレッジマネージメントシステムでは、利用者が設計に使用する部品の３Ｄモデルを検索キー（key）として受け付ける。そして、ナレッジマネージメントシステムでは、検索キーとして受け付けた部品に類似する部品をデータベース内の３Ｄモデルから検索し、検索した３Ｄモデルとともにその３Ｄモデルに関連付けられた障害情報を出力する。このような障害情報の検索により、利用者は、過去の障害情報をもとに新製品設計時に予めその不具合を回避するような設計を行うことができる。なぜなら、製品の不具合の多くは、製品に含まれる部分の３次元的な形状に由来することが多く、過去に不具合の原因となった部分と形状が類似する部分を使用すると、同じような障害が出る可能性が高くなるからである。
【０００５】
ここで、検索キーの最小単位を３Ｄモデル全体としたのでは、その３Ｄモデルに含まれる複数の部位に異なる障害情報がデータベースに登録されていた場合に目的とする障害情報とともにそれ以外の障害情報も検索結果として出力されることになる。この場合、利用者は、検索結果の中から目的の部位に関する障害情報を選別して検索結果を閲覧する必要がある。このため、３Ｄモデルの中でも目的とする部位以外の障害情報が含まれる事態を避けるために、３Ｄモデルに含まれる部分形状を検索する仕組みが提案されている。
【０００６】
このように３Ｄモデルの部分形状を検索するための手法としては、利用者に検索キーとする３Ｄモデルの部分形状を直接指定させる従来技術１が存在する。また、セグメンテーション（segmentation）方式で３Ｄモデルが予め分割された部分モデルを利用者に選択させる従来技術２が存在する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２２２４２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術１及び２は、以下に説明するように、３Ｄモデルの部分形状を簡単な操作で検索することができないという問題がある。
【０００９】
一例として、ポリゴンモデル（polygon  model）によって形成される３Ｄモデルが表示された画像上で利用者に部分形状を指定または選択させる場合を想定する。例えば、従来技術１の場合には、利用者が目的とする部分形状が選択された状態になるまでポリゴンを１つずつ指定する操作を繰り返す必要があり、検索キーを入力するための操作が煩雑となる。また、従来技術１では、利用者がポインティングデバイス（pointing  device）を用いて目的とする部分形状を範囲指定する操作を行うこともできる。ところが、この場合には、３Ｄモデルに含まれる３次元の部分形状を２次元の枠で囲うように指定する必要があるので、利用者が意図する部分形状を選択するまで何度も繰り返し範囲指定を行う必要がある。また、従来技術２の場合には、セグメンテーション方式で分割された部分モデルと、利用者が目的とする部分形状とが必ずしも一致するとは限らない。このため、結局は、従来技術１のように利用者が３Ｄモデルの部分形状を直接指定する必要がある。
【００１０】
なお、この問題は、３Ｄモデルがポリゴンモデルによって表現される場合だけに生じるものではない。例えば、３Ｄモデルが曲面によるサーフィスモデル（surface  model）やボリュームデータ（volume  data）形式によって表現される場合にも同様に生じる問題である。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、３Ｄモデルの部分形状を簡単な操作で検索することができる情報検索装置、情報検索プログラム及び情報検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報検索装置は、部品を表す３Ｄモデルを記憶する３Ｄモデル記憶部と、前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部とを有する。さらに、前記情報検索装置は、表示部に表示された３Ｄモデル上で、起点とする位置の指定を受け付ける受付部を有する。さらに、前記情報検索装置は、前記３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付部によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に３Ｄモデルを分断する複数の断面を算出する断面算出部を有する。この断面算出部は、前記受付部によって指定が受け付けられた起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する。さらに、前記情報検索装置は、前記断面算出部によって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出部を有する。さらに、前記情報検索装置は、前記複数の断面のうち大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定部を有する。この移動方向決定部は、基準断面と、該基準断面によって分断される立体のうち前記指標算出部による指標の算出結果が最小となる立体との位置関係に基づき、断面の移動方向を決定する。さらに、前記情報検索装置は、前記移動方向決定部によって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出部を有する。さらに、前記情報検索装置は、前記部分モデル抽出部によって抽出された部分モデルの特徴量を算出する特徴量算出部を有する。さらに、情報検索装置は、前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出部によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索部を有する。
【発明の効果】
【００１３】
本願の開示する情報検索装置の一つの態様によれば、３Ｄモデルの部分形状を簡単に検索することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る情報検索装置の構成を示すブロック図である。
【図２】図２は、実施例２に係る情報検索装置の構成を示すブロック図である。
【図３】図３は、特徴量テーブルに記憶される情報の構成例を示す図である。
【図４】図４は、モデルテーブルに記憶される情報の構成例を示す図である。
【図５】図５は、点テーブルに記憶される情報の構成例を示す図である。
【図６】図６は、面テーブルに記憶される情報の構成例を示す図である。
【図７】図７は、交差判定テーブルに記憶される情報の構成例を示す図である。
【図８】図８は、辺テーブルに記憶される情報の構成例を示す図である。
【図９】図９は、輪郭拡張候補テーブルに記憶される情報の構成例を示す図である。
【図１０】図１０は、断面候補の取得要領を説明するための説明図である。
【図１１】図１１は、断面候補の取得要領を説明するための説明図である。
【図１２】図１２は、輪郭点テーブルに記憶される情報の構成例を示す図である。
【図１３】図１３は、輪郭辺テーブルに記憶される情報の構成例を示す図である。
【図１４】図１４は、輪郭点、輪郭辺及び輪郭距離の算出要領を説明するための説明図である。
【図１５】図１５は、輪郭テーブルに記憶される情報の構成例を示す図である。
【図１６】図１６は、輪郭計算テーブルに記憶される情報の構成例を示す図である。
【図１７】図１７は、部分面テーブルに記憶される情報の構成例を示す図である。
【図１８】図１８は、部分点テーブルに記憶される情報の構成例を示す図である。
【図１９】図１９は、検索結果テーブルに記憶される情報の構成例を示す図である。
【図２０】図２０は、実施例２に係る全体処理の手順を示すフローチャートである。
【図２１】図２１は、実施例２に係る基準断面輪郭取得処理の手順を示すフローチャートである。
【図２２】図２２は、実施例２に係る拡張方向決定処理の手順を示すフローチャートである。
【図２３】図２３は、実施例２に係る拡張処理の手順を示すフローチャートである。
【図２４】図２４は、実施例２に係る部分モデル生成処理の手順を示すフローチャートである。
【図２５】図２５は、実施例２に係る類似検索処理の手順を示すフローチャートである。
【図２６】図２６は、実施例２に係る検索結果選択処理の手順を示すフローチャートである。
【図２７】図２７は、実施例２に係る輪郭取得処理の手順を示すフローチャートである。
【図２８】図２８は、実施例２に係る効果を説明するための説明図である。
【図２９】図２９は、実施例２に係る効果を説明するための説明図である。
【図３０】図３０は、実施例２に係る効果を説明するための説明図である。
【図３１】図３１は、実施例２に係る効果を説明するための説明図である。
【図３２】図３２は、実施例３に係る情報検索プログラムを実行するコンピュータの一例について説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報検索装置、情報検索プログラム及び情報検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００１６】
図１は、実施例１に係る情報検索装置の構成を示すブロック図である。図１に示す情報検索装置１は、３Ｄモデル記憶部２ａと、部分モデル記憶部２ｂと、受付部３と、断面算出部４と、指標算出部５と、移動方向決定部６と、部分モデル抽出部７と、特徴量算出部８と、検索部９とを有する。
【００１７】
このうち、３Ｄモデル記憶部２ａは、部品を表す３Ｄモデルを記憶する。部分モデル記憶部２ｂは、３Ｄモデルにおける部分形状を表す部分モデルを記憶する。また、受付部３は、表示部に表示された３Ｄモデル上で、起点とする位置の指定を受け付ける。
【００１８】
断面算出部４は、３Ｄモデル記憶部２ａに記憶された３Ｄモデルのうち受付部３によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に３Ｄモデルを分断する複数の断面を算出する。この断面算出部４は、受付部３によって指定が受け付けられた起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む３Ｄモデルを分断する複数の断面を算出する。
【００１９】
指標算出部５は、断面算出部４によって算出された断面によって３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する。
【００２０】
移動方向決定部６は、複数の断面のうち大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する。この移動方向決定部６は、基準断面と、該基準断面によって分断される立体のうち指標算出部５による指標の算出結果が最小となる立体との位置関係に基づき、断面の移動方向を決定する。
【００２１】
部分モデル抽出部７は、移動方向決定部６によって決定された方向へ断面を移動させることにより基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する。特徴量算出部８は、部分モデル抽出部７によって抽出された部分モデルの特徴量を算出する。また、検索部９は、部分モデル記憶部２ｂに記憶された部分モデルのうち、特徴量算出部８によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する。
【００２２】
このように、情報検索装置１では、利用者が３Ｄモデルの類似部分を検索する場合に入力させる操作を起点を指定させる操作に集約した。このような操作の集約を実現するために、情報処理装置１では、利用者が３Ｄモデルの部分形状を指定するにあたって行う操作感覚を利用している。
【００２３】
すなわち、利用者は、３Ｄモデル全体から自身が比較範囲としたい部分形状を区切るのに、３Ｄモデルの中側から部分形状の境界を始めに指定し、その境界から端に向かって拡大することにより、全体から部分を区切る操作を直感的に行う。なぜなら、中側から端に区切る操作を行った方が、既に指定した部分から比較範囲から除外したい特定の部分を除く操作を行う手間がなく、意図しない部位の形状を含まない最小の部分形状を指定しやすいからである。このような操作を利用者が行う場合には、利用者が始めに指定した位置が区切る複数の立体のうち利用者がより小さい立体の方を全体から区切る意図を持つ可能性が高いことがわかる。なぜなら、大きい立体には、利用者が指定を意図しない部分形状が含まれる可能性が高く、利用者がより大きい立体に含まれる部分形状の方を全体から区切る意図を持つ場合には、３Ｄモデル上で別の位置を指定すると想定されるからである。
【００２４】
このことから、情報検索装置１では、３Ｄモデルの類似部分の検索時に利用者による指定点を含む複数の断面を求め、最小の断面を部品の体積が小さい方に移動させ、移動前後の断面が挟む部分形状を検索キーとする。このため、情報検索装置１では、利用者から３Ｄモデル上で起点とする位置を受け付けるだけで、検索キーとする部分モデルを抽出して部分モデル記憶部２ｂに対する検索を実行できる。したがって、本実施例に係る情報検索装置１によれば、３Ｄモデルの部分形状を簡単な操作で検索することができる。
【実施例２】
【００２５】
［情報検索装置１０の構成］
続いて、実施例２に係る情報検索装置１０について説明する。図２は、実施例２に係る情報検索装置の構成を示すブロック図である。図２に示す情報検索装置１０は、３Ｄモデル（three  dimensional  model）を用いて製品を製図する設計支援アプリを搭載した情報処理装置であり、入力部１１と、表示部１２と、記憶部１３と、制御部１４とを有する。なお、以下では、ポリゴンモデルによって表現される３Ｄモデルの部分形状を検索する場合を例示するが、３Ｄモデルが曲面によるサーフィスモデル（surface  model）やボリュームデータ（volume  data）形式によって表現される場合にも同様に適用できる。
【００２６】
このうち、入力部１１は、各種情報、例えば３Ｄモデル上で起点とする位置の指定を受け付ける入力デバイスであり、例えば、キーボードやマウスなどである。この入力部１１は、後述の表示部１２と協働して、ポインティングデバイス機能を実現する。また、表示部１２は、各種の情報、例えば実際の部品がポリゴンモデルで表現された３Ｄモデルなどを表示する表示デバイスであり、例えば、モニタ、ディスプレイやタッチパネルなどである。なお、ここでは、マウスによってポインティングデバイス機能が実現される場合を説明するが、タッチパッドなどの他の入力デバイスによりポインティングデバイス機能が実現される場合にも同様に適用できる。
【００２７】
かかる「起点」とする位置の指定は、利用者が３Ｄモデル全体から自身が比較範囲としたい部分形状を区切るのに際して、３Ｄモデルの中側から部分形状の境界を指定する意義を含み得る。この起点に基づき、後述の制御部１４内の各種機能部によって部分形状の検索を行う比較範囲が部分モデルとして抽出される。
【００２８】
記憶部１３は、例えば、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１３は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００２９】
この記憶部１３は、制御部１４で実行される各種プログラム、例えばＯＳ（Operating  System）や設計支援アプリやそのプログラムの実行に必要なデータを記憶する。このほか、記憶部１３は、例えば部分モデルデータ１３ａと、３Ｄモデルデータ１３ｃと、各種テーブルデータ１３ｃとを記憶する。
【００３０】
部分モデルデータ１３ａは、３Ｄモデルにおける部分形状を表す部分モデルに関するデータである。ここで、かかる部分モデルデータ１３ａとしては、各種部品の３Ｄモデルに含まれる部分モデルのうち、例えば過去に不具合が発見された部分モデルに関する情報が新製品設計時の被検索対象として予め登録される。なお、被検索対象の部分モデルの登録要件は、過去に不具合が発見されたことに限らず、過去のノウハウから推奨される部分モデルなどの他の要件であってもかまわない。
【００３１】
この部分モデルデータ１３ａは、部分モデルを一意に特定する部分モデルＩＤ（identification）ごとにその部分モデルの特徴量を記憶した特徴量テーブルを含む。図３は、特徴量テーブルに記憶される情報の構成例を示す図である。図３の例で言えば、部分モデルＩＤが「０」である部分モデルの３次元形状の特徴量として「・・・」が記憶された例を示す。この図３に示す例では、特徴量をブランクで表現したが、実際には部分モデルのベクトル情報などが記憶される。
【００３２】
なお、ここでは、被検索対象の部分モデルに関する情報として部分モデルの特徴量を記憶する特徴量テーブルを例示したが、開示の装置では、特徴量以外の情報を記憶することとしてもよい。例えば、開示の装置では、部分モデルの画像のほか、部分モデルの不具合などを示す障害情報などが記載された文書をさらに記憶することもできる。また、ここでは、部分モデルの特徴量を記憶する場合を説明したが、必ずしも部分モデルの特徴量を予め記憶しておく必要はない。例えば、開示の装置は、部分モデルの形状を定義するポリゴンの頂点と各頂点の組合せとを記憶し、検索時には被検索対象の部分モデルの形状から部分モデルの特徴量を随時算出することとしてもよい。
【００３３】
３Ｄモデルデータ１３ｂは、部品を表す３Ｄモデルに関するデータである。この３Ｄモデルデータ１３ｂは、３Ｄモデルを一意に特定するモデルＩＤごとにその３Ｄモデルのモデルデータを記憶したモデルテーブルを含む。図４は、モデルテーブルに記憶される情報の構成例を示す図である。図４に示す例では、モデルＩＤが「０」である部分モデルのモデルデータとして「・・・」が記憶されたことを示す。この図４に示すモデルデータとしては、３Ｄモデルを形成するポリゴンに関する情報が記憶される。このモデルデータの一例としては、３角形ポリゴンを定義する３つの頂点と頂点の組合せを特定する２つのテーブル、すなわちポリゴンの頂点を定義する点テーブルと、ポリゴンの面を定義する面テーブルとが含まれる。
【００３４】
このうち、点テーブルは、ポリゴンの頂点を一意に特定するための点ＩＤごとにその頂点のＸ座標、Ｙ座標及びＺ座標を記憶したテーブルである。図５は、点テーブルに記憶される情報の構成例を示す図である。図５に示す例では、点ＩＤ「０」の頂点の座標が（１０，１５，−２０）であることを示す。さらに、点ＩＤ「１」の頂点の座標が（１５，５０，−３０）であることを示す。また、点ＩＤ「２」の頂点の座標が（５，−１０，２０）であることを示す。
【００３５】
面テーブルは、ポリゴンの面を一意に特定するための面ＩＤごとにその面に含まれる頂点の点ＩＤを記憶したテーブルである。図６は、面テーブルに記憶される情報の構成例を示す図である。図６に示す例では、面ＩＤ「０」の面が点ＩＤ「０」、点ＩＤ「１」及び点ＩＤ「２」の３つの頂点を含んで構成される面であることを示す。つまり、図５で示した点ＩＤの「０」、「１」及び「２」の３点が同一の３角形ポリゴンを定義する各頂点に対応することを示す。なお、この図６で点ＩＤの末尾に付される括弧付きの番号は、テーブルへ登録された順序を指し、（１）であれば１つ目、（２）であれば２つ目、（３）であれば３つ目であること示す。かかる登録順序は、面テーブル使用時の処理結果に及ぼすものではなく、必ずしも区別して登録される必要はない。
【００３６】
なお、ここでは、３Ｄモデルが３角形ポリゴンで表現される場合を想定して以下の説明を行うが、開示の装置の適用範囲が３角形ポリゴンに限定されるものではなく、３Ｄモデルが任意の多角形ポリゴンで表現される場合に同様に適用できる。
【００３７】
各種テーブルデータ１３ｃは、後述の制御部１４内の各機能部の処理過程で生成されるテーブル群である。なお、各テーブルの詳細はそれぞれのテーブルがどのようにして生成されるか、或いはテーブルがどのような処理に使用されるかについては後述の制御部１４内の各機能部の説明で述べる。また、各テーブルは、必ずしもテーブルの形式を取る必要はなく、テーブルの構成以外のデータベースを用いてもよい。
【００３８】
制御部１４は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、または、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００３９】
この制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１４は、図２に示すように、起点対応面取得部１４ａと、輪郭取得部１４ｂと、基準断面輪郭取得部１４ｃと、拡張方向決定部１４ｄと、拡張処理部１４ｅと、部分モデル生成部１４ｆと、類似検索部１４ｇと、結果選択部１４ｈとを有する。
【００４０】
このうち、起点対応面取得部１４ａは、入力部１１を介して指定を受け付けた起点の法線方向を指す直線と交わる３Ｄモデルのポリゴンの面を取得する処理部である。すなわち、起点対応面取得部１４ａは、利用者により指定された起点から３Ｄモデルの視点方向へ向かう直線と、記憶部１３に３Ｄモデルデータ１３ｂとして記憶された面テーブルの全ての面ＩＤの面との間で交差判定を行う。これによって、起点対応面取得部１４ａは、直線と交わるポリゴンの面ＩＤを取得する。
【００４１】
ここで、利用者により入力部１１を介して指定される起点が２次元座標である一方で、面テーブルで面ＩＤに対応付けて記憶される点ＩＤは３次元座標である。このため、起点対応面取得部１４ａは、面テーブルで面ＩＤに対応付けて記憶された３つの点ＩＤ（１）〜点ＩＤ（３）を点テーブルから取り出し、これら３つの点ＩＤ（１）〜点ＩＤ（３）の３次元座標を投影座標である２次元座標へ変換する。
【００４２】
この３次元座標から２次元座標へ変換する式は、ｘ´、ｙ´を点の２次元座標とし、ｘ、ｙ、ｚを３次元座標とし、ｆを焦点距離としたとき、下記の式（１）及び式（２）で表される。なお、焦点距離ｆは、予め定めた値であり、視点の画角に依存するものである。
【００４３】
【数１】
2011150667.tif 000003
【００４４】
【数２】
2011150667.tif 000004
【００４５】
上記の式（１）及び式（２）のｘ、ｙ、ｚへ点ＩＤ（１）の３次元座標を代入することにより、点ＩＤ（１）の２次元座標（ｘ´，ｙ´）を得ることができる。同様にして、起点対応面取得部１４ａは、式（１）及び式（２）を用いることにより、点ＩＤ（２）及び点ＩＤ（３）の２次元座標を得ることができる。このようにして、起点対応面取得部１４ａは、各面ＩＤに対応する３つの頂点の点ＩＤの２次元座標を得る。なお、ここでは、上記の式（１）及び（２）を用いて２次元座標を算出する例を説明したが、点テーブルに記憶された各点ＩＤの３次元座標を予め２次元座標に変換して記憶部１３に登録しておくこととしてもよい。
【００４６】
このようにしてポリゴンを定義する頂点の座標を投影座標である２次元座標へ変換した上で、起点対応面取得部１４ａは、利用者により指定された起点及び３Ｄモデルの注視点を通る直線との間で交差判定を行う。かかる直線と面の交差判定は、下記の式（３）〜式（５）を用いて、内積に基づき判定することができる。なお、下記の式（３）〜式（５）では、ｘｖ´、ｙｖ´は起点の２次元座標であるものとする。同様に、ｘ１´、ｙ１´は、ポリゴンの３つの頂点のうち１つ目の頂点である点ＩＤ（１）の投影座標である。同様に、ｘ２´、ｙ２´は、２つ目の頂点である点ＩＤ（２）の投影座標である。同様に、ｘ３´、ｙ３´は、３つ目の頂点である点ＩＤ（３）の投影座標であるものとする。
【００４７】
【数３】
2011150667.tif 000005
【００４８】
【数４】
2011150667.tif 000006
【００４９】
【数５】
2011150667.tif 000007
【００５０】
上記の式（３）〜式（５）それぞれに起点の２次元座標及び点ＩＤ（１）〜（３）の投影座標を代入することによりｆ１、ｆ２、ｆ３の値が得られる。そして、起点対応面取得部１４ａは、このようにして得られたｆ１、ｆ２、ｆ３の値の中に異なる符号を持つものが存在するか否かによって直線と面が交差しているか否かを判定する。このとき、起点対応面取得部１４ａは、ｆ１、ｆ２、ｆ３の値の中に異なる符号を持つものが存在しない場合には、直線と面が交差するものと判定する。つまり、ｆ１≧０、ｆ２≧０かつｆ３≧０である場合、またはｆ１≦０、ｆ２≦０かつｆ３≦０である場合に、起点対応面取得部１４ａは、直線と面が交差するものと判定する。
【００５１】
このようにして交差判定を行った後に、起点対応面取得部１４ａは、直線と面が交差する場合には、その交点を算出する。例えば、直線と面の交点のＺ座標を求める場合を想定する。ここで、３点ｐ１、ｐ２、ｐ３を通る平面の方程式は、法線ベクトルｎをｎ＝（ｐ２−ｐ１）×（ｐ３−ｐ１）として、ｎ（ｐ−ｐ１）で表される。このとき、直線と面の交点の座標を（ｘｖ、ｙｖ、ｚｖ）とし、ｎ（ｐ−ｐ１）をｘ、ｙ、ｚの各成分に分解すると、下記の式（６）となる。なお、式（６）におけるｐ１ｘは点ｐ１のＸ座標を指し、ｐ１ｙは点ｐ１のＹ座標を指し、また、ｐ１ｚは点ｐ１のＺ座標を指す。
【００５２】
【数６】
2011150667.tif 000008
【００５３】
さらに、上記の式（１）及び（２）に示した３次元座標に交点（ｘｖ、ｙｖ、ｚｖ）をあてはめてｘｖ及びｙｖを求める下記の式（７）及び（８）へ変形した上で、これら式（７）及び式（８）を上記の式（６）へ代入すると式（９）が得られる。
【００５４】
【数７】
2011150667.tif 000009
【００５５】
【数８】
2011150667.tif 000010
【００５６】
【数９】
2011150667.tif 000011
【００５７】
上記の式（９）に既知である値それぞれを代入することにより、起点対応面取得部１４ａは、交点のＺ座標の値ｚｖを得る。同様にして、起点対応面取得部１４ａは、交点のＸ座標の値ｘｖ及び交点のＹ座標の値ｙｖの値を得る。
【００５８】
そして、起点対応面取得部１４ａは、このようにして得られた交点（ｘｖ、ｙｖ、ｚｖ）を直線と交差する面の面ＩＤに対応付けた交差判定テーブルを生成し、生成した交差判定テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、交差判定テーブルが既に生成されている場合には、新たにレコードを追加する形で面ＩＤ及び交点の座標を含むレコードが追加される。
【００５９】
この交差判定テーブルは、直線と交差するポリゴンの面ＩＤごとにその交点のＸ座標、Ｙ座標及びＺ座標を記憶したテーブルである。図７は、交差判定テーブルに記憶される情報の構成例を示す図である。図７に示す例で言えば、図６に示した面テーブル及び図５に示した点テーブルを用いて交差判定を行った結果、面ＩＤ「０」のポリゴンが座標（１０，１５，−１０）で直線と交わることを示す。
【００６０】
このように、起点対応面取得部１４ａは、利用者により指定された起点から３Ｄモデルの視点方向である注視点へ向かう直線と、面テーブルに記憶された全ての面ＩＤの面との間で交差判定を行い、両者が交差する場合にはその交点を交差判定テーブルに登録する。なお、ここでは、起点から３Ｄモデルの視点方向へ向かう直線としたが、起点から画面に対する鉛直方向に向かう直線と面との間で交差判定及び交点の算出を行うようにしてもよい。
【００６１】
そして、直点と交差する面ＩＤが交差判定テーブルに複数登録されている場合には、起点対応面取得部１４ａは、交差判定テーブルに記憶された交点のＺ座標のうち最もＺ座標が大きい面ＩＤを輪郭取得部１４ｂ及び／又は基準断面輪郭取得部１４ｃへ出力する。このように、交点のＺ座標のうち最もＺ座標が大きい面ＩＤを選択して出力するのは、利用者が画面の奥側に表示される部分形状を指定する意図を持っている事態は想定されにくいからである。なお、以下では、利用者によって指定された起点から３Ｄモデルの視点方向へ向かう直線のことを「起点対応線」と呼ぶ。さらに、以下では、起点対応線と交わるポリゴンのうち、最もＺ座標が大きいポリゴンのことを「起点対応面」と呼ぶ。
【００６２】
また、起点対応線と起点対応面との交点が起点対応面の頂点または辺である場合には、同一の交点で１つの起点対応線に対し、複数の起点対応面が発生することになる。この場合には、起点対応面の中で最も面が大きいものや交点となった頂点が共有する二辺の角度が最も大きい起点対応面だけに交点が含まれるように起点の２次元座標をシフトさせた上で交差判定テーブルのテーブル値が再計算されるものとする。
【００６３】
図２の説明に戻り、輪郭取得部１４ｂは、起点対応面取得部１４ａによって取得された面ＩＤを持つポリゴンから派生する輪郭を取得する処理部である。すなわち、輪郭取得部１４ｂは、起点対応面取得部１４ａによって取得された起点対応面であるポリゴンから派生する輪郭がなだらかである限りは、１つの部分モデルとして纏めるに相応しい形状が続くものとしてその輪郭を取得する。なぜなら、３Ｄモデルでは、略平行な面が凸凹によって分割された状態で部分モデルとして区分けされるのが好ましいからである。この輪郭取得部１４ｂによる輪郭の取得結果は、後述の基準断面輪郭取得部１４ｃによって取得された基準断面を後述の拡張処理部１４ｅが拡張するにあたってどこまで拡張するのかを決定する基準として用いられる。
【００６４】
これを説明すると、輪郭取得部１４ｂは、面テーブルを用いて辺テーブルを生成し、さらには、辺テーブルを用いて輪郭テーブルを生成することにより、１つの部分モデルとして纏めるに相応しい形状が続く輪郭を取得する。
【００６５】
辺テーブルは、ポリゴンの一辺を一意に特定するための辺ＩＤごとにその線分を定義する２つの頂点の点ＩＤ、一辺を共有する２つのポリゴンの面ＩＤを記憶したテーブルである。図８は、辺テーブルに記憶される情報の構成例を示す図である。図８に示す例では、辺ＩＤ「０」の辺が点ＩＤ「０」及び点ＩＤ「１」の２つの頂点によって定義されるとともに、面ＩＤ「０」及び面ＩＤ「１」の２つのポリゴンによって共有されることを示す。なお、この図９で点ＩＤ及び面ＩＤの末尾に付される括弧付きの番号は、テーブルへ登録された順序を指し、（１）であれば１つ目、（２）であれば２つ目であること示す。かかる登録順序は、テーブル使用時の処理結果に及ぼすものではなく、必ずしも区別して登録される必要はない。
【００６６】
ここで、３Ｄモデルが３角形ポリゴンによって表現される場合には、ポリゴンの一辺を３つの面が共有した状態、いわゆる三面稜線が存在しない。このため、３Ｄモデルに空洞がなく閉じていれば、ポリゴンの一辺は、隣接する２つのポリゴンによって共有される。それゆえ、三辺を含む１つのポリゴンは、３つの隣り合う面を併せ持つ。
【００６７】
このような３角形ポリゴンの特性から、輪郭を取得するに際して一方のポリゴンと隣接する他方のポリゴンを検索するに際して、２つのポリゴンが共有する辺を予め保持しておけば、隣接するポリゴンの検索効率を高めることができる。これを実現するために、輪郭取得部１４ｂは、輪郭テーブルを生成する前段階として、面テーブルから辺テーブルを生成する。
【００６８】
これを説明すると、まず、輪郭取得部１４ｂは、図６に示した面テーブルから２つの点ＩＤを抽出する。例えば、辺テーブルの生成処理の開始段階では、輪郭取得部１４ｂは、任意の面ＩＤに記憶された任意の点ＩＤのペアを抽出することができる。そして、輪郭取得部１４ｂは、先に抽出した２つの点ＩＤを持つレコードが辺テーブルへ既に登録されているか否かを判定する。なお、面テーブルは、記憶部１３に３Ｄモデルデータ１３ｂとして予め記憶されたものである。
【００６９】
このとき、辺テーブルに既に登録されていた場合には、辺テーブルに１つの辺を重複登録することになる。このため、輪郭取得部１４ｂは、今回抽出した点ＩＤのペアについては辺テーブルへの登録を行わない。
【００７０】
一方、辺テーブルに未だ登録されていない場合には、輪郭取得部１４ｂは、先に２つの点ＩＤを抽出した面ＩＤとは別の面ＩＤを持ち、かつ先に抽出した２つの点ＩＤの両方をレコード内に含む面ＩＤを面テーブルから抽出する。続いて、輪郭取得部１４ｂは、新しい辺ＩＤを採番する。そして、輪郭取得部１４ｂは、新たに採番した辺ＩＤに対応付けて同一の点ＩＤのペアをレコードに含む２つの面ＩＤを辺テーブルへ登録する。
【００７１】
その後、輪郭取得部１４ｂは、抽出対象とした面ＩＤに対応する３つの頂点の点ＩＤから全３通りを対象に点ＩＤのペアの抽出を終了するまで、上記の辺テーブルへの登録を繰り返し行う。そして、抽出対象とした面ＩＤから全３通りの点ＩＤのペアの抽出が終了すると、輪郭取得部１４ｂは、未だ点ＩＤのペアの抽出対象としていない面ＩＤを対象に点ＩＤのペアの抽出を行い、上記の辺テーブルへの登録を繰り返し行う。その後、点ＩＤのペアの抽出対象としていない面ＩＤが面テーブルになくなった場合に、輪郭取得部１４ｂは、辺テーブルの生成を終了する。
【００７２】
なお、ここでは、輪郭取得部１４ｂが面テーブルから辺テーブルを作成する場合を説明したが、開示の装置の適用範囲は、利用者からの操作受付時に辺テーブルを動的に生成することを限定されない。例えば、開示の装置または外部装置を含む他の装置によって予め生成された辺テーブルを記憶部１３に格納しておくこともできる。
【００７３】
次に、輪郭拡張候補テーブルの生成について説明する。まず、輪郭取得部１４ｂは、起点対応面取得部１４ａによって取得された面ＩＤのポリゴンが有する三辺の辺ＩＤそれぞれを図８に示した辺テーブルから抽出する。続いて、輪郭取得部１４ｂは、抽出した３つの辺ＩＤを図示しない未処理の辺リストへ追加するとともに、面ＩＤを図示しない処理済みの面リストへ追加する。なお、未処理の辺リスト及び処理済みの面リストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【００７４】
その後、輪郭取得部１４ｂは、未処理の辺リストに含まれる１つの辺ＩＤを対象に、辺テーブルから隣接する２つのポリゴンの面ＩＤを抽出する。このとき、輪郭取得部１４ｂは、辺テーブルから面ＩＤを抽出する際にキーとした辺ＩＤを未処理の辺リストから削除する。
【００７５】
そして、輪郭取得部１４ｂは、２つの面ＩＤそれぞれに対応する３つの頂点の座標位置を図５に示した点テーブルから抽出し、各面ＩＤのポリゴンごとにその法線ベクトルを算出する。続いて、輪郭取得部１４ｂは、２つのポリゴンの法線ベクトルから隣接する２つのポリゴンの内積を算出し、算出した内積が閾値以下であるか否かを判定する。なお、かかる法線ベクトルは、ポリゴンを形成する二辺のベクトルの外積によって求めることができる。例えば、３角形ポリゴンの３次元座標を（ａ，ｂ，ｃ）としたとき、法線ベクトルは、（ａ−ｂ）×（ｃ−ｂ）で表される。なお、点テーブルは、記憶部１３に３Ｄモデルデータ１３ｂとして予め記憶されたものである。
【００７６】
ここで、隣接する２つのポリゴンの内積が閾値未満である場合には、２つのポリゴンが略平行に近い角度にあるので、２つのポリゴンによってなだらかな形状が形成されていると推定できる。このため、輪郭取得部１４ｂは、２つのポリゴンが共有する辺ＩＤを１つの部分モデルとする輪郭とみなす。そして、輪郭取得部１４ｂは、１つの部分モデルとみなす輪郭を一意に特定するための輪郭拡張候補ＩＤにその輪郭とみなした辺ＩＤ及び面ＩＤを対応付けたレコードを有する輪郭拡張候補テーブルを生成する。輪郭取得部１４ｂは、このようにして生成した輪郭拡張候補テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、輪郭拡張候補テーブルが既に生成されている場合には、面ＩＤ及び辺ＩＤを含んでなるレコードが新たに追加される。
【００７７】
この輪郭拡張候補テーブルは、輪郭拡張候補ＩＤごとにその輪郭に含まれるポリゴンの面ＩＤ及び辺ＩＤを記憶したテーブルである。図９は、輪郭拡張候補テーブルに記憶される情報の構成例を示す図である。図９に示す例では、輪郭拡張候補ＩＤ「０」の輪郭の一部が面ＩＤ「０」の一辺をなす辺ＩＤ「０」によって形成されることを示す。なお、ここでは、辺ＩＤが共有される輪郭のうち識別番号が小さい方の面ＩＤのみを登録することとしたが、識別番号が大きい方の面ＩＤを登録してもよいし、両方を登録することとしてもかまわない。
【００７８】
一方、隣接する２つのポリゴンの内積が閾値以上である場合には、２つのポリゴンが略平行からは遠い角度にあるので、２つのポリゴンによってなだらかな形状が形成されていないと推定できる。このため、輪郭取得部１４ｂは、２つのポリゴンが共有する辺ＩＤを１つの部分モデルとする輪郭とはみなさない。この場合には、輪郭取得部１４ｂは、輪郭拡張候補テーブルへの登録は行わない。
【００７９】
なお、隣接する２つのポリゴンの内積と比較する閾値は、２つのポリゴンがなす角度をどの程度許容するかによって設計支援アプリの開発者または利用者が任意に設定することができる。かかる閾値は、その値を「１」に近付けるほど２つのポリゴンの間でなだらかな形状の変化しか認めずに輪郭を取得し、その値を「０」に近づけるほど２つのポリゴンの間で急峻な形状の変化も認めるように輪郭を取得することができる。
【００８０】
その後、輪郭取得部１４ｂは、隣接する２つのポリゴンの面ＩＤの中に処理済みの面リストに未登録である面ＩＤが存在するか否かを判定する。このとき、処理済みの面リストに未登録である面ＩＤがある場合には、輪郭取得部１４ｂは、その面ＩＤのポリゴンを形成する三辺のうち、今回に辺テーブルから面ＩＤを抽出する際にキーとした辺ＩＤを除く、残りの二辺の辺ＩＤを未処理の辺リストへ追加する。そして、輪郭取得部１４ｂは、未処理の辺リストへ辺ＩＤを追加するのに使用した面ＩＤを処理済みの面リストへ登録する。その後、輪郭取得部１４ｂは、未処理の辺リストに登録された辺ＩＤが空になるまで、未処理の辺リストに登録された辺ＩＤを用いて輪郭拡張候補テーブルへの面ＩＤ及び辺ＩＤの登録を繰り返し行う。
【００８１】
なお、輪郭取得部１４ｂは、１つの輪郭を取得した後にさらなる拡張を行った輪郭を得るために拡張後の輪郭に新たな輪郭拡張候補ＩＤを採番した上で１つの部分モデルとみなす辺ＩＤ及び面ＩＤを新たに探索する。かかる探索は、３Ｄモデル上の全ての辺ＩＤ及び面ＩＤが輪郭拡張候補テーブルに登録されるまで繰り返し行われる。
【００８２】
また、後述の拡張処理部１４ｅでは、輪郭取得部１４ｂによる輪郭の取得結果を用いずとも他の拡張手法を適用することも可能であるため、輪郭取得部１４ｂを省略して情報検索装置１０を構成することもできる。
【００８３】
図２の説明に戻り、基準断面輪郭取得部１４ｃは、３Ｄモデルを分断する基準断面の輪郭を取得する処理部である。ここで言う基準断面とは、起点対応線と起点対応面の交点を含む断面の中でも、後述の拡張処理部１４ｅによって断面が移動される際に初期位置とさせる断面のことを指す。また、基準断面の輪郭とは、基準断面とポリゴンの辺とが交わる輪郭点を隣り合う輪郭点間で結合することにより形成される図形の形状を指す。
【００８４】
これを説明すると、基準断面輪郭取得部１４ｃは、起点対応線と起点対応面の交点を含む断面は無数に存在するので、所定の取得基準にしたがって基準断面の候補とする断面候補を取得する。かかる断面候補の取得基準の一例としては、起点対応線を回転軸とした面を回転軸を中心に所定の角度ずつ回転させることにより得られた断面を断面候補とすることが挙げられる。また、別の取得基準の一例としては、Ｘ軸に平行な断面、Ｙ軸に平行な断面、さらにはＺ軸に平行な断面を断面候補とすることが挙げられる。なお、断面候補の取得時には、各断面候補に断面候補の輪郭を一意に特定するための輪郭ＩＤが採番される。
【００８５】
図１０及び図１１は、断面候補の取得要領を説明するための説明図である。図１０及び図１１に示す符号２０Ａ及び符号２０Ｂは、３Ｄモデルの一例を示す。図１０及び図１１に示す符号Ｐ１及び符号Ｐ２は、起点対応線が起点対応面に交わる交点を示す。図１０に示す符号ａは、断面候補を得るために使用する起点対応線と同軸の回転軸を示す。図１０に示す符号２２Ａ、符号２３Ａ、符号２４Ａ、符号２２Ｂ、符号２３Ｂ及び符号２４Ｂは、３Ｄモデル２０Ａまたは２０Ｂを分断する断面の一例を示す。
【００８６】
例えば、図１０に示す例で言えば、基準断面輪郭取得部１４ｃは、回転軸ａを中心に面を所定の角度ずつ回転させることにより得られる断面を得る。このようにして得られた断面２２Ａ、断面２３Ａ及び断面２４Ａは、基準断面輪郭取得部１４ｃによって断面候補とされる。これら断面２２Ａ、断面２３Ａ及び断面２４Ａは、いずれも回転軸ａとともに交点Ｐ１を含む。このとき、基準断面輪郭取得部１４ｃは、制御部１４内または記憶部１３内の作業記憶領域へ各断面候補の法線ベクトルを保存する。なお、図１０に示す例では、所定の角度ずつ回転させることにより得た断面のうち３つの断面を図示したものであり、この断面候補の取得基準で得られる断面の数を限定するものではない。このように、回転軸ａを中心に回転させて断面を得る場合には、回転させる角度を細かくするほど多くの断面を断面候補として得ることができる。
【００８７】
また、図１１に示す例で言えば、基準断面輪郭取得部１４ｃは、交点Ｐ２を含む断面であり、Ｘ軸に平行な断面２２Ｂ、Ｙ軸に平行な断面２３Ｂ及びＺ軸に平行な断面２４Ｂを取得する。このようにして得られた断面２２Ｂ、断面２３Ｂ及び断面２４Ｂが基準断面輪郭取得部１４ｃによって断面候補とされる。このとき、基準断面輪郭取得部１４ｃは、制御部１４内または記憶部１３内の作業記憶領域へ各断面候補の法線ベクトルを保存する。なお、図１１に示す例では、Ｘ軸、Ｙ軸及びＺ軸に平行な面３つを図示したものであり、この断面候補の取得基準で得られる断面の数を限定するものではなく、また、断面候補を得るための軸を上記の３つの軸に限定するものでもない。このように、所定の軸に平行な断面を得る場合には、任意の方向に任意の数の軸を設定することができる。
【００８８】
このようにして断面候補を取得した後に、基準断面輪郭取得部１４ｃは、断面候補とポリゴンの辺とが交わる交点を算出する。この交点は、断面候補の輪郭の一部を形成する点であるから以下では「輪郭点」と呼ぶこととする。そして、基準断面輪郭取得部１４ｃは、断面候補上で１つのポリゴンの二辺が交わる輪郭点同士をそれぞれ結合することにより、断面候補の輪郭を取得する。
【００８９】
かかる断面候補の輪郭の取得要領を説明する。まず、基準断面輪郭取得部１４ｃは、起点対応面と断面候補とが交わる輪郭点を算出する。これを説明すると、基準断面輪郭取得部１４ｃは、起点対応面取得部１４ａによって取得された起点対応面の面ＩＤに紐付けられた３つの頂点の点ＩＤを図６に示した面テーブルから取り出す。続いて、基準断面取得部１４ｃは、面テーブルから取り出した３つの頂点の点ＩＤの座標を図５に示した点テーブルから取り出す。そして、基準断面輪郭取得部１４ｃは、点テーブルから取り出した３つの点ＩＤの座標を用いて、起点対応面と断面候補との輪郭点を算出する。
【００９０】
このように、起点対応面が断面候補と交わる輪郭点を始めに算出するのは、起点対応面及び断面候補が交点を含むことから、起点対応面であるポリゴンを形成する三辺のうち二辺が断面候補と交わることが明らかであるからである。これによって、基準断面輪郭取得部１４ｃは、３Ｄモデルを形成するポリゴンの中から断面候補と交わる辺を有するポリゴンを検索する手順を省略する。
【００９１】
このとき、起点対応面のポリゴンが有する三辺の中で少なくとも一辺は、断面候補とは交差しない。また、起点対応面取得部１４ａの説明で述べたように、起点対応面取得部１４ａは、同一の交点で１つの起点対応線に対し、複数の起点対応面が発生しないように起点をシフトさせるので、起点対応面の頂点や辺だけが断面候補と交わることもない。したがって、起点対応面のポリゴンが有する三辺のうち二辺が断面候補と交わることになる。それゆえ、起点対応面の各辺と断面候補との輪郭点を算出する際には、起点対応面の三辺のうちどの二辺が断面候補との間で交わるのかを確認するのが好ましい。
【００９２】
例えば、起点対応線と起点対応面との交点の座標が（ｐｘ，ｐｙ，ｐｚ）であるとしたとき、断面候補の方程式は、下記の式（１０）になる。なお、下記の式（１０）における（ａ，ｂ，ｃ）は、基準断面輪郭取得部１４ｃが断面候補の取得基準により取得した方線ベクトルである。
【００９３】
【数１０】
2011150667.tif 000012
【００９４】
そして、ポリゴンの一辺の線分を形成する２つの頂点の座標を（Ａｘ，Ａｙ，Ａｚ）、（Ｂｘ，Ｂｙ，Ｂｚ）としたとき、上記の式（１０）を変形することにより下記の式（１１）が得られる。基準断面輪郭取得部１４ｃは、下記の式（１１）を用いることにより、断面候補とポリゴンの辺とが交わるか否かの交差判定を行うことができる。
【００９５】
【数１１】
2011150667.tif 000013
【００９６】
例えば、点テーブルから取り出した起点対応面を形成する一辺のうち、一方の頂点の座標が（Ａｘ，Ａｙ，Ａｚ）であり、他方の頂点の座標が（Ｂｘ，Ｂｙ，Ｂｚ）であるとする。この場合、基準断面輪郭取得部１４ｃは、これら２つの頂点の座標（Ａｘ，Ａｙ，Ａｚ）及び（Ｂｘ，Ｂｙ，Ｂｚ）を式（１１）に代入することにより、断面候補と起点対応面の辺との交差判定を行う。このとき、基準断面輪郭取得部１４ｃは、式（１１）で算出されたｔの値が０≦ｔ≦１の場合には、断面候補と起点対応面の辺とが交わるものと判定する。
【００９７】
このように、基準断面輪郭取得部１４ｃは、起点対応面を形成する三辺それぞれについて交差判定を行った上で、起点対応面の三辺のうち断面候補と交わる二辺の輪郭点及び輪郭辺を算出する。
【００９８】
その後、基準断面輪郭取得部１４ｃは、輪郭点、輪郭辺及びその算出に使用した面ＩＤなどの情報を用いて、図示しない処理済み面リスト、輪郭点テーブル及び輪郭辺テーブルを更新する。
【００９９】
かかる更新の一例を挙げれば、基準断面輪郭取得部１４ｃは、今回に輪郭点及び輪郭辺を算出し終えた起点対応面の面ＩＤを図示しない処理済み面リストへ登録する。この処理済み面リストは、断面候補の輪郭点及び輪郭辺の算出に使用し終わったポリゴンの面ＩＤのリストである。処理済み面リストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【０１００】
さらに、基準断面輪郭取得部１４ｃは、輪郭点を一意に特定するための輪郭点ＩＤ及び輪郭辺を一意に特定するための輪郭点ＩＤを今回に算出した輪郭点及び輪郭辺に採番する。そして、基準断面輪郭取得部１４ｃは、採番した輪郭点ＩＤに断面候補と交わる辺の辺ＩＤ及び輪郭点の座標を対応付けたレコードを有する輪郭点テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。また、基準断面輪郭取得部１４ｃは、現在に輪郭を取得中である断面候補の輪郭ＩＤに対し、新たに採番した輪郭辺の輪郭辺ＩＤ、輪郭辺が含まれるポリゴンの面ＩＤ及び輪郭辺を定義する２つの輪郭点の輪郭点ＩＤを対応付けたレコードを生成する。そして、基準断面輪郭取得部１４ｃは、このようにして生成したレコードを有する輪郭辺テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、輪郭点テーブルまたは輪郭辺テーブルが既に生成されている場合には、輪郭点ＩＤ、辺ＩＤ及び輪郭点の座標を含んでなるレコード、或いは輪郭ＩＤ、輪郭辺ＩＤ、面ＩＤ、２つの輪郭点ＩＤを含んでなるレコードが各テーブルに追加される。
【０１０１】
輪郭点テーブルは、輪郭点ＩＤごとに辺ＩＤ及び輪郭点の座標を記憶したテーブルである。図１２は、輪郭点テーブルに記憶される情報の構成例を示す図である。図１２に示す例では、輪郭点ＩＤ「０」の輪郭点が辺ＩＤ「０」の辺と断面候補とが交わる交点であり、その座標が（１０，１５，−５）であることを示す。また、輪郭点ＩＤ「１」の輪郭点が辺ＩＤ「１」の辺と断面候補とが交わる交点であり、その座標が（１０，５，０）であることを示す。
【０１０２】
輪郭辺テーブルは、輪郭ＩＤごとに輪郭辺ＩＤ、面ＩＤ、輪郭辺を定義する２つの輪郭点の輪郭点ＩＤを記憶したテーブルである。図１３は、輪郭辺テーブルに記憶される情報の構成例を示す図である。図１３に示す例では、輪郭ＩＤ「０」を持つ断面候補の輪郭の一部を形成する輪郭辺ＩＤ「０」の輪郭辺が、面ＩＤ「０」のポリゴンに内包されるとともに輪郭点ＩＤ「０」及び輪郭点ＩＤ「１」の２つの点により定義されることを示す。なお、この図１３で輪郭点ＩＤの末尾に付される括弧付きの番号は、テーブルへ登録された順序を指し、（１）であれば１つ目、（２）であれば２つ目であること示す。かかる登録順序は、テーブル使用時の処理結果に及ぼすものではなく、必ずしも区別して登録される必要はない。
【０１０３】
これら処理済み面リスト、輪郭点テーブル及び輪郭辺テーブルの更新を終えると、基準断面輪郭取得部１４ｃは、起点対応面の三辺のうち断面候補と交わる二辺について各辺が共有される面の面ＩＤを図８に示した辺テーブルから取り出す。このように、断面候補と交わる二辺が共有される面を取り出すのは、その二辺が共有されるポリゴンを探索すれば、３Ｄポリゴンの全ての辺を対象に交差判定を行わずとも断面候補と交わる二辺を有するポリゴンを見つけ出すことができるからである。
【０１０４】
そして、基準断面輪郭取得部１４ｃは、辺テーブルから取り出した面ＩＤのうち処理済み面リストに登録がない面ＩＤだけを図示しない未処理の面リストへ登録する。この未処理の面リストは、断面候補の輪郭点及び輪郭辺を含むポリゴンでありながらも未だ算出に使用されていないポリゴンの面ＩＤのリストである。この未処理の面リストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【０１０５】
このように、基準断面輪郭取得部１４ｃは、未処理の面リストの面ＩＤが空になるまで、起点対応面に行ったように、処理済みの面リスト、輪郭点テーブル、輪郭辺テーブル及び未処理の面リストを更新し続ける。その後、未処理の面リストの面ＩＤが空になった場合には、断面候補と交わる全てのポリゴンを対象にその輪郭を取得したことになるので、基準断面輪郭取得部１４ｃは、各輪郭辺の長さを足し合わせることにより、断面候補の輪郭距離を算出する。なお、断面候補の輪郭距離とは、断面候補が各ポリゴンと交わる輪郭辺の集計値を指す。
【０１０６】
ここで、輪郭点、輪郭辺及び輪郭距離の算出要領について説明する。図１４は、輪郭点、輪郭辺及び輪郭距離の算出要領を説明するための説明図である。図１４に示す符号４０は、断面候補の一例を示す。図１４に示す符号４１は、断面候補４０の方線ベクトルを示す。図１４に示す符号４２は、３Ｄモデルに含まれるポリゴンのうち断面候補４０と交わるポリゴンを示す。図１４に示す符号４３Ａ、符号４３Ｂ及び符号４３Ｃは、ポリゴン４２の３つの頂点のうち断面候補４０と交わる線分を形成する頂点を示す。図１４に示す符号Ｐｍ及び符号Ｐｎは、断面候補４０とポリゴン４２の辺とが交わる輪郭点を示す。図１４に示す符号Ｌは、輪郭点Ｐｍ及び輪郭点Ｐｎを結ぶ直線である輪郭辺を示す。なお、図１４に示す例では、断面候補４０と交わるポリゴンであれば起点対応面でなくとも輪郭点及び輪郭辺が算出される方法に違いはないので、符号４２が指すポリゴンが断面候補４０と交わるポリゴン全般を指すものとして以下の説明を行うこととする。
【０１０７】
図１４に示す例で言えば、基準断面輪郭取得部１４ｃは、上述した交差判定により、断面候補４０と頂点４３Ａ及び頂点４３Ｂを結ぶポリゴン４２の辺とが輪郭点Ｐｍで交わることを確認する。さらに、基準断面輪郭取得部１４ｃは、断面候補４０と頂点４３Ｃ及び頂点４３Ｂを結ぶポリゴン４２の辺とが輪郭点Ｐｎで交わることを確認する。そして、基準断面輪郭取得部１４ｃは、頂点４３Ａの座標、頂点４３Ｂの座標及び式（１１）で求めたｔの値を用いて、輪郭点Ｐｍの座標（Ａｘ＋ｔ（Ｂｘ−Ａｘ），Ａｙ＋ｔ（Ｂｙ−Ａｙ），Ａｚ＋ｔ（Ｂｚ−Ａｚ））を算出する。さらに、基準断面輪郭取得部１４ｃは、頂点４３Ｃの座標、頂点４３Ｂの座標及び式（１１）で求めたｔの値を用いて、輪郭点Ｐｎの座標（Ｃｘ＋ｔ（Ｂｘ−Ｃｘ），Ｃｙ＋ｔ（Ｂｙ−Ｃｙ），Ｃｚ＋ｔ（Ｂｚ−Ｃｚ））を算出する。
【０１０８】
これら輪郭点Ｐｍ及び輪郭点Ｐｎの算出後に、基準断面輪郭取得部１４ｃは、下記の式（１２）が示すユークリッド距離の算出式を用いて、輪郭点Ｐｍ及び輪郭点Ｐｎを結ぶ輪郭辺Ｌの長さｄ、すなわち輪郭点間の距離を算出する。
【０１０９】
【数１２】
2011150667.tif 000014
【０１１０】
上記の式（１２）に輪郭点Ｐｍの座標及び輪郭点Ｐｎの座標それぞれを代入することにより、基準断面輪郭取得部１４ｃは、輪郭辺の長さｄを算出する。その後、断面候補４０と交わる全てのポリゴン４２について輪郭点及び輪郭辺の長さを算出した場合には、各輪郭辺Ｌの長さを集計することにより、断面候補４０の輪郭距離を算出する。そして、基準断面輪郭取得部１４ｃは、断面候補４０の輪郭ＩＤに断面候補４０の法線ベクトル及び輪郭距離を対応付けたレコードを有する輪郭テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、輪郭テーブルが既に生成されている場合には、輪郭ＩＤ、法線ベクトル及び輪郭距離を含んでなるレコードが新たに追加される。
【０１１１】
この輪郭テーブルは、断面候補の輪郭ＩＤごとに断面候補の法線ベクトル及び輪郭距離を記憶したテーブルである。図１５は、輪郭テーブルに記憶される情報の構成例を示す図である。図１５に示す例で言えば、輪郭ＩＤ「０」を持つ断面候補の法線ベクトルが（０．５，０．２，−０．３）であり、断面候補の輪郭距離が１５．５であることを示す。
【０１１２】
なお、ここでは、ユークリッド距離を用いて輪郭距離を算出する場合を説明したが、他の方法を用いて輪郭距離を算出することもできる。例えば、断面候補の法線ベクトルを等間隔に設定したり、図９に示した輪郭拡張候補テーブルを利用したり、また、各輪郭辺に水平または垂直であるベクトルであり、かつ断面候補の法線ベクトルにも垂直なベクトルだけを利用する方法もある。例えば、法線ベクトルを等間隔に設定する場合には、法線ベクトル（ａ，ｂ，ｃ）をａ＝ｃｏｓθｃｏｓφ、ｂ＝ｃｏｓθｓｉｎφ、ｃ＝ｓｉｎφへ置き換えると、角度θ、角度φの２つの変数を等間隔に設定することで、等角度で法線を決定できる。
【０１１３】
このようにして、基準断面輪郭取得部１４ｃは、全ての断面候補の輪郭距離を算出するまで、輪郭点、輪郭辺、ひいては輪郭距離の算出を繰り返し行う。その上で、基準断面輪郭取得部１４ｃは、全断面候補の輪郭距離のうち最も輪郭距離が小さい断面候補を基準断面と決定する。図１０に示した例で言えば、基準断面輪郭取得部１４ｃは、断面候補２２Ａ、断面候補２３Ａ及び断面候補２４Ａのうち輪郭距離が最も小さい断面候補２４Ａを基準断面として決定する。また、図１１に示した例で言えば、基準断面輪郭取得部１４ｃは、断面候補２２Ｂ、断面候補２３Ｂ及び断面候補２４Ｂのうち輪郭距離が最も小さい断面候補２４Ｂを基準断面として決定する。これによって、３Ｄモデルを分断する断面候補の中でも断面候補２２Ａ、断面候補２３Ａ、断面候補２２Ｂ及び断面候補２３Ｂのように歪な断面候補が基準断面として決定される事態を防止できる。
【０１１４】
このとき、基準断面輪郭取得部１４ｃは、基準断面に決定した断面候補の輪郭ＩＤ以外の輪郭ＩＤに関する情報を輪郭点テーブル、輪郭辺テーブル及び輪郭テーブルから消去し、基準断面の輪郭ＩＤの輪郭に関する情報だけを残す。なお、ここでは、輪郭距離が最も小さい断面候補を基準断面とする場合を説明したが、各断面候補の断面積を求め、断面積が最も小さい断面候補を基準断面としてもかまわない。
【０１１５】
図２の説明に戻り、拡張方向決定部１４ｄは、基準断面輪郭取得部１４ｃによって決定された基準断面と直交する２方向のうちいずれの方向に断面を拡張させるのかを決定する処理部である。すなわち、拡張方向決定部１４ｄは、基準断面によって３Ｄモデルが分断された複数の立体のうち最も小さい立体へ向かう方向を拡張方向として決定する。なお、ここでは、３Ｄモデルが２つの立体に分断される場合を想定し、２つの立体の大きさを比較する基準として各立体の体積を求める場合を例示して以下の説明を行う。また、以下では、基準断面によって分断された３Ｄモデルのうち一方の立体を第１の立体と呼び、他方の立体を第２の立体と呼ぶこととする。
【０１１６】
例えば、拡張方向決定部１４ｄは、下記の式（１３）を用いて、立体の体積を算出する。下記の式（１３）では、Ｐｉ１、Ｐｉ２、Ｐｉ３が立体に含まれる任意のポリゴンｉの３つの頂点を指し、Ｃが立体の重心点を指し、また、Ｖが立体の体積を指すものとする。なお、上記の式（１３）は、空洞がなく閉じたモデルに好適に使用できる算出式である。このため、基準断面によって分断される第１の立体及び第２の立体に適用するには、基準断面輪郭取得部１４ｃによって取得された基準断面の輪郭を閉じるのが好ましい。この輪郭を閉じる処理の詳細は、後述の部分モデル生成部１４ｆで説明することとし、ここでは基準断面が閉じられたものとして説明を進める。なお、重心点Ｃの座標については、既知の任意の方法を用いて算出できる。
【０１１７】
【数１３】
2011150667.tif 000015
【０１１８】
上記の式（１３）に第１の立体に含まれるポリゴンｉの各頂点の座標及び重心点Ｃの座標を代入して各ポリゴンｉの体積を足し合わせることにより、拡張方向決定部１４ｄは、第１の立体の体積Ｖ１を算出する。
【０１１９】
これを説明すると、拡張方向決定部１４ｄは、図１３に示した輪郭辺テーブルに登録されている面ＩＤの面、すなわち基準断面の輪郭辺を含むポリゴンを体積の算出対象から除外する。かかる算出対象からの除外は、既にポリゴンの体積の足し合わせが終了したポリゴンの面ＩＤを記憶する図示しない計算済み面リストに基準断面の輪郭辺を含むポリゴンの面ＩＤを処理開始段階から登録することにより実現される。なお、輪郭辺テーブルは、記憶部１３に各種テーブルデータ１３ｃとして基準断面輪郭取得部１４ｃにより登録されたものである。また、計算済み面リストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【０１２０】
その上で、拡張方向決定部１４ｄは、基準断面よりも第１の立体側に所在するポリゴンの面ＩＤを図８に示した辺テーブルから取り出す。そして、拡張方向決定部１４ｄは、辺テーブルから取り出したポリゴンが基準断面よりも第１の立体側に存在するか否かを確認する。なお、辺テーブルは、記憶部１３に各種テーブルデータ１３ｃとして登録されたものである。
【０１２１】
かかる確認手法の一例としては、上記の式（１０）に示した基準断面の方程式へポリゴンの３次元座標を代入することにより容易に確かめることができる。すなわち、式（１０）にポリゴンの３次元座標を代入することにより得られた算出結果が「正」、「負」または「０」のいずれであるかによって第１の立体側、基準断面及び第２の立体側のいずれにポリゴンの頂点が存在するかを特定できる。
【０１２２】
ここでは、仮に算出結果が「正」である場合にポリゴンの頂点が第１の立体側に所在するものとして説明を続ける。この場合には、算出結果が「正」であるならばポリゴンの頂点が第１の立体側に存在し、算出結果が「０」であるならばポリゴンの頂点が基準断面上に存在し、また、算出結果が「負」であるならばポリゴンの頂点が第２の立体側に存在することが判明する。このような確認を辺テーブルから取り出した面ＩＤに対応する全ての点ＩＤに対して行い、３つの頂点を式（１０）に代入した時の算出結果が３つとも「正」であるポリゴンを体積の算出対象として使用する。この辺テーブルから取り出すポリゴンは、基準断面よりも第１の立体側に存在するものであれば任意のポリゴンでかまわない。なお、第２の立体の体積を算出する場合には、３つの頂点を式（１０）に代入した時の算出結果が３つとも「負」であるポリゴンを体積の算出対象として使用すればよい。
【０１２３】
その後、拡張方向決定部１４ｄは、式（１３）を用いて、辺テーブルから取り出したポリゴンが持つ体積を算出し、算出した体積を前回までに累積された累積値に加算する。そして、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤを計算済み面リストへ登録する。これを説明すると、拡張方向決定部１４ｄは、辺テーブルから取り出した面ＩＤに対応する３つの点ＩＤ（１）、点ＩＤ（２）及び点ＩＤ（３）を図６に示した面テーブルから取り出す。さらに、拡張方向決定部１４ｄは、面テーブルから取り出した３つの点ＩＤに対応する座標を図５に示した点テーブルから取り出す。その上で、拡張方向決定部１４ｄは、今回に取り出したポリゴンの３つの頂点の座標を式（１３）に代入してそのポリゴンの体積を前回までに累積されていた累積値に加算する。
【０１２４】
続いて、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に計算済み面リストに登録がない面ＩＤが存在するか否かを判定する。その後、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録されたと判定するまで処理を繰り返し行う。すなわち、拡張方向決定部１４ｄは、隣り合うポリゴンの面ＩＤのうち計算済み面リストに登録がない面ＩＤのポリゴンを対象にそのポリゴンの体積の算出及びその体積の累積値への加算を行う。そして、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録された場合には、拡張方向決定部１４ｄは、第１の立体に含まれるポリゴンの体積が全て加算された状態となるので、それまでに加算された累積値を第１の立体の体積Ｖ１として保存する。
【０１２５】
このようにして第１の立体の体積Ｖ１を算出した後に、拡張方向決定部１４ｄは、同様にして、第２の立体の体積Ｖ２を算出する。なお、ここでは、第１の立体の体積Ｖ１を算出してから第２の立体の体積Ｖ２を算出することとしたが、必ずしも第１の立体の体積を算出する必要はない。例えば、第２の立体の体積を先に算出することもできる。また、第１の立体の体積と第２の立体の体積とを並列的に算出することもできる。
【０１２６】
ここで、拡張方向決定部１４ｄは、第１の立体の体積と第２の立体の体積と比較し、第１の立体及び第２の立体のうち体積が小さい立体を特定し、基準断面から体積が小さい立体へ向かう方向を拡張方向として決定する。なお、ここでは、３Ｄモデルが基準断面によって２つに分断される場合を例示したが、開示の装置の適用範囲がこれに限定されるものではない。例えば、３Ｄモデルが３つ以上に分断される場合にも、基準断面から最も体積が小さい立体へ向かう方向を拡張方向とすればよい。
【０１２７】
また、ここでは、第１の立体及び第２の立体の体積を算出する場合を例示したが、必ずしも立体の体積を求める必要はない。例えば、拡張方向決定部１４ｄは、立体の体積の代わりに立体の表面積を算出することもできる。このように立体の表面積を算出する場合には、下記の式（１４）を用いることにより、第１の立体及び第２の立体の表面積を算出することができる。下記の式（１４）では、Ｐｉ１、Ｐｉ２、Ｐｉ３が立体に含まれる任意のポリゴンｉの３つの頂点を指し、また、Ｓが立体の体積を指すものとする。
【０１２８】
【数１４】
2011150667.tif 000016
【０１２９】
上記の式（１４）に第１の立体に含まれるポリゴンｉの各頂点の座標を代入して各ポリゴンｉの表面積を足し合わせることにより、拡張方向決定部１４ｄは、第１の立体の表面積Ｓ１を算出する。また、同様にして、拡張方向決定部１４ｄは、第２の立体の表面積Ｓ２を算出することができる。このように、立体の表面積を算出することとした場合には、立体の算出する場合よりも演算量をさらに削減できる。
【０１３０】
図２の説明に戻り、拡張処理部１４ｅは、所定の拡張規定にしたがって、基準断面輪郭取得部１４ｃによって決定された基準断面から拡張方向決定部１４ｄによって決定された拡張方向へ断面を拡張させる処理部である。ここで言う拡張規定としては、例えば基準断面と拡張後の断面との間で面の向きがズレるズレ許容度や断面を拡張させる拡張量などが規定される。
【０１３１】
例えば、面の向きのズレ許容度がゼロに規定されている場合には、拡張処理部１４ｅは、基準断面から拡張方向へ断面を平行移動させる。このように断面を平行移動させる場合には、上記の式（１０）に示した基準断面の方程式を規定する点（ｐｘ，ｐｙ，ｐｚ）を法線ベクトル（ａ，ｂ，ｃ）の方向に移動させる。つまり、拡張処理部１４ｅは、基準断面の向きを法線ベクトルの方向に固定したままで断面を移動させることになる。例えば、拡張処理部１４ｅは、拡張量を規定するパラメータ（parameter）をｔとし、上記の式（１０）を下記の式（１５）に示すように変形することができる。これによって断面を平行移動した断面の方程式を得ることができる。
【０１３２】
【数１５】
2011150667.tif 000017
【０１３３】
上記の式（１５）を用いて、拡張処理部１４ｅは、平行移動後の断面の輪郭について輪郭点テーブル、輪郭辺テーブル及び輪郭テーブルを生成する。これら輪郭点テーブル、輪郭辺テーブル及び輪郭テーブルは、基準断面のものとは別に拡張後断面用のテーブルとして構成される。なお、かかる移動後の断面の輪郭は、基準断面の輪郭を取得する場合と同じ要領で取得できるので、ここではその説明を省略する。
【０１３４】
なお、拡張量パラメータｔには、固定値を予め規定したり、また、３Ｄモデルの規模や部品の種類に応じてデフォルト（default）値を適切に補正した値を規定したりすることもできる。例えば、デフォルト値を変更する場合には、３Ｄモデルの規模が大きいほどデフォルト値も大きくなるように補正する。これによって、後述の部分モデル生成部１４ｆにより生成される部分モデルが極小なものとなり、３Ｄモデルを特徴付ける部分形状を含まない部分モデルが生成されることを防止できる。
【０１３５】
また、面の向きのズレ許容度がゼロ以外に設定されている場合には、拡張処理部１４ｅは、基準断面との間で面の向きが所定の角度まで変化することを許容しながら断面を拡張させる。すなわち、拡張処理部１４ｅは、基準断面の向きを法線ベクトルの方向に固定せずに、基準断面の法線ベクトルとの間で差分が設けられた複数の法線ベクトルを持つ断面それぞれを移動させることになる。この場合には、拡張処理部１４ｅは、拡張量を規定するパラメータ（parameter）をｔとし、上記の式（１０）を下記の式（１６）に示すように変形する。これによって面の向きのズレを許容した複数の断面の方程式を得ることができる。
【０１３６】
【数１６】
2011150667.tif 000018
【０１３７】
ここで、上記の式（１６）に示すａ´、ｂ´及びｃ´は、基準断面の法線ベクトルと拡張後の法線ベクトルとの間で差分を設けるための法線差分である。これら法線差分ａ´、法線差分ｂ´及び法線差分ｃ´は、基準断面の法線ベクトルからＸ方向、Ｙ方向及び／又はＺ方向にどの程度傾けるかを複数の組合せに分けて設定することができる。かかる法線差分は、設計支援アプリの利用者または開発者が任意の値及び任意の組合せ数を設定できる。
【０１３８】
上記の式（１６）を用いて、拡張処理部１４ｅは、法線ベクトルに法線差分を設けた断面ごとに、拡張後の断面の輪郭について輪郭点テーブル、輪郭辺テーブル及び輪郭テーブルを生成する。ここで、かかる拡張後の断面の輪郭は、基準断面の輪郭を取得する場合と同じ要領で取得できる。ただし、拡張処理部１４ｅは、拡張後の断面の輪郭が複数得られるので、法線差分を設けた各断面の輪郭距離を図１６に示す輪郭計算テーブルへ登録する。そして、拡張処理部１４ｅは、輪郭計算テーブルに記憶された断面の中で最も輪郭距離が小さい断面を部分モデルの生成対象として採用する。
【０１３９】
この輪郭計算テーブルは、法線ベクトル、法線差分及び輪郭距離を対応付けて記憶したテーブルである。図１６は、輪郭計算テーブルに記憶される情報の構成例を示す図である。図１６に示す例では、基準断面の法線ベクトル（０．５，０．２，−０．３）に法線差分（０．１，０，０）を設けた場合には、断面の拡張後の輪郭距離が１６であったことを示す。また、図１６に示す例では、基準断面の法線ベクトル（０．５，０．２，−０．３）に法線差分（０，０．１，０）を設けた場合には、断面の拡張後の輪郭距離が１４．２であったことを示す。これら２つのレコードから部分モデルの生成対象とする断面を選択する場合には、拡張処理部１４ｅによって２つ目のレコードが選択される。
【０１４０】
ここで、拡張処理部１４ｅは、拡張後の断面の輪郭を１度取得しただけで断面の拡張を終えるわけではない。すなわち、拡張処理部１４ｅは、未だ移動が完了していない３Ｄモデルの輪郭が存在する限りは、前回の拡張に使用した拡張量よりも大きい拡張量に今回の拡張量を増加させた上で断面の拡張を継続する。なお、拡張量を増加させる割合は、固定値を予め規定したり、また、３Ｄモデルの規模や部品の種類に応じてデフォルト値を適切に補正した値を規定したりすることができる。
【０１４１】
これを説明すると、拡張処理部１４ｅは、断面の拡張後に輪郭が存在するか否かを判定する。すなわち、拡張処理部１４ｅは、今回に生成した輪郭点テーブルに輪郭点が登録されているか否かを判定する。なお、ここでは、輪郭点ＩＤを用いて拡張後の断面における輪郭の有無を判定することとしたが、輪郭辺ＩＤ或いは輪郭距離を用いて、拡張後の断面における輪郭の有無を判定することとしてもよい。
【０１４２】
このとき、今回に生成した輪郭点テーブルに輪郭点ＩＤが登録されている場合には、３Ｄモデルの拡張方向に未だ輪郭が取得されていないポリゴンが存在する余地がある。それゆえ、拡張処理部１４ｅは、前回の拡張よりも拡張量を増加させた上で基準断面から拡張方向への断面をさらに拡張させる。
【０１４３】
一方、今回に生成した輪郭点テーブルに輪郭点ＩＤが登録されていない場合には、３Ｄモデルの拡張方向には輪郭が未取得であるポリゴンが存在しない。したがって、拡張処理部１４ｅは、拡張方向決定部１４ｄによって決定された拡張方向、すなわち最初に拡張を行った拡張方向とは反対の方向に拡張方向を再決定する。その上で、拡張処理部１４ｅは、基準断面から再決定後の拡張方向へ断面を拡張させ、拡張後の断面の輪郭について輪郭点テーブル、輪郭辺テーブル及び輪郭テーブルを取得する。その後、輪郭処理部１４ｅは、再決定後の拡張方向に断面を拡張させ、断面の拡張後に輪郭が存在しなくなるまで断面の拡張を継続する。
【０１４４】
なお、ここでは、拡張量パラメータｔを用いて断面を拡張させる場合を説明したが、必ずしも断面の方程式に拡張量パラメータｔを組み込む必要はない。例えば、拡張処理部１４ｅは、隣接する２つのポリゴンにおける面の曲率が所定値以下であるか否かによって断面の拡張を継続するか否かを判別することもできる。２つのポリゴンの面と面の角度は、下記の式（１７）に示すように、面の法線ベクトルの内積から算出することができる。なお、下記の式（１７）に示すθは、２つのポリゴンがなす角度を指す。
【０１４５】
【数１７】
2011150667.tif 000019
【０１４６】
上記の式（１７）により、拡張処理部１４ｅは、隣接する２つのポリゴンがなす角度θを算出できる。そして、拡張処理部１４ｅは、起点対応面から拡張方向へ向かって角度θの算出を開始する。その後、拡張処理部１４ｅは、角度θが所定値以下である限りは断面の拡張を継続し、角度θが所定値を超えるポリゴンが出現した時点でその直前に角度θを算出したポリゴンまでを基準断面の拡張量として決定することもできる。
【０１４７】
また、拡張処理部１４ｅは、図９に示した輪郭拡張候補テーブルを用いて、断面を拡張することもできる。例えば、輪郭拡張候補テーブルに記憶された同一の輪郭拡張候補ＩＤを取り出し、その輪郭拡張候補ＩＤに対応する面ＩＤのうち基準断面よりも拡張方向側に存在し、かつ起点対応線と起点対応面の交点から最も遠い頂点を持つポリゴンまでを拡張量としてもよい。
【０１４８】
図２の説明に戻り、部分モデル生成部１４ｆは、基準断面輪郭取得部１４ｃによって取得された基準断面と、拡張処理部１４ｅによって移動された断面との間に形成される３Ｄモデルの部分形状を部分モデルとして生成する処理部である。
【０１４９】
これを説明すると、部分モデル生成部１４ｆは、図１３に示した輪郭辺テーブルに登録されている面ＩＤの面、すなわち基準断面の輪郭辺を含むポリゴンを部分モデルとする対象から除外する。かかる対象除外は、既に部分形状の候補として探索したポリゴンの面ＩＤを記憶する図示しない探索済みリストに基準断面の輪郭辺を含むポリゴンの面ＩＤを処理開始段階から登録することにより実現される。なお、輪郭辺テーブルは、記憶部１３に各種テーブルデータ１３ｃとして基準断面輪郭取得部１４ｃにより登録されたものである。また、探索済みリストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【０１５０】
その上で、部分モデル生成部１４ｆは、基準断面よりも拡張方向側に存在し、かつ拡張後の断面よりも拡張方向の反対側に存在するポリゴンの面ＩＤを図８に示した辺テーブルから取り出す。そして、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンが基準断面よりも拡張方向側に存在し、かつ拡張後の断面よりも拡張方向の反対側に存在するか否かを確認する。なお、辺テーブルは、記憶部１３に各種テーブルデータ１３ｃとして登録されたものである。
【０１５１】
かかる確認手法の一例としては、上記の式（１０）に示した基準断面の方程式及び上記の式（１５）に示した拡張後の断面の方程式へポリゴンの３次元座標を代入することにより容易に確かめることができる。すなわち、式（１０）及び式（１５）にポリゴンの３次元座標を代入することにより得られた算出結果が「正」、「負」または「０」のいずれであるかによってポリゴンの頂点が３Ｄモデルのどの範囲に存在するかを特定できる。
【０１５２】
ここでは、仮に算出結果が「正」である場合にポリゴンの頂点が基準断面または拡張後の断面の拡張方向に所在するものとして説明を続ける。この場合には、式（１０）における算出結果が「正」であるならばポリゴンの頂点が基準断面よりも拡張方向側に存在することが判明する。式（１０）における算出結果が「０」であるならばポリゴンの頂点が基準断面上に存在することが判明する。また、式（１０）における算出結果が「負」であるならばポリゴンの頂点が基準断面よりも拡張方向の反対側に存在することが判明する。一方、式（１５）における算出結果が「正」であるならばポリゴンの頂点が拡張後の断面よりも拡張方向側に存在することが判明する。式（１５）における算出結果が「０」であるならばポリゴンの頂点が拡張後の断面上に存在することが判明する。また、式（１５）における算出結果が「負」であるならばポリゴンの頂点が拡張後の断面よりも拡張方向の反対側に存在することが判明する。
【０１５３】
このような確認を辺テーブルから取り出した面ＩＤに対応する全ての点ＩＤに対して行う。ここで、部分モデル生成部１４ｆは、３つの頂点を式（１０）に代入した時の算出結果が３つとも「正」であり、かつ３つの頂点を式（１５）に代入した時の算出結果が３つとも「負」であるポリゴンを使用する。なお、拡張方向が再決定された場合には、３つの頂点を式（１０）に代入した時の算出結果が３つとも「負」であり、かつ３つの頂点を式（１５）に代入した時の算出結果が３つとも「正」であるポリゴンを使用すればよい。
【０１５４】
その後、部分モデル生成部１４ｆは、部分モデルの候補とするポリゴンの面ＩＤを記憶する図示しない部分モデル候補リストに辺テーブルから取り出したポリゴンの面ＩＤを登録するとともにそのポリゴンの面ＩＤを探索済みリストに登録する。なお、部分モデル候補リストは、制御部１４内または記憶部１３内の作業記憶領域に保持される。
【０１５５】
続いて、部分モデル生成部１４ｆは、今回に探索したポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に探索済みリストに登録がない面ＩＤが存在するか否かを判定する。その後、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録されたと判定するまで、部分モデル生成部１４ｆは、隣り合うポリゴンの面ＩＤのうち探索済みリストに登録がない面ＩＤのポリゴンを対象に部分モデル候補リスト及び探索済みリストへの登録を行う。そして、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録された場合には、基準断面よりも拡張方向側に存在するポリゴンの面ＩＤが全て探索された状態となる。なお、この時、探索済みリストに登録されていた面ＩＤは消去される。
【０１５６】
その後、部分モデル生成部１４ｆは、拡張後断面用の輪郭辺テーブルに登録されている面ＩＤの面、すなわち拡張後の断面の輪郭辺を含むポリゴンの面ＩＤを探索済みリストに登録する。続いて、部分モデル生成部１４ｆは、拡張後の断面よりも拡張方向に存在するポリゴンの面ＩＤを図８に示した辺テーブルから取り出す。なお、この場合には、ポリゴンの３つの頂点を式（１５）に代入した時の算出結果が３つとも「正」であれば、ポリゴンが拡張後の断面よりも拡張方向に存在することが確認できる。
【０１５７】
そして、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンの面ＩＤを部分モデル候補リストから消去する。続いて、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンの面ＩＤを探索済みリストに登録する。
【０１５８】
続いて、部分モデル生成部１４ｆは、今回探索したポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に探索済みリストに登録がない面ＩＤが存在するか否かを判定する。その後、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録されたと判定するまで、部分モデル生成部１４ｆは、隣り合うポリゴンの面ＩＤのうち探索済みリストに登録がない面ＩＤのポリゴンを対象に探索を繰り返す。すなわち、部分モデル生成部１４ｆは、隣り合うポリゴンの面ＩＤを部分モデル候補リストから消去するとともにその面ＩＤを探索済みリストに登録する。そして、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録された場合には、拡張後の断面よりも拡張方向に存在するポリゴンの面ＩＤが全て探索された状態となる。
【０１５９】
このように、基準断面に対する面の探索では、部分モデル候補リストへの登録を行う一方で、拡張後の断面に対する面の探索では、部分モデル候補リストからの削除を行うのは、面が閉じていない拡張後の断面に対して面の探索を行うのを防止するためである。これによって、基準断面以外は３Ｄモデルが閉じた状態で面の探索を行うことができ、面の探索し漏れが生じるのを防止できる。
【０１６０】
ここで、部分モデル生成部１４ｆは、基準断面及び拡張後の断面には穴があいたままであるので、これらの断面の輪郭をふさぐ面を生成する。この輪郭をふさぐ手法の一例としては、３角形分割の方法が挙げられる。すなわち、基準断面または拡張後の断面の輪郭の形状が凸多角形の場合には、多角形の任意の２点を結ぶ線分が常にその多角形に含まれるので、１つの輪郭点と、それに隣接する輪郭点以外の全ての輪郭点との間で線分を生成する。
【０１６１】
これを説明すると、部分モデル生成部１４ｆは、輪郭辺テーブルを探索することにより、輪郭点を隣り合う順番に整列させる。このとき、任意の輪郭点をｐ（ｘ）とし、輪郭点がＮ個あるとすると、ｐ（０）、ｐ（１）及びｐ（２）と、ｐ（０）、ｐ（２）及びｐ（３）と、・・・、ｐ（０）、ｐ（Ｎ−２）及びｐ（Ｎ−１）というように３点を組み合わせることにより３角形を生成する。これによって基準断面及び拡張後の断面をふさぐ面を生成できる。
【０１６２】
ただし、元の輪郭が非凸多角形の場合は、この３角形分割手法では重複ができるので、辺の重なりのチェックをする必要がある。この場合、まず、ｐ（０）及びｐ（２）の線分と、輪郭をなす成分ｐ（０）及びｐ（１）、ｐ（１）及びｐ（２）、ｐ（３）及びｐ（４）、・・・、ｐ（Ｎ−２）及びｐ（Ｎ−１）という線分が交わるかどうかの判定を行う。かかる線分の交差は、ｐ１ｐ２とｐ３ｐ４を判定する際には、下記の式（１８）及び式（１９）の２つの不等号式を満たす場合に交差しているとみなすことができる。
【０１６３】
【数１８】
2011150667.tif 000020
【０１６４】
【数１９】
2011150667.tif 000021
【０１６５】
このとき、上記の式（１８）及び式（１９）の算出結果が２つの不等号式を満たさない場合、すなわち交差する線分がない場合には、そのまま凸多角形の場合と同様に輪郭をふさぐ。一方、上記の式（１８）及び式（１９）の算出結果が２つの不等号式を満たす場合、交差する成分がある場合は、起点となるｐ（０）を変更するか、もしくは接続先のｐ（２）を変更する。かかる変更を行うことにより、交差しない線分の組合せを探索する。この線分で多角形が２つの多角形に分割されるので、この多角形も同様に個別に三角形分割の処理を行う。これによって分割された３角形に新たに面ＩＤを採番する。
【０１６６】
この輪郭をふさぐ面を生成した後に、部分モデル生成部１４ｆは、部分モデル候補リストに消去されずに残っている面ＩＤ、３角形分割で生成された面ＩＤ、基準断面の輪郭辺を含むポリゴンの面ＩＤ、拡張後の断面の輪郭辺を含む面ＩＤを特定する。
【０１６７】
そして、部分モデル生成部１４ｆは、このようにして特定した面ＩＤに対応する３つの点ＩＤを面テーブルから取り出し、面ＩＤに３つの点ＩＤを対応付けたレコードを有する部分面テーブルを生成する。続いて、部分モデル生成部１４ｆは、生成した部分面テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、部分面テーブルが既に生成されている場合には、面ＩＤ及び３つの点ＩＤを含んでなるレコードが新たに追加される。
【０１６８】
この部分面テーブルは、部分モデルに含まれるポリゴンの面ＩＤごとにその面に含まれる頂点の点ＩＤを記憶したテーブルである。図１７は、部分面テーブルに記憶される情報の構成例を示す図である。図１７に示す例では、面ＩＤ「０」の面が点ＩＤ「０」、点ＩＤ「１」及び点ＩＤ「２」の３つの頂点を含んで構成される面であることを示す。なお、この図１７で点ＩＤの末尾に付される括弧付きの番号は、テーブルへ登録された順序を指し、（１）であれば１つ目、（２）であれば２つ目、（３）であれば３つ目であること示す。かかる登録順序は、部分面テーブル使用時の処理結果に及ぼすものではなく、必ずしも区別して登録される必要はない。
【０１６９】
また、部分モデル生成部１４ｆは、面テーブルから取り出した点ＩＤに対応する座標を図５に示した点テーブルから取り出し、点ＩＤにその座標を対応付けたレコードを有する部分点テーブルを生成する。そして、部分モデル生成部１４ｆは、生成した部分点テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、部分点テーブルが既に生成されている場合には、点ＩＤ及び座標を含んでなるレコードが新たに追加される。
【０１７０】
この部分点テーブルは、部分モデルに含まれるポリゴンの点ＩＤごとにその頂点のＸ座標、Ｙ座標及びＺ座標を記憶したテーブルである。図１８は、部分点テーブルに記憶される情報の構成例を示す図である。図１８に示す例では、点ＩＤ「０」の頂点の座標が（１０，１５，−２０）であることを示す。さらに、点ＩＤ「１」の頂点の座標が（１５，５０，−３０）であることを示す。また、点ＩＤ「２」の頂点の座標が（５，−１０，２０）であることを示す。
【０１７１】
このようにして生成された部分面テーブル及び部分点テーブルは、部分モデルの部分形状を示す。
【０１７２】
ここで、拡張処理部１４ｅによって拡張後の断面からさらなる再拡張が行われた時に生成された輪郭点テーブルに輪郭点が登録されていなかった場合には、断面の拡張が３Ｄモデルの拡張方向の末尾に至ったものとみなすことができる。この場合には、部分モデル生成部１４ｆは、基準断面に対する面の探索だけを実行する。なぜなら、３Ｄモデルの拡張方向の末尾を終端として断面を拡張すればよく、拡張後の断面に対する面の探索を実行する必要がないからである
【０１７３】
また、部分モデル生成部１４ｆは、拡張方向の再決定後には、基準断面に対する面の探索及び拡張後の断面に対する面の探索を初期の拡張方向の反対方向に行う。このため、部分モデル生成部１４ｆは、基準断面から初期の拡張方向に向かって３Ｄモデルの末尾まで拡張した時に生成した部分面テーブル及び部分点テーブルの内容を以降の拡張時に算出した部分面テーブル及び部分点テーブルに付加する。これによって３Ｄモデルの部分形状を未拡張の部分形状がなくなるまで段階的に拡張を行って部分モデルを生成することができる。
【０１７４】
図２の説明に戻り、類似度検索部１４ｇは、記憶部１３に部分モデルデータ１３ａとして記憶された部分モデルのうち、部分モデル生成部１４ｆによって生成された部分モデルとの間で特徴量が所定値以上の類似度を有する部分モデルを検索する処理部である。
【０１７５】
まず、類似度検索部１４ｇは、部分モデル生成部１４ｆによって生成された部分モデルの特徴量を抽出する。すなわち、類似度検索部１４ｇは、図１７に示した部分面テーブル及び図１８に示した部分点テーブルに記憶された３Ｄモデルの部分形状を１つの部分モデルとみなして、３次元形状に関する特徴量を抽出する。かかる特徴量抽出手法の一例としては、特開２００９−８０７９６号広報で開示される技術の他、各種の公知の技術を適用することができる。
【０１７６】
その上で、類似度検索部１４ｇは、記憶部１３に部分モデルデータ１３ａとして記憶された部分モデルのうち、３Ｄモデルの部分形状から抽出した部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する。例えば、同じ次元数のベクトル間の距離は、ユークリッド距離で算出することができる。ここで、非検索対象とする部分モデルの特徴量ベクトルをｆ（ｎ）とし、検索キーとする部分モデルの特徴量ベクトルをｇ（ｎ）とし、次元数をｍとしたとき、類似検索部１４ｇは、下記の式（２０）を用いて、ユークリッド距離ｄを算出できる。
【０１７７】
【数２０】
2011150667.tif 000022
【０１７８】
そして、類似度検索部１４ｇは、検索キーとする部分モデルとの間での距離の大きさが示す類似度が所定値以上である非検索対象の部分モデルを検索する。ここで、２つの部分モデルの距離が小さいほど類似度が高いとみなすことができる。この類似度検索部１４ｇは、今回に断面が拡張された段階を一意に特定するための拡張ＩＤを採番し、採番した拡張ＩＤに対して類似度が高い順に部分モデルＩＤ及びその類似度を対応付けたレコードを有する検索結果テーブルを生成する。続いて、類似度検索結果１４ｇは、生成した検索結果テーブルを記憶部１３の各種テーブルデータ１３ｃへ登録する。なお、検索結果テーブルが既に生成されている場合には、拡張ＩＤ、部分モデルＩＤ及び類似度を含んでなるレコードが新たに追加される。
【０１７９】
この検索結果テーブルは、拡張ＩＤごとに部分モデルＩＤ及び類似度を記憶したテーブルである。図１９は、検索結果テーブルに記憶される情報の構成例を示す図である。図１９に示す例は、拡張ＩＤがいずれも１であり、断面を始めて拡張した段階での検索結果であることを示す。この図１９の例では、部分モデルＩＤ「１４」の部分モデルが検索キーとした部分モデルとの間の類似度が０．４であり、また、部分モデルＩＤ「２」の部分モデルが検索キーとした部分モデルとの間の類似度が０．３５であることを示す。なお、拡張ＩＤが表す数字は、断面の拡張が行われた回数に対応しているものとする。
【０１８０】
図２の説明に戻り、結果選択部１４ｈは、類似検索部１４ｇによって検索された各部分モデルの検索結果の中から、表示部１２に表示させる部分モデルの検索結果を選択する処理部である。
【０１８１】
この結果選択部１４ｈは、類似検索部１４ｇによって拡張段階ごとに検索された検索結果の数、類似度が所定の最適値に近い度合いを示す評価値を算出する。これを説明すると、結果選択部１４ｈは、検索結果テーブルの中から部分モデルの類似度を部分モデルＩＤごとに取得する。さらに、結果選択部１４ｈは、検索結果テーブルの中から拡張ＩＤごとの検索結果の数を取得する。ここで、結果選択部１４ｈは、下記の式（２１）に示す評価関数を用いて、部分モデルごとの評価値を算出する。なお、検索結果テーブルは、記憶部１３に各種テーブルデータ１３ｃとして類似検索部１４ｇにより登録されたものである。
【０１８２】
【数２１】
2011150667.tif 000023
【０１８３】
上記の式（２１）では、特徴量ベクトル間の距離がｄであり、その距離の最大値がｍであり、検索結果の数がｃであり、類似度の重みがｗｓであり、検索結果の数の重みがｗｓであるものとする。なお、類似度の重みｗｓ及び検索結果の数の重みｗｓは、設計支援アプリの利用者または開発者が任意の値を設定できるものとする。
【０１８４】
この式（２１）の評価関数に既知である距離ｄ、最大値ｍ、検索結果の数ｃ、類似度の重みｗｓ検索結果の数の重みｗｓを各部分モデルＩＤごとに代入することにより、結果選択部１４ｈは、各部分モデルごとの評価値を得ることができる。
【０１８５】
この評価値の算出後に、結果選択部１４ｈは、評価値が高い部分モデルの部分モデルＩＤから順に所定の件数を表示部１２に表示させたり、また、最も評価値が高い部分モデルの部分モデルＩＤを表示部１２に表示させたりする。
【０１８６】
また、検索キーとした部分モデルとの間で類似する部分モデルの数が所定の上限値を超える場合には、結果選択部１４ｈは、検索結果の数を用いて、検索結果の数ができるだけ少ない場合を利用することもできる。
【０１８７】
また、断面を拡張する回数が増えるにつれて検索結果の数は増減するが、一般に汎用すぎるモデルの場合には、検索結果の数が多くなり、逆に特殊すぎる形状の場合には、検索結果の数が０件になる傾向にある。
【０１８８】
そこで、結果選択部１４ｈは、検索結果の数が所定の数よりも多く、かつ一番少ない拡張ＩＤの検索結果を使用することもできる。このような結果選択を行う場合には、式（２１）の関数ｆは、検索結果の数ｃが閾値以上で最も少ない場合にはｆ（ｃ）を１とし、それ以外の場合にはｆ（ｃ）を０と設定することもできる。
【０１８９】
また、結果選択部１４ｈは、下記の式（２２）を用いて、部分モデルの類似度とその拡張ＩＤにおける検索結果の数から評価値を算出し、その評価値を部分モデルに割り当てることもできる。
【０１９０】
【数２２】
2011150667.tif 000024
【０１９１】
上記の式（２２）では、検索結果の数の重みを設定した関数がｆであり、利用者が想定する検索結果の数がａであるものとする。この式（２２）を用いて評価値を算出した場合には、利用者が想定する検索結果の数ａに近付くほど評価値の値が高くなるように部分モデルの評価値を算出できる。
【０１９２】
［処理の流れ］
次に、本実施例に係る情報検索装置の処理の流れを説明する。なお、ここでは、情報検索装置１０によって行われる（１）全体処理、（２）基準断面輪郭所得処理、（３）拡張方向決定処理、（４）拡張処理、（５）部分モデル生成処理、（６）類似検索処理、（７）検索結果選択処理、（８）輪郭取得処理の順に説明する。
【０１９３】
（１）全体処理
図２０は、実施例２に係る全体処理の手順を示すフローチャートである。この全体処理は、利用者がポインティングデバイス等を用いて３Ｄモデル上で点を指定した場合に開始される。
【０１９４】
図２０に示すように、起点対応面取得部１４ａは、利用者により指定された起点から視点方向へ向かう直線と交わる３Ｄモデルのポリゴン、すなわち起点対応面を取得する（ステップＳ１０１）。そして、基準断面輪郭取得部１４ｃは、基準断面の輪郭を取得する「基準断面輪郭取得処理」を行う（ステップＳ１０２）。
【０１９５】
そして、拡張方向決定部１４ｄは、基準断面を拡張する拡張方向を決定する「拡張方向決定処理」を行い（ステップＳ１０３）、拡張処理部１４ｅは、基準断面から拡張方向へ断面を拡張する「拡張処理」を行う（ステップＳ１０４）。続いて、部分モデル生成部１４ｆは、後述する「部分モデル生成処理」を行う（ステップＳ１０５）。
【０１９６】
その後、類似検索部１４ｇは、部分モデル生成部１４ｆによって生成された部分モデルの特徴量を抽出する（ステップＳ１０６）。続いて、類似検索部１４ｇは、３Ｄモデルの部分形状から抽出した部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する「類似検索処理」を行う（ステップＳ１０７）。
【０１９７】
このとき、３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭が存在する場合（ステップＳ１０８肯定）には、情報検索装置１０は、上記のステップＳ１０４〜ステップＳ１０７までの処理を繰り返し行う。
【０１９８】
その後、３Ｄモデルの全ての輪郭を移動し終えた場合（ステップＳ１０８否定）に、結果選択部１４ｈは、各部分モデルの検索結果の中から表示部１２に表示させる部分モデルの検索結果を選択する「結果選択処理」を行い（ステップＳ１０９）、処理を終了する。
【０１９９】
（２）基準断面輪郭取得処理
図２１は、実施例２に係る基準断面輪郭取得処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０２の処理に対応しており、起点対応面が取得された場合に起動する。
【０２００】
図２１に示すように、基準断面輪郭取得部１４ｃは、基準断面の候補とする断面候補を取得する（ステップＳ２０１）。続いて、基準断面輪郭取得部１４ｃは、断面候補と交わるポリゴンの輪郭点及び輪郭辺を算出する（ステップＳ２０２）。そして、基準断面輪郭取得部１４ｃは、輪郭点、輪郭辺及びその算出に使用した面ＩＤなどの情報を用いて、処理済み面リスト、輪郭点テーブル及び輪郭辺テーブルを更新する（ステップＳ２０３）。
【０２０１】
その後、基準断面輪郭取得部１４ｃは、断面候補と交わる二辺について各辺が共有される面の面ＩＤを辺テーブルから取り出す（ステップＳ２０４）。続いて、基準断面輪郭取得部１４ｃは、辺テーブルから取り出した面ＩＤのうち処理済み面リストに登録がない面ＩＤだけを未処理の面リストへ登録する（ステップＳ２０５）。
【０２０２】
そして、基準断面輪郭取得部１４ｃは、未処理の面リストの面ＩＤが空になるまで（ステップＳ２０６肯定）、上記のステップＳ２０２〜Ｓ２０５までの処理を繰り返し行う。
【０２０３】
その後、未処理の面リストの面ＩＤが空になった場合（ステップＳ２０６否定）には、基準断面輪郭取得部１４ｃは、各輪郭辺の長さを足し合わせることにより、断面候補の輪郭距離を算出する（ステップＳ２０７）。
【０２０４】
そして、全ての断面候補の輪郭距離を算出するまで（ステップＳ２０８否定）、基準断面輪郭取得部１４ｃは、上記のステップＳ２０１〜Ｓ２０７までの処理を繰り返し行う。その後、全ての断面候補の輪郭距離を算出した場合（ステップＳ２０８肯定）には、基準断面輪郭取得部１４ｃは、全断面候補の輪郭距離のうち最も輪郭距離が小さい断面候補を基準断面と決定し（ステップＳ２０９）、処理を終了する。
【０２０５】
（３）拡張方向決定処理
図２２は、実施例２に係る拡張方向決定処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０３の処理に対応しており、基準断面の輪郭が取得された場合に起動する。
【０２０６】
図２２に示すように、拡張方向決定部１４ｄは、基準断面の輪郭辺を含むポリゴンの面ＩＤを計算済み面リストに登録する（ステップＳ３０１）。そして、拡張方向決定部１４ｄは、基準断面よりも第１の立体側に所在するポリゴンの面ＩＤを辺テーブルから取り出す（ステップＳ３０２）。
【０２０７】
その後、拡張方向決定部１４ｄは、辺テーブルから取り出したポリゴンが持つ体積を算出し、算出した体積を前回までに累積された累積値に加算する（ステップＳ３０３）。そして、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤを計算済み面リストへ登録する（ステップＳ３０４）。
【０２０８】
続いて、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に計算済み面リストに登録がない面ＩＤが存在するか否かを判定する（ステップＳ３０５）。
【０２０９】
その後、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録されたと判定するまで（ステップＳ３０５肯定）、拡張方向決定部１４ｅは、上記のステップＳ３０３及びＳ３０４の処理を繰り返し行う。そして、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録された場合（ステップＳ３０５否定）には、第１の立体に含まれるポリゴンの体積が全て加算された状態となる。このため、拡張方向決定部１４ｄは、それまでに加算された累積値を第１の立体の体積Ｖ１として保存する（ステップＳ３０６）。
【０２１０】
また、拡張方向決定部１４ｅは、基準断面よりも第２の立体側に所在するポリゴンの面ＩＤを辺テーブルから取り出す（ステップＳ３０７）。続いて、拡張方向決定部１４ｄは、辺テーブルから取り出したポリゴンが持つ体積を算出し、算出した体積を前回までに累積された累積値に加算する（ステップＳ３０８）。そして、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤを計算済み面リストへ登録する（ステップＳ３０９）。
【０２１１】
続いて、拡張方向決定部１４ｄは、今回に体積の加算を行ったポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に計算済み面リストに登録がない面ＩＤが存在するか否かを判定する（ステップＳ３１０）。
【０２１２】
その後、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録されたと判定するまで（ステップＳ３１０否定）、拡張方向決定部１４ｅは、上記のステップＳ３０８及びＳ３０９の処理を繰り返し行う。そして、隣り合うポリゴンの面ＩＤが全て計算済み面リストに登録された場合（ステップＳ３１０肯定）には、第２の立体に含まれるポリゴンの体積が全て加算された状態となる。このため、拡張方向決定部１４ｄは、それまでに加算された累積値を第２の立体の体積Ｖ２として保存する（ステップＳ３１１）。
【０２１３】
最後に、拡張方向決定部１４ｄは、第１の立体の体積と第２の立体の体積と比較し、第１の立体及び第２の立体のうち体積が小さい立体を特定し、基準断面から体積が小さい立体へ向かう方向を拡張方向として決定し（ステップＳ３１２）、処理を終了する。
【０２１４】
（４）拡張処理
図２３は、実施例２に係る拡張処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０４の処理に対応しており、拡張方向が決定された場合に起動する。
【０２１５】
図２３に示すように、拡張処理部１４ｅは、基準断面輪郭取得部１４ｃによって決定された基準断面から拡張方向決定部１４ｄによって決定された拡張方向へ断面を拡張させる（ステップＳ４０１）。
【０２１６】
続いて、拡張処理部１４ｅは、拡張後の断面と交わるポリゴンの輪郭点及び輪郭辺を算出する（ステップＳ４０２）。そして、拡張処理部１４ｅは、輪郭点、輪郭辺及びその算出に使用した面ＩＤなどの情報を用いて、処理済み面リスト、輪郭点テーブル及び輪郭辺テーブルを更新する（ステップＳ４０３）。
【０２１７】
その後、拡張処理部１４ｅは、拡張後の断面と交わる二辺について各辺が共有される面の面ＩＤを辺テーブルから取り出す（ステップＳ４０４）。続いて、拡張処理部１４ｅは、辺テーブルから取り出した面ＩＤのうち処理済み面リストに登録がない面ＩＤだけを未処理の面リストへ登録する（ステップＳ４０５）。
【０２１８】
そして、拡張処理部１４ｅは、未処理の面リストの面ＩＤが空になるまで（ステップＳ４０６肯定）、上記のステップＳ４０２〜Ｓ４０５までの処理を繰り返し行う。その後、未処理の面リストの面ＩＤが空になった場合（ステップＳ４０６否定）には、拡張処理部１４ｅは、各輪郭辺の長さを足し合わせることにより、拡張後の断面の輪郭距離を算出する（ステップＳ４０７）。
【０２１９】
最後に、拡張処理部１４ｅは、拡張後の断面の輪郭ＩＤ、法線ベクトル及び輪郭距離を含んでなる輪郭テーブルを生成し（ステップＳ４０８）、処理を終了する。
【０２２０】
（５）部分モデル生成処理
図２４は、実施例２に係る部分モデル生成処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０５の処理に対応しており、拡張後の断面について輪郭が取得された場合に起動する。
【０２２１】
図２４に示すように、部分モデル生成部１４ｆは、基準断面の輪郭辺を含むポリゴンの面ＩＤを探索済みリストに登録する（ステップＳ５０１）。その上で、部分モデル生成部１４ｆは、基準断面よりも拡張方向側に存在し、かつ拡張後の断面よりも拡張方向の反対側に存在するポリゴンの面ＩＤを辺テーブルから取り出す（ステップＳ５０２）。
【０２２２】
その後、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンの面ＩＤを部分モデル候補リストに登録する（ステップＳ５０３）。一方、部分モデル生成部１４ｆは、そのポリゴンの面ＩＤを探索済みリストに登録する（ステップＳ５０４）。
【０２２３】
続いて、部分モデル生成部１４ｆは、今回に探索したポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に探索済みリストに登録がない面ＩＤが存在するか否かを判定する（ステップＳ５０５）。その後、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録されたと判定するまで（ステップＳ５０５否定）、上記のステップＳ５０３及びＳ５０４の処理を繰り返し行う。
【０２２４】
そして、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録された場合（ステップＳ５０５肯定）には、部分モデル生成部１４ｆは、拡張後の断面の輪郭辺を含むポリゴンの面ＩＤを探索済みリストに登録する（ステップＳ５０６）。続いて、部分モデル生成部１４ｆは、拡張後の断面よりも拡張方向に存在するポリゴンの面ＩＤを辺テーブルから取り出す（ステップＳ５０７）。
【０２２５】
そして、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンの面ＩＤを部分モデル候補リストから消去する（ステップＳ５０８）。続いて、部分モデル生成部１４ｆは、辺テーブルから取り出したポリゴンの面ＩＤを探索済みリストに登録する（ステップＳ５０９）。
【０２２６】
続いて、部分モデル生成部１４ｆは、今回探索したポリゴンの面ＩＤと隣り合うポリゴンの面ＩＤの中に探索済みリストに登録がない面ＩＤが存在するか否かを判定する（ステップＳ５１０）。その後、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録されたと判定するまで（ステップＳ５１０否定）、上記のステップＳ５０８及びＳ５０９の処理を繰り返し行う。
【０２２７】
そして、隣り合うポリゴンの面ＩＤが全て探索済みリストに登録された場合（ステップＳ５１０肯定）には、部分モデル生成部１４ｆは、基準断面及び拡張後の断面の輪郭をふさぐ面を生成する（ステップＳ５１１）。その後、部分モデル生成部１４ｆは、部分面テーブル及び部分点テーブルを生成し（ステップＳ５１２）、処理を終了する。
【０２２８】
（６）類似検索処理
図２５は、実施例２に係る類似検索処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０７の処理に対応しており、部分モデルの特徴量が抽出された場合に起動する。
【０２２９】
図２５に示すように、類似検索部１４ｇは、記憶部１３に部分モデルデータ１３ａとして記憶された被検索対象の部分モデルの特徴量を読み出す（ステップＳ６０１）。そして、類似検索部１４ｇは、被検索対象の部分モデルの特徴量と、検索キーとする部分モデルの特徴量との間で類似度を算出する（ステップＳ６０２）。
【０２３０】
このとき、被検索対象の部分モデルと検索キーとする部分モデルとの類似度が所定値以上である場合（ステップＳ６０３肯定）には、類似検索部１４ｇは、拡張ＩＤ、部分モデルＩＤ及び類似度を検索結果テーブルに保存する（ステップＳ６０４）。なお、類似度が所定値未満である場合（ステップＳ６０３否定）には、検索結果を保存せずにそのままステップＳ６０５に移行する。
【０２３１】
そして、被検索対象の部分モデルの特徴量を全て読み出すまで（ステップＳ６０５否定）、類似検索部１４ｇは、上記のステップＳ６０１〜Ｓ６０４の処理を繰り返し行う。なお、被検索対象の部分モデルの特徴量を全て読み出した場合には（ステップＳ６０５肯定）、そのまま処理を終了する。
【０２３２】
（７）検索結果選択処理
図２６は、実施例２に係る検索結果選択処理の手順を示すフローチャートである。この処理は、図２０に示したステップＳ１０９の処理に対応しており、３Ｄモデルの全ての輪郭を移動し終えた場合に起動する。
【０２３３】
図２６に示すように、結果選択部１４ｈは、検索結果テーブルの中から部分モデルの類似度を部分モデルＩＤごとに取得する（ステップＳ７０１）。さらに、結果選択部１４ｈは、検索結果テーブルの中から拡張ＩＤごとの検索結果の数を取得する（ステップＳ７０２）。
【０２３４】
そして、結果選択部１４ｈは、下記の式（２１）に示す評価関数を用いて、部分モデルごとの評価値を算出し（ステップＳ７０３）、最も評価値が高い部分モデルの部分モデルＩＤを表示部１２に表示させ（ステップＳ７０４）、処理を終了する。
【０２３５】
（８）輪郭取得処理
図２７は、実施例２に係る輪郭取得処理の手順を示すフローチャートである。この処理は、上記の拡張処理の前処理として実行される処理であり、起点対応面が取得された段階で起動できる。
【０２３６】
図２７に示すように、まず、輪郭取得部１４ｂは、起点対応面取得部１４ａによって取得された面ＩＤのポリゴンが有する三辺の辺ＩＤそれぞれを辺テーブルから抽出する（ステップＳ８０１）。続いて、輪郭取得部１４ｂは、抽出した３つの辺ＩＤを未処理の辺リストへ追加するとともに、面ＩＤを処理済みの面リストへ追加する（ステップＳ８０２）。
【０２３７】
その後、輪郭取得部１４ｂは、未処理の辺リストに含まれる１つの辺ＩＤを対象に、辺テーブルから隣接する２つのポリゴンの面ＩＤを抽出する（ステップＳ８０３）。このとき、輪郭取得部１４ｂは、辺テーブルから面ＩＤを抽出する際にキーとした辺ＩＤを未処理の辺リストから削除する。
【０２３８】
そして、輪郭取得部１４ｂは、２つの面ＩＤそれぞれに対応する３つの頂点の座標位置を点テーブルから抽出し、各面ＩＤのポリゴンごとにその法線ベクトルを算出する。続いて、輪郭取得部１４ｂは、２つのポリゴンの法線ベクトルから隣接する２つのポリゴンの内積を算出し（ステップＳ８０４）、算出した内積が閾値以下であるか否かを判定する（ステップＳ８０５）。
【０２３９】
ここで、隣接する２つのポリゴンの内積が閾値未満である場合（ステップＳ８０５肯定）には、輪郭取得部１４ｂは、輪郭拡張候補ＩＤ、辺ＩＤ及び面ＩＤを対応付けたレコードを有する輪郭拡張候補テーブルを生成する（ステップＳ８０６）。隣接する２つのポリゴンの内積が閾値以上である場合（ステップＳ８０５否定）には、ステップＳ８０６を行わずにステップＳ８０７に移行する。
【０２４０】
その後、輪郭取得部１４ｂは、隣接する２つのポリゴンの面ＩＤの中に処理済みの面リストに未登録である面ＩＤが存在するか否かを判定する（ステップＳ８０７）。このとき、処理済みの面リストに未登録である面ＩＤがある場合（ステップＳ８０７肯定）には、輪郭取得部１４ｂは、その面ＩＤのポリゴンを形成する三辺のうち二辺の辺ＩＤを未処理の辺リストへ追加する（ステップＳ８０８）。そして、輪郭取得部１４ｂは、未処理の辺リストへ辺ＩＤを追加するのに使用した面ＩＤを処理済みの面リストへ登録する。なお、処理済みの面リストに未登録である面ＩＤがない場合（ステップＳ８０７否定）には、ステップＳ８０８を行わずにステップＳ８０９に移行する。
【０２４１】
その後、未処理の辺リストに登録された辺ＩＤが空になるまで（ステップＳ８０９否定）、輪郭取得部１４ｂは、上記のステップＳ８０３〜Ｓ８０８までの処理を繰り返し行う。未処理の辺リストに登録された辺ＩＤが空になった場合（ステップＳ８０９肯定）には、そのまま処理を終了する。
【０２４２】
［実施例２の効果］
上述してきたように、本実施例に係る情報検索装置１０は、３Ｄモデルの類似部分の検索時に利用者による指定点を含む複数の断面を求め、最小の断面を部品の体積が小さい方に移動させ、移動前後の断面が挟む部分形状を検索キーとする。このため、本実施例に係る情報検索装置１０では、利用者から３Ｄモデル上で起点とする位置を受け付けるだけで、検索キーとする部分モデルを抽出して部分モデル記憶部２ｂに対する検索を実行できる。したがって、本実施例に係る情報検索装置１０によれば、３Ｄモデルの部分形状を簡単な操作で検索することが可能である。
【０２４３】
また、本実施例に係る情報検索装置１０は、基準断面と平行に断面を移動させるか、或いは基準断面との間で面の向きが所定の角度まで変化することを許容して断面を拡張させる。そして、本実施例に係る情報検索装置１０は、断面の拡張ことにより、基準断面と拡張後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する。これにより、本実施例に係る情報検索装置１０によれば、３Ｄモデルの部分形状に追従させながら断面を拡張させることが可能である。
【０２４４】
さらに、本実施例に係る情報検索装置１０は、３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭に沿って断面をさらに移動させることにより他の部分モデルを抽出する。その上で、本実施例に係る情報検索装置１０は、部分モデルとともに抽出された他の部分モデルの特徴量をさらに算出し、記憶した部分モデルのうち、各部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する。それゆえ、本実施例に係る情報検索装置１０では、３Ｄモデルの部分形状を未拡張の部分形状がなくなるまで段階的に拡張を行って部分モデルを生成できる。したがって、本実施例に係る情報検索装置１０によれば、利用者が目的とする部分形状が検索結果に含まれる可能性を高めることができる。
【０２４５】
図２８及び図２９は、実施例２に係る効果を説明するための説明図である。図２８及び図２９に示す符号３０Ａ及び符号３０Ｂは、３Ｄモデルの一例を示す。図２８及び図２９に示す符号３１Ａ及び符号３１Ｂは、基準断面の一例を示す。図２８及び図２９に示す符号３２Ａ、符号３３Ａ、符号３４Ａ、符号３２Ｂ、符号３３Ｂ及び符号３４Ｂは、いずれも部分モデルの一例を示す図である。なお、図２８は、図１０で示した例と同じ基準断面を有し、また、図２９は、図１１で示した同じ基準断面を有する。
【０２４６】
図２８に示す例で言えば、断面の拡張を１度も行っていない初期段階では、基準断面３１Ａから拡張方向へ断面を拡張することにより部分モデル３２Ａを抽出する。次の段階では、基準断面３１Ａから再決定後の拡張方向へ断面を拡張することにより部分モデル３３Ａを抽出する。さらに、次の段階では、基準断面３１Ａから再決定後の拡張方向へ断面をさらに拡張することにより部分モデル３４Ａを抽出する。図２９に示す例で言えば、初期段階では、基準断面３１Ｂから拡張方向へ断面を拡張することにより部分モデル３２Ｂを抽出する。次の段階では、基準断面３１Ｂから再決定後の拡張方向へ断面を拡張することにより部分モデル３３Ｂを抽出する。さらに、次の段階では、基準断面３１Ｂから再決定後の拡張方向へ断面をさらに拡張することにより部分モデル３４Ｂを抽出する。これら図２８及び図２９の例で示したように、３Ｄモデル上で異なる起点が指定されたとしても、３Ｄモデルの部分形状を未拡張の部分形状がなくなるまで段階的に拡張を行って部分モデルを生成することができる。
【０２４７】
また、本実施例に係る情報検索装置１０は、各部分モデルごとに検索した検索結果の数が所定の最適値に近い度合いを示す評価値を算出し、各部分モデルの検索結果のうち、算出した評価値が最も高い部分モデルの検索結果を選択する。このため、本実施例に係る情報検索装置１０では、利用者に最適な数の検索結果を提示できる。したがって、本実施例に係る情報検索装置１０によれば、検索結果に含まれる部分モデルが汎用的過ぎたり、また、特殊な形状であったりなど、極端な検索結果を提示する可能性を低減することが可能である。
【０２４８】
さらに、本実施例に係る情報検索装置１０は、検索結果として得られた部分モデルのうち、最も高い類似度を有する部分モデルを選択する。このため、本実施例に係る情報検索装置１０によれば、目的とする部分モデルである可能性が最も高い部分モデルを利用者に提示することが可能である。
【０２４９】
また、本実施例に係る情報検索装置１０は、部分形状の開口部を閉じた上で部分モデルを抽出する。このため、本実施例に係る情報検索装置１０では、部分モデルの特徴量を抽出する際に精度が低下することがない。したがって、本実施例に係る情報検索装置１０によれば、利用者が意図したままの部分形状を部分モデルとして検索を行うことが可能である。
【０２５０】
図３０及び図３１は、実施例２に係る効果を説明するための説明図である。図３０及び図３１に示す符号５０及び符号６０は、３Ｄモデルの一例を示す。図３０及び図３１に示す符号Ｐ３及び符号Ｐ４は、利用者によって指定された起点である。図３０に示す符号５１は、起点を中心に拡張した場合の拡張範囲を示す。図３０に示す符号５１Ａは、拡張範囲５１における部分形状を示す。図３０に示す符号５２は、部分形状５１Ａの欠落部分をふさいだ部分モデルを示す。図３０に示す符号５３は、起点を中心にさらに拡張した場合の拡張範囲を示す。図３１に示す符号６１は、起点Ｐ４を含む基準断面から断面を拡張した場合の拡張範囲を示す。図３１に示す符号６１Ａは、拡張範囲６１における部分形状を示す。図３１に示す符号６２は、部分形状６１Ａの欠落部分をふさいだ部分モデルを示す。図３１に示す符号６３は、起点Ｐ４を含基準断面から断面をさらに拡張した場合の拡張範囲を示す。
【０２５１】
図３０に示す例では、利用者によって指定された起点Ｐ３を中心に拡張を行うと、起点Ｐ３に近い部分だけが拡張範囲５１となる。このため、拡張範囲５１から得られる部分形状５１Ａが歪な形になってしまう。このような部分形状５１Ａの欠落を補って部分モデル５２を生成したとしても、部分モデル５２の特徴量の算出時にはその精度が低下してしまう。そして、起点Ｐ３を中心にさらに拡張した場合にも、起点Ｐ３に近い部分だけが拡張範囲５３となることは変わらず、その部分形状はより歪になる。
【０２５２】
図３１に示す例では、利用者によって指定された起点Ｐ４を含む基準断面から断面を拡張した場合には、３Ｄモデル６０を輪切りにした状態の拡張範囲６１が得られる。このため、拡張範囲６１から得られる部分形状６１Ａの切断面を平面とすることができる。このような部分形状６１Ａは、基準断面と拡張後の断面がいずれも平面であるので、部分モデル６２を生成したとしても、部分モデル６２の特徴量の算出時にはその精度が低下しない。さらには、起点Ｐ４を含む基準断面からさらに断面を拡張した場合にも、３Ｄモデル６０を輪切りにした状態の拡張範囲６３となることは変わらず、その部分形状の切断面を平面に維持できる。
【実施例３】
【０２５３】
さて、これまで開示の装置に関する実施例について説明したが、開示の装置は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、開示の装置に含まれる他の実施例を説明する。
【０２５４】
［適用例］
例えば、上記の実施例２では、未拡張の３Ｄモデルのポリゴンがなくなるまで断面を拡張することとしたが、必ずしも３Ｄモデルの全てを対象に拡張する必要はない。一例としては、拡張済みの部分モデルの体積または表面積が上限値または３Ｄモデル全体に占める一定の割合を超えた場合に、断面の拡張を終了することとしてもよい。
【０２５５】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。一例としては、起点対応面取得部１４ａは、利用者の指示入力に頼ることなく、起点を自動的に取得するようにしてもかまわない。例えば、起点対応面取得部１４ａ、輪郭取得部１４ｂ、基準断面輪郭取得部１４ｃ、拡張方向決定部１４ｄ、拡張処理部１４ｅの全部または一部の機能を情報検索装置１０の外部装置としてネットワーク経由で接続するようにしてもよい。また、部分モデル生成部１４ｆ、類似検索プロセス１４ｇ、結果選択プロセス１４ｈの全部または一部の機能を情報検索装置１０の外部装置としてネットワーク経由で接続するようにしてもよい。そして、情報検索装置１０の設計支援アプリが外部装置を呼び出すことにより、情報検索機能を発揮することとしてもよい。
【０２５６】
［情報検索プログラム］
また、上記の実施例２で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図３２を用いて、上記の実施例２と同様の機能を有する情報検索プログラムを実行するコンピュータの一例について説明する。なお、図３２は、実施例３に係る情報検索プログラムを実行するコンピュータの一例について説明するための図である。
【０２５７】
図３２に示すように、実施例３におけるコンピュータ１００は、操作部１１０ａと、マイク１１０ｂと、スピーカ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ（Hard  Disk  Drive）１７０と、ＲＡＭ（Random  Access  Memory）１８０と有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０２５８】
ＲＯＭ１６０には、上記の実施例２で示した起点対応面取得部１４ａと、輪郭取得部１４ｂと、基準断面輪郭取得部１４ｃと、拡張方向決定部１４ｄと、拡張処理部１４ｅと同様の機能を発揮する制御プログラムが予め記憶される。さらに、ＲＯＭ１６０には、部分モデル生成部１４ｆと、類似検索プロセス１４ｇと、結果選択プロセス１４ｈと同様の機能を発揮する制御プログラムが予め記憶される。つまり、ＲＯＭ１６０には、図３２に示すように、起点対応面取得プログラム１６０ａと、輪郭取得プログラム１６０ｂと、基準断面輪郭取得プログラム１６０ｃと、拡張方向決定プログラム１６０ｄと、拡張処理プログラム１６０ｅとが記憶される。さらに、ＲＯＭ１６０には、部分モデル生成プログラム１６０ｆと、類似検索プログラム１６０ｇと、結果選択部１６０ｈとが記憶される。なお、これらのプログラム１６０ａ〜１６０ｈについては、図２に示した情報検索装置１０の各構成要素と同様、適宜統合又は分離しても良い。
【０２５９】
そして、ＣＰＵ１５０が、これらのプログラム１６０ａ〜１６０ｅをＲＯＭ１６０から読み出して実行する。これによって、ＣＰＵ１５０は、図３２に示すように、各プログラム１６０ａ〜１６０ｃについては、起点対応面取得プロセス１５０ａ、輪郭取得プロセス１５０ｂ及び基準断面輪郭取得プロセス１５０ｃとして機能するようになる。さらに、ＣＰＵ１５０は、拡張方向決定プロセス１５０ｄ、拡張処理プロセス１５０ｅ、部分モデル生成プロセス１５０ｆ、類似検索プロセス１５０ｇ及び結果選択プロセス１５０ｈとして機能するようになる。なお、各プロセス１５０ａ〜１５０ｅは、図２に示した、起点対応面取得部１４ａと、輪郭取得部１４ｂと、基準断面輪郭取得部１４ｃと、拡張方向決定部１４ｄと、拡張処理部１４ｅとにそれぞれ対応する。さらに、各プロセス１５０ｆ〜１５０ｈは、拡張処理部１４ｅと、部分モデル生成部１４ｆと、類似検索プロセス１４ｇと、結果選択プロセス１４ｈとにそれぞれ対応する。
【０２６０】
そして、ＨＤＤ１７０には、部分モデルデータ１７０ａと、３Ｄモデルデータ１７０ｂと、各種テーブルデータ１７０ｃとが設けられる。なお、これらのデータ１７０ａ〜１７０ｃは、図２に示した部分モデルデータ１３ａ、３Ｄモデルデータ１３ｂ及び各種テーブルデータ１３ｃに対応する。
【０２６１】
そして、ＣＰＵ１５０は、部分モデルデータ１７０ａ、３Ｄモデルデータ１７０ｂ及び各種テーブルデータ１７０ｃを読み出してＲＡＭ１８０に格納する。さらに、ＣＰＵ１５０は、ＲＡＭ１８０に格納された部分モデルデータ１８０ａと、３Ｄモデルデータ１８０ｂと、各種テーブルデータ１８０ｃとを用いて、情報検索プログラムを実行する。
【０２６２】
なお、上記した情報検索プログラムについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【０２６３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０２６４】
（付記１）部品を表す３Ｄモデルを記憶する３Ｄモデル記憶部と、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部と、
表示部に表示された３Ｄモデル上で、起点とする位置の指定を受け付ける受付部と、
前記３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付部によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出部と、
前記断面算出部によって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出部と、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出部による指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定部と、
前記移動方向決定部によって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出部と、
前記部分モデル抽出部によって抽出された部分モデルの特徴量を算出する特徴量算出部と、
前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出部によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索部と
を有することを特徴とする情報検索装置。
【０２６５】
（付記２）前記部分モデル抽出部は、前記基準断面と平行に前記断面を移動させるか、或いは前記基準断面との間で面の向きが所定の角度まで変化することを許容して前記断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出することを特徴とする付記１に記載の情報検索装置。
【０２６６】
（付記３）前記部分モデル抽出部は、前記３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭に沿って前記断面をさらに移動させることにより他の部分モデルを抽出し、
前記特徴量算出部は、前記部分モデル抽出部によって前記部分モデルとともに抽出された他の部分モデルの特徴量をさらに算出し、
前記検索部は、前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出部によって算出された各部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索することを特徴とする付記２に記載の情報検索装置。
【０２６７】
（付記４）前記検索部によって各部分モデルごとに検索された検索結果の数が所定の最適値に近い度合いを示す評価値を算出する評価値算出部と、
前記検索部によって検索された各部分モデルの検索結果のうち、前記評価値算出部によって算出された評価値が最も高い部分モデルの検索結果を選択する検索結果選択部とをさらに有することを特徴とする付記３に記載の情報検索装置。
【０２６８】
（付記５）前記検索部による検索結果として得られた部分モデルのうち、最も高い類似度を有する部分モデルを選択する検索結果選択部をさらに有することを特徴とする付記３に記載の情報検索装置。
【０２６９】
（付記６）前記部分モデル抽出部は、前記部分形状の開口部を閉じた上で前記部分モデルを抽出することを特徴とする付記１〜５のいずれか一つに記載の情報検索装置。
【０２７０】
（付記７）表示部に表示された部品を表す３Ｄモデル上で、起点とする位置の指定を受け付ける受付手順と、
前記３Ｄモデルを記憶する３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付手順によって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出手順と、
前記断面算出手順によって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出手順と、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出手順による指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定手順と、
前記移動方向決定手順によって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出手順と、
前記部分モデル抽出手順によって抽出された部分モデルの特徴量を算出する特徴量算出手順と、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出手順によって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索手順と
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０２７１】
（付記８）前記部分モデル抽出手順は、前記基準断面と平行に前記断面を移動させるか、或いは前記基準断面との間で面の向きが所定の角度まで変化することを許容して前記断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出することを特徴とする付記７に記載の情報検索プログラム。
【０２７２】
（付記９）前記部分モデル抽出手順は、前記３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭に沿って前記断面をさらに移動させることにより他の部分モデルを抽出し、
前記特徴量算出手順は、前記部分モデル抽出手順によって前記部分モデルとともに抽出された他の部分モデルの特徴量をさらに算出し、
前記検索手順は、前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出手順によって算出された各部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索することを特徴とする付記８に記載の情報検索プログラム。
【０２７３】
（付記１０）前記検索手順によって各部分モデルごとに検索された検索結果の数が所定の最適値に近い度合いを示す評価値を算出する評価値算出手順と、
前記検索手順によって検索された各部分モデルの検索結果のうち、前記評価値算出手順によって算出された評価値が最も高い部分モデルの検索結果を選択する検索結果選択手順とをさらにコンピュータに実行させることを特徴とする付記９に記載の情報検索プログラム。
【０２７４】
（付記１１）前記検索手順による検索結果として得られた部分モデルのうち、最も高い類似度を有する部分モデルを選択する検索結果選択手順をさらにコンピュータに実行させることを特徴とする付記９に記載の情報検索プログラム。
【０２７５】
（付記１２）前記部分モデル抽出手順は、前記部分形状の開口部を閉じた上で前記部分モデルを抽出することを特徴とする付記７〜１１のいずれか一つに記載の情報検索プログラム。
【０２７６】
（付記１３）表示部に表示された部品を表す３Ｄモデル上で、起点とする位置の指定を受け付ける受付ステップと、
前記３Ｄモデルを記憶する３Ｄモデル記憶部に記憶された３Ｄモデルのうち前記受付ステップによって指定が受け付けられた起点の法線方向に所在する３Ｄモデルを対象に、前記起点の法線方向を指す直線が当該３Ｄモデルと交わる交点を含む前記３Ｄモデルを分断する複数の断面を算出する断面算出ステップと、
前記断面算出ステップによって算出された断面によって前記３Ｄモデルが分断される立体それぞれの大きさを示す指標を算出する指標算出ステップと、
前記複数の断面のうち大きさが最小である断面と、該断面によって分断される立体のうち前記指標算出ステップによる指標の算出結果が最小となる立体との位置関係に基づき、当該大きさが最小である断面を基準断面とし、当該基準断面と直交する２方向のうちいずれの方向に断面を移動させるのかを決定する移動方向決定ステップと、
前記移動方向決定ステップによって決定された方向へ断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出する部分モデル抽出ステップと、
前記部分モデル抽出ステップによって抽出された部分モデルの特徴量を算出する特徴量算出ステップと、
前記３Ｄモデルにおける部分形状を表す部分モデルを記憶する部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出ステップによって算出された部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索する検索ステップと
をコンピュータが実行することを特徴とする情報検索方法。
【０２７７】
（付記１４）前記部分モデル抽出ステップは、前記基準断面と平行に前記断面を移動させるか、或いは前記基準断面との間で面の向きが所定の角度まで変化することを許容して前記断面を移動させることにより前記基準断面と移動後の断面との間に形成される３Ｄモデルの部分形状を部分モデルとして抽出することを特徴とする付記１３に記載の情報検索方法。
【０２７８】
（付記１５）前記部分モデル抽出ステップは、前記３Ｄモデルの輪郭のうち未だ移動が完了していない輪郭に沿って前記断面をさらに移動させることにより他の部分モデルを抽出し、
前記特徴量算出ステップは、前記部分モデル抽出ステップによって前記部分モデルとともに抽出された他の部分モデルの特徴量をさらに算出し、
前記検索ステップは、前記部分モデル記憶部に記憶された部分モデルのうち、前記特徴量算出ステップによって算出された各部分モデルの特徴量との間で所定値以上の類似度を有する部分モデルを検索することを特徴とする付記１４に記載の情報検索方法。
【０２７９】
（付記１６）前記検索ステップによって各部分モデルごとに検索された検索結果の数が所定の最適値に近い度合いを示す評価値を算出する評価値算出ステップと、
前記検索ステップによって検索された各部分モデルの検索結果のうち、前記評価値算出ステップによって算出された評価値が最も高い部分モデルの検索結果を選択する検索結果選択ステップとをさらにコンピュータが実行することを特徴とする付記１５に記載の情報検索方法。
【０２８０】
（付記１７）前記検索ステップによる検索結果として得られた部分モデルのうち、最も高い類似度を有する部分モデルを選択する検索結果選択ステップをさらにコンピュータが実行することを特徴とする付記１５に記載の情報検索方法。
【０２８１】
（付記１８）前記部分モデル抽出ステップは、前記部分形状の開口部を閉じた上で前記部分モデルを抽出することを特徴とする付記１３〜１７のいずれか一つに記載の情報検索方法。
【符号の説明】
【０２８２】
１    情報検索装置
２ａ  ３Ｄモデル記憶部
２ｂ  部分モデル記憶部
３    受付部
４    断面算出部
５    指標算出部
６    移動方向抽出部
７    部分モデル抽出部
８    特徴量算出部
９    検索部
１０    情報検索装置
１１    入力部
１２    表示部
１３    記憶部
１３ａ  部分モデルデータ
１３ｂ  ３Ｄモデルデータ
１３ｂ  各種テーブルデータ
１４    制御部
１４ａ  起点対応面取得部
１４ｂ  輪郭取得部
１４ｃ  基準断面輪郭取得部
１４ｄ  拡張方向決定部
１４ｅ  拡張処理部
１４ｆ  部分モデル生成部
１４ｇ  類似検索部
１４ｈ  結果選択部
【図１】
2011150667.tif 000025
【図２】
2011150667.tif 000026
【図３】
2011150667.tif 000027
【図４】
2011150667.tif 000028
【図５】
2011150667.tif 000029
【図６】
2011150667.tif 000030
【図７】
2011150667.tif 000031
【図８】
2011150667.tif 000032
【図９】
2011150667.tif 000033
【図１０】
2011150667.tif 000034
【図１１】
2011150667.tif 000035
【図１２】
2011150667.tif 000036
【図１３】
2011150667.tif 000037
【図１４】
2011150667.tif 000038
【図１５】
2011150667.tif 000039
【図１６】
2011150667.tif 000040
【図１７】
2011150667.tif 000041
【図１８】
2011150667.tif 000042
【図１９】
2011150667.tif 000043
【図２０】
2011150667.tif 000044
【図２１】
2011150667.tif 000045
【図２２】
2011150667.tif 000046
【図２３】
2011150667.tif 000047
【図２４】
2011150667.tif 000048
【図２５】
2011150667.tif 000049
【図２６】
2011150667.tif 000050
【図２７】
2011150667.tif 000051
【図２８】
2011150667.tif 000052
【図２９】
2011150667.tif 000053
【図３０】
2011150667.tif 000054
【図３１】
2011150667.tif 000055
【図３２】
2011150667.tif 000056