(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172052
(43)【公開日】2024-12-12
(54)【発明の名称】リバースエンジニアリング支援装置
(51)【国際特許分類】
G06F 30/12 20200101AFI20241205BHJP
G06F 30/10 20200101ALI20241205BHJP
【FI】
G06F30/12
G06F30/10 100
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2023089481
(22)【出願日】2023-05-31
(71)【出願人】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】青木 和佐
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146DG01
5B146DG02
5B146DG07
5B146DL08
5B146EA02
5B146EA09
5B146EA17
5B146EA18
5B146EC04
(57)【要約】
【課題】メッシュデータをCADデータ化する過程で、ワークに忠実かつユーザの意図に即したCADデータが容易に得られるようにする。
【解決手段】リバースエンジニアリング支援装置1は、メッシュデータから幾何要素を抽出する抽出部272と、抽出部272により抽出された複数の幾何要素の中から一の幾何要素の選択と論理演算の種別の選択を受け付ける受付部273と、受付部273により受け付けた論理演算の種別と幾何要素とを対応付けたレコードを合成処理テーブルに複数登録する登録部274と、登録されたレコードの各々について、各レコードに対応付けられた論理演算の種別に基づいて、幾何要素の論理演算を実行することで合成要素を作成する演算部275と、合成要素を表示部に表示させる表示制御部276とを備えている。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ワークの形状を測定することで得られたメッシュデータをCADデータに変換して出力するリバースエンジニアリング支援装置であって、
ワークのメッシュデータを取得するデータ取得部と、
前記データ取得部により取得されたワークのメッシュデータから複数の幾何要素を抽出する抽出部と、
前記抽出部により抽出された複数の幾何要素の中から一の幾何要素の選択を受け付けるとともに、当該一の幾何要素の論理演算の種別の選択を受け付ける受付部と、
前記受付部により受け付けた論理演算の種別と、前記受付部により受け付けた幾何要素とを対応付けたレコードを合成処理テーブルに複数登録可能に構成された登録部と、
前記合成処理テーブルに含まれ、前記登録部で登録されたレコードの各々について、各レコードに対応付けられた論理演算の種別に基づいて、幾何要素の論理演算を実行することで合成要素を作成する演算部と、
前記演算部により作成された合成要素を表示部に表示させる表示制御部と、を備える、リバースエンジニアリング支援装置。
【請求項2】
請求項1に記載のリバースエンジニアリング支援装置において、
前記受付部は、一の幾何要素の選択と、当該一の幾何要素の論理演算の種別の選択を追加で受け付け、
前記登録部は、追加で受け付けた一の幾何要素と、当該一の幾何要素の論理演算の種別とを対応付けたレコードを合成処理テーブルに追加し、
前記演算部は、前記合成処理テーブルに追加されたレコードに基づいて、前記合成要素と前記一の幾何要素の論理演算を実行することで合成要素を更新し、
前記表示制御部は、前記演算部により更新された合成要素を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項3】
請求項1に記載のリバースエンジニアリング支援装置において、
前記表示制御部は、
前記データ取得部により取得したメッシュデータを表示するメッシュ表示領域と、
前記演算部により演算された合成要素を表示する合成要素表示領域と、
前記抽出部により抽出された複数の幾何要素を合成候補として表示する候補表示領域と、を含む合成画面を表示部に表示させ、
前記受付部は、前記候補表示領域に表示された複数の幾何要素の中から論理演算に用いる一の幾何要素の選択を受け付ける、リバースエンジニアリング支援装置。
【請求項4】
請求項1に記載のリバースエンジニアリング支援装置において、
前記演算部は、前記合成処理テーブルに登録された複数のレコードについて、各々のレコードに含まれた論理演算の種別に基づいて、レコードの登録順に論理演算を実行し、合成要素を作成する、リバースエンジニアリング支援装置。
【請求項5】
請求項1に記載のリバースエンジニアリング支援装置において、
前記合成処理テーブルには、各々の幾何要素の合成順序を示す項目が含まれるとともに、前記レコードには、当該レコードに含まれる幾何要素の合成順序を示すインデックスが含まれ、
前記演算部は、前記合成処理テーブルに登録された複数のレコードについて、各々のレコードに対応付けられた論理演算の種別と合成順序を示すインデックスに基づいて論理演算を実行し、合成要素を作成する、リバースエンジニアリング支援装置。
【請求項6】
請求項3に記載のリバースエンジニアリング支援装置において、
前記合成画面には、論理演算の種別を選択するための種別選択領域がさらに含まれ、
前記種別選択領域には、
前記受付部により受け付けた一の幾何要素の論理演算種別を指定するためのアイコンが設けられる、リバースエンジニアリング支援装置。
【請求項7】
請求項6に記載のリバースエンジニアリング支援装置において、
合成要素の合成順序が示される選択要素表示領域の表示が可能であり、
前記表示制御部は、前記候補表示領域に表示された一の幾何要素の選択と、前記種別選択領域に表示された複数の論理演算の種別の中から当該一の幾何要素の論理演算の種別の選択が前記受付部により受け付けられたことに応じて、当該一の幾何要素を前記選択要素表示領域に追加して前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項8】
請求項7に記載のリバースエンジニアリング支援装置において、
前記受付部は、前記選択要素表示領域に表示される複数の幾何要素の順序の変更を受け付け可能に構成され、
前記演算部は、前記受付部により複数の幾何要素の順序の変更を受け付けると、前記選択要素表示領域に表示されている幾何要素の論理演算を、当該表示されている順序で各々の幾何要素に対応付けられた論理演算の種別に基づいて実行することにより合成要素を更新し、
前記表示制御部は、前記演算部により更新された合成要素を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項9】
請求項3に記載のリバースエンジニアリング支援装置において、
前記表示制御部は、前記候補表示領域から一の幾何要素が選択されたことに応じて、当該一の幾何要素が前記メッシュ表示領域と前記合成要素表示領域の各々に重畳された合成画面を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項10】
請求項9に記載のリバースエンジニアリング支援装置において、
前記表示制御部は、前記一の幾何要素の表示色を前記メッシュ表示領域に表示されるメッシュデータの表示色と異ならせることで、当該一の幾何要素を識別可能に表示した合成画面を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項11】
請求項9に記載のリバースエンジニアリング支援装置において、
前記表示制御部は、前記一の幾何要素の表示色を前記合成要素表示領域に表示される合成要素の表示色と異ならせることで、当該一の幾何要素を識別可能に表示した合成画面を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項12】
請求項11に記載のリバースエンジニアリング支援装置において、
識別可能に表示された幾何要素の論理演算が前記演算部により実行されると、前記表示制御部は、当該識別可能に表示されていた幾何要素の表示色を前記合成要素表示領域に表示される合成要素の表示色と同じにした合成画面を前記表示部に表示させる、リバースエンジニアリング支援装置。
【請求項13】
請求項3に記載のリバースエンジニアリング支援装置において、
前記受付部は、前記合成画面に表示された幾何要素の選択と、当該一の幾何要素の論理演算の種別の選択を追加で受け付け可能に構成されている、リバースエンジニアリング支援装置。
【請求項14】
請求項13に記載のリバースエンジニアリング支援装置において、
前記合成画面には、前記抽出部により幾何要素を抽出するための幾何要素抽出画面がさらに含まれる、リバースエンジニアリング支援装置。
【請求項15】
請求項14に記載のリバースエンジニアリング支援装置において、
前記合成画面には、前記幾何要素抽出画面に遷移するためのアイコンがさらに含まれる、リバースエンジニアリング支援装置。
【請求項16】
請求項1に記載のリバースエンジニアリング支援装置において、
前記抽出部により抽出された幾何要素データの座標値および寸法値の少なくとも一方に対して端数処理を実行する端数処理部を更に備え、
前記演算部は、前記端数処理部により端数処理が施された幾何要素データに基づいて、幾何要素の論理演算を実行する、リバースエンジニアリング支援装置。
【請求項17】
請求項16に記載のリバースエンジニアリング支援装置において、
前記登録部は、前記レコードごとに端数処理の要否を示すデータを合成処理テーブルに登録可能に構成され、
前記端数処理部は、前記合成処理テーブルに登録されたレコードの各々について、各レコードに対応付けられた端数処理要否を示すデータに基づいて、幾何要素データの座標値および寸法値の少なくとも一方に対して端数処理を実行するか否かを決定する、リバースエンジニアリング支援装置。
【請求項18】
請求項17に記載のリバースエンジニアリング支援装置において、
前記登録部は、前記レコードごとに端数処理の分解能パラメータを合成処理テーブルに登録可能に構成され、
前記端数処理部は、端数処理を実行する幾何要素に対応するレコードの各々について、各レコードに対応付けられた分解能パラメータを取得し、当該取得した分解能パラメータに基づいて、幾何要素データの座標値および寸法値の少なくとも一方に対して端数処理を実行する、リバースエンジニアリング支援装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、現物の形状を取得して設計データ化し、ものづくりに活かすリバースエンジニアリングを支援するリバースエンジニアリング支援装置に関する。
【背景技術】
【0002】
近年、リバースエンジニアリングがものづくりの多方面で利用されている。例えば既存製品の形状をスキャン、CADデータ化して次機種展開や形状解析をCAD・CAE上で実施したり、製品デザインにおけるモデルやモックの形状をスキャン、CADデータ化して製品設計に反映したり、嵌合する相手部品の形状をスキャン、CADデータ化して嵌合元となる製品を設計したり、試作品の形状をスキャン、CADデータ化して改良設計に繋げるといった用途がリバースエンジニアリングで存在しており、その用途は拡大傾向にある。
【0003】
例えば特許文献1には、三次元空間における複数の測定点の位置情報を測定し、測定対象物の立体形状データを生成する三次元測定装置が開示されている。特許文献1の三次元測定装置は、取得した立体形状データに基づいて、複数の幾何要素を抽出し、抽出した複数の幾何要素間の距離や角度を算出可能に構成されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、リバースエンジニアリングの際、ワークを測定して取得されたメッシュデータをCADデータ化する必要がある。しかし、一般的なリバースエンジニアリングソフトでは、メッシュデータを下書きとしてCADモデリングを実施する必要があり、CADソフトと同レベルの習熟度が必要とされる。
【0006】
例えば、三次元測定装置等により取得したメッシュデータに基づいて、リバースエンジニアリングソフト上で基本となる円筒や直方体などの幾何形状を作成した後、ソリッド体に変換し、集合演算を適用することで、ワークに即したCADデータの作成を行うことが可能である。
【0007】
しかし、一般的なリバースエンジニアリングソフトを取り扱うことが難しいことに加え、表示画面上で見たとき、メッシュデータとCADデータが重なっていて、集合演算結果の形状がどのようになるのか、集合演算の結果でどこまでの形状を作成できているのかが判然としない場合がある。また、集合演算の際には、「基準」のデータに対して、「組み合わせる」データを指定する必要があるため、これらを区別しながら形状を作り上げなければならず、難易度が高い。さらに、従来の集合演算では、一度の演算で加算か減算のどちらかしか指定できず、演算順序や符号も柔軟に変えられないため、試行錯誤しにくいという問題もあった。要するに、メッシュデータをCADデータ化する過程で、ワークに忠実かつユーザの意図に即したCADデータを簡便に得るのが難しかった。
【0008】
本開示は、かかる点に鑑みてなされたものであり、その目的とするところは、メッシュデータをCADデータ化する過程で、ワークに忠実かつユーザの意図に即したCADデータが容易に得られるようにすることにある。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本態様では、ワークの形状を測定することで得られたメッシュデータをCADデータに変換して出力するリバースエンジニアリング支援装置を前提とすることができる。リバースエンジニアリング支援装置は、ワークのメッシュデータを取得するデータ取得部と、前記データ取得部により取得されたワークのメッシュデータから複数の幾何要素を抽出する抽出部と、前記抽出部により抽出された複数の幾何要素の中から一の幾何要素の選択を受け付けるとともに、当該一の幾何要素の論理演算の種別の選択を受け付ける受付部と、前記受付部により受け付けた論理演算の種別と、前記受付部により受け付けた幾何要素とを対応付けたレコードを、合成処理テーブルに複数登録可能に構成された登録部と、前記合成処理テーブルに含まれ、前記登録部で登録されたレコードの各々について、各レコードに対応付けられた論理演算の種別に基づいて、幾何要素の論理演算を実行することで合成要素を作成する演算部と、前記演算部により作成された合成要素を表示部に表示させる表示制御部と、を備えている。
【0010】
この構成によれば、データ取得部で取得されたワークのメッシュデータから抽出部が複数の幾何要素を抽出した場合に、ユーザが複数の幾何要素の中から一の幾何要素を選択し、選択した一の幾何要素の論理演算の種別を更に選択すると、選択された一の幾何要素及び論理演算の種別が受付部によって受け付けられる。選択可能な論理演算の種別としては、例えば和、差、積等を挙げることができる。
【0011】
選択された一の幾何要素及び論理演算の種別は対応付けられてレコードが構成され、登録部で登録される。例えば、ユーザが第1の幾何要素と、第1の論理演算の種別とを選択すると、第1の幾何要素及び第1の論理演算の種別が対応付けられて第1のレコードが構成され、また、ユーザが第2の幾何要素と、第2の論理演算の種別とを選択すると、第2の幾何要素及び第2の論理演算の種別が対応付けられて第2のレコードが構成される。このように第1及び第2のレコードが構成された場合、第1及び第2のレコードが合成処理テーブルに登録される。演算部は、登録部で登録された第1及び第2のレコードの各々について、各レコードに対応付けられた論理演算の種別に基づいて、幾何要素の論理演算を実行して合成要素を作成し、演算部により作成された合成要素が表示部に表示されるので、ユーザは幾何要素の選択、論理演算の種別の選択を行うだけで、集合演算結果の形状がどのようになるのか、集合演算の結果でどこまでの形状を作成できているのかを表示部上で容易に確認可能になる。もちろん、第3のレコード、第4のレコード等が登録されていてもよい。
【0012】
また、ユーザは、第1の幾何要素と第1の論理演算の種別の選択、第2の幾何要素と第2の論理演算の種別の選択を単純に行っていけばよいので、「基準」のデータと「組み合わせる」データとの区別が不要になり、CADデータ作成時の難易度が低くなる。さらに、論理演算の種別は、ユーザが任意に選択可能なので、CADデータ作成時の試行錯誤が容易に行えるようになり、ワークに忠実かつユーザの意図に即したCADデータ化が可能になる。
【0013】
前記受付部は、一の幾何要素の選択と、当該一の幾何要素の論理演算の種別の選択を追加で受け付けることもできる。この場合、前記登録部は、追加で受け付けた一の幾何要素と、当該一の幾何要素の論理演算の種別とを対応付けたレコードを合成処理テーブルに追加し、前記演算部は、前記合成処理テーブルに追加されたレコードに基づいて、前記合成要素と前記一の幾何要素の論理演算を実行することで合成要素を更新し、前記表示制御部は、前記演算部により更新された合成要素を前記表示部に表示させることができる。
【0014】
この構成によれば、幾何要素を追加する毎に合成要素が更新され、更新された合成要素が表示部に表示されるため、作成しているCADデータの妥当性が確認しやすく、試行錯誤を繰り返すことでユーザの意図に即したCADデータに近づけることが容易になる。
【0015】
前記表示制御部は、前記データ取得部により取得したメッシュデータを表示するメッシュ表示領域と、前記演算部により演算された合成要素を表示する合成要素表示領域と、前記抽出部により抽出された複数の幾何要素を合成候補として表示する候補表示領域と、を含む合成画面を表示部に表示させることで、メッシュデータと、合成要素と、合成候補とをユーザが区別可能な形態で表示できる。そして、ユーザは、前記候補表示領域に表示された複数の幾何要素の中から論理演算に用いる一の幾何要素の選択できるので、選択操作を行い易くなる。
【0016】
前記合成画面には、論理演算の種別を選択するための種別選択領域がさらに含まれていてもよい。前記種別選択領域には、前記受付部により受け付けた一の幾何要素の論理演算種別を指定するためのアイコンが設けられていることで、ユーザは指定頻度の高い和の指定と差の指定とが容易に行えるようになる。
【0017】
前記受付部は、選択要素表示領域に表示される複数の幾何要素の順序の変更を受け付け可能に構成されていてもよい。この場合、前記演算部は、前記受付部により複数の幾何要素の順序の変更を受け付けると、前記選択要素表示領域に表示されている幾何要素を、当該表示されている順序で各々の幾何要素に対応付けられた論理演算の種別に基づいて論理演算を実行し、合成要素を更新し、前記表示制御部は、前記演算部により更新された合成要素を前記表示部に表示させることができる。
【発明の効果】
【0018】
以上説明したように、ユーザが幾何要素の選択と論理演算の種別の選択を行うと、それらが対応付けられて複数のレコードとして登録され、登録された複数のレコードの各々について演算された合成要素を表示部に表示させることができるので、メッシュデータをCADデータ化する過程で、ワークに忠実かつユーザの意図に即したCADデータを容易に得ることができる。
【図面の簡単な説明】
【0019】
【
図1】本発明の実施形態に係るリバースエンジニアリング支援装置の全体構成を示す図である。
【
図2】リバースエンジニアリング支援装置のブロック図である。
【
図6】変換モジュールの動作の一例を示すフローチャートである。
【
図8】複数の幾何要素が抽出された場合の要素設定画面の一例を示す図である。
【
図9】表面が僅かに残存したCADデータの例を示す図である。
【
図10】円筒/円錐の要素拡縮処理の一例を示すフローチャートである。
【
図11】オフセット六面体の要素拡縮処理の一例を示すフローチャートである。
【
図12】要素丸め処理の一例を示すフローチャートである。
【
図14】六面体が幾何要素として選択された例を示す
図13相当図である。
【
図15】論理演算の種別が選択された例を示す
図13相当図である。
【
図17】2つ目の幾何要素が選択された例を示す
図13相当図である。
【
図18】2つ目の幾何要素の論理演算の種別が選択された例を示す
図13相当図である。
【
図19】論理演算の種別が差の場合の例を示す
図13相当図である。
【
図21】例外判定処理の一例を示すフローチャートである。
【
図22】再計算処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
【0021】
図1は、本発明の実施形態に係るリバースエンジニアリング支援装置1の全体構成を示す図である。リバースエンジニアリング支援装置1は、ワーク(測定対象物)Wの形状を測定することで得られたワークWのメッシュデータをCADデータに変換して出力する装置である。リバースエンジニアリング支援装置1は、例えば既存製品のCADデータを取得して次期種展開や形状解析をCAD・CAE上で実施したり、製品デザインにおけるモデルやモックの形状を製品設計に反映したり、嵌合する相手部品の形状に基づいて嵌合元となる製品を設計したり、試作品の形状に基づいて改良設計を行う場合等に利用される。したがって、ワークWは、例えば既存製品、モデル、モック、試作品等である。
【0022】
また、リバースエンジニアリング支援装置1は、ワークWのメッシュデータをサーフェスデータに変換して出力することが可能な装置である。ワークWのメッシュデータをサーフェスデータに変換して出力することで、ユーザのリバースエンジニアリング工程、リバースエンジニアリング作業を支援することができる。
【0023】
以下の説明では、ワークWの形状を測定する際に、ワークW表面の座標情報を取得するにあたり、所定のパターンの測定光をワークWに対して照射して、ワークWの表面で反射された反射光から得られる信号を用いて、座標情報を取得している。例えば、所定のパターンの測定光として、構造化照明を用いて、ワークWに投影し、その反射光から得られる縞投影画像を用いた三角測距を用いた計測方法を用いることができる。ただ、本発明では、ワークWの座標情報を取得するための原理や構成は、これに限らず、他の方法も適用することができる。
【0024】
リバースエンジニアリング支援装置1は、測定部100、台座部600と、コントローラ200、光源部300及び表示部400を備えている。リバースエンジニアリング支援装置1は、光源部300で構造化照明をワークWに対して行い、縞投影画像を撮像して座標情報を有する深度画像を生成し、これに基づいてワークWの三次元寸法や形状を計測することができる。このような縞投影を用いた測定は、ワークWやレンズ等の光学系をZ方向(高さ方向)に移動させることなく三次元測定ができるため、測定時間を短くできるという利点がある。尚、表示部400は、リバースエンジニアリング支援装置1に含まれていなくてもよく、この場合、後述する表示制御部276により制御される表示部400が別途設けられることになる。
【0025】
図2は、本発明の実施形態に係るリバースエンジニアリング支援装置1のブロック図を示す。この図に示すように、測定部100は、投光部110と、受光部120と、測定制御部150と、照明光出力部130とを備えている。投光部110は、後述する載置部140に載置されたワークWに所定のパターンを有する測定光を照射する部分である。受光部120は、後述する載置面142に対して傾斜した姿勢で固定されている。投光部110により照射され、ワークWにて反射された測定光を受光部120が受光する。受光部120は、ワークWからの反射光を受光すると、受光量を表す受光信号を出力する。受光部120は、載置部140に載置されたワークWを撮像することによりワークWの全体形状を観察するための観察画像を生成することができる。
【0026】
本実施形態に係る受光部120は、高倍受光部と低倍受光部とを含んでいる。高倍受光部は、ワークWを低倍受光部に比べて拡大して撮像可能な部分である。一方、低倍受光部は、高倍受光部に比べて視野範囲が広い受光部である。
【0027】
台座部600は、ベースプレート602と載置部140と移動制御部144とを備えている。この台座部600のベースプレート602上に載置部140が支持されている。移動制御部144は、載置部140を移動させる部材である。移動制御部144は、台座部600側に設ける他、コントローラ200側に設けてもよい。
【0028】
光源部300は、測定部100と接続されている。光源部300は、測定光を生成して測定部100に供給する部分である。コントローラ200は、測定部100等を制御する部分である。表示部400は、コントローラ200と接続され、測定部100により生成された画像を表示し、また必要な設定、入力、選択等を行うことが可能に構成されている。
【0029】
載置部140は、ワークWが載置される載置面142を有する。
図4に示すように、載置面142内で互いに直交する2方向をX方向及びY方向と定義し、それぞれ矢印X、Yで示す。載置部140の載置面142に対して直交する方向をZ方向と定義し、矢印Zで示す。Z方向に平行な軸を中心に回転する方向をθ方向と定義し、矢印θで示す。
【0030】
載置部140は、載置面142をZ方向に延びる軸周りに回転させる回転ステージ143と、載置面142を水平方向(X方向、Y方向)に移動させる並進ステージ141とを含んでいる。並進ステージ141は、X方向移動機構及びY方向移動機構を有する。また、回転ステージ143は、θ方向回転機構を有する。載置部140は、載置面142にワークWを固定する固定部材(クランプ)を含めてもよい。さらに載置部140は、載置面142に平行な軸を中心に回転可能な機構を有するチルトステージを含んでもよい。
【0031】
移動制御部144は、後述する測定条件設定部261により設定された測定条件に従って、回転ステージ143の回転移動及び並進ステージ141の平行移動を制御する。また移動制御部144は、後述する測定条件設定部261により設定された測定領域に基づいて、載置移動部による載置部140の移動動作を制御する。
【0032】
コントローラ200は、CPU(中央演算処理装置)210、ROM(リードオンリメモリ)220、作業用メモリ230、記憶装置(記憶部)240及び操作部250等を含んでいる。コントローラ200には、PC(パーソナルコンピュータ)等が利用できる。
【0033】
測定部100の構成を
図4のブロック図に示す。測定部100は、投光部110、受光部120、照明光出力部130、測定制御部150、及びこれらを収納する本体ケース101を備えている。投光部110は、測定光源111、パターン生成部112及び複数のレンズ113、114、115を含む。受光部120は、カメラ121及び複数のレンズ122、123を含んでいる。複数の受光部を設けることで異なる倍率での測定を行う場合、低倍用のカメラ121と低倍用のレンズを含む受光部120aと、高倍用のカメラ121と高倍用のレンズを含む受光部120bとが装着されてもよい。なお、この構成に限らず、1つのカメラ121に対し複数のレンズを切り替えることで倍率を可変としたり、1つのカメラ121に対しズームレンズを設けることで倍率を可変としてもよい。
【0034】
投光部110は、載置部140の斜め上方に配置されている。
図4に示す例においては、測定部100が2つの投光部110を含んでいるが、測定部100は、複数の投光部110を含んでもよい。ここでは、第一の方向から測定対象物WKに対して第一測定光ML1を照射可能な第一測定光投光部110A(
図4において右側)と、第一の方向とは異なる第二の方向から測定対象物WKに対して第二測定光ML2を照射可能な第二測定光投光部110B(
図4において左側)がそれぞれ設けられている。第一測定光投光部110A、第二測定光投光部110Bは受光部120の光軸を対称の中心として対称に配置される。なお、図示しないが、投光部110を3以上備えたり、あるいは投光部110と載置部140を相対移動させて、共通の投光部110を用いつつも、照明の方向を異ならせてワークWに投光させることも可能である。また以上の例では投光部110を複数用意し、共通の受光部120で受光する構成としているが、逆に共通の投光部110に対して、複数の受光部120を用意して受光するように構成してもよい。さらにこの例では投光部110が投光する照明光のZ方向に対する照射角度を固定としているが、これを可変とすることもできる。
【0035】
各第一測定光投光部110A、第二測定光投光部110Bは、測定光源111としてそれぞれ第一測定光源、第二測定光源を備える。これら測定光源111は、例えば白色光を出射するハロゲンランプである。測定光源111は、単色光を発光する光源、例えば青色光を出射する青色LED(発光ダイオード)や有機EL等の他の光源であってもよい。測定光源111から出射された光(以下、「測定光」と呼ぶ。)は、レンズ113により適切に集光された後、パターン生成部112に入射される。
【0036】
投光部110A、110Bの中心軸と受光部120の中心軸とは、載置部140上のワークWの配置と投光部110、受光部120の被写界深度が適切となる位置において交差するように、受光部120、投光部110A、110B、載置部140の相対的な位置関係が定められている。また、θ方向の回転軸の中心は、受光部120の中心軸と一致しているため、θ方向に載置部140が回転した際に、ワークWが視野から外れることなく、回転軸を中心に視野内で回転するようになっている。
【0037】
パターン生成部112は、測定光をワークWに対して投光させるよう、測定光源111から出射された光を反射させる。パターン生成部112に入射した測定光は、予め設定されたパターン及び予め設定された強度(明るさ)に変換されて出射される。パターン生成部112により出射された測定光は、複数のレンズ114、115により受光部120の観察・測定可能な視野よりも大きい径を有する光に変換された後、載置部140上のワークWに照射される。
【0038】
パターン生成部112は、測定光をワークWに投光させる投光状態と、測定光をワークWに投光させない非投光状態とに切り替え可能な部材である。このようなパターン生成部112には、例えばDMD(デジタルマイクロミラーデバイス)等を利用できる。DMDを用いたパターン生成部112は、投光状態として測定光を光路上に反射させる反射状態と、非投光状態として測定光を遮光させる遮光状態とを切り替え可能に、測定制御部150により制御できる。
【0039】
DMDは多数のマイクロミラー(微小鏡面)を平面上に配列した素子である。各マイクロミラーは、測定制御部150により個別にON状態、OFF状態を切り替えることができるので、多数のマイクロミラーのON状態、OFF状態を組み合わせて、所望の投影パターンを構成できる。これによって、三角測距に必要なパターンを生成して、ワークWの形状の測定が可能となる。このようにDMDは、測定時には測定用の周期的な投影パターンをワークWに投光する投影パターン光学系として機能する。またDMDは応答速度にも優れ、シャッターなどに比べ高速に動作させることができる利点も得られる。
【0040】
なお以上の例では、パターン生成部112にDMDを用いた例を説明したが、本発明はパターン生成部112をDMDに限定するものでなく、他の部材を用いることもできる。例えば、パターン生成部112として、LCOS(Liquid Crystal on Silicon:反射型液晶素子)を用いてもよい。あるいは反射型の部材に代えて透過型の部材を用いて、測定光の透過量を調整してもよい。この場合は、パターン生成部112を測定光の光路上に配置して、測定光を透過させる投光状態と、測定光を遮光させる遮光状態とを切り替える。このようなパターン生成部112には、例えばLCD(液晶ディスプレイ)が利用できる。あるいは、複数ラインLEDを用いた投影方法、複数光路を用いた投影方法、レーザとガルバノミラー等で構成される光スキャナ方式、ビームスプリッタで分割したビームを重ね合わせることによって発生された干渉縞を用いるAFI(Accordion fringe interferometry)方式、ピエゾステージと高分解能エンコーダ等で構成される実体格子と移動機構を用いた投影方法等でパターン生成部112を構成してもよい。
【0041】
受光部120は、載置部140の上方に配置される。ワークWにより載置部140の上方へ向けて反射された測定光は、受光部120の複数のレンズ122、123により集光、結像された後、カメラ121により受光される。
【0042】
カメラ121は、例えば撮像素子121aを含むCCD(電荷結合素子)カメラである。撮像素子121aは、例えばモノクロCCD(電荷結合素子)である。撮像素子121aは、CMOS(相補性金属酸化膜半導体)イメージセンサ等の他の撮像素子であってもよい。カラーの撮像素子は各画素を赤色用、緑色用、青色用の受光に対応させる必要があるため、モノクロの撮像素子と比較すると計測分解能が低く、また各画素にカラーフィルタを設ける必要があるため感度が低下する。そのため、本実施の形態では、撮像素子としてモノクロのCCDを採用し、後述する照明光出力部130をRGBにそれぞれ対応した照明を時分割で照射して撮像することにより、カラー画像を取得している。このような構成にすることにより、計測精度を低下させずに測定物のカラー画像を取得することができる。
【0043】
なお、撮像素子121aとして、カラーの撮像素子を用いても良い。この場合、計測精度や感度はモノクロの撮像素子に比べて低下するが、照明光出力部130からRGBにそれぞれ対応した照明を時分割で照射する必要がなくなり、白色光を照射するだけで、カラー画像を取得できるため、照明光学系をシンプルに構成できる。撮像素子121aの各画素からは、受光量に対応するアナログの電気信号(以下、「受光信号」と呼ぶ。)が測定制御部150に出力される。
【0044】
測定制御部150には、図示しないA/D変換器(アナログ/デジタル変換器)及びFIFO(First In First Out)メモリが実装されている。カメラ121から出力される受光信号は、光源部300による制御に基づいて、測定制御部150のA/D変換器により一定のサンプリング周期でサンプリングされると共にデジタル信号に変換される。A/D変換器から出力されるデジタル信号は、FIFOメモリに順次蓄積される。FIFOメモリに蓄積されたデジタル信号は画素データとして順次コントローラ200に転送される。
【0045】
コントローラ200の操作部250は、例えばキーボードやポインティングデバイス等を含むことができる。ポインティングデバイスとしては、例えばマウスやジョイスティック等が用いられる。
【0046】
コントローラ200のROM220には、システムプログラム等が記憶される。コントローラ200の作業用メモリ230は、例えばRAM(ランダムアクセスメモリ)からなり、種々のデータの処理のために用いられる。記憶装置240は、ソリッドステートドライブや、ハードディスクドライブ等からなる。記憶装置240には、リバースエンジニアリングプログラムが記憶される。また、記憶装置240は、測定制御部150から与えられる画素データ(画像データ)、設定情報、測定条件、パラメータ等の種々のデータを保存するために用いられる。測定条件としては、例えば投光部110の設定(パターン周波数、パターン種類)や、受光部120の種別(低倍受光部、高倍受光部)など、ワークWの形状を測定する際に後述するスキャナモジュール260で設定される各種の設定が含まれる。さらに記憶装置240は、測定画像を構成する画素毎に、輝度情報、座標情報、属性情報を記憶することもできる。
【0047】
CPU210は、与えられた信号やデータを処理して各種の演算を行い、演算結果を出力する制御回路や制御素子である。本明細書においてCPUとは、演算を行う素子や回路を意味し、その名称によらず、汎用PC向けのCPUやMPU、GPU、TPU等のプロセッサに限定するものでなく、FPGA、ASIC、LSI等のプロセッサやマイコン、あるいはSoC等のチップセットを含む意味で使用する。
【0048】
CPU210は、測定制御部150から与えられる画素データに基づいて画像データを生成する。また、CPU210は、生成した画像データに作業用メモリ230を用いて各種処理を行う。例えば、CPU210は、受光部120から出力される受光信号に基づいて、載置部140の特定の位置において受光部120の視野内に含まれるワークWの立体形状を表す測定データを生成する。測定データは、受光部120で取得された画像そのものであり、例えば位相シフト方式でワークWの形状を測定する場合、複数枚の画像が1つの測定データを構成することになる。なお、測定データは、三次元位置情報を有する点の集合である点群データであってもよく、この点群データにより、ワークWの測定データを取得できる。点群データは、三次元座標を有する複数の点の集合体で表現されるデータである。
【0049】
ワークWの形状を測定する際、ワークWの少なくとも一部の測定データを上述したように取得した場合、取得した一部の測定データの周囲に位置するワークWの他の部位の測定データを取得するように移動制御部144で載置部140を移動させて、当該位置でのワークWの他の部位の測定データを生成することを繰り返し、得られた複数の測定データを合成することでワークWの全体の形状を含む合成測定データを生成することができる。合成測定データを生成するモードを連結モードと呼ぶことができ、連結モードを選択することで、単一視野で撮像した場合に比べて広視野の画像を取得できる。
【0050】
移動制御部144は、ワークWの少なくとも一部の測定データに基づいて、回転ステージ143の回転動作のみを実行するか、回転ステージ143の回転動作と並進ステージ141の平行移動動作の両方を実行するかを決定する。これにより、ワークWの外形に応じて、撮像範囲をユーザが意識することなく自動判定することにより、三次元計測が容易となる。なお、移動制御部144は、並進ステージ141をXY方向に移動させた後に、XY方向の移動を停止させた状態で、回転ステージ143を回転させるよう制御でき、これにより、ワークWの周囲の形状も取得できる。
【0051】
表示部400は、測定部100で取得された縞投影画像や、縞投影画像に基づいて生成した深度画像、あるいは測定部100で撮像されたテクスチャ画像、各種ユーザインタフェース画面等を表示させるための部材である。表示部400は、例えばLCDパネル又は有機EL(エレクトロルミネッセンス)パネルにより構成される。さらに表示部400にタッチパネルを利用することで、操作部250と兼用することができる。また表示部400は、受光部120により生成された画像も表示可能である。
【0052】
光源部300は、制御基板310及び観察用照明光源320を含む。制御基板310には、図示しないCPUが実装される。制御基板310のCPUは、コントローラ200のCPU210からの指令に基づいて、投光部110、受光部120及び測定制御部150を制御する。なお、この構成は一例であり、他の構成としてもよい。例えば測定制御部150で投光部110や受光部120を制御したり、又はコントローラ200で投光部110や受光部120を制御することとして、制御基板を省略してもよい。あるいはこの光源部300に、測定部100を駆動するための電源回路を設けることもできる。
【0053】
観察用照明光源320は、例えば赤色光、緑色光及び青色光を出射する3色のLEDを含む。各LEDから出射される光の輝度を制御することにより、観察用照明光源320から任意の色の光を発生することができる。観察用照明光源320から発生される照明光ILは、導光部材(ライトガイド)を通して測定部100の照明光出力部130から出力される。なお観察用照明光源には、LEDの他、半導体レーザ(LD)やハロゲンライト、HIDなど、他の光源を適宜利用することもできる。特に撮像素子としてカラーで撮像可能な素子を用いた場合は、観察用照明光源に白色光源を利用できる。
【0054】
照明光出力部130から出力される照明光ILは、赤色光、緑色光及び青色光を時分割で切り替えてワークWに照射する。これにより、これらのRGB光でそれぞれ撮像されたテクスチャ画像を合成して、カラーのテクスチャ画像を得て、表示部400に表示させることができる。
【0055】
コントローラ200は、CPU210、ROM220、作業用メモリ230、記憶装置240等により、
図5に示すスキャナモジュール260と変換モジュール270と統合モジュール280と解析モジュール290とを構成している。これらモジュール260、270、290の動作の詳細は、後述するが、概略について説明すると、スキャナモジュール260は、ワークWの形状を測定することによって当該ワークWの画像データを取得し、当該画像データに基づいてワークWのメッシュデータを作成する部分である。変換モジュール270は、スキャナモジュール260により作成されたメッシュデータをCADデータに変換する部分である。CADデータは、解析曲面、自由曲面で構成される三次元形状情報であり、サーフェスデータ、ソリッドデータ、設計に用いるデータなどを含んでいる。サーフェスデータは、円筒の側面データ、平面データなど、自由曲面・解析曲面で構成される形状表面のデータである。また、ソリッドデータは、穴のない閉じたサーフェスデータや、円筒や六面体などの体積を持つ幾何要素、もしくは、これらを集合演算により合成した合成要素である。
【0056】
解析モジュール290は、メッシュデータを取得し、取得したメッシュデータから複数の幾何要素を抽出し、抽出された複数の幾何要素間の寸法を算出する部分である。
【0057】
統合モジュール280は、スキャナモジュール260から変換モジュール270や解析モジュール290への信号やデータの送信、変換モジュール270からスキャナモジュール260への信号やデータの送信を行う部分である。本例において、モジュールとは、複数の演算処理を1つの単位で実行し得るものであり、例えば機能単位、機能ブロック等の呼ぶこともできる。
【0058】
スキャナモジュール260は、例えば、測定条件設定部261、スキャナ制御部262、メッシュデータ作成部263、スキャナ出力部264等を有している。測定条件設定部261は、ワークの形状の測定条件を設定する部分である。スキャナ制御部262は、測定条件設定部261で設定された測定条件に従って測定部100を制御して画像データを生成し、生成した画像データに基づいてワークWの測定データを取得する部分である。メッシュデータ作成部263は、スキャナ制御部262で取得されたワークWの画像データに基づいてメッシュデータを作成する部分である。スキャナ出力部264は、メッシュデータ作成部263で作成されたメッシュデータと、付加データとを変換モジュール270に出力する部分である。付加データは、測定条件とワークWの測定データから算出されたデータとの少なくとも一方を含むデータである。
【0059】
つまり、スキャナモジュール260は、測定部100の制御を行うとともに、ワークWの形状測定を実施した諸条件(測定機種、測定倍率、解像度など)および測定時のRawデータ(例えば画像データ等)を3次元データとともに生成する。3次元データは、複数のポリゴンを含むメッシュデータであり、ポリゴンデータとも呼ぶことができる。ポリゴンは、複数の点を特定する情報と、それらの点を結んで形成される多角形面を示す情報とで構成されるデータであり、例えば3つの点を特定する情報と、それら3つの点を結んで形成される三角形の面を示す情報とで構成することができる。メッシュデータおよびポリゴンデータは、複数のポリゴンの集合体で表現されるデータと定義することも可能である。
【0060】
変換モジュール270では、メッシュデータを取得し、取得したメッシュデータをCADデータに変換する。
【0061】
解析モジュール290は、ワークWのメッシュデータを取得し、取得されたワークWのメッシュデータから複数の幾何要素を抽出し、抽出された複数の幾何要素間の寸法を算出する算出部291を有している。
【0062】
本リバースエンジニアリング支援装置1は、測定・処理決定・変換の各モジュール260、270をすべて内包したオールインワン形態であり、各モジュール260、270間のデータ送受信は自動化することも可能となる。
【0063】
各モジュール260、270間のデータ送受信を自動化する場合、これらモジュール260、270を統合する統合モジュール280を設ける。これにより、各モジュール260、270は統合モジュール280から指定された処理を進める形態となる。統合モジュール280の役割は測定・処理決定・CAD変換等を実行する各モジュール260、270のいずれかに集約することも可能である。また、解析モジュール290の各機能をスキャナモジュール260に統合することも可能である。
【0064】
(変換モジュールの詳細)
図5に示すように、変換モジュール270は、例えば、データ取得部271、抽出部272、受付部273、登録部274、演算部275、表示制御部276及び端数処理部277を備えている。尚、データ取得部271、抽出部272、受付部273、登録部274、演算部275、表示制御部276及び端数処理部277が複数のモジュールに分かれていてもよい。
【0065】
ここで、データ取得部271、抽出部272、受付部273、登録部274、演算部275、表示制御部276の動作の概略を説明しておく。データ取得部271は、スキャナモジュール260で測定されたワークWのメッシュデータを取得する部分である。抽出部272は、データ取得部271により取得されたワークWのメッシュデータから複数の幾何要素を抽出する部分である。受付部273は、ユーザによってなされた操作部250の操作を受け付ける部分であり、データ取得部271により取得されたワークWのメッシュデータに対し、幾何要素を抽出するための入力を受付可能に構成されている。抽出部272は、受付部273で受け付けられたユーザ入力に基づき、幾何要素を生成するためのポリゴン群を得た後、最小二乗近似によって例えば円筒、円錐、球、六面体といった幾何要素を抽出する。抽出した幾何要素における特定面を、合成対象要素までオフセットさせて引き延ばす等の要素拡縮は、本抽出部272にて設定可能である。
【0066】
受付部273は、抽出部272により複数の幾何要素が抽出された場合、抽出された複数の幾何要素の中から一の幾何要素の選択を受け付けるとともに、当該一の幾何要素の論理演算の種別の選択を受け付ける部分である。論理演算の種別には、例えば和、差、積等が含まれている。
【0067】
登録部274は、受付部273により受け付けた論理演算の種別と、受付部273により受け付けた幾何要素とを対応付けたレコードを合成処理テーブル(
図16に一例を示す)に複数登録可能に構成されている。論理演算の種別は、和の場合には「+」の符号として表示でき、差の場合は「-」の符号として表示でき、積の場合は「×」の符号として表示できる。よって、上記レコードを符号付きの幾何要素レコードと呼ぶこともできる。
【0068】
演算部275は、合成処理テーブルに含まれるとともに登録部274で登録されたレコードの各々について、各レコードに対応付けられた論理演算の種別に基づいて、幾何要素の論理演算を実行することで合成要素を作成する部分である。表示制御部276は、演算部275により作成された合成要素を表示部400に表示させる部分である。
【0069】
なお、ここでは受付部273が抽出部272により抽出された幾何要素と、当該幾何要素の論理演算の種別の選択を受け付け、演算部275が幾何要素の論理演算を行う場合を中心に説明するが、論理演算の対象は幾何要素に限らず、メッシュデータから抽出された自由曲面を有するサーフェスデータ、ソリッドデータであってもよい。また、論理演算の対象は論理演算が実施された複合サーフェスデータや複合ソリッドデータであってもよい。
【0070】
データ取得部271、抽出部272、受付部273、登録部274、演算部275、表示制御部276及び端数処理部277の動作の詳細について、
図6に示すフローチャートに基づいて説明する。ステップSA1では、スキャナモジュール260のメッシュデータ作成部263で生成されたメッシュデータをデータ取得部271が取得する。
【0071】
データ取得部271は、スキャナモジュール260以外のスキャナ(図示せず)で生成されたメッシュデータを取得してもよい。この場合、リバースエンジニアリング支援装置1がスキャナモジュール260を備えていなくてもよい。
【0072】
ステップSA2では、メッシュデータ選択のためのユーザ入力を受付部273が受け付ける。ステップSA3では、抽出する幾何要素種別のユーザによる選択を受け付ける。例えば
図7に示すような要素設定画面700を表示制御部276が生成し、表示部400に表示させる。要素設定画面700には、データ取得部271が取得したメッシュデータを表示するメッシュデータ表示領域701と、抽出部272により幾何要素を抽出するための幾何要素抽出画面702とが設けられている。幾何要素抽出画面702には、幾何要素の抽出手順が表示される手順表示領域702aと、領域指定方法の選択部702bと、指定モードの選択部702cと、領域編集の選択部702dとが設けられている。手順表示領域702aには、抽出する幾何要素を示す図も表示されるようになっており、本例では「球」が幾何要素種別として選択されている場合を示している。領域指定方法の選択部702bでは、ユーザによる領域指定の方法を複数通りの中から選択できるようになっている。指定モードの選択部702cでは、追加の指定か、削除の指定を選択できるようになっている。領域編集の選択部702dでは、領域の編集方法として、縮退、膨張、クリア(消去)の選択できるようになっている。
【0073】
図6に示すステップSA4では、抽出部272が、ステップSA3で受け付けた幾何要素種別のメッシュデータを元に、最小二乗近似を実行して幾何要素を抽出する。具体的には、
図7に示す要素設定画面700のメッシュデータ表示領域701のメッシュデータには、幾何要素抽出画面702で設定された領域を囲む枠線701Aが表示されている。「球」が幾何要素種別として選択されているので、枠線701Aで囲まれた領域内に含まれる幾何要素として球が抽出されることになる。枠線701Aの大きさや位置、形状はユーザが操作部250を操作することで任意に変更できる。
【0074】
図8は、複数の幾何要素が抽出された場合の要素設定画面700を示している。メッシュデータ表示領域701に示しているように、複数の円筒が抽出された場合には、一の円筒を他の円筒と識別可能にするための識別情報が幾何要素の名称に付与されるようになっており、本例では1、2といった番号を識別情報として幾何要素の名称に付与している。六面体、球、円錐、平面等に各々についても、円筒の場合と同様に一の幾何要素を他の幾何要素と識別可能にするための識別情報が幾何要素の名称に付与される。
【0075】
要素設定画面700には、抽出された幾何要素を一覧形式で表示する一覧表示領域703が設けられている。一覧表示領域703に表示される幾何要素の名称及び識別情報と、メッシュデータ表示領域701に表示される幾何要素の名称及び識別情報とは対応関係にある。また、要素設定画面700には、CADデータに変換する際の各種設定をユーザが行うための設定領域704が設けられている。設定領域704には、一覧表示領域703で選択された幾何要素をCADデータに変換するためのCADデータ変換実行アイコン704bが設けられてもよい。CADデータ変換実行アイコン704bの操作入力を受付部273が受け付けると、演算部275は、一覧表示領域703で選択された幾何要素をCADデータに変換する。
【0076】
図6に示すステップSA5では、抽出部272が、ステップSA4で抽出した幾何要素に対して要素拡縮をするか否かを判定する。ステップSA5で要素拡縮すると判定された場合にはステップSA6に進んで要素拡縮処理を実行する一方、ステップSA5で要素拡縮しないと判定された場合にはステップSA6をスキップしてステップSA6aに進む。
【0077】
ステップSA6で要素拡縮処理を実行する理由は次のとおりである。すなわち、例えば
図9に示すCADデータは、ワークWが中空丸棒のデータであり、ワークWの端面W1には本来なら円形の開口が形成されるべきところ、集合演算実行時に、略一致する面を持つ2つの幾何形状同士でカットする際、演算公差に入らなかったため、ワークW1の表面が僅かに残存して開口の一部を閉塞する薄皮が残ってしまっている。このように一部の表面が残存してしまうと、CADデータの再利用性が著しく低下してしまうことがあるので、要素拡縮処理を実行して一部の表面が残存しないようにする。
【0078】
要素拡縮処理の詳細は、
図10及び
図11に示している。
図10は幾何要素が円筒/円錐の場合の要素拡縮処理の例であり、
図11は幾何要素がオフセット六面体の場合の要素拡縮処理の例である。
図10のステップSB1では、抽出部272がメッシュデータを元に円筒または円錐を抽出する。ステップSB2では、始点をオフセットさせるとのユーザ入力を受付部273が受け付けたか否かを抽出部272が判定する。始点をオフセットさせる場合にはステップSB3に進み、オフセット量を指定するためのユーザ入力を受付部273が受け付け、受け付けたオフセット量は記憶装置240等に一時的に記憶しておく。始点をオフセットさせない場合にはステップSB2からステップSB3、SB4をスキップしてステップSB5に進む。
【0079】
ステップSB4では、ステップSB3で指定されたオフセット量を抽出部272が読み込み、読み込んだオフセット量に基づいて抽出部272が面をオフセットさせ、幾何要素を拡縮する。ステップSB5では、終点をオフセットさせるとのユーザ入力を受付部273が受け付けたか否かを抽出部272が判定する。終点をオフセットさせる場合にはステップSB6に進み、オフセット量を指定するためのユーザ入力を受付部273が受け付け、受け付けたオフセット量は記憶装置240等に一時的に記憶しておく。終点をオフセットさせない場合にはステップSB5からステップSB6、SB7をスキップしてステップSB8に進む。
【0080】
ステップSB7では、ステップSB6で指定されたオフセット量を抽出部272が読み込み、読み込んだオフセット量に基づいて抽出部272が面をオフセットさせ、幾何要素を拡縮する。ステップSB8では、抽出部272が要素作成を完了する。
【0081】
このように、円筒/円錐の要素拡縮処理の場合には始点面と終点面のそれぞれに対して、任意の距離のオフセット量を指定することができる。始点面と終点面のそれぞれに対して、任意の距離のオフセット量を指定することにより、一方は端点を固定しておき、他方のみ要素を拡縮したい幾何要素である止まり穴形状の場合でも、ユーザの所望通りの幾何要素を作成できる。ワークWに形成されている貫通穴の場合などには始点面と終点面のオフセット量に同値を入力し、また
図9に示す例では、片側のみオフセット量を指定するなど、柔軟な要素抽出が可能である。円錐台の頂点側については、頂点を越える量のオフセットはできないようになっている。
【0082】
一方、幾何要素がオフセット六面体の場合は、六面体を構成する6つの平面のうち、指定した特定の面を任意の距離だけオフセットさせることができる。以下、幾何要素がオフセット六面体の場合について具体的に説明する。
図11のステップSC1では、抽出部272がメッシュデータを元に平面を抽出する。ステップSC2では、ステップSC1で抽出した平面をオフセットさせるとのユーザ入力を受付部273が受け付けたか否かを抽出部272が判定する。ステップSC1で抽出した平面をオフセットさせる場合にはステップSC3に進み、オフセット量を指定するためのユーザ入力を受付部273が受け付け、受け付けたオフセット量は記憶装置240等に一時的に記憶しておく。ステップSC1で抽出した平面をオフセットさせない場合にはステップSC2からステップSC3、SC4をスキップしてステップSC5に進む。
【0083】
ステップSC4では、ステップSC3で指定されたオフセット量を抽出部272が読み込み、読み込んだオフセット量に基づいて抽出部272が平面をオフセットさせる。ステップSC5では、ステップSC4でオフセットさせた平面を、六面体を構成する平面として抽出部272が登録し、また、オフセットさせない場合にはステップSC1で抽出された平面を、六面体を構成する平面として抽出部272が登録する。
【0084】
ステップSC6では六面体を構成する6つの平面が揃ったか否かを抽出部272が判定する。6つの平面が揃っていない場合には、ステップSC1に進み、メッシュデータを元に別の平面を抽出する。6つの平面が揃った場合にはステップSC7に進み、抽出した6つの平面から抽出部272が六面体を計算する。
【0085】
なお、ここでは指定された点から拡縮量を指定する「オフセット量」を指定する方法を説明したが、特定の点(幾何要素の中心など)からの距離に対する割合を拡縮量として指定する「パーセント指定」や、ユーザによるクリック入力を受け付けたところまで拡縮する「任意点指定」などの方法が用いられてもよい。
【0086】
以上のようにして、
図6に示すフローチャートのステップSA6の要素拡縮処理が完了すると、ステップSA6aに進む。ステップSA6aでは、幾何要素抽出が完了したか否かを判定する。幾何要素抽出が完了していない場合にはステップSA2に戻る。幾何要素抽出が完了した場合にはステップSA7に進む。このように、本例では、複数の幾何要素の抽出が可能になっている。
【0087】
ステップSA7では、抽出部272が、幾何要素に対して要素丸めを行うか否かを判定する。要素丸め処理は、
図12に示すフローチャートに従って行われる。要素丸めを行うか否かの判定には、ユーザの意図を反映させることができる。
【0088】
図8に示す要素設定画面700の設定領域704には、丸め分解能の指定を受け付けるための分解能指定アイコン704aが設けられている。ユーザが分解能指定アイコン704aを操作すると、ステップSA7で要素丸め処理を行うと判定される。要素丸め処理を行うと判定された場合にはステップSA8に進む一方、要素丸め処理を行わないと判定された場合にはステップSA8をスキップしてステップSA9に進む。要素丸め処理は、抽出部272により抽出された幾何要素データの座標値や寸法値、角度成分に対して端数処理を行うことであり、端数処理部277が実行する。
【0089】
すなわち、メッシュデータは実際のワークWに対して忠実に構築されるため、抽出部272にてメッシュデータから抽出した幾何要素の座標値、寸法値(長さ、半径、角度など)の属性情報は、端数のある数値となっている。一方で、CADソフト上で設計行為によって作成されたCADデータは、一般的に端数のない値であることが多いため、上記属性情報の端数を処理した上でCADデータを作成することは、当該CADデータをCADソフト側で利用する際の再利用性の向上に繋がる。この要素丸め処理を、幾何要素の論理演算と組み合わせることにより、例えば貫通穴の位置や径、凹形状の内壁間距離等を端数なく綺麗に丸めることができ、再利用性のより高いCADデータを生成できる。
【0090】
ステップSA8では、幾何要素の丸め分解能パラメータを指定するためのユーザ入力を受付部273が受け付け、受け付けた分解能パラメータは記憶装置240等に一時的に記憶しておく。例えば、
図8に示す分解能指定アイコン704aを操作することで、ユーザは任意の丸め分解能パラメータを指定することができる。
【0091】
ステップSA7からステップSA9で示す要素丸めは、抽出部272により抽出された幾何要素に対して一律で実行してもよく、また、抽出部272により抽出された幾何要素に対して個別に実行してもよい。抽出部272により抽出された幾何要素に対して、要素丸めを個別に実行する場合、一の幾何要素ごとに、丸め処理の要否や丸め処理時の分解能が対応付けられて記憶装置240等に記憶されてもよい。
【0092】
ステップSA9では、合成要素を作成するための合成画面710(
図13に示す)を表示制御部276が生成し、表示部400に表示させる。合成画面710には、データ取得部271により取得したメッシュデータを表示するメッシュ表示領域711と、演算部275により演算された合成要素を表示する合成要素表示領域712と、抽出部272により抽出された複数の幾何要素を合成候補として表示する候補表示領域713とが含まれている。
【0093】
合成画面710には、
図7に示すような幾何要素抽出画面702を表示させることもできる。例えば、
図13に示すように、合成画面710には、ユーザによる幾何要素の選択が完了した後に操作し、合成要素の作成を実行するためのOKボタン717と、ユーザによる合成要素の作成を中止するためのキャンセルボタン718とが設けられている。受付部273は、ユーザが操作部250によりOKボタン717またはキャンセルボタン718が操作されたことを受付可能に構成されている。受付部273がOKボタン717の操作を受け付けると、演算部275により合成要素が作成される。演算部275により合成要素が作成されると、表示制御部276は、
図8に示すように 一覧表示領域703に「合成3D要素」を追加して表示してもよい。また、合成画面710には幾何要素を新規作成するための新規作成ボタン710aが設けられてもよく、表示制御部276は、受付部273が新規作成ボタン710aの操作を受け付けると、幾何要素抽出画面702に遷移してもよい。演算部275により合成要素が作成され、新たに作成された「合成3D要素」が選択された状態で、
図8に示すCADデータ変換実行アイコン704bの操作入力を受付部273が受け付けると、演算部275は、合成3D要素を他の幾何要素と同様に3D要素として扱い、合成3D要素を含む幾何要素をCADデータに変換できる。
【0094】
候補表示領域713には、合成要素を構成する幾何要素の選択方法の手順が表示される手順表示領域713aと、抽出部272により抽出された複数の幾何要素がリスト形式で表示される合成要素選択領域713bと、論理演算の種別を選択するための種別選択領域713cと、選択された幾何要素が表示される選択要素表示領域713dとが設けられている。合成要素選択領域713bには、識別情報が幾何要素の名称に付与された表示形態で、各幾何要素が表示される。合成要素選択領域713bには、幾何要素の種別ごとにまとめて表示することができ、例えば抽出された全ての円筒を上に表示し、その下に、抽出された全ての六面体を表示することが可能である。
【0095】
受付部273は、合成要素選択領域713bに表示された複数の幾何要素の中から一の幾何要素の選択を受付可能に構成されている。具体的には、ユーザが操作部250を操作して合成要素選択領域713bに表示されている一の幾何要素を選択すると、そのユーザによる選択操作によって選択された一の幾何要素を受付部273が特定し、特定された一の幾何要素が選択されたものとして受付部273が受け付ける。
【0096】
ステップSA10では、要素丸め処理を適用するか否かを端数処理部277が判定する。要素丸め処理を適用する場合にはステップSA11に進み、ユーザにより指定された分解能パラメータを端数処理部277が取得し、取得したパラメータに基づき、幾何要素の丸め処理を実行する。
【0097】
ステップSA11で実行される要素丸め処理について、
図12に示すフローチャートに基づいて具体的に説明する。ステップSD1では、
図6のステップSA8で受け付けた丸め分解能パラメータを端数処理部277が取得する。ステップSD2では、丸め基準となる座標系情報を端数処理部277が取得する。ステップSD3では、受付部273が、合成要素選択領域713bに表示された複数の幾何要素の中から一の幾何要素の選択を受け付ける。
【0098】
ステップSD4では、端数処理部277が、ステップSD3で選択された幾何要素の種別を判定し、丸め対象の属性値を抽出する。ステップSD5では、端数処理部277が、ステップSD4で抽出した属性値を、基準座標系と分解能パラメータを元に綺麗な数値、即ち端数のない数値に丸める。
【0099】
ステップSD6では、全ての幾何要素に対して要素丸め処理を実行したか否かを判定する。ステップSD6で全ての幾何要素に対して要素丸め処理を実行していないと判定した場合には、ステップSD3に進み、他の幾何要素の選択を受付部273が受け付ける。このようにして全ての幾何要素に対して要素丸め処理を実行する。本例では、個々の幾何要素の属性値が同一の座標系に対して丸められるため、単一の幾何要素の属性値だけでなく、それらの相対的な位置関係まで丸めることができる。結果として、演算後の合成要素全体としても端数のない綺麗な値を持つことが可能になる。また、この段階で全ての幾何要素を予め丸めておくことにより、後述する合成要素作成時の処理コストを削減できる。これにより、集合演算を高速化して、演算結果結果を早く確認できるため、試行錯誤がしやすくなる。なお、ここでは全ての幾何要素に対して要素丸め処理を実行する場合を例に説明したが、要素丸め処理が必要な幾何要素に対してのみ要素丸め処理が実行されてもよい。この場合の詳細は後述する。
【0100】
ステップSD6で全ての幾何要素に対して要素丸め処理を実行したと判定した場合には
図6に示すフローチャートのステップSA12に進む。ステップSA12では、
図14に示す合成画面710の合成要素選択領域713bに表示された複数の幾何要素のうち、所望の幾何要素をユーザが選択すると、受付部273が、当該幾何要素の選択を受け付ける。
図14に示す例では、「六面体1」が幾何要素として選択されているので、選択要素表示領域713dには、「六面体1」が表示される。
【0101】
この
図14に示すように、表示制御部276は、候補表示領域713から一の幾何要素が選択されたことに応じて、当該一の幾何要素がメッシュ表示領域711と合成要素表示領域712の各々に重畳された合成画面710を生成し、表示部400に表示させる。
図14に示す合成画面710では、幾何要素の表示色と、メッシュデータの表示色とを変えている。すなわち、表示制御部276は、一の幾何要素の表示色をメッシュ表示領域711に表示されるメッシュデータの表示色と異ならせることで、当該一の幾何要素を識別可能に表示した合成画面710を生成し、表示部400に表示させる。
【0102】
また、
図14に示す合成画面710では、候補表示領域713の中から選択された一の幾何要素の表示色と、メッシュデータの表示色とを変えている。具体的には、表示制御部276は、一の幾何要素の表示色を合成要素表示領域712に表示される合成要素の表示色と異ならせることで、当該一の幾何要素を識別可能に表示した合成画面710を生成し、表示部400に表示させる。表示色の濃さを変えることや、表示色の明るさをことも、表示色を変えることに含まれる。以下、同様である。さらに、候補表示領域713の中から選択された一の幾何要素の表示色を、当該一の幾何要素に対応付けられた論理演算の種別に応じて異ならせても良い。具体的には、論理演算の種別として和が指定された幾何要素は第1の表示色で表示させ、論理演算の種別として差が指定された幾何要素は第2の表示色で表示させるようにしてもよい。
【0103】
ステップSA13では、ステップSA12で選択された幾何要素を、表示制御部276が表示部400にプレビュー表示させる。具体的には、表示制御部276が、ステップSA12で選択された幾何要素のプレビュー画像を生成して合成要素表示領域712に表示させる。本例では「六面体1」が合成要素として選択されているので、「六面体1」が表示部400にプレビュー表示される。プレビュー表示においても、幾何要素の表示色と、メッシュデータの表示色とが異なっており、幾何要素の識別が容易に行えるようになっている。
【0104】
ステップSA14では、ステップSA12で受け付けた幾何要素の論理演算の種別選択を受付部273が受け付ける。すなわち、
図15に示すように、種別選択領域713cには、受付部273により受け付けた一の幾何要素の論理演算種別として和を指定するための第1アイコン713eと、受付部273により受け付けた一の幾何要素の論理演算種別として差を指定するための第2アイコン713fとが含まれている。尚、図示しないが、受付部273により受け付けた一の幾何要素の論理演算種別として積を指定するための第3アイコンが種別選択領域713cに含まれていてもよい。すなわち、種別選択領域713cには、受付部273により受け付けた一の幾何要素の論理演算種別を指定するためのアイコンが設けられる。
【0105】
ユーザが操作部250により第1アイコン713eを操作すると、受付部273は、第1アイコン713eが操作されたことを検出し、論理演算の種別として和が選択されたことを受け付ける。また、ユーザが操作部250により第2アイコン713fを操作すると、受付部273は、第2アイコン713fが操作されたことを検出し、論理演算の種別として差が選択されたことを受け付ける。尚、積を指定するためのアイコンが操作された場合には、論理演算の種別として積が選択されたこと受付部273が受け付ける。
【0106】
図15に示す例では、和が選択された場合を示しており、選択要素表示領域713dには、「六面体1」の横に、論理演算の種別として和が選択されたことを示す「+」が表示される。つまり、幾何要素である「六面体1」と、論理演算の種別である「+」とが対応付けられた状態で選択要素表示領域713dに表示される。
【0107】
図14では演算前なので幾何要素の識別が可能となるように幾何要素の表示色とメッシュデータの表示色とを変えていたが、演算が完了した状態を示す
図15では、幾何要素の表示色とメッシュデータの表示色とを同じにする。すなわち、識別可能に表示された幾何要素の論理演算が演算部275により実行されると、表示制御部276は、当該識別可能に表示されていた幾何要素の表示色をメッシュ表示領域711に表示されるメッシュデータの表示色と同じにした合成画面710を生成し、表示部400に表示させる。尚、幾何要素の表示色とメッシュデータの表示色とは異なったままでもよい。
【0108】
また、演算が完了した状態を示す
図15では、幾何要素の表示色と合成要素表示領域712に表示される合成要素の表示色とを同じにしてもよい。すなわち、識別可能に表示された幾何要素の論理演算が演算部275により実行されると、表示制御部276は、当該識別可能に表示されていた幾何要素の表示色を合成要素表示領域712に表示される合成要素の表示色と同じにした合成画面を生成し、表示部400に表示させてもよい。
【0109】
ステップSA15では、登録部274が、
図16に示すような合成処理テーブルに、ステップSA12で受け付けた幾何要素と、ステップSA14で受け付けた論理演算の種別とを対応付けたレコードを登録する。合成処理テーブルは、複数のレコードを登録可能に構成されている。各レコードは、一の幾何要素と、当該一の幾何要素の論理演算の種別とを含むとともに、レコードを特定するための特定情報として例えば「幾何要素1」、「幾何要素2」といった情報も含まれている。さらに、各レコードには、幾何要素をプレビューする際に使用されるプレビュー用のパラメータや、端数処理部277による丸め処理を実行するか否かを示すデータ、丸め処理を実施する場合の分解能パラメータ、端数処理部277による丸め処理後のパラメータ等が含まれていてもよい。例えば「幾何要素1」のレコードは、幾何要素が「六面体」、論理演算の種別が「+(和)」であり、かつ、六面体を表示部400にプレビュー表示するためのパラメータと、六面体に対して丸め処理を実施するか否かを示すデータ、丸め処理実施時の分解能パラメータ、六面体を端数処理部277により丸め処理した後のパラメータとが対応付けられている。尚、プレビュー用のパラメータや、丸め処理を実行するか否かを示すデータ、分解能パラメータ、端数処理部277による丸め処理後のパラメータは必要に応じて登録すればよい。ここで、要素丸め処理が必要な幾何要素に対してのみ要素丸め処理を行う場合を説明する。上述の通り、合成処理テーブルに含まれる各々のレコードには、レコードごとに丸め処理を実行するか否かを示すデータ、丸め処理を実施する場合の分解能が登録されている。端数処理部277は、合成処理テーブルに登録されたレコードの各々について、各レコードに対応付けられた丸め処理を実行するか否かを示すデータに基づいて、幾何要素データの座標値や寸法値、角度成分に対して丸め処理を実行するか否かを決定する。丸め処理を実行すると決定された幾何要素データに対して、分解能パラメータに基づいて丸め処理を実行する。また、丸め処理を実施する場合の分解能を丸め処理を実施する幾何要素ごとに個別に設定する場合、端数処理部277は、丸め処理を実行する幾何要素に対応するレコードの各々について、各レコードに対応付けられた分解能パラメータを取得し、当該分解能パラメータに基づいて幾何要素データの座標値又や寸法値、角度成分の少なくとも1つに対して端数処理を実行する。
【0110】
図17に示すように、受付部273は、2つの目の幾何要素として「六面体2」の選択を追加で受け付けることができる。
図18に示すように、2つの目の幾何要素を追加で受け付けた場合、受付部273は、2つの目の幾何要素の論理演算の種別の選択を追加で受け付けることができる。登録部274は、追加で受け付けた2つ目の幾何要素と、当該2つ目の幾何要素の論理演算の種別とを対応付けたレコードを合成処理テーブルに追加する。同様にして、受付部273は、3つの目の幾何要素の選択を追加で受け付けるとともに、3つの目の幾何要素の論理演算の種別の選択を追加で受け付けることができ、受付可能な数は特に限定されるものではない。
【0111】
図16に示すように、合成処理テーブルには、複数のレコードが受付部273で受け付けられた順に並んでいる。具体的には、合成処理テーブルの最も上に位置するレコードが受付部273により最先に受け付けられたレコードであり、上から2番目、3番目に位置するレコードがそれぞれ2番目、3番目に受け付けられたレコードである。また、合成処理テーブルの最も下に位置するレコードが受付部273により最後に受け付けられたレコードである。合成処理テーブルにおけるレコードの並び順は幾何要素の合成順序となっていてもよく、この場合、演算部275は、レコードの登録順、すなわちレコードの並び順に幾何要素の合成を行うことができる。図示しないが、合成処理テーブルのレコードは横に並んでいてもよく、この場合も、レコードを受付順に並べることができる。
【0112】
このように、合成処理テーブルには、各々の幾何要素の合成順序を示す項目が含まれるとともに、合成処理テーブルに登録されたレコードには、当該レコードに含まれる幾何要素の合成順序を示すインデックスが含まれている。演算部275は、レコードに含まれる幾何要素の合成順序を示すインデックスを取得することができるようになっている。演算部275は、レコードに含まれる幾何要素の合成順序を示すインデックスを取得した後、合成処理テーブルに登録された複数のレコードについて、各々のレコードに対応付けられた論理演算の種別と合成順序を示すインデックスに基づいて論理演算を実行し、合成要素を作成する。なお、合成処理テーブルには、複数の幾何要素をグループ化して演算するためのグループを示す項目である「演算グループ」が含まれてもよく、さらに、演算グループ間の合成順序や論理演算の種別を示す項目が演算グループごとに定義されていてもよい。具体的には、幾何要素1と幾何要素3が演算グループaであり、幾何要素2と幾何要素3が演算グループbであるとする。また、これらの演算グループの合成順序は、演算グループa、演算グループbであり、演算グループa、b各々の論理演算の種別として「和」が指定されていたとする。この場合、演算部275は、まず、演算グループaに含まれる幾何要素1と幾何要素3を各々のレコードに対応付けられた論理演算の種別に基づいて演算し、中間合成要素Aを作成する。次に、演算部275は、演算グループbに含まれる幾何要素2と幾何要素4を各々のレコードに対応付けられた論理演算の種別に基づいて演算し、中間合成要素Bを作成する。そして、中間合成要素Aと中間合成要素Bとを各々に対応付けられた論理演算の種別に基づいて合成し、合成要素ABを作成する。すなわち、演算部275は、合成処理テーブルに含まれる演算グループを示す情報に基づいて、同一の演算グループに属する幾何要素の論理演算を実行し中間合成要素を作成し、その後中間合成要素どうしを演算グループ間の合成順序を示す情報に基づいて合成し、合成要素を作成してもよい。
【0113】
選択要素表示領域713dには、合成処理テーブルと同様に、受付部273で受け付けられた幾何要素及び当該幾何要素に対応付けられた論理演算の種別が受付順に並ばせることができる。すなわち、表示制御部276は、候補表示領域713に表示された一の幾何要素の選択と、種別選択領域713cに表示された複数の論理演算の種別の中から当該一の幾何要素の論理演算の種別の選択が受付部273により受け付けられたことに応じて、当該一の幾何要素を選択要素表示領域713dに追加して表示部400に表示させる。このように、選択要素表示領域713dでは幾何要素の合成順序が示されているので、ユーザは選択要素表示領域713dを見ることにより幾何要素の合成順序を容易に把握できる。
【0114】
図6に示すステップSA16では、合成処理テーブルの上から順に演算部275が論理演算を実行する。具体的には、演算部275は、合成処理テーブルに複数のレコードが登録されている場合には、合成処理テーブルに登録された複数のレコードについて、各々のレコードに含まれた論理演算の種別に基づいて、レコードの登録順に論理演算を実行し、合成要素を作成する。このとき、演算部275は、端数処理部277により端数処理が施された幾何要素データに基づいて、幾何要素の論理演算を実行するので、演算処理を高速化することができ、CADデータを完成させるまで試行錯誤し易くなる。なお、ここでは、レコードの登録順に論理演算を実行する場合を説明したが、レコードの各々に合成順序を示す情報が対応付けられており、当該合成順序を示す情報に基づいて論理演算を実行してもよい。
【0115】
ステップSA17では、ステップSA16における演算結果の合成要素を登録部274に登録し、表示部400に表示させる。例えば
図18に示すように、1つ目の幾何要素として「六面体1」が「+」の種別で選択されている場合に、「六面体2」が2つ目の幾何要素として「+」の種別で選択された場合には、2つの「六面体1」及び「六面体2」からなる合成要素が演算部275によって作成される。演算部275により演算された合成要素は、表示制御部276が合成要素表示領域712に表示させる。これにより、ユーザは現状のデータを確認することができ、例えば穴や影等のようなスキャン不足領域が無いかなど、データの不足があるか否かを判断できる。
【0116】
ステップSA18では、合成が完了したか否かの判定を受付部273が受け付ける。合成が完了していない場合には、ステップSA12に進み、別の幾何要素の選択、論理演算の種別の選択を受け付ける。例えば、
図19に示すように、3つの目の幾何要素として「六面体3」が「-」の種別で選択され、4つの目の幾何要素として「六面体4」が「-」の種別で選択された場合には、演算部275により「六面体3」及び「六面体4」が差し引かれた合成要素が作成されるので、合成要素が更新される。演算部275により更新された合成要素は、表示制御部276が合成要素表示領域712に表示させる。
【0117】
受付部273は、選択要素表示領域713dに複数の幾何要素が表示される場合に、選択要素表示領域713dに表示される複数の幾何要素の順序の変更を受け付け可能に構成されている。例えば選択要素表示領域713dの下に表示されている操作ボタン713gを操作して選択要素表示領域713dに表示されている選択要素を下に移動させる操作を行うと、受付部273は、当該選択要素の順番を下げる。また、操作ボタン713gを操作して選択要素表示領域713dに表示されている選択要素を上に移動させる操作を行うと、受付部273は、当該選択要素の順番を上げる。このようにしてユーザが任意の選択要素の順番を入れ替えたり、変更したりすることができる。選択要素と論理演算の種別とが対応付けられているので、選択要素の順番を入れ替えても論理演算の種別は保持される。
【0118】
演算部275は、受付部273により複数の幾何要素の順序の変更を受け付けると、選択要素表示領域713dに表示されている幾何要素の論理演算を、当該表示されている順序で各々の幾何要素に対応付けられた論理演算の種別に基づいて実行し、合成要素を更新する。そして、表示制御部276は、演算部275により更新された合成要素を表示部400に表示させるので、ユーザが幾何要素の順番を入れ替えた場合にその結果を表示部400上で確認しながら、試行錯誤してCADデータを完成させることができる。
【0119】
演算部275は、1つの合成要素をシリアルに演算するのではなく、複数の合成要素をパラレルに演算し、演算済み合成要素を集合演算の入力として流用することもできる。例えば、演算グループaに属する複数の幾何要素を演算した第1の中間合成要素Aと、第1の合成要素を構成している幾何要素とは別の演算グループbに属する複数の幾何要素を演算した第2の中間合成要素Bとを演算部275が演算した場合、演算部275は、第1の中間合成要素Aと第2の中間合成要素Bを集合演算の入力とし、第1の中間合成要素Aと第2の中間合成要素Bに基づいた最終的な合成要素ABを演算することができる。例えば、第1の合成要素を和の要素とし、第2の合成要素を差の要素とすることで、より込み入った、複雑な形状を再現することも可能になる。
【0120】
また、合成要素の演算過程で、三次元の幾何要素だけでなく、平面など二次元の幾何要素も使用できる。幾何要素は三次元測定によって得たメッシュデータに基づいて抽出されているため、組み合わせ時、幾何要素の一部が不要にはみ出してしまうことがある。この場合、平面などの二次元の幾何要素を用いることで、不要形状を、容易に削除することが可能になる。例えば、三次元の幾何要素の不要な部分と必要な部分との境界に、二次元の幾何要素を配置し、二次元の幾何要素よりも外に位置する部分を不要な部分として削除することや、二次元の幾何要素よりも内に位置する部分を不要な部分として削除することができる。
【0121】
図20は完成したCADデータを示している。この図に示すように、全ての演算が完了すると、ステップSA19に進み、得られたCADデータとして外部に出力する。
【0122】
(例外判定機能)
上述したように、演算部275が合成要素を演算する際には、選択された論理演算の種別に基づき、幾何要素同士の集合演算が実行されるが、この集合演算処理過程ではエラーが生じることがある。
【0123】
例えば、演算順番の先頭に、「差」もしくは「積」の演算種別が対応付けられた幾何要素が指定されている場合はエラーケースとする。この場合、演算部275は、演算順番の先頭の幾何要素は必ず「和」の要素として変換して追加する。
【0124】
また、複数の幾何要素を集合演算した結果、有効なソリッド領域が残らない場合もエラーケースとする。有効なソリッド領域とは、ソリッドのCADデータに変換することが可能な体積を持つ領域のことである。合成要素の演算完了時に、有効なソリッド領域が残っているかどうかを、出力したCADデータをポリゴン化することによって演算部275が判定する。ポリゴンが生成できなかった場合は、有効なソリッド領域がないと演算部275が判定する。
【0125】
また、幾何要素丸め処理によるエラーも生じ得る。幾何要素が球である場合、球の寸法値を丸めた結果、球の半径が0になった場合はエラーケースとする。また、幾何要素が直方体である場合、直方体の寸法値を丸めた結果、対向する2枚の面が完全に一致した場合はエラーケースとする。さらに、幾何要素が円錐台である場合、円錐体の寸法値を丸めた結果、円筒になった場合はエラーケースとする。
【0126】
図21は、例外判定処理の一例を示すフローチャートである。ステップSE1では、
図6のステップSA8で入力が受け付けられた分解能パラメータに基づき、端数処理部277が幾何要素の丸め処理を実行する。ステップSE2では、端数処理部277による丸め処理の結果、演算部275が、値が0になっていないかを判定する。値が0になっている場合には、ステップSE3に進んで幾何要素が円錐であるか否かを判定する。円錐である場合には、ステップSE4に進み、頂角が0であるか否かを判定する。頂角が0である場合には円筒に変換してステップSE6に進み、当該幾何要素を合成要素選択領域713bに追加する。
【0127】
ステップSE2からステップSE7に進むと、幾何要素が六面体であるか否かを判定する。六面体である場合には、ステップSE8に進み、演算部275が、丸め処理後の6枚の平面から六面体を再計算する。ステップSE9ではステップSE8の計算が正常に完了したか否かを判定する。六面体の再計算が正常に完了した場合にはステップSE6に進み、当該幾何要素を合成要素選択領域713bに追加する。一方、ステップSE2でNOと判定されて長さが0になっている場合、及び、ステップSE9で六面体の再計算が正常に完了しなかった場合にはステップSE10に進み、丸め処理がエラーであるとする。このように、丸め処理にエラーが発生した場合には、その判定結果を合成要素選択領域713bのリスト上で表示する。丸め処理がエラーとなっている幾何要素が合成要素選択領域713bのリストに追加されている状態で、合成要素の作成を完了しようとするとユーザにエラーを通知する。
【0128】
(再計算処理)
スキャナモジュール260で測定されたワークWのメッシュデータ自体に欠損が存在している場合がある。本実施形態に係るリバースエンジニアリング支援装置1では、メッシュデータ自体に欠損が存在している場合でも、抽出済みの幾何要素や、その集合演算方法を保持したまま、三次元測定によりメッシュデータを追加することができる。
【0129】
また、リバースエンジニアリング工程中、穴埋め処理や不要部除去処理、ヒーリング処理、リメッシュ処理等などでメッシュデータが編集される場合がある。例えば、穴埋め処理とは、メッシュデータ上で開放エッジ(隣接ポリゴンが存在しないエッジ)を特定し、連続した開放エッジで構成されるループを特定した後、そのループ内に新たなメッシュデータを作成して当該ループを補正する処理である。また、リメッシュ処理とは、メッシュの三角形を正三角形に近づける処理である。上述のようにメッシュデータが編集された場合、本実施形態に係るリバースエンジニアリング支援装置1では、編集後のメッシュデータに対して幾何要素の再抽出を実行し、集合演算の結果まで自動的に再計算することができる。
【0130】
図22に示すフローチャートに基づいて再計算処理を具体的に説明する。スタート時には、ステップSF1で三次元測定により取得したメッシュデータを合成し、またステップSF2で穴埋め処理により微小穴を塞ぎ、またステップSF3で凹凸削除により形状をシンプル化する。
【0131】
ステップSF4では、抽出済みの幾何要素があるか否かを判定する。抽出済みの幾何要素がある場合にはステップSF5で新しいメッシュデータを元に幾何要素を再抽出する。ステップSF6では選択済みの合成要素があるか否かを判定する。選択済みの合成要素がある場合にはステップSF7で再抽出後の幾何要素を元に、合成要素を再演算する。ステップSF8では、幾何要素の新規抽出や合成要素の演算処理へ進む。一方、ステップSF4でNOと判定されて抽出済みの幾何要素がない場合、及び、ステップSF6でNOと判定されて選択済みの合成要素がない場合には、ステップSF8へ直接進む。以上の処理により、欠損箇所を補いつつ、現物のワークWに即したソリッドのCADデータの作成が可能になる。
【0132】
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。
【産業上の利用可能性】
【0133】
以上説明したように、本開示に係るリバースエンジニアリング支援装置は、例えば現物の形状を取得して設計データ化する場合等に利用できる。
【符号の説明】
【0134】
1 リバースエンジニアリン支援装置
271 データ取得部
271 抽出部
273 受付部
274 登録部
275 演算部
276 表示制御部
277 端数処理部
400 表示部