(57)【特許請求の範囲】
【請求項１】
ソリッドモデル表現を修正するためのシステムであって、該システムは、メモリと、プロセッサと、ユーザ入力装置と、表示装置とを備えたコンピュータシステムを備えており、
前記コンピュータシステムは、
複数の幾何モデル定義を有する少なくとも１つのデータファイルにアクセスし；
該幾何モデル定義を幾何モデルの視覚的表現に変換し；
該幾何モデルの形状本体についての修正に関する編集フィーチャを識別し；
修正された編集フィーチャを含む修正された幾何モデルを計算し、ここで、前記コンピュータシステムは、該幾何モデルのオリジナルの形状本体から該編集フィーチャを除去し；複数の面について該編集フィーチャから新たな編集フィーチャへのマッピングを行い；該新たな編集フィーチャを該オリジナルの形状本体に適用し、ここで、該新たな編集フィーチャを新たな形状本体に再マッピングし、該新たな形状本体を修正し；該新たな編集フィーチャを前記修正された幾何モデルに統合する、
システム。
【請求項２】
前記除去された編集フィーチャは板金フォーマットである、請求項１記載のシステム。
【請求項３】
前記コンピュータシステムは、前記修正された幾何モデルの修正された視覚的表現を少なくとも１つのデータファイルに保存する、請求項１または２記載のシステム。
【請求項４】
前記少なくとも１つのデータファイルは、幾何モデラ転送ファイル、モデリングツールキット情報ファイルおよびソリッドモデル部分ファイルの１つである、請求項１〜３のいずれか１項記載のシステム。
【請求項５】
前記視覚的表現は境界表現形式で表現される、請求項１〜４のいずれか１項記載のシステム。
【請求項６】
前記幾何モデルはソリッドモデルである、請求項１〜５のいずれか１項記載のシステム。
【請求項７】
ソリッドモデル表現を修正するために、
モデルファイル処理モジュールと、データ表示構成モジュールと、論理処理モジュールと、修正処理モジュールと、幾何モデル処理モジュールとを備える個別のソフトウェアモジュールから構成されるシステムを提供する手段と；
幾何モデリングセッションにおいて用いられるモデラ転送データと、前記幾何モデリングセッションに適用される修正情報データと、前記幾何モデリングセッションにより影響されるモデルアプリケーションデータとを定める複数のモデルデータファイルを構文解析する手段であって、該構文解析は前記モデルファイル処理モジュールにより前記論理処理モジュールによる呼出しに応じて行われる、手段と；
修正された編集フィーチャを含む修正された幾何モデルを計算する手段であって、該計算手段は、該幾何モデルのオリジナルの形状本体から該編集フィーチャを除去し、複数の面について該編集フィーチャから新たな編集フィーチャへのマッピングを行い、該新たな編集フィーチャを該オリジナルの形状本体に適用し、ここで、該新たな編集フィーチャを新たな形状本体に再マッピングし、該新たな形状本体を修正し、該新たな編集フィーチャを修正された幾何モデルに統合し、かつ、前記論理処理モジュールの呼出しに応じて前記幾何モデル処理モジュールにより実行される、手段と；
前記データ表示構成モジュールにより、前記論理処理モジュールの呼出しに応じて、前記新たな編集フィーチャの統合された前記幾何モデルを構成する手段であって、該構成は前記論理処理モジュールにより計算された複数の幾何状態を利用することを含む、手段と；
としてコンピュータを機能させるためのコンピュータプログラム。
【請求項８】
ソリッドモデル表現を修正するための方法であって、
コンピュータが、複数の幾何モデル定義を有する少なくとも１つのデータファイルにアクセスするステップと；
コンピュータが、該幾何モデル定義を幾何モデルの視覚的表現に変換するステップと；
コンピュータが、該幾何モデルの形状本体についての修正に関する編集フィーチャを識別するステップと；
コンピュータが、ユーザに対して表示するために、修正された編集フィーチャを含む修正された幾何モデルを計算するステップを有し、
前記計算するステップは、
該幾何モデルのオリジナルの形状本体から該編集フィーチャを除去するステップと；
複数の面について該編集フィーチャから新たな編集フィーチャへのマッピングを行うステップと；
新たな編集フィーチャを前記オリジナルの形状本体に適用するステップであって、ここで、該新たな編集フィーチャを新たな形状本体に再マッピングし、該新たな形状本体を修正する、ステップと；
該新たな編集フィーチャを修正された幾何モデルに統合するステップと；
を備える方法。
【請求項９】
前記除去された編集フィーチャは板金フォーマットである、請求項８記載の方法。
【請求項１０】
コンピュータが、前記修正された幾何モデルの修正された視覚的表現を少なくとも１つのデータファイルに保存するステップを更に備える、請求項８または９記載の方法。
【請求項１１】
前記少なくとも１つのデータファイルは、幾何モデラ転送ファイル、モデリングツールキット情報ファイルまたはソリッドモデル部分ファイルである、請求項８〜１０のいずれか１項記載の方法。
【請求項１２】
前記視覚的表現は境界表現形式で表現される、請求項８〜１１のいずれか１項記載の方法。
【請求項１３】
前記幾何モデルはソリッドモデルである、請求項８〜１２のいずれか１項記載の方法。
【請求項１４】
ソリッドモデル表現を修正するために、
モデルファイル処理モジュールと、データ表示構成モジュールと、論理処理モジュールと、修正処理モジュールと、幾何モデル処理モジュールとを備える個別のソフトウェアモジュールから構成されるシステムを提供する手段と；
幾何モデリングセッションにおいて用いられるモデラ転送データと、前記幾何モデリングセッションに適用される修正情報データと、前記幾何モデリングセッションにより影響されるモデルアプリケーションデータとを定める複数のモデルデータファイルを構文解析する手段であって、該構文解析は前記モデルファイル処理モジュールにより前記論理処理モジュールによる呼出しに応じて行われる、手段と；
修正された編集フィーチャを含む修正された幾何モデルを計算する手段であって、該計算手段は、該幾何モデルのオリジナルの形状本体から該編集フィーチャを除去し、複数の面について該編集フィーチャから新たな編集フィーチャへのマッピングを行い、該新たな編集フィーチャを該オリジナルの形状本体に適用し、ここで、該新たな編集フィーチャを新たな形状本体に再マッピングし、該新たな形状本体を修正し、該新たな編集フィーチャを修正された幾何モデルに統合し、かつ、前記論理処理モジュールの呼出しに応じて前記幾何モデル処理モジュールにより実行される、手段と；
前記データ表示構成モジュールにより、前記論理処理モジュールの呼出しに応じて、前記新たな編集フィーチャの統合された前記幾何モデルを構成する手段であって、該構成は前記論理処理モジュールにより計算された複数の幾何状態を利用することを含む、手段と；
としてコンピュータを機能させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、２００８年４月１４日に出願された、係属中の米国特許出願番号６１／０４４，６２２および６１／０４４，６７１の優先権を主張する。
【０００２】
技術分野
本明細書に記載された発明にかかるシステムは、一般にコンピュータ支援設計（ＣＡＤ）のソフトウェアアプリケーションに関する。より詳細には、本システムは、ソリッドモデル表現における幾何学的関係の認識に関する。
【０００３】
発明の背景
こんにちのコンピュータ支援設計（ＣＡＤ）アプリケーションの世界では、一般に、履歴に基づく方法と、履歴に基づかない方法とのいずれか一方で設計が行われる。履歴に基づくシステムは、一般に、１９８０年代半ばに現れたパラメトリックモデリングのパラダイムにより特徴づけられる。パラメトリックモデリングシステムでは、レシピまたは履歴ツリーが生成され、対象が互いにどのように関係しているのかが反映される。オリジナルのアイテムが変更されると、オリジナルのアイテムからその後生成されたアイテムすべてが更新される。このようにして、例えば、２つの面が同一平面上に維持されるが、これはこれらが設計プロセスで表現され、かつ、更新プロセスで単に「再生される」ような関係で設計されることによる。図１ａ〜１ｃは、３次元ブロックの射影図を示す。図１ａ〜１ｃに示されているように、ユーザは３次元（３Ｄ）のＣ字型ブロックをコンピュータディスプレイで見ることができ、ユーザは、下脚１０５、上脚１１０あるいは下脚１０５および上脚１１０の両方を変更する必要がある。履歴に基づくシステムでは、ユーザがどれほどＣ字型ブロック１００を修正しやすいかは、シーメンスＰＬＭソフトウェア（Siemens Product Lifecycle Management Software Inc.）製のＳｏｌｉｄ  Ｅｄｇｅ（登録商標）などのＣＡＤアプリケーションシステムで元々どのように設計されたかによる。一般に、オリジナルの設計者は、ある部分を作成および／または設計するが、この部分は当該設計者を全く知らないかもしれない修正者により後に修正される。例えば、オリジナルの設計者、すなわち、Ｃ字型ブロック１００のオリジナルを設計した者が、下脚１０５と上脚１１０とに関係する面を同一平面上に規定する設計意図を持っていたならば、３Ｄモデル設計の当業者には基本である既知のパラメトリックまたは履歴に基づくモデリング技術を用いることにより、図１ｃに示す修正は容易である。しかし、簡単な説明のためであるが、２つの面は同一平面上に規定されているので一方の面を動かすと他方の面も同様に動いてしまう。一方で、例えば図１ｂのように、修正者が上脚１１０に関連する面をそのままにして下脚１０５に関連する面だけを動かしたい場合、修正者がオリジナルの設計者でなければ、同一平面上という規定を取り除くためには、Ｃ字型ブロック１００の２つの脚がどのように生成されたかを理解するところから始まる複数の追加的なステップが必要であることが明らかとなる。さらに、Ｃ字型ブロック１００のオリジナルの設計者が下脚１０５および上脚１１０が同一平面上にあるようにモデルしたのではなく、距離や数式などの他のなんらかの方法によりこれらの脚をモデリングした場合には、図１ｃに示されるようにこれらの脚を修正することは、修正者がＣ字型ブロック１００をスクラッチからモデリングするのと同程度に、より困難なものとなる。
【０００４】
一方で、ＣｏＣｒｅａｔｅ社、ＩｒｏｎＣＡＤ社、Ｋｕｂｏｔｅｋ社のような企業により行われている履歴に基づかないまたは本体形状に基づくアプローチでのＣ字型ブロック１００の修正は、例えば、パラメトリックモデリングのパラダイムにより一般的とされる履歴ツリーを保持しない。履歴に基づかないアプローチでは、変更はソリッドモデルの各アイテムについて明示的に行われる。Ｃ字型ブロック１００のオリジナルの設計者が下脚１０５と上脚１１０とが同一平面上にある関係を維持することを意図していた場合、後の修正では、編集で所望の結果を得るため、関係する面をマニュアルで選択する必要がある。これは、オリジナルの設計者の意図が不明であるか、または確認できない場合には難しい。例えば、修正者は図１ｂまたは１ｃに示されるいずれかの変更を、１つの面、または、同一平面上の他の面すべてをそれぞれ選択することで行うことができ、面の選択はこの例では少ない数となるが、複雑な組立てモデルでは数百となることもある。また、いくつかのソフトウェアアプリケーションでは、修正者は「面を同一平面上にする」ことができ、編集時点での情報入力の後でも設計意図を持続的に表現することができるが、これは、とりわけ、非常に大きいモデルについては扱いづらいものともなる。設計意図がこれに反するモデルに焼き付けされる場合さえあるため、このような後からの変更は、図１ｂに見られるような修正を後日困難にする。
【０００５】
履歴に基づくアプローチについての課題は、設計意図がモデル生成時に組み込まれて固定されることである。これにより、モデル生成時に予期されなかった変更を後に行うことが複雑になる場合がある。反対に、履歴に基づかないシステムは後日の変更については柔軟であるが、要素がどのように関係しているのかについての情報はほとんど表現しない。修正者がその後にこのような情報をマニュアルで表現しようとした場合、履歴に基づくシステムのように、その情報は組み込まれかつ固定され、柔軟性は制限されることになる。
【０００６】
本発明者らは、現在の幾何情報が検査され、種々のモデル規定と結合され、依存関係がリアルタイムでローカルに保存される、ソリッドモデルを直接編集可能なシステムおよび方法に対する要望を認識した。
【０００７】
要約
当該の要望と関連する問題に取り組むため、本発明は、設計のためのソフトウェア命令を備えたコンピュータを用いて操作されるソリッドモデル表現を修正するためのシステムであって、メモリと、プロセッサと、ユーザ入力装置と、表示装置とを備えたコンピュータシステムと、前記コンピュータシステムの前記メモリに保存された、該コンピュータにより生成された幾何モデルと、を備え、前記コンピュータシステムは、複数の幾何モデル定義を有する少なくとも１つのデータファイルにアクセスし；該幾何モデル定義を幾何モデルの視覚的表現に変換し；該幾何モデルの形状本体についての修正に関する編集フィーチャを識別し；該修正された編集フィーチャを含む修正された幾何モデルを計算し、ここで、前記コンピュータシステムは該幾何モデルのオリジナルの形状本体から該編集フィーチャを除去し；複数の面について該編集フィーチャから新たな編集フィーチャへのマッピングを行い；該新たな編集フィーチャを該オリジナルの本体形状に適用し、ここで、該新たな編集フィーチャを新たな本体形状に再マッピングし、該新たな本体形状を修正し；該新たな編集フィーチャを修正された幾何モデルに統合する、システムを提供する。
【０００８】
本システムの他の特徴は、一部は明細書および以下の図面において記載され、一部は本システムの実施により理解される。本システムは、本明細書の一部をなす以下の図面に付された参照番号を用いて説明される。本システムの範囲を逸脱することなく他の実施形態を利用することができ、実施形態の変更を行うことができることは理解される。
【図面の簡単な説明】
【０００９】
本システムを添付図面と組み合わせて以下に説明し、同様の符号は同様の構成要素を示す。
【図１ａ】図１ａは３次元ブロックの射影図を示す。
【図１ｂ】図１ｂは３次元ブロックの射影図を示す。
【図１ｃ】図１ｃは３次元ブロックの射影図を示す。
【図２】図２は本システムにより用いられる方法の処理図である。
【図３】図３は本システムを実施可能なコンピュータ環境のブロック図である。
【図４ａ】図４ａはソフトウェアアプリケーションに具現化されたソフトウェアプログラムコードの全体的概念を示す図である。
【図４ｂ】図４ｂはソフトウェアアプリケーションに具現化されたソフトウェアプログラムコードの全体的概念を示す図である。
【図５】図５は本実施形態により使用される方法の概観のボックス図である。
【図６】図６は実施形態にかかるソリッドモデル修正システムを示す。
【図７】図７は実施形態にかかるソリッドモデル修正システムのシーケンス図を示す。
【図８ａ】図８ａは実施形態にかかるソリッドモデル修正システムにおけるＡＰＩの一般的な編集動作を示す。
【図８ｂ】図８ｂは実施形態にかかるソリッドモデル修正システムにおけるＡＰＩの一般的な編集動作を示す。
【図８ｃ】図８ｃは実施形態にかかるソリッドモデル修正システムにおけるＡＰＩの一般的な編集動作を示す。
【図８ｄ】図８ｄは実施形態にかかるソリッドモデル修正システムにおけるＡＰＩの一般的な編集動作を示す。
【図９ａ】図９ａはプロシージャルフィーチャを更新するアルゴリズムを示す。
【図９ｂ】図９ｂはプロシージャルフィーチャを更新するアルゴリズムを示す。
【図９ｃ】図９ｃはプロシージャルフィーチャを更新するアルゴリズムを示す。
【図９ｄ】図９ｄはプロシージャルフィーチャを更新するアルゴリズムを示す。
【００１０】
発明の詳細な説明
１．緒言
ソリッドモデルの幾何学的関係を修正するための方法およびシステムが記載される。以下の記載は説明を目的としたものであり、数値を特定した詳細事項は本システムの全体の理解のために記載される。本システムがこれらの特定した詳細事項を含まずに実施可能であることは当業者には明らかであろう。他の例では、本システムを不必要に不明確とすることを避けるため、周知の構造および装置はブロック図の形で記載される。
【００１１】
図２に、仮想的な製品開発環境の例を示す。こんにち用いられる仮想開発環境は、典型的には、製品を作成または改善するための顧客の要求あるいは内在的な欲求から始まる。顧客の要求あるいは内在的な欲求を参照番号２００にて概略的に示す。対象となる製品は栓抜きのような簡単なものでも、潜水艦のような複雑なものでもよい。さらに図２によれば、オリジナルの設計者は、コンピュータ支援設計（ＣＡＤ）アプリケーション２０５が用いる既知の方法に従って所望の製品をモデリングする。ＣＡＤアプリケーション２０５は汎用コンピュータ上で実行されるので、当該コンピュータは、以下に詳細を示すアプリケーションの実行およびインタラクションの時点でコンピュータ支援設計のルーチンを実行することを目的とする特定目的用コンピュータ環境となる。このことの詳細は後述する。ＣＡＤアプリケーション２０５は、好ましくはいずれもシーメンスＰＬＭソフトウェア社によりライセンス提供されるＳｏｌｉｄ  Ｅｄｇｅ（登録商標）またはＮＸ（商標）である。ＣＡＤユーザは周知の十分に理解されたやり方でＣＡＤアプリケーション２０５を操作し、顧客の要求または内在的欲求から確認されたオリジナルの設計条件に一致および類似するソリッドモデルを仮想的に表示させる。ソリッドモデルは一般に、コンポーネントの１つまたは複数のアセンブリであり、これらのアセンブリはサブアセンブリおよび／またはコンポーネントにさらに分解され、その全ては、好ましくは、続く再呼出しのためにソリッドモデルのデータファイル２２５に保存された仮想表現を有する。
【００１２】
ソリッドモデルがオリジナルのデザイン条件に適合する形態であると判断されると、ＣＡＥユーザは、シーメンスＰＬＭソフトウェア社によりいずれも提供されるＮＸ  ＣＡＥ（商標）やＦＥＭＡＰ（商標）などのコンピュータ支援エンジニアリング（ＣＡＥ）アプリケーション２１０を用いて、このソリッドモデルを部分耐障害性テストおよび種々の他のエンジニアリングテストについてテストする。ＣＡＥユーザが、ソリッドモデルが耐障害性テストを成功裏にパスするためには修正が必要であると判断した場合、ソリッドモデルはＣＡＤアプリケーション２０５での修正のためＣＡＤユーザに戻される。ＣＡＤアプリケーション２０５とＣＡＥアプリケーション２１０および各ユーザの間のやりとりは、ソリッドモデルが必要な設計条件およびエンジニアリングテストを成功裏にパスするまで繰り返される。
【００１３】
テストにパスして完成した後、最終的な設計形態のソリッドモデルは、シーメンスＰＬＭソフトウェア社によりいずれも提供されるＮＸ  ＣＡＭ（商標）やＣＡＭ  Ｅｘｐｒｅｓｓ（商標）などのコンピュータ支援製造（ＣＡＭ）アプリケーション２１５において物的製造のためにさらに設計される。ＣＡＭアプリケーション２１５を用いて、ＣＡＭユーザは数的制御プログラム、金型、ツール、ダイによってどのように物的製品２３０が製造されるかをモデリングすることになる。ＣＡＭユーザは、オリジナルの設計要求に適合させるためにさらに修正を行う場合がある。例えば、放電加工（ＥＤＭ）を用いる場合、ワイヤカットＥＤＭまたは型彫りＥＤＭのいずれを物的製品２３０の製造に用いるかによって、異なる技術が要求される。仮想的に一部をミリングするため、ＣＡＭアプリケーション２１５は好ましくはＥＤＭ処理用の電極軌道路を定義する。ＣＡＭユーザは設計要求およびエンジニアリング要求に適合させるため、例えば、物的製品２３０の構成材料を硬化させる冷却の後に、ソリッドモデルの寸法をわずかに修正する必要があると判断することがある。
【００１４】
製品の仮想的な設計、エンジニアリングおよび製造が成功裏に終わった後、製造者は全ての製造原則を、製品に関係する製品エンジニアリングとリンクすることができる。製品エンジニアリングには、例えば、プロセスレイアウトおよびプロセス設計、プロセスシミュレーション／エンジニアリング、および、シーメンスＰＬＭソフトウェア社により提供されるＴｅｃｎｏｍａｔｉｘ（商標）などのデジタル工場アプリケーション２２０を用いる製品管理が含まれる。ＣＡＭユーザが製品を例えば旧型のＥＤＭシステムでモデリングしており、製造者に５軸旋盤機を用いて必要なブランクを形成するよう要求しているために、あるいは、製造者が圧縮成形から射出成形に変えて物的製品２３０の構成部分を形成するようになったために、製造者が物的製品２３０を修正する必要を見いだす場合がある。例えば、ソリッドモデルは物的製品２３０を製造するための最終的な要求に適合するよう修正されなければならない。
【００１５】
上述した仮想的製品開発全体にわたって、製品設計フローは例えば顧客の要求からＣＡＤユーザ、ＣＡＥユーザ、ＣＡＤユーザへと流れ、さらにＣＡＥユーザに戻って、ＣＡＭユーザ、そして物的製品２３０の物的製造のために製造者へと流れている。ソリッドモデルへのそれぞれの編集とともに、例えば、ＣＡＤユーザ、ＣＡＥユーザ、ＣＡＭユーザおよび製造者による必要な設計変更に適合されるように幾何学的関係も修正される。さらに、ＣＡＤ／ＣＡＥ／ＣＡＭユーザのそれぞれがソリッドモデルを修正すると、ソリッドモデルを定義するデータモデルもまた、上述した、ソリッドモデルデータファイル２２５に適切に保存された変更を適切に説明するよう修正される。製造者はその後、オリジナルの設計仕様およびその後のエンジニアリングにおける修正に従って、物的製品２３０の製造を進める。ソリッドモデルにおける幾何学的関係を修正するためのシステムおよび方法が種々のハードウェアシステムのメモリに常駐する種々のソフトウェアアプリケーションで実行されるシステムにおいて、仮想製品開発は行われる。ハードウェアシステムについて、以下より詳細に説明される。
【００１６】
２．コンピュータプログラム製品
ハードウェアシステムに関し、図３は本システムを実施可能なコンピュータシステムのブロック図である。図３および以下の説明は、本実施形態が具現化可能な、適切なハードウェアシステムおよびコンピュータ環境についての簡単な一般的説明を提供することを意図するものである。本実施形態はいかなる種々の既知のコンピュータ環境で実施されてもよい。
【００１７】
図３によれば、実施形態にかかるコンピュータシステムは、デスクトップコンピュータまたはラップトップコンピュータなどの、複数の関連周辺機器（図示せず）を備えるコンピュータ３００の形態のコンピュータ装置を備える。コンピュータ３００は中央処理ユニット（ＣＰＵ）３０５と、既知の技術に従って中央処理ユニット３０５とコンピュータ３００の複数のコンポーネントとを接続し、通信を可能とするために用いられるバス３１０とを備える。ＣＰＵ３０５の動作は当業者には周知である。ＣＰＵ３０５は、好ましくは、コンピュータにより実行可能なエンコードされた命令、例えば、コンピュータ３００により実行されるプログラムモジュールを有するコンピュータプログラムを実行することができる電気回路である。一般に、プログラムモジュールは、特定のタスクまたは特定のデータタイプのインプリメンテーションを実行する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを有する。好ましくは、プログラムモジュールはファイル処理モジュール３０６と、データ表示モジュール３０７と、方法処理モジュール３０９とを備えるロジック処理モジュール３０８を有する。ロジック処理モジュール３０８はファイル処理モジュール３０６に要求を送り、データ表示モジュール３０７および方法処理モジュール３０９をコンピュータにより実行可能な命令に従って動作させる。同様に、ロジック処理モジュール３０８はファイル処理モジュール３０６から要求を受け、コンピュータにより実行可能な命令に従ってデータ表示モジュール３０７および方法処理モジュール３０９を動作させる。また、バス３１０は種々のプログラムモジュール間および複数のコンポーネント間の通信を可能にする。バス３１０は任意の複数種のバス構造であり、これには、任意の種類のバス構造を有する、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスが含まれる。コンピュータ３００は典型的にはユーザインタフェースアダプタ３１５を備える。ユーザインタフェースアダプタ３１５は、バス３１０を介して中央処理ユニット３０５を１つまたは複数のインタフェース装置、例えばキーボード３２０、マウス３２５および／または他のインタフェース装置３３０と接続する。インタフェース装置３３０は任意のインタフェース装置、例えば、タッチセンサスクリーン、デジタル化ペン入力パッドなどであってよい。バス３１０はまたＬＣＤスクリーンやモニタなどのディスプレイ装置３３５をディスプレイアダプタ３４０を介して中央処理ユニット３０５に接続する。バス３１０はまた中央処理ユニット３０５を、ＲＯＭ、ＲＡＭなどを備えてもよいメモリ３４５に接続する。
【００１８】
コンピュータ３００は、少なくとも１つの保存装置３５５および／または少なくとも１つの光学ドライブ３６０をバス３１０に接続するドライブインタフェース３５０を備える。保存装置３５５は、ディスクの読み書きのためのハードディスクドライブ（図示せず）、リムーバブル磁気ディスクの読み書きのための磁気ディスクドライブ（図示せず）を備えてもよい。同様に、光学ドライブ３６０は、ＣＤ−ＲＯＭや他の光学記録媒体などのリムーバブル光学ディスクの読み書きのための光学ディスクドライブ（図示せず）を備える。上記ドライブおよび関連するコンピュータ読み取り可能な記録媒体には、方法処理モジュール３０９がもたらす命令に記述される方法でロジック処理モジュール３０８が受ける命令に従ってファイル処理モジュール３０６がアクセス可能な、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールおよびコンピュータ３００に関する他のデータが不揮発性で保存される。
【００１９】
コンピュータ３００は通信チャネル３６５を介して他のコンピュータまたは他のコンピュータネットワークと接続することができる。コンピュータ３００はローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）における他のコンピュータに関連していてもよく、または、別のコンピュータなどとのクライアント／サーバの関係におけるクライアントであってもよい。さらに、本実施形態は、分散型コンピュータ環境において実施されてもよい。分散型コンピュータの環境においては、方法処理モジュール３０９の命令によって記述された方法で、ロジック処理モジュール３０８のタスク命令を、通信ネットワークを介してリンクされた遠隔の処理装置が実行する。分散型コンピュータ環境において、プログラムモジュールはローカルまたは遠隔のメモリ保存装置の両方に保存されていてもよい。これらの構成全ては、適切な通信ハードウェアおよびソフトウェアと同じく、当業者には既知である。
【００２０】
プログラムモジュールをより詳細に見るに、図４ａ〜ｂは、ソフトウェアアプリケーションに具現化されたソフトウェアプログラミングコードの全体的概念を示している。図４ａを参照しつつ、ソフトウェアアプリケーション４００が上記のアクセス可能なプロクラムモジュールを含む実施形態に即して、プログラムモジュールを以下により詳細に説明する。ソフトウェアアプリケーション４００は、上述したＣＡＤアプリケーション２０５、ＣＡＥアプリケーション２１０またはＣＡＭアプリケーション２１５などのソリッドモデリングアプリケーションの形態であってもよい。さらに、ソフトウェアアプリケーション４００は、サードパーティのベンダが提供するアクセスおよび利用のための特定のＡＰＩ（「アプリケーションプログラミングインタフェース」）呼出し特徴を備える。続いて、ユーザのソフトウェアアプリケーション４００とのインタラクションの際、特定の修正イベントが、以下で詳述する変分モデリングツールキット４０５とのインタラクションをトリガする。このことを以下でより詳細に説明する。ソフトウェアアプリケーション４００および変分モデリングツールキット４０５は、共にまたは個別に、方法処理モジュール３０９の命令が記述する方法でロジック処理モジュール３０８を利用し、下位の幾何モデリングカーネルを呼び出す。これにより、ユーザが選択してソフトウェアアプリケーション４００および変分モデリングツール４０５が実行するコマンドに従ってソリッドモデルの特定の修正イベントが達成される。これはソリッドモデリングの当業者には一般に理解されることであるが、以下でより詳細に説明する。下位の幾何モデリングカーネルは、一般に少なくとも、シーメンスＰＬＭソフトウェア社がライセンスするＰａｒａｓｏｌｉｄ（商標）などの３次元（３Ｄ）幾何モデラ４１０の集合と、シーメンスＰＬＭソフトウェア社が提供する３Ｄ  ＤＣＭ（商標）（または「ＤＣＭ」）製品のような幾何ソフトウェアコンポーネントライブラリ４１５の集合とから構成される。
【００２１】
換言すれば、図４ｂを参照して、変分モデリングツールキット４０５は、ソフトウェアアプリケーション４００から送られた変分編集コマンドに基づいて動作する。さらに、ソフトウェアアプリケーション４００は非変分モデリングの呼出しを３Ｄ幾何モデラ４１０に送り、３Ｄ幾何モデラ４１０は、幾何モデラの当業者には通常に理解されるように、幾何ソフトウェアコンポーネントライブラリ４１５を利用する。変分モデリングツールキット４０５に関し、以下でより詳細に説明されるが、発見、編集、解決および適用を含む変分編集に関連して、いくつかの動作が発生する。幾何ソフトウェアコンポーネントライブラリの集合が、例えば、幾何学的規定解決、変分設計、パラメトリック設計、運動シミュレーション、衝突判定、クリアランス計算、トポロジ配置、トポロジ運動解決、隠線除去などのモデリング機能を提供することは、ソリッドモデリングの当業者には通常理解される。３Ｄ幾何モデラ４１０およびコンポーネントライブラリ４１５が個別のコンポーネントであるよりは、同一のアプリケーションの部分であるか、または、これらの組み合わせであることは、本実施形態の範囲内であると考えられる。ここまで、コンピュータプログラム製品について説明したが、以降、システムについてより詳細に説明する。
【００２２】
３．モデル修正システム
ソリッドモデル修正システムに関し、図５は本実施の形態に用いられる方法の概略を示すボックス図である。図５を参照して、本実施の形態では、方法処理モジュール３０９の命令が記述する方法を用いるロジック処理モジュール３０８が開示される。記述された方法は設計に関するソフトウェア命令を有するコンピュータで操作されるソリッドモデル表現における幾何学的関係を修正する方法であり、全体として参照番号５００で示される。以下のステップは以下に説明する詳細を有するシステムにて説明される実施形態の概略を示すために説明するものである。システムは幾何モデルを定義するデータファイルにアクセスする（ステップ５００）。システムはデータファイルの定義を幾何モデルの視覚的表現に変換し、視覚的表現は境界表現の形式で表される（ステップ５０５）。システムは幾何モデルの視覚的表現をユーザに表示する（ステップ５１０）。システムは、幾何モデルの本体形状についての修正に関する編集フィーチャを識別する（ステップ５１５）。システムはユーザに表示するため、修正された編集フィーチャによって修正された幾何モデルを計算する（ステップ５２０）。システムは修正された幾何モデルをユーザに表示する（ステップ５２５）。ステップ５２０にて、システムは幾何モデルのオリジナルの本体形状から編集フィーチャを除去し、編集フィーチャから新たな編集フィーチャに複数の面に関するマッピングを形成し；新たな編集フィーチャをオリジナルの本体形状に適用し、ここで、新たな編集フィーチャは新たな本体形状に再マッピングされ、新たな本体形状は修正され；新たなフィーチャを修正された幾何モデルに組み込む。編集フィーチャは編集中のソリッドモデルのフィーチャを参照することが好ましい。
【００２３】
図６は、実施形態にかかるソリッドモデル修正システムを示す。ソフトウェアアプリケーション４００を用いるユーザは、ソフトウェアアプリケーション４００によって必要なコマンドを入力させ、保存装置３５５にアクセスさせる。保存装置３５５は、ソリッドモデルデータファイル２２５に保存されたソリッドモデルの仮想表現に関連するデータを有する好ましくはハードディスクドライブ６００である。ソリッドモデルデータファイル２２５は、ソフトウェアアプリケーション４００のほか、変分モデリングツールキット４０５、３Ｄ幾何モデラ４１０、および、幾何ソフトウェアコンポーネントライブラリ４１５の集合によってもアクセス可能である。図６によれば、ソフトウェアアプリケーション４００は、ファイル処理モジュールを用いてソリッドモデルデータファイル２２５にアクセスするソリッドモデルアプリケーション６０５によって特徴づけられる。ソリッドモデルデータファイル２２５は、有利には、ハードディスクドライブ６００に保存されたデータファイル６１０としてｓｔａｎｄ．ｘ＿ｔ形式またはｓｔａｎｄ．ｖｔｋ＿ｄａｔａ形式で構成されている。ここで、ｓｔａｎｄ．ｘ＿ｔ形式とは３Ｄ幾何モデラ４１０に対するモデラ転送のファイルタイプを表し、ｓｔａｎｄ．ｖｔｋ＿ｄａｔａ形式とは変分モデリングツールキット４０５に対する変分モデリングツールキット情報のファイルタイプを表しており、ｓｔａｎｄ＊はファイル名の汎用部分を表している。ソリッドモデリングアプリケーション６０５は、自身で認識を行うためのファイルタイプ拡張子、例えば、ＡＰＰを有し、ソリッドモデルの操作に関する十分な情報を得るために用いる。続いて、ソリッドモデリングアプリケーション６０５はｓｔａｎｄ．ｘ＿ｔファイルを３Ｄ幾何モデラセッション本体にロードし、これに３Ｄ幾何モデラ４１０がアクセスする。ｓｔａｎｄ．ｖｔｋ＿ｄａｔａファイルは３Ｄ幾何モデラセッション本体にロードされ、付加される。ソリッドモデルアプリケーション６０５は、ソリッドモデルに関連するアプリケーションデータをロードし、ファイルタイプ、例えば、ＰＲＴに従ってデータファイル６１０にアクセスする。インタラクションが形成されると、変分モデリングツールキット４０５は変分モデリングツールキットＡＰＩ６１５により修正計算を行うが、これは以下で詳述する。ソリッドモデル修正の後、修正されたソリッドモデルをハードディスクドライブ６００に保存するため、変分モデリングツールキット４０５に関連するデータがソリッドモデルから取り出されてｖｔｋ＿ｄａｔａ構造に配置された後、ｓｔａｎｄ．ｖｔｋ＿ｄａｔａファイルに保存されることがブロック６２０に示される。残されたソリッドモデルの本体形状も、アプリケーションデータと同様にハードディスクドライブ６００に保存される。
【００２４】
４．モデル修正方法
図７は実施形態にかかるソリッドモデル修正システムのシーケンス図である。図７によれば、例えばユーザである設計者７００は、例えばソリッドモデルアプリケーション６０５であるアプリケーション７０５にアクセスして、ソリッドモデルを修正する。アプリケーション７０５は、好ましくはハードディスクドライブ６００に置かれたソリッドモデルデータベース７１０にアクセスして、設計者７００が決定した修正のためにソリッドモデルにアクセスする。ソリッドモデルデータベース７１０は、アプリケーション７０５がロードした設計者の要求に応じたデータファイル６１０を戻す。アプリケーション７０５は、次いで、設計者７００がソリッドモデルの或る部分を修正しようとするとき、設計者７００に対して表示するためにソリッドモデルをロードする。なお、このソリッドモデルは履歴ツリーを有していないと理解される。アプリケーション７０５は次いで、変分モデリングツールキット４０５でインタラクションオブジェクト７１５を生成し、ソリッドモデルの特定のモデル状態を表現する。インタラクションオブジェクト７１５はタグとして戻される。このタグは、インタラクションデータの構造機能に関する、その後の全ての呼出しに対するものである。擬似コードの例を以下に示す。
typedef int Tag;
typedef Tag InteractionTag;
Interaction Tag Createlnteraction(lnteraction Tag*, ResultType*);
void DestroyInteraction(InteractionTag, ResultType*);
【００２５】
上記擬似コードからわかるように、インタラクションオブジェクトが生成されるだけでなく、これはモデル更新後に破棄される。このことを以下に詳細に示す。便宜上、以下のように定義する。
#DEFINE IT InteractionTag it
#DEFINE RT ResultType* result
【００２６】
続いて、ＡＰＩ呼出しが、成功または失敗の情報を示す最後の復帰引数としてエラーコードを戻す。擬似コードの例を以下に示す。
enum ResultType { ResultTypeOK,ResultTypeBadArgument,
ResultTypeUnknown, ResultTypeUnhandledException};
typedefTag ErrorTag;
ResultType result = ResultTypeOk;
ReferenceTag ref = RelationGetReference(it,relation,index,&result);
If (result != ResultType Ok)
{
ErrorTag etag = GetError (it);
int data1 = ErrorGetCount(it,etag);
... /* dig out multiple error data */
DestroyError(it,etag); // or possibly DestroyObject
}
【００２７】
アプリケーション７０５はソリッドモデルの設計における特定のモデルの状態を、変分モデリングツールキット４０５にインタラクションデータ構造で送る。モデルの状態には、インスタンス、部分、プロファイル、規定、寸法、オプションなどの情報が含まれる。「インスタンス」との語は、幾何モデリングの分野で周知の語を指す。これはアプリケーション７０５のどの位置でソリッドモデル本体形状がどのように発生したかにかかわらず、インスタンスには本体形状と変形とが含まれる。「変形」との語は、ＡＰＩに入力またはＡＰＩから出力されるときに４×４のマトリックス（「［４］［４］」）として通常表現される、リジッドな本体形状の変形を指し、当業者にはよく理解されている。インタラクション中に生成されるインスタンスは、１つの場所の各部分に配置される。擬似コードの例を以下に示す。
typedef Tag InstanceTag;
typedef Tag PartTag;
InstanceTag CreateInstance(IT,Tag Part, double Transform[4][4], RT);
PartTag InstanceGetPart(IT,InstanceTag, RT); // part could be a wire / profile
void InstanceGetTransform(IT,double Transform[4][4], RT);
int GetInstanceCount(IT,RT);
InstanceTag GetInstance(IT, int index, RT);
【００２８】
「部分」とは、例えば、プロファイルとして特別にマークされることのあるワイヤ線部分である。変分モデリングツールキット４０５には部分インスタンスが存在するので、フィーチャの組の発生を表現することが好ましい。ここで、フィーチャの組は、少なくとも面、稜線および／または頂点（ＦＥＶ：Face, Edge, Vertex）、特別なインスタンスにおいて、あるいは、ＦＥＶインスタンスを含む、トポロジの組である。ＦＥＶインスタンスは「参照」と呼ばれ、ＦＥＶタグとインスタンスタグとを保持することにより得られる。参照は、生のＦＥＶインスタンスタグよりは好ましくはＡＰＩにおいて用いられる。参照は固定されていてもいなくてもよい。擬似コードの例を以下に示す。
typedef Tag ReferenceTag;
typedef Tag EntityTag; // face, edge, vertex, geom
ReferenceTag CreateReference(IT,EntityTag,InstanceTag, RT);
Tag ReferenceGetEntity(IT,ReferenceTag, RT);
InstanceTag ReferenceGetInstance(IT,ReferenceTag, RT);
void ReferenceSetFixed(IT,ReferenceTag,bool Fixed,RT);
bool ReferenceGetFixed(IT,ReferenceTag,RT);
ReferenceTag GetReference(IT,Tag entity,InstanceTag,RT);
【００２９】
「関連」とは、１つまたは複数の幾何学的エンティティを規定し、または、寸法を決定することを指す。関係とは、好ましくは、同一、同心、平行、垂直、正接、対称である。擬似コードの例を以下に示す。
typedefTag RelationTag;
enum RelationType {RelationTypeCoincident, RelationTypeConcentric,
RelationTypeParallel, RelationTypePerpendicular, RelationTypeTangent,
RelationTypeSymmetric, RelationTypeDistance, RelationTypeAngle,
RelationTypeEqualRadius, ...}
RelationTag CreateRelation(IT,RelationType, RT);
void RelationAddReference(IT,RelationTag,ReferenceTag,RT);
int RelationGetReferenceCount(IT,RelationTag, RT);
ReferenceTag RelationGetReference(IT,RelationTag, int index, RT);
RelationType RelationGetType(IT,RelationTag, RT);
double RelationGetValue(IT,RelationTag, double*);
int GetRelationCount(IT, RT);
RelationTag GetRelation(IT, int index, RT);
【００３０】
ここでの「関連」は、好ましくはインタラクションオブジェクト７１５よりも長期に持続する。この持続は、該関連が１つのインスタンスを有する単一の部分内であるとき、好ましくは変分モデリングツールキット４０５により処理される。他の持続状況は、アプリケーション７０５が扱う。擬似コードの例を以下に示す。
void RelationSetPersistent(IT, RelationTag, bool Persistent, RT);
bool RelationGetPersistent(IT, RelationTag, RT);
【００３１】
また、全ての参照が有効でありかつ幾何学的組み合わせが関係の種類に関して有効である場合に、当該の関連は有効である。しかし、モデリングの結果の種類（ＲｅｓｕｌｔＴｙｐｅ）として、関係が無効となることがあり、例えば、円筒が円錐に変化する場合には半径と円筒との当該の関係が無効となる。当該の関連は、これが有効であって、解が求められるかぎり、更新されることになる。当該の関連が有効すなわち最新であり、ソリッドモデル設計において現在幾何学的に満たされる限り、当該の関連は満たされる。当該の関連が有効で最新であるが、満たされない場合には、好ましくは、他の当該の関連の内容において過剰に規定されているかまたは不適合である。擬似コードの例を以下に示す。
bool RelationGetValid(IT,RelationTag, RT);
bool RelationGetUpToDate(IT,RelationTag, RT);
bool RelationGetSatisfied(IT,RelationTag, RT);
【００３２】
続いて、参照を好ましくは固定されているかまたは固定されていないリジッドな組に分類することができる。擬似コードの例を以下に示す。
typedef Tag RigidSetTag;
RigidSetTag CreateRigidSet(IT, RT);
void RigidSetAddReference(IT,RigidSetTag,ReferenceTag);
int RigidSetGetReferenceCount(IT,RigidSetTag, RT);
ReferenceTag RigidSetGetReference(IT,RigidSetTag,int index, RT);
void RigidSetSetFixed(IT,RigidSetTag,bool Fixed,RT);
bool RigidSetGetFixed(IT,RigidSetTag, RT);
int GetRigidSetCount(IT, RT);
RigidSetTag GetRigidSet(IT, int Index, RT);
【００３３】
プロファイルは、好ましくは自然座標フレームの幾何情報を保持し、変形により参照される必要があるという点で、ソリッドモデルの本体形状に類似する。プロファイルを生成し、幾何情報を生成して３Ｄ幾何モデラ４１０に与えた後、アプリケーション７０５は（ＩｎｔｅｒａｃｔｉｏｎＣｒｅａｔｅＩｎｓｔａｎｃｅ命令を用いて）インスタンスを生成してプロファイルを配置し、関連する幾何情報に関して（幾何情報を供給するＩｎｔｅｒａｃｔｉｏｎＣｒｅａｔｅＲｅｆｅｒｅｎｃｅ命令を用いて）参照を生成する。フィーチャとは、以下に説明する、リジッドまたはプロシージャルであってよい幾何情報の集合である。フィーチャは変分モデリングツールキット４０５に送られる。変分モデリングツールキット４０５は好ましくはフィーチャを認識しない。フィーチャがプロシージャに関するものである場合には、フィーチャは、以下に擬似コードの例を示す従属関係に基づいた再生成のプロシージャを有する。
void FeatureAddReference(IT,FeatureTag,ReferenceTag,RT);
int FeatureGetReferenceCount(IT,FeatureTag, RT);
ReferenceTag FeatureGetReference(IT,FeatureTag, int index,RT);
【００３４】
フィーチャの幾何情報は好ましくは以下に示す擬似コードによりもたらされる。
void FeatureAddReference(IT, FeatureTag, ReferenceTag, RT);
int FeatureGetReferenceCount(IT, FeatureTag, RT);
ReferenceTag FeatureGetReference (IT, FeatureTag, int Index RT);
また、プロシージャルフィーチャを無効にするリジッドなフィーチャについては、以下に示す擬似コードによりもたらされる。
void FeatureSetRigid(IT,FeatureTag,bool,RT);
bool FeatureGetRigid(IT,FeatureTag,RT);
【００３５】
プロシージャルフィーチャは、幾何情報、トポロジ、パラメタおよびロジカルユニットを形成するプロシージャの集合である。修正された幾何情報、トポロジまたはパラメタを有するプロシージャルフィーチャの再評価は、好ましくは新たな幾何情報およびトポロジを生成するが、これは以下で詳述する。続いて、プロシージャルフィーチャに関して、アプリケーション７０５は、好ましくは解決処理の間に呼出しするコールバック機能を提供し、好ましくは現在の従属物の状態に基づいてプロシージャル幾何情報を再生成し、これは好ましくはＰｒｏｃｅｄｕｒａｌＦｅａｔｕｒｅＴａｇについての通常の問い合わせ機能を介して問い合わされる。名前の生成とタグの回復も、コールバック機能にてアプリケーション７０５により実行される。アプリケーションは、以下に例を示す擬似コードに従って、好ましくはＭａｐｐｉｎｇＤａｔａオブジェクト（下記参照）の命令をアプリケーション７０５について出力し、追加する。
typedef void Procedure(IT, FeatureTag, void *AppData, MappingData Tag*,
<sheet body for new geometry>);
void FeatureSetProcedure(IT, FeatureTag, Procedure, AppData*, RT);
Procedure FeatureGetProcedure(IT, FeatureTag, Procedure, AppData*, RT);
【００３６】
プロシージャルフィーチャは、好ましくは変分モデリングツールキット４０５に送られる他の幾何情報に依存し、以下に例を示す擬似コードに従う。
void FeatureAddDependent(FeatureTag,ReferenceTag,RT);
int FeatureGetDependentCount(FeatureTag,RT);
ReferenceTag FeatureGetDependent(FeatureTag, int index,RT);
【００３７】
好ましくは現在のモデルからプロシージャルフィーチャを取り除き、現在のパラメタおよび母型をもってプロシージャルフィーチャを再生成することにより現在の型が形成される限り、プロシージャルフィーチャはもとのままである。変分モデリングツールキット４０５が実行する処理の間、例えば、プロシージャルフィーチャをコールバック機能を介して再生成する処理の間に、アプリケーション７０５が古いタグから新たなタグを回復しようとすることがある。回復の要求を伝えるための一般的なメカニズムは、好ましくは変分モデリングツールキット４０５により生成され、アプリケーション７０５に伝えられる、ＭａｐｐｉｎｇＤａｔａオブジェクト命令によるものである。これは、ＭａｐｐｉｎｇＤａｔａオブジェクト命令を追加するのに必要な機能を呼び出すものであり、以下に擬似コードの例を示す。
typedef Tag MappingDataTag;
MappingDataTag CreateMappingData(IT,FeatureTag,RT); - internal
void MappingDataAddEntry(IT,Tag old, Tag new, RT);
【００３８】
変分モデリングツールキット４０５に送られたプロシージャルフィーチャは、必要な場合、例えば、幾何情報の変化をサポートする場合に呼び出される、好ましくは関連する再生成プロシージャを有する。これらのフィーチャはまた、サポートする幾何情報が変更されていない場合であってもフィーチャの更新を必要とする、変更された内部パラメタを有してもよく、以下に例を示す擬似コードに従う。
void FeatureSetUpdateRequired(IT, FeatureTag, RT);
【００３９】
特定のモデルの状態がインタラクションオブジェクト７１５に送られたとき、ＡＰＩ６１５は何を変更すべきか、かつ、意図される状態７２０の間で何を維持すべきかを特定する。
【００４０】
意図される状態７２０を見るに、変分モデリングツールキット４０５のインタラクションモードのコアは、選択と認識とを含む。ユーザは変更すべきＦＥＶを選択する。以下に擬似コードの例を示す。
void AddSelection(IT,ReferenceTag, RT);
int GetSelectionCount(IT, RT);
ReferenceTag GetSelection(IT, RT);
【００４１】
インスタンス間の関係が与えられる場合、好ましくは面、稜線または頂点のインスタンスを動かすべきであるかを伝える方法が生じ、これが参照のターゲットとして参照され、かつ、好ましくは全てのユニークな参照および全ての同等の参照と同一となる。発見機能は、インタラクションオブジェクト内の同一および他の部分における、現在の選択されているＦＥＶの組と他のＦＥＶとの間の関係を検索する。発見されたＦＥＶは生のモデルの幾何情報およびトポロジならびに、インタラクションオブジェクトに存在する、持続的な規定および寸法から集められる。新たに発見された関係は好ましくは保持されるが、デフォルトによって不変ではないようにされる。以下に擬似コードの例を示す：void FindRelations(IT,RT)。また、米国特許出願公開番号２００８／０１４３７０８（２００６年１２月１８日出願、「境界表現モデルの自動寸法設定のためのシステムおよび方法」）に記載されているような、自動寸法設定を用いて動作制御を行うことができる。例えば、面を回転ではなく移動するオプションでは、試みに自動寸法設定を用い、角度の定義を面に追加することになる。一般的な編集シナリオでは、アプリケーション７０５による自動寸法設定がより明確に使用される。このシナリオでは、ソリッドモデルは現状では十分に寸法が定まっておらず、設計者７００には編集ハンドルの形態で寸法が示される。編集ハンドルは、変分モデリングツールキット４０５に対する呼出しから得られる。残りのモデルに対する選択された面、および選択された組内の選択された面の残存する自由度を設計する際の擬似コードの例を示す：void DimensionFreedoms(IT, RT)。ここで、アプリケーション７０５は、意図される状態７２０の間で特定のモデルの状態、範囲および変更可能なエンティティを定義し、ようやく編集７２５に向かう。
【００４２】
編集７２５に関していえば、編集には種々の種類が存在し、例えば、寸法値の変更、新たな規定の追加、ドラッグ、厚みの増減ならびにこれらの種々の組み合わせがあるが、これらに限られるものではない。アプリケーション７０５は、特定の種類の実行動作を変分モデリングツールキット４０５に送り、例えば、特別な機能を必要とする場合がある平面の通常の引っ張り動作を実行させる。以下に擬似コードの例を示す。
void DragLinearStart (IT,double Pos[3], double Dir [3], double
StartOnLine[3], RT);
void DragLinearStep(IT,double PosOnLine[3], RT);
void DragLinearStop (IT, RT);
【００４３】
続いて、アプリケーション７０５は、好ましくは修正後に直接呼び出される更新を要求する。更新の後、アプリケーション７０５は、例えば、インスタンスの変形、当該の関係の値、当該の関係の有効性の新たな状態について問い合わせを行い、設計者７００に表示するために必要なグラフィックの更新を行う。上述したように、編集された面および実体は、３Ｄ幾何モデラセッション本体により維持され、ここで、変分モデリングツールキット４０５は、その問い合わせを与える。擬似コードの例を以下に示す。
int GetConsumedEntityCount(IT,RT);
ReferenceTag GetConsumedEntity(IT,int index, RT);
【００４４】
アプリケーション７０５は、分岐のないロールバック処理の利点を有し、ここで、要求されるロールマークはインタラクションオブジェクト７１５に設定することができる。ロールバックはその後アプリケーション７０５に統合される。擬似コードの例を以下に示す。
typedef Tag MarkTag;
MarkTag CreateMark(IT, RT);
void RollToMark(IT,MarkTag, RT);
Int GetMarkCount(IT,RT);
MarkTag GetMark(IT,int index, RT);
【００４５】
図８ａ〜ｄは、実施の形態にかかるソリッドモデル修正システムにおけるＡＰＩの一般的編集動作を示す。図８ａ〜ｄを参照して、上述したインタラクションオブジェクト７１５および関連する擬似コードについて説明する。擬似コードはその開始部分８００が表示されており、リブ付きのボス８０５に一般的な編集を行う設計者７００により修正される。以下の表は図面の例と各擬似コードと並べたものである。
【００４６】
擬似コード                                      ステップ          参照番号
選択
ResultType res = ResultTypeOk                   ステップ８００
＜＜設計者７０５はリブ付きボス８０５を選択＞＞  ステップ８０５
Interaction Tag IT = CreateInteraction (&res);
Assert(result == ResultTypeOk);                 ステップ８１０    ８１０
InstanceTag instance 1 = CreateInstance(IT,&res)
FeatureTag FT = CreateFeature(IT);
FeatureSetRigid(IT,FT,TRUE);                    ステップ８１５    ８１５
関連を発見
AddSelection(IT);
FindRelations(IT);
GetRelationCount(IT);
Loop { RelationTag relation = GetRelation(IT); }
RelationSetPriority(rel,Maintain);              ステップ８２０    ８２０、８２５
RelationSetPriority(rel,Maintain);
寸法を編集
＜＜設計者７００は修正寸法８３０を選択＞＞      ステップ８２５
RelationSetValue(IT,newval);                    ステップ８３０    ８３５
Update(IT); // 新らしい位置８４０へ             ステップ８３５
ドラッグによる編集
FeatureSetRigid (IT,FT,TRUE);                   ステップ８４０
＜＜ミニバー８４５を用いた操作制御８５０＞＞
LinearDrag Start (IT,POS,DIR,PICKPOS);
LOOP
{
LinearDragStep(IT);                             ステップ８４５
Update(IT);
val = 2xRelationGetValue(IT,rel);
}
Update(IT);
2xGetRelationValue(IT,re,&value);               ステップ８５０
円筒に配列して編集
FeatureSetRigid(IT,FT,TRUE);                    ステップ８５５
＜＜ミニバー８４５は参照を制御＞＞
＜＜設計者７００はリブ付きボス８０５を屈曲した角８５５と同軸にしたい＞＞
R1 = GetReference(IT,FT,Instance1);
R2 = CreateReference(IT,F2);                    ステップ８６０
CreateRelation(IT,RelationTypeConcentric,Rl,R2);
RelationSetPriority(IT,rel,RelationPriorityFloat);
＜＜リブ付きボス８０５を同軸中心に移動＞＞
Update(IT);                                     ステップ８６５
2xRelationGetValue(IT,rel,&value);
DestroyInteraction(IT);
【００４７】
５．方法の説明
図９ａ〜ｄは、プロシージャルフィーチャを更新するアルゴリズムを例示する。図９ａを参照して、開始部分８００は２次元（「２Ｄ」）表示で表示され、開始部分８００のプロファイルのオリジナルの本体形状９００が表示される。リブ付きボス８０５へのパラメタ変更を適用するため、例えば、Ｒの値を倍とするため、リブ付きボス８０５は開始部分８００の他の部分と同様に更新する必要がある。上述したように、意図された状態７２０で選択と認識とが行われたとき、リブ付きボス８０５であるプロシージャルフィーチャは、オリジナルの本体形状９００中で参照符号Ｆにて示され、オリジナルの切断フィーチャ（「ＯＣＦ」）９０５中で除去または削除され（参照符号Ｆ’で示される）、板金体として当業者に通常理解される方法を用いて保存される（ステップ９００）。説明を目的として２Ｄ表示を用いたが、設計者７００が３Ｄモデルを観ることも考えられる。続いて、ＭａｐｐｉｎｇＤａｔａオブジェクト命令により好ましくはフィーチャの全ての面についてＦをＦ’にマッピングする（ステップ９０５）。ここで、切断されたフィーチャシート中のＦ’は、リブ付きボス８０５の無いオリジナルの本体形状９００を表すむき出しの本体形状（「ＮＢ」）９１０を有するオリジナルの本体形状９００のＦと等しい。ＯＣＦ、Ｆ→Ｆ’のマッピングおよびＮＢは、設計者７００が寸法値を変更しようとする編集７２５の一部として、変分モデリングツールキット４０５からアプリケーション７０５に適用される。図９ｂによれば、アプリケーション７０５はマークＭを設定し（ステップ９１０）、所望の編集に従って新たなフィーチャを適用する（ステップ９１５）。新たなフィーチャはむき出しの本体形状９１０に再マッピングされて第１の再生成された本体形状（参照符号Ｆ＊で示される）を形成する（ステップ９２０）。新たなフィーチャは、第１の再生成された本体形状９１５から除去または削除されて、新たな切断フィーチャ（「ＮＣＦ」）９２０（参照符号Ｆ’’で示される）が残されたむき出しの本体形状９１０とともに複製される。オリジナルの切断フィーチャ（Ｆ’）は、新たなフィーチャの面（Ｆ’’）に再マッピングされる（ステップ９３０）。アプリケーション７０５はＭにロールバックする（ステップ９３５）。図９ｃによれば、ＮＣＦおよびマッピングＦ’→Ｆ’’は、幾何ソフトウェアコンポーネントライブラリ４１５の集合へのロードのために、アプリケーション７０５から変分モデリングツールキット４０５に戻して適用される（ステップ９４０）。このことは９２５に概略的に示されている。幾何ソフトウェアコンポーネントライブラリ４１５の集合は、ＯＣＦ状態のＦ’の半径および位置を計算し、マッピングＦ’→Ｆ’’からの予測された種類の変更も収集する。このことは９３０に概略的に示されている。幾何ソフトウェアコンポーネントライブラリ４１５の集合は変分モデリングツールキット４０５を呼出して、マッピングＦ’→Ｆ’’を用いて、幾何ソフトウェアコンポーネントライブラリ４１５の集合が与える支持構造内のＮＣＦとともにＯＣＦを配置する（ステップ９５０）。これは９３５に一般的に例示されている。図９ｄによれば、変分モデリングツールキット４０５は、幾何ソフトウェアコンポーネントライブラリ４１５の集合に制御を戻し、幾何ソフトウェアコンポーネントライブラリ４１５の集合は、新たなプロシージャルフィーチャの幾何情報に基づいて残りの幾何情報を配置することができる（ステップ９５５）。これは９４０に一般的に例示されている。幾何ソフトウェアコンポーネントライブラリ４１５の集合は、変分モデリングツールキット４０５に制御を戻し、全ての非プロシージャルフィーチャの変更を、むき出しの本体形状９４５に適用する（ステップ９６０）。これを９５０にて一般的に例示する。ＮＣＦ９２０は、適用されるむき出しの本体形状９４５にフィーチャを適用し、かつ、新たなパラメタを最終的なむき出しのモデルの状態に関連づけ（ステップ９６５）、このとき、Ｆ’’→Ｆ’’’のマップを生成する。最終的な本体形状（「ＦＢ」）９６０が形成され、このとき、トラッキング情報としてアプリケーション７０５に戻される（Ｆ→Ｆ’）＋（Ｆ→Ｆ’’）＝（Ｆ→Ｆ’’’）のマップが統合される（ステップ９７０）。これは９６５に一般的に例示されている。
【００４８】
６．結論
本実施形態はデジタル電子回路またはコンピュータハードウェア、ファームウェア、ソフトウェアあるいはこれらの組み合わせにおいて実現することができる。本実施の形態にかかる装置は、プログラム可能なプロセッサによる実行のために、機械読み取り可能な保存装置に具現されたコンピュータプログラム製品において実現することができる。また、本実施の形態にかかる方法のステップは、入力データおよび生成される出力に基づいて動作することによる実施形態の機能を実行する命令のプログラムを実行するプログラム可能なプロセッサにより実行される。
【００４９】
本実施形態は、少なくとも１つの入出力装置やデータ保存システムとの間でデータおよび命令を授受するために接続される少なくとも１つのプログラム可能なプロセッサを含む、プログラム可能なシステムにおいて実行可能な１つまたは複数のコンピュータプログラムとして有利に実現することができる。アプリケーションプログラムは、ハイレベルのプロシージャルまたはオブジェクト指向のプログラミング言語で、あるいは、所望によりアセンブリ言語または機械語で実現されていてもよい。いずれの場合にも、言語はコンパイルされるか、翻訳された言語である。
【００５０】
一般に、プロセッサは、命令およびデータを読み取り専用メモリおよび／またはランダムアクセスメモリから受信する。コンピュータプログラムの命令およびデータを具現化するのに適した保存装置としては、多くの形態の不揮発性メモリ、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ装置などの半導体メモリ装置；内部ハードディスクやリムーバブルディスクなどの磁気ディスク；光磁気ディスク；ＣＤ−ＲＯＭディスクなどが挙げられる。上記のいずれも、特別に設計されたＡＳＩＣ（特定用途向け集積回路）を追加してもよく、あるいは、ＡＳＩＣに組み込まれていてもよい。
【００５１】
多くの実施形態を記載した。本実施形態の精神および範囲を逸脱しない限りで、種々の修正をなすことができることは理解されるであろう。幾何学情報は、削除され、再形成され、そして、上記方法およびシステムにより置換されてもよいことが意図される。したがって、他の具現化も、添付の特許請求の範囲に記載された請求項の範囲内である。
【図１ａ−１ｃ】
0005383791.tif 000002
【図２】
0005383791.tif 000003
【図３】
0005383791.tif 000004
【図４ａ】
0005383791.tif 000005
【図４ｂ】
0005383791.tif 000006
【図５】
0005383791.tif 000007
【図６】
0005383791.tif 000008
【図７】
0005383791.tif 000009
【図８ａ】
0005383791.tif 000010
【図８ｂ】
0005383791.tif 000011
【図８ｃ】
0005383791.tif 000012
【図８ｄ】
0005383791.tif 000013
【図９ａ】
0005383791.tif 000014
【図９ｂ】
0005383791.tif 000015
【図９ｃ】
0005383791.tif 000016
【図９ｄ】
0005383791.tif 000017