(57)【特許請求の範囲】
【請求項１】
ソリッドモデル上の修正フィーチャを選択するためのコンピュータシステムであって、
前記コンピュータシステムは、メモリ、プロセッサ、ユーザ入力装置及びディスプレイ装置を含み、
ここで、前記ソリッドモデルは、前記コンピュータシステムのメモリ内のソリッドモデルデータファイルに格納されており、
前記プロセッサが、
前記ソリッドモデルを前記ディスプレイ装置上に表示し、
ユーザからの修正意図を伝えるコンピュータ周辺機器からの入力データに基づいて、前記ソリッドモデル上の修正フィーチャを選択し、
前記修正フィーチャとともに含めるべき複数の付加的な選択フィーチャを前記ディスプレイ装置上に表示し、ここで、前記含めるべき複数の付加的な選択フィーチャは、前記複数の付加的な選択フィーチャと、前記修正フィーチャに対応する少なくとも１つの面との間の幾何学的条件または位相幾何学的な近さに基づいて示唆され、この示唆には、正接面、隣接面、およびフィーチャ面を含む表示されたオプションからユーザが選択することを含む、
前記含められた複数の付加的な選択フィーチャが前記ユーザからの修正意図に合致しているか否かのユーザによる判断が容易になるように、前記選択フィーチャを視覚的に強調表示し、
前記修正フィーチャが前記ユーザからの修正意図に合致している場合には、ソリッドモデルと視覚表示情報に修正をもたらす前記ユーザからの修正意図に従って前記ソリッドモデルを修正し、
前記修正された視覚表示情報を用いて、前記修正されたソリッドモデルを前記ユーザに表示する、ことを特徴とする、コンピュータシステム。
【請求項２】
前記プロセッサが、前記ソリッドモデルデータファイルから抽出した視覚表示情報から計算された、前記ユーザからの修正意図を含まないソリッドモデルを表示する、請求項１記載のコンピュータシステム。
【請求項３】
前記プロセッサが、視覚表示データを有するソリッドモデルデータファイルをソリッドモデリングアプリケーションにロードする、請求項１または２記載のコンピュータシステム。
【請求項４】
前記プロセッサが、前記修正されたソリッドモデルを計算して前記ソリッドモデルデータファイルを形成する、請求項３記載のコンピュータシステム。
【請求項５】
コンピュータシステムによって実行される、ソリッドモデルへの修正を選択する方法において、
前記コンピュータシステムは、メモリ、プロセッサ、ユーザ入力装置及びディスプレイ装置を含み、前記ソリッドモデルは、前記コンピュータシステムのメモリ内のソリッドモデルデータファイルに格納されており、
前記プロセッサが、前記ソリッドモデルを前記ディスプレイ装置上に表示し、
前記プロセッサが、ユーザからの修正意図を伝えるコンピュータ周辺機器からの入力データに基づいて、前記ソリッドモデル上の修正フィーチャを選択するステップと、
前記プロセッサが、前記修正フィーチャとともに含めるべき複数の付加的な選択フィーチャを前記ディスプレイ装置上に表示するステップであって、ここで、前記含めるべき複数の付加的な選択フィーチャは、前記複数の付加的な選択フィーチャと、前記修正フィーチャに対応する少なくとも１つの面との間の幾何学的条件または位相幾何学的な近さに基づいて示唆され、この示唆には、正接面、隣接面、およびフィーチャ面を含む表示されたオプションからユーザが選択することを含む、ステップと、
前記プロセッサが、前記含められた複数の付加的な選択フィーチャが前記ユーザからの修正意図に合致しているか否かのユーザによる判断が容易になるように、前記選択フィーチャを視覚的に強調表示するステップと、
前記修正フィーチャが前記ユーザからの修正意図に合致している場合には、前記プロセッサが、ソリッドモデルと視覚表示情報に修正をもたらす前記ユーザからの修正意図に従って前記ソリッドモデルを修正するステップと、
前記プロセッサが、前記修正された視覚表示情報を用いて、前記修正されたソリッドモデルを前記ユーザに表示するステップを有することを特徴とする、ソリッドモデルへの修正を選択する方法。
【請求項６】
前記プロセッサが、前記ソリッドモデルデータファイルから抽出した視覚表示情報から計算された、前記ユーザからの修正意図を含まないソリッドモデルを表示するステップをさらに有する、請求項５記載の方法。
【請求項７】
前記プロセッサが、視覚表示データを有するソリッドモデルデータファイルをソリッドモデリングアプリケーションにロードするステップをさらに有する、請求項５または６記載の方法。
【請求項８】
前記プロセッサが、前記修正されたソリッドモデルを計算してソリッドモデルデータファイルを形成するステップをさらに有する、請求項７記載の方法。
【請求項９】
コンピュータシステムのプロセッサに、下記ステップを実行させるためのコンピュータプログラムであって、
ここで、前記コンピュータシステムは、メモリ、プロセッサ、ユーザ入力装置及びディスプレイ装置を含み、及び、前記コンピュータプログラムは、少なくともロジック処理モジュール、表示処理モジュール及びメソッド処理モジュールを含み、
前記ロジック処理モジュールからの呼び出しに応答して、前記メソッド処理モジュールが、前記プロセッサに、
ソリッドモデルを前記ディスプレイ装置上に表示させるステップと、
ユーザからの修正意図を伝えるコンピュータ周辺機器からの入力データに基づいて、前記ソリッドモデル上の修正フィーチャを選択させるステップと、
前記修正フィーチャとともに含めるべき複数の付加的な選択フィーチャを計算させるステップであって、ここで、前記含めるべき複数の付加的な選択フィーチャは、前記複数の付加的な選択フィーチャと、前記修正フィーチャに対応する少なくとも１つの面との間の幾何学的条件または位相幾何学的な近さに基づいて示唆され、この示唆には、正接面、隣接面、およびフィーチャ面を含む表示されたオプションからユーザが選択することを含む、ステップと
を実行させ、
前記ロジック処理モジュールと通信する前記メソッド処理モジュールからの計算及び選択された情報の受け取りに応答して、前記表示処理モジュールが、前記プロセッサに、
前記含められた複数の付加的な選択フィーチャが前記ユーザからの修正意図に合致しているか否かのユーザによる判断が容易になるように、前記選択フィーチャを視覚的に強調表示させるステップを実行させ、
前記修正フィーチャが前記ユーザからの修正意図に合致している場合には、前記メソッド処理モジュールが、前記プロセッサに、
ソリッドモデルと視覚表示情報に修正をもたらす前記ユーザからの修正意図に従って前記ソリッドモデルを修正させるステップを実行させ、
前記表示処理モジュールが、前記プロセッサに、
前記修正されたソリッドモデルを前記修正処理モジュールからの前記修正された視覚表示情報を用いてユーザに表示させるステップを実行させる、ことを特徴とするコンピュータプログラム。
【請求項１０】
前記ロジック処理モジュールからの呼び出しに応答して、前記表示処理モジュールが、前記プロセッサに、ソリッドモデルデータファイルから抽出した視覚表示情報から計算された、前記ユーザからの修正意図を含まないソリッドモデルを表示させるステップを実行させる、請求項９記載のコンピュータプログラム。
【請求項１１】
前記コンピュータプログラムは、さらに、データファイル処理モジュールを有し、前記ロジック処理モジュールからの呼び出しに応答して、前記データファイル処理モジュールが、前記プロセッサに、修正されたソリッドモデルを計算させて、ソリッドモデルデータファイルを形成させるステップを実行させる、請求項１０記載のコンピュータプログラム。
【請求項１２】
前記ロジック処理モジュールからの呼び出しに応答して、前記データファイル処理モジュールが、前記プロセッサに、視覚表示データを有するソリッドモデルデータファイルをソリッドモデリングアプリケーションにロードさせるステップを実行させる、請求項１１記載のコンピュータプログラム。
【請求項１３】
ソリッドモデル表現への修正を選択するためのコンピュータシステムであって、
前記コンピュータシステムは、メモリ、プロセッサ、ユーザ入力装置及びディスプレイ装置を含み、
ここで、前記ソリッドモデルは、前記コンピュータシステムのメモリ内のソリッドモデルデータファイルに格納されており、
前記プロセッサが、
視覚表示データを有するソリッドモデルデータファイルをソリッドモデリングアプリケーションにロードし、
前記ソリッドモデルデータファイルから抽出した視覚表示情報から計算された、ユーザからの修正意図を含まないソリッドモデルを表示し、
前記ユーザからの修正意図を伝えるコンピュータ周辺機器からの入力データに基づいて、前記ソリッドモデル上の修正フィーチャを選択し、
前記修正フィーチャとともに含めるべき複数の付加的な選択フィーチャを前記ディスプレイ装置上に表示し、ここで、前記含めるべき複数の付加的な選択フィーチャは、前記複数の付加的な選択フィーチャと、前記修正フィーチャに対応する少なくとも１つの面との間の幾何学的条件または位相幾何学的な近さに基づいて示唆され、この示唆には、正接面、隣接面、およびフィーチャ面を含む表示されたオプションからユーザが選択することを含む、
前記含められた複数の付加的な選択フィーチャが前記ユーザからの修正意図に合致しているか否かのユーザによる判断が容易になるように、前記選択フィーチャを視覚的に強調表示し、
前記修正フィーチャが前記ユーザからの修正意図に合致している場合には、修正されたソリッドモデルと修正された視覚表示情報とをもたらす前記ユーザからの修正意図に従ってソリッドモデルを修正し、
前記修正されたソリッドモデルを計算して、ソリッドモデルデータファイルを形成し、
前記修正された視覚表示情報を用いて、前記修正されたソリッドモデルを前記ユーザに表示する、ことを特徴とする、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、２００８年４月１４日に出願された係属中の米国仮出願第６１／０４４６１２号の優先権を主張するものである。
【０００２】
技術分野
ここに説明する本発明のシステムは概してコンピュータ支援設計ソフトウェアアプリケーションに関する。より具体的には、本発明のシステムはソリッドモデルにおける選択肢の提案に関する。
【０００３】
背景技術
今日のコンピュータ支援設計（ＣＡＤ）アプリケーションと幾何モデリングシステムの世界では、パーツは一般に履歴に基づく方法と履歴を用いない方法のうちの一方の方法で設計される。履歴に基づくシステムは、一般に、１９８０年代半ばに現れたパラメトリックモデリングのパラダイムにより特徴づけられる。パラメトリックモデリングシステムでは、ものが互いにどのように関係しているかを反映するようにレシピ又は履歴ツリーが作成される。元々のアイテムが変更されると、時間的にこのアイテム以降に生成されるすべてのアイテムが更新される。このようにして、例えば２つの面が同一平面上に留まるかも知れないが、それは、これらの面が設計プロセス中にそのような関係にあるものとして捕捉され、その関係が更新プロセス中に単純に「リプレイ」されるからである。図１ａ〜１ｃには３次元ブロックの不等角投影図が示されている。図１ａを参照すると、コンピュータディスプレイ上で見ることのできる３次元（"３Ｄ"）のＣ字形ブロック１００が示されている。ユーザは底脚部１０５、上脚部１１０、又は底脚部１０５と上脚部１１０の両方を変更することによってこのＣ字形ブロック１０を修正しなければならない。履歴に基づくシステムでは、ユーザがどれだけ簡単にＣ字形ブロック１００を修正できるかは、このＣ字形ブロック１００がＣＡＤアプリケーションシステムで、例えばシーメンスＰＬＭソフトウェア社（Siemens Product Lifecycle Management Software Inc）のＮＸで、元々どのように設計されたのかに懸かっている。一般に、元々の設計者がパーツを作成及び／又は設計し、後で別の設計者がそのパーツを修正するが、この別の設計者は元の設計者をまったく知らないということがありうる。例えば元々の設計者が、すなわちＣ字形ブロック１００を最初に設計した人物が、底脚部１０５に関係する面と上脚部１１０に関係する面とを同一平面上に制約する設計意図を持っていたならば、図１ｃに示されている修正アクションは、３Ｄモデル設計の当業者には基本である公知のパラメトリックモデリング技法／履歴に基づくモデリング技法を用いて容易に遂行できる。つまり、２つの面が同一平面上に制約されていれば、一方の面を動かせば、他方の面も動く。一方で、例えばCoCreateやIronCAD、Kubotekといった会社が採用している履歴なしアプローチ又はボディに基づくアプローチでＣ字形ブロック１００を修正すると、パラメトリックモデリングパラダイムによって普及した履歴ツリーを維持することができない。履歴なしアプローチでは、変更は各アイテムごとにソリッドモデル上で明示的に為される。Ｃ字形ブロック１００の元々の設計者が底脚部１０５上の面と上脚部１１０上の面とを共面関係に保つことを意図していたならば、後の修正では、編集によって所望の結果が保証されるように、これらの面を手動で選択できなければならないが、これは元々の設計者の意図が不明又は確認できない場合には難しい。例えば、修正設計者は図１ｂ又は図１ｃに示されているいずれの変更も単純に一方の面を選択するか、共面関係にある他のすべての面を個別に選択することによって行うことができる。なお、この例では、共面関係にある他の面は少数であるが、複雑なアセンブリモデルでは数百となるこ��もある。また、いくつかのソフトウェアアプリケーションによれば、修正設計者は「複数の面を共平面とする」ことができ、事後的に編集時に設計意図を常時把握することができる。しかし、これは特に、モデルが非常に大規模になると煩わしくもある。後からの変更は後日、図１ｂに見られる修正を難しくする。それは特に、今の時点では設計意図が設計意図に反するモデルに盛り込まれているかも知れないことによる。
【０００４】
履歴に基づくアプローチの問題は、設計意図がモデル生成時に組み込まれ、固定されることである。対照的に、履歴なしシステムは後日の変更に関して融通がきくが、ものがどのように関係しているかについての情報はほとんど得ることができない。修正設計者が後の時点でこのような情報を手作業で得ようとした場合、履歴に基づくシステムと同様に、その情報が取り込まれ固定されることで、それ以降の融通性が制限されてしまう。
【０００５】
そういうわけで、幾何モデリングシステムでのジオメトリ選択技術には、ジオメトリの選択に先立ってオプションの設定が含まれている。つまり、設計者は前もって計画して、選択したいものの準備をしなければならない。前もって計画するということは予備的行動が推奨されるということであり、多くの場合、選択が目下の修正に沿わないときのエラーリカバリが推奨される。履歴なしシステムのコマンドでは、修正の実行に用いられる選択オプションはコマンドセッション間でもコマンドセッション中でも変化しがちである。例えば、設計者は面移動コマンドによってボス、リブ、及びボスとリブをつなぐ面をあるコマンドセッションの間に動かすかも知れない。また別のコマンドセッションでは、設計者は単独面を又は単純にスロットを動かすかも知れない。
【０００６】
図２には、事前計画のインタラクションが示されている。ここで、各矢印はそれぞれ異なるインタラクションの経路を表している。図２を参照すると、各ボックスはそのボックスで同定される状況に応じて生じる認知的又は物理的プロセスを表している。矢印と交差するボックスが多ければ多いほど、経路はより多くのプロセスを伴う。「矢印１」２００が最も簡単なインタラクションであり、選択オプションが正しく設定され、設計者が意図したものを選択したことを表している。「矢印２」２０５は「矢印１」２００と似ているが、リカバリを通過する。つまり、設計者が準備をせずに何気なく何かを選択して修正したこと、エラーから回復しなければならないということを意味している。「矢印３」２１０は、設計者が選択の前に選択オプションを解釈し、オプションが正しく設定されたと考えているが、それでもエラーからの回復が必要となる何かを意図せず選択してしまう場合を表している。「矢印４」２１５は最悪のケースを表しており、設計者が選択オプションを解釈して、オプションを変更する必要があると判断し、オプションを変更したが、それでもエラーからの回復が必要となる何かを意図せず選択してしまう場合に生じる。「矢印５」２２０は、設計者が選択オプションを解釈して、オプションを変更する必要があると判断し、オプションを変更した後、自分の意図したものを選択する場合に生じる。「矢印６」２２５は、設計者が選択オプションを解釈し、選択オプションが正しいと判断し、自分の意図したものを選択する場合に生じる。
【０００７】
この認知的・物理的プロセスはコマンドセッション中の各選択で生じるかも知れない。その場合、最悪のケースは各コマンド選択でエラーからの回復が必要となることであり、これは効率性の損失となる。エラーから回復する方法は多様であり、個々のオブジェクトのジオメトリを非選択にすることからすべてを非選択にして最初からやり直すことまでに多岐にわたる。しかし、いずれも設計者に無視できない時間的な不利益を課すとともに、エラーから回復しなければならない設計者に計り知れない敗北感を抱かせる。
【０００８】
発明者の認識では、選択の前に計画することの負の側面を軽減する、ソリッドモデルにおける能動選択のためのシステム及び方法が必要とされている。
【０００９】
発明の概要
この認識された需要と関連問題に対処するために、ソフトウェア命令を有するコンピュータ上で操作されるソリッドモデル上の修正フィーチャを選択するためのシステムが提案される。このシステムはコンピュータシステムを含んでおり、このコンピュータシステムには、メモリ、プロセッサ、ユーザ入力装置及びディスプレイ装置が含まれている。コンピュータ生成された幾何モデルはコンピュータシステム内のメモリに格納される。コンピュータシステムは、ユーザからの修正意図を伝えるコンピュータ周辺入力機器を用いて直接ソリッドモデル上で修正フィーチャを選択し、この修正フィーチャとともに含めるべき複数の付加的な選択フィーチャを提案し、含められた複数の付加的な選択フィーチャが修正意図に合致していることを視覚的な強調表示によって検証し、ソリッドモデルと視覚表示情報の修正をもたらす修正意図に従ってソリッドモデルを修正し、修正されたソリッドモデルを修正された視覚表示情報を用いてユーザに表示する。
【００１０】
本システムの他の特徴は、一部は明細書及び以下の図面において記載され、一部は本システムの実用により理解される。以下では、本システムを本願の一部を成す以下の図面を参照して説明する。承知のように、他の実施形態を利用してもよいし、本システムの範囲を逸脱せずに変更を加えてもよい。
【図面の簡単な説明】
【００１１】
【図１】１ａ〜１ｃは３次元ブロックの不等角投影図である。
【図２】事前計画のインタラクションを示す。ただし、各矢印は異なるインタラクション経路を表す。
【図３】仮想的な製品開発環境の見本を示す。
【図４】システムが実際に使用されるコンピュータ環境のブロック図を示す。
【図５】ソフトウェアアプリケーションとして実施されたソフトウェアプログラムコードの一般的概念を示す。
【図６】実施形態で使用される方法を概観したボックス図を示す。
【図７】実施形態で使用される方法を概観したボックス図を示す。
【図８】本願に開示されたシステムの使用から生じる能動選択のインタラクションを示す。
【図９】９ａ〜９ｄはソリッドモデル修正システムにおける能動選択の例を示す。
【図１０】ソリッドモデル修正システムの例を示す。
【００１２】
有利な実施形態の詳細な説明
１．序論
ソリッドモデルにおける幾何学的関係を修正するための方法及びシステムを説明する。以下の記述では、説明のために、システムを完全に理解するための多くの詳細が示される。しかし、当業者にはこれらの詳細がなくても本システムが実施可能であることは明らかである。その他の場合には、システムが不必要に分かりにくくなるのを避けるために、周知の構造やデバイスはブロック図で示される。
【００１３】
図３には、仮想的な製品開発環境の見本が示されている。今日使用されている仮想開発環境は、３００で概観的に示されているように、一般に顧客からの要求や製品を考案もしくは改良しようという内在的な欲求で始まる。製品は栓抜きのような簡単なものであってもよいし、潜水艦のような複雑なものであってもよい。さらに図３によれば、最初の設計者はコンピュータ支援設計（ＣＡＤ）アプリケーション３０５が採用している公知の方法に従って所望の製品をモデリングする。ＣＡＤアプリケーション３０５は汎用計算機上で実行される。この汎用計算機はその後アプリケーション実行時及びインタラクション時にコンピュータ支援設計ルーチンを実行するための専用計算環境となる。その詳細については以下で論じる。ＣＡＤアプリケーション３０５は好ましくはＳｏｌｉｄＥｄｇｅ又はＮＸである。これらは両方ともシーメンスＰＬＭソフトウェア社によりライセンス供与される。ＣＡＤユーザはＣＡＤアプリケーション３０５を良く知られたやり方で操作して、顧客からの要求又は内在的欲求から確認された元々の設計要件に類似適合するソリッドモデルを仮想的に表示させる。ソリッドモデルは一般にコンポーネントとアセンブリの集成体である。ここで、アセンブリはさらにサブアセンブリ及び／又はコンポーネントにさらに分解される。これらはすべて好ましくは後の再呼出しに備えてソリッドモデルデータファイル３２５内に格納される仮想表現を有している。
【００１４】
ソリッドモデルが元々の設計要件に合った適切な形態であることが明らかになったら、ＣＡＥユーザはシーメンスＰＬＭソフトウェア社のＮＸ  ＣＡＥやＦＥＭＡＰのようなコンピュータ支援エンジニアリング（ＣＡＥ）アプリケーション３１０を用いてソリッドモデルに部品耐障害性テストと他の様々なエンジニアリングテストを行うことが好ましい。耐障害性テストに首尾よく合格するにはソリッドモデルを修正しなければならないと、ＣＡＥユーザが判断した場合、ＣＡＤアプリケーション３０５で修正するためにソリッドモデルはＣＡＤユーザに戻される。ＣＡＤアプリケーション３０５及びＣＡＥアプリケーション３１０とそれぞれのユーザとの間でのこの反復は、ソリッドモデルが必要な設計要件とエンジニアリングテストに首尾よく合格するまで再帰的に行われる。
【００１５】
上記反復が首尾よく完了した後、最終的な設計形態のソリッドモデルに対して、シーメンスＰＬＭソフトウェア社のＮＸ  ＣＡＭやＣＡＭ  Ｅｘｐｒｅｓｓのようなコンピュータ支援製造（ＣＡＭ）アプリケーション３１５において物理的な製造のための設計がさらに行われる。ＣＡＭユーザは、ＣＡＭアプリケーション３１５を用いて、数値制御プログラム、鋳型、工作機械及び金型によって物的製品３３０がどのように製造されるかをモデリングする。ＣＡＭユーザは元々の設計要件を満たすために付加的な修正を行うことがあるが、その際、例えば放電加工（ＥＤＭ）を使用する場合には、ワイヤカットＥＤＭと型彫りＥＤＭのいずれを用いて物的製品３３０を製造するかによって異なる技術が要求される。部品を仮想的にフライス加工するために、ＣＡＭアプリケーション３１５はＥＤＭプロセスの軌道、好ましくは電極経路を定める。ＣＡＭユーザは、設計要件とエンジニアリング要件を満たすためには、例えば物的製品３３０を構成する材料を硬化させる冷却の後に、ソリッドモデルの寸法を僅かに修正する必要があると判断する場合もある。
【００１６】
製品の仮想的な設計、エンジニアリング及び製造が首尾よく行われた後、製造者はすべての製造規律をこの製品に関する製品エンジニアリングにリンクさせることができる。なお、上記の製品エンジニアリングには、プロセスのレイアウト及び設計、プロセスのシミュレーション／エンジニアリング、ならびに、シーメンスＰＬＭソフトウェア社のＴｅｃｈｎｏｍａｔｉｘのようなデジタル工場アプリケーションを用いた製品管理が含まれる。製造者が物的製品３３０を修正しなければならない場合もある。それは、ＣＡＭユーザが例えば旧式のＥＤＭシステムで製品を成型したために、製造者が５軸旋盤を用いて必要なブランクを作らなければならない場合や、製造者が物的製品３３０を構成する部品を形成するのに射出成型から圧縮成型にシフトした場合である。例えば、ソリッドモデルは物的製品３３０を製造するための最終要件に合うように修正されなければならない。
【００１７】
上で説明した仮想的な製品開発の全体を通して、製品設計は例えば顧客の要求からＣＡＤユーザ、ＣＡＥユーザ、ＣＡＤユーザへ、さらにＣＡＥユーザに戻って、ＣＡＭユーザ及び物的製品２３０の物理的に製造する製造者へと流れる。ソリッドモデルに対する編集のたびに、例えばＣＡＤユーザ、ＣＡＥユーザ、ＣＡＭユーザ及び製造者による必要な設計変更に適合するように幾何学的関係も修正される。さらに、ＣＡＤ／ＣＡＥ／ＣＡＭユーザの各々がソリッドモデルを修正するので、上で論じた変更が正しく反映されるようにソリッドモデルを規定するデータモデルも修正され、ソリッドモデルデータファイル３２５に適正に格納される。製造者はつぎに元々の設計仕様とその後のエンジニアリング修正とに従って物的製品３３０の製造に進む。仮想製品開発は以下で詳しく説明されるシステムにおいて行われる。そのシステムでは、ソリッドモデルにおける幾何学的関係を修正するためのシステムと方法は、種々のハードウェアシステム上のメモリに常駐する種々のソフトウェアアプリケーションで実行可能である。
【００１８】
２．コンピュータプログラム製品
今度はハードウェアシステムについて論じる。図４に、上記システムを実施するコンピュータシステムのブロック図が示されている。図３及び以下の説明は、本願システムの実施形態となりうる適切なハードウェアシステムと計算環境の簡潔で一般的な説明を与えることを目的としている。実施形態は公知の種々の計算環境のいずれにおいて実施してもよい。
【００１９】
図４を見ると、デスクトップコンピュータやラップトップコンピュータのようなコンピュータ４００の形態をとった計算デバイスを含むコンピュータシステムの例が示されている。なお、コンピュータ４００は関連する複数の周辺機器（図示せず）を含んでいる。コンピュータ４００は、中央処理ユニット（ＣＰＵ）４０５と、公知の技術に従って中央処理ユニット４０５とコンピュータ４００の複数のコンポーネントの間を接続し通信を可能にするバス４１０を含んでいる。ＣＰＵ４０５は好ましくはコンピュータプログラムを実行する電気回路であり、その動作は当該技術分野では周知である。なおここで、コンピュータプログラムは、コンピュータ４００によって実行されるコンピュータ実行可能な命令をエンコードしたもの、例えばプログラムモジュールを含んでいる。一般に、プログラムモジュールはルーチン、オブジェクト、コンポーネント、データ構造などを含み、特定のタスクを実行したり、特定のデータ型を実装する。好ましくは、プログラムモジュールはファイル処理モジュール４０６、データ表示モジュール４０７、ロジック処理モジュール４０８及びメソッド処理モジュール４０９を含む。ロジック処理モジュール４０８は、コンピュータ実行可能命令に従って動作するようファイル処理モジュール４０６、データ表示モジュール４０７及びメソッド処理モジュール４０９にリクエストを送る。同様に、ロジック処理モジュールは、コンピュータ実行可能命令に従って動作するようファイル処理モジュール４０６、データ表示モジュール４０７及びメソッド処理モジュール４０８からリクエストを受ける。また、バス４１０は種々のプログラムモジュールと複数のコンポーネントの間の通信も可能にする。バス４１０は、メモリバスもしくはメモリコントローラ、周辺バス、及びローカルバスを含む数種のバス構造のうちのいずれであってもよく、様々なバスアーキテクチャのいずれを使用していてもよい。コンピュータ４００はふつうユーザインタフェースアダプタ４１５を有しており、ユーザインタフェースアダプタ４１５が、バス４１０を介して中央処理ユニット４０５をキーボード４２０やマウス４２５のような１つ又は複数のインタフェースデバイス、及び／又はタッチスクリーン、デジタルペン入力パッドなどのような他の任意のユーザインタフェースデバイスに接続する。バス４１０はまたＬＣＤスクリーンやモニタのようなディスプレイ装置４３５をディスプレイアダプタ４４０を介して中央処理ユニット４０５に接続する。バス４１０はまた中央処理ユニット４０５をメモリ４４５に接続する。メモリ４４５はＲＯＭ、ＲＡＭ等を含んでいてよい。
【００２０】
コンピュータ４００はさらにドライブインタフェース４５０を含んでおり、ドライブインタフェース４５０は少なくとも１つのストレージデバイス４５５及び／又は少なくとも１つの光学ドライブ４６０をバスに接続する。ストレージデバイス４５５はディスクの読み出し及び書込みのためにハードディスクドライブ（図示せず）を、リムーバブル磁気ディスクの読み出し及び書込みのためにリムーバブル磁気ディスクドライブを含んでいてよい。同様に、光学ドライブ４６０は、例えばＣＤ−ＲＯＭや他の光学メディアの読み出し及び書き込みのために、光学ディスクドライブ（図示せず）を含んでいてよい。上記ドライブ及び関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及び、コンピュータ４００に対する他のデータを不揮発に格納する。なお、この他のデータにはファイル処理モジュール４０６によりアクセスできる。その際、ファイル処理モジュール４０６は、メソッド処理モジュール４０９により与えられた命令で記述されたメソッドにおいてロジック処理モジュール４０８が受け取った命令に従って前記データにアクセスする。
【００２１】
コンピュータ４００は通信チャネル４６５を介して他のコンピュータ又はコンピュータのネットワークと通信する。コンピュータ４００はローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）内でこのような他のコンピュータと対等な関係にあってもよいし、他のコンピュータとのクライアント／サーバ関係におけるクライアントであってもよい。さらに、分散型計算環境における実施形態も可能である。この場合、タスク命令は、メソッド処理モジュール４０９により与えられる命令で記述されたメソッドにおいてロジック処理モジュール４０８によって与えられ、通信ネットワークを通してリンクされた遠隔処理装置によって実行される。分散型計算環境では、プログラムモジュールはローカルメモリストレージデバイスとリモートメモリストレージデバイスの両方に配置してよい。これらの構成ならびに適切な通信ハードウェアはすべて、当業者には公知である。
【００２２】
つぎに、プログラムモジュールをより詳細に見る。図５ａ〜５ｂには、ソフトウェアアプリケーションとして具体化されたソフトウェアプログラミングコードの一般的概念が示されている。以下では、図５ａを参照して、ソフトウェアアプリケーション５００が上で論じたようなアクセス可能なプログラムモジュールを含んでいる実施形態において、プログラムモジュールをより詳細に説明する。ソフトウェアアプリケーション５００は、上で述べたＣＡＤアプリケーション２０５、ＣＡＥアプリケーション２１０又はＣＡＭアプリケーション２１５のようなソリッドモデリングアプリケーションの一形態であってよい。さらに、ソフトウェアアプリケーション５００はサードパーティベンダー製で、アクセスと利用のために特別のＡＰＩ呼び出し機能を備えているものと想定される。続いて、ユーザとソフトウェアプログラミング５００とのインタラクションにしたがって、ある特定の修正イベントがバリエーショナルモデリングツールキット５０５とのインタラクションをトリガする。これについては以下でより詳しく説明する。ソフトウェアアプリケーション５００とバリエーショナルモデリングツールキット５０５は、共に又は個別に、メソッド処理モジュール４０９により与えられた命令で記述されたメソッドにおいてロジック処理モジュール４０８を用いて、下位の幾何モデリングカーネルを呼び出し、ユーザによって選択されソフトウェアアプリケーション５００によって実行されるコマンドに従ってソリッドモデルのある特定の修正イベントを行わせる。以上のことはソリッドモデリングの分野では一般に知られていることではあるが、以下においても詳しく説明する。下位の幾何モデリングカーネルは一般に、シーメンスＰＬＭソフトウェア社によってライセンスされたＰａｒａｓｏｌｉｄのような少なくとも１つの３次元（３Ｄ）幾何モデラ５１０からなるコレクションと、シーメンスＰＬＭソフトウェア社が提供する３Ｄ ＤＣＭ（又は"ＤＣＭ"）製品のような幾何学ソフトウェアコンポーネントライブラリのコレクションである。
【００２３】
言い換えれば、図５ｂに示されているように、バリエーショナルモデリングツールキット５０５はソフトウェアアプリケーション５００から送られてきたバリエーショナル編集コマンドに従って動作する。さらに、ソフトウェアアプリケーション５００はノンバリエーショナルモデリング呼び出しを３Ｄ幾何モデラ５１０に送り、３Ｄ幾何モデラ５１０は幾何モデラの分野で通常理解されるように幾何学ソフトウェアコンポーネントライブラリのコレクションを利用する。バリエーショナルモデリングツールキット５０５に関しては、以下でより詳しく説明されるが、探索、編集、求解及び適用を含むバリエーショナル編集に関係したいくつかの操作が発生する。ソリッドモデリングの分野で一般に理解されているように、上記の幾何学ソフトウェアコンポーネントライブラリのコレクションは、例えば、幾何拘束の解決、バリエーショナル設計、パラメトリック設計、運動シミュレーション、衝突検出、クリアランス計算、トポロジーロケーション、トポロジー運動解法及び隠線消去などのモデリング機能を提供する。３Ｄ幾何モデラ５１０とコンポーネントライブラリ５１５が別々のコンポーネントではなく、同じアプリケーションのコンポーネント又はコンポーネントの組合せであるということも、本発明の範囲内にある。コンピュータプログラム製品の説明を終えて、今度はシステムに関してより詳しく説明する。
【００２４】
３．能動選択システム
能動選択システムの考察に移る。図６に、実施形態で使用される方法の全体像のボックス図が示されている。図６の実施形態では、メソッド処理モジュール４０９により与えられた命令で記述されたメソッドを用いるロジック処理モジュール４０８が開示されている。ここで、記述されたメソッドとは、設計のためのソフトウェア命令を備えたコンピュータ内で操作されるソリッドモデル上の修正フィーチャを選択するメソッドであり、全体として６００で示されている。以下のステップはこのシステムでの実施形態の概要を示すために述べるものであり、詳細は後で説明される。システムはユーザからの修正意図を伝えるコンピュータ周辺入力機器を用いて修正フィーチャを直接ソリッドモデル上で選択する（ステップ６００）。システムは修正フィーチャとともに含める複数の付加的な選択フィーチャを提案する（ステップ６０５）。システムは含められた複数の付加的な選択フィーチャが修正意図に適合するかどうかを強調表示によって検証する（ステップ６１０）。システムは修正意図に従ってソリッドモデルを修正し、修正されたソリッドモデルと修正された視覚表示情報を得る（ステップ６１５）。システムは修正された視覚表示情報を用いて修正されたソリッドモデルをユーザに表示する（ステップ６２０）。
【００２５】
４．能動選択メソッド
次に、能動選択システムをより詳細に説明する。図７は実施形態で使用される方法の全体像のボックス図である。図７を参照すると、ジェスチャ解釈（ＧＩ）モジュール７００が好ましくはマウス４２５から通知とメッセージを受け取り、７０５においてマウスイベントの際に何が起こるかを解釈する。なお、マウスイベントには、修正トポロジーの選択が含まれる。ジェスチャ解釈モジュール７００は通知を受け取り、７１０において選択されたオブジェクトの強調表示を指令する。７１０における選択されたオブジェクトの強調表示は能動選択モジュール７１５に向けてアクションを指令する。能動選択モジュール７１５では、運動感知ランチャー７２０が能動選択とのインタラクションのために生成される。運動感知ランチャー７２０の詳細については以下で説明する。運動感知ランチャーは以下のサンプル擬似コードを用いて生成される。
Handle Create_MSL_interface (device_id, mouse_position, msl_callback, callback_data)
{
if MSL_managerがまだ生成されていない
MSL_managerを生成
MSL_managerに下記を依頼する：
ＭＳＬインタフェースを生成し、フェードインで表示
set MSL_displau_flag = true
MSL_managerのハンドルをＧＩクライアントに返す
}
【００２６】
ＭＳＬインタフェースがアクティブになった後は、ジェスチャ解釈モジュール７００が運動感知ランチャー７２０にグラフィックス（ディスプレイ）ウィンドウ上の現在のマウス位置を連続的に知らせるので、マネージャはマウスを追跡し、ＭＳＬインタフェースを消す必要があるか否かを判定することができる。またマネージャはマウスがインタフェース自体の上にあるか否かも追跡しなければならないので、次のサンプル擬似コードに従ってショートカットメニューコールバックを発行する。
Boolean Track_MSL_interface (MSL_manager, mouse_position)
{
set MSL_dismiss_flag = FALSE
if the MSL_manager == NULL
return MSL_dismiss_flag
MSL_managerに依頼する：
if mouse_positionとＭＳＬインタフェースの中心との間の距離＞決められた半径閾値
call Dismiss_MSL_interface
set MSL_dismiss_flag = TRUE
if マウスがＭＳＬインタフェース上にある
call Dismiss_MSL_interface
ショートカットメニューコールバックを発行
set MSL_dismiss_flag = TRUE
return MSL_dismiss_flag
}
【００２７】
７２２において、マウス４２５がもはや修正トポロジー上にない、つまり、設計者が修正オブジェクトから離れることに決めた場合には、７２５において運動感知ランチャー７２０が破棄されるか、７３０においてコールバックイベントが生じる。コールバックイベントが生じた場合、ジェスチャ解釈モジュール７００は７３５において制御を受け取り、選択意図ショートカットメニューを表示する。あるいは、マウスイベント７０５が、以下のサンプル擬似コードに従って、７４０において選択意図ショートカットメニューの破棄を指示するようにしてもよい。
Void Dismiss_MSL_nterface (MSL_manager)
{
if MSL_manager == NULL
return
MSL_managerに依頼する：
インタフェースをフェードアウトさせる
インタフェースを破壊し、破棄する
set MSL_display_flag = FALSE
return
}
【００２８】
選択意図ショートカットメニューは、ジェスチャ解釈モジュールによって立ち上げられるマウス駆動式のポップアップとすることができる。ジェスチャ解釈モジュールクライアントは好ましくは、７２０において運動感知ランチャを立ち上げるために、ジェスチャ解釈モジュールへのリクエストの一部としてトポロジー構造をジェスチャ解釈モジュールに渡す。あるいは、マイクロソフトのミニバーの挙動を採用してもよい。つまり、メニューの位置を決めるときにはフェードイン、マウスを閾領域から離れさせるときにはフェードアウトにする。したがって、運動感知ランチャ及び関連するマネージャも任意のツール及び／又はメニューを立ち上げるのに使用されると考えられる。サンプル擬似コード：
boolean Launch_MSL_tool (MSL_manager, device_id, menu_data, mouse_position)
{
set menu_create_flag = FALSE
if MSL_manager == NULL
return menu_create_flag
if MSL_display_flag = TRUE
call Dismiss_MSL_interface
MSL_managerに下記を依頼する：
クライアントメニューを生成
メニューをマウス位置にフェードインで表示
set menu_pointer = menu
set menu_create_flag = TRUE
return menu_create_flag
}
【００２９】
クライアントツールが位置決めされたら、ジェスチャ解釈モジュールは好ましくはＭＳＬマネージャに現在のマウス位置を知らせる。したがって、ジェスチャ解釈モジュールは、以下のサンプル擬似コードに従って、マウスが閾領域外に移動したかどうかを追跡し、ツールを破棄するべきかを決定することができる。
Boolean Track_MSL_tool (MSL_manager, shortcut_menu, mouse_position)
{
menu_dismiss_flag = FALSE
if the MSL_manager == NULL
return menu_dismiss_flag
ask MSL_manager == NULL
return menu_dismiss_flag
MSL_managerに依頼する：
if menu_pointer != NULL
if マウスがメニューの決められた長方形領域外に移動する
call Dismiss_MSL_tool
set menu_dismiss_flag == TRUE
if マウスがメニュー上にあり、アイテムが選択される
コールバックを発行して規則を適用
call Dismiss_MSL_tool
set menu_dismiss_flag = TRUE
return menu_dismiss_flag
}
【００３０】
ＭＳＬツールは、メニュー上のアイテムが選択されたか、マウスが所定の閾領域外に出たか、非マウスイベントがクローズ動作をトリガした場合に破棄される。
Void Dismiss_MSL_tool (MSL.manager)
{
if MSL.manager == NULL
return
MSL.managerに依頼する：
メニューをフェードアウトさせる
メニューを破壊し、破棄する
return
}
【００３１】
図８には、開示されたシステムの使用により得られる事前計画インタラクションが示されている。図８から明らかなように、インタラクション経路の数は８００で示されているように４つに減っているが、最もペナルティを負った２つのインタラクション経路が除去されていることに注意しなければならない。好ましくは、図示されているように、インタラクション経路内で、オブジェクトが選択される前からオブジェクトが選択された後へとオプションを変化させる決定処理が行われる。ＧＯＭＳ（ゴール、オペレーション、メソッド、選択）分析は、以下のテーブルに示すように、単純にインタラクション経路を減らすだけで効率が改善されることを示している。
【００３２】
【表１】
0005840491.tif 000002
【００３３】
この分析のために、マウスポインタは平均して１０ｃｍスクリーン距離でシーンからインタフェースへ移動し、また戻る。平均して１０ｃｍスクリーン距離という値は実際の使用では変化するが、この分析では一定に保った。さらに、動かすべき面のサイズは２ｃｍ2としたが、修正面を選択するためにビューを回転、ズーム等する必要はなかった。また、上のテーブルの結果から分かるように、平均的な設計者は第１のシナリオを実行するのに５．２８８秒かからなかったが、この５．２８８秒は付属する人間行動を除いたタスク自体に必要とされる機械的及び心理的な時間を表している。これらの数字からリカバリには高いコストがかかることが容易に見て取れる。「現在、ありそう」シナリオにおける準備は比較的コスト高であり、タスクの６０％を占める。好ましくは、示唆インタフェースが「準備を減らし」、「リカバリの必要性を大幅に低減させる」。
【００３４】
５．能動選択の図解
図９ａ〜９ｄには、ソリッドモデル修正システムにおける能動選択の例が図解されている。図９ａでは、設計者がマウスポインタ９０５を使用してボスフィーチャ９０２上で修正面９００を選択し、その結果、修正面９００が強調表示される。設計者は、選択前に、選択意図が図示のように単独面となることを決定することができる。あるいは、マウスポインタ９０５が所定の時間、例えば２秒間、修正面９００上に置かれたら、又は修正面９００上に置かれた直後に、システムが能動選択のための選択肢のドロップダウンメニューを提供するようにしてもよい。図９ｂによれば、アクティブツールバー９１０が好ましくはマウスポインタ９０５からディスプレイスクリーン距離にして２ｃｍ以内に表示される。ここで、アクティブツールバー９１０はモードレスかつパッシブであり、選択は最初にアクティブツールバー９１０を破棄しなくても続けることができる。設計者の意図に基づいて、単独面９１５は選択意図を充たすように自動的に強調表示される。図９ｃによれば、設計者は別の面を選択してそれを修正に取り入れることを意図することもできる。そうすることによって、アクティブツールバーは能動選択ウィンドウ９２０に代替となる他の提案を提示する。能動選択ウィンドウ９２０は好ましくは幾何学的条件や位相的な近さ、例えば正接面、隣接面及びフィーチャ面を表示する。図９ｄを参照すると、設計者は「正接面」を選択し、その結果、正接面９２５が強調表示され、選択されている。設計者はボスフィーチャ９０２を図示のように面ごとに選択することもできるし、「ボス面」を表示している能動選択ウィンドウ９２０を用いてボスフィーチャ９０２全体を選択することもできる。
【００３５】
図１０には、ソリッドモデル修正システムの例が示されている。ソフトウェアアプリケーション５００を使用するユーザは、ソフトウェアアプリケーション５００がストレージデバイス４５５にアクセスするために必要なコマンドを実行する。ストレージデバイス４５５は好ましくはソリッドモデルデータファイル５２５に格納されたソリッドモデルの視覚表現に関係するデータを有するハードディスクドライブ１０００である。ソリッドモデルデータファイル５２５は好ましくはソフトウェアアプリケーション５００、バリエーショナルモデリングツールキット５０５、３Ｄ幾何モデラ５１０及びコンポーネントライブラリ５１５によってアクセス可能である。さらに図１０によれば、ソフトウェアアプリケーション５００は、好ましくはデータファイル１０１０として構造化されたソリッドモデルデータファイル５２５にアクセスするソリッドモデリングアプリケーション１００５によって特徴付けられる。データファイル１０１０は好ましくは３Ｄ幾何モデラ５１０のモデラ転送ファイルタイプを表すstand.x_t形式で、バリエーショナルモデリングツールキット５０５のバリエーショナルモデリングツールキット情報ファイルタイプを表すstand.vtk_data形式でハードディスクドライブ１０００に格納されている。ただし、stand*はファイル名の総称部を表している。ソリッドモデリングアプリケーション１００５は、ソリッドモデルの操作に十分な情報を得るために使用される独自に認定されたフィルタイプ拡張子、例えばＡＰＰを有している。続いて、ソリッドモデリングアプリケーション１００５は３Ｄ幾何モデラによってアクセスされるべき３Ｄ幾何モデラセッション本体にstand.x_tをロードする。stand.vtk_dataファイルが３Ｄ幾何モデラセッション本体にロードされ、付加される。ソリッドモデリングアプリケーション１００５はソリッドモデルに関するアプリケーションデータをロードし、独自のファイルタイプに従って、例えばＰＲＴに従って、データファイル１０１０にアクセスする。後で述べるように、いったんインタラクションが生成されると、バリエーショナルモデリングツールキット５０５はバリエーショナルモデリングツールキットＡＰＩ１０１５を介して修正計算を処理する。これについては以下でより詳しく説明する。ソリッドモデル修正に続いて、修正されたソリッドモデルをハードディスクドライブ１０００に保存するために、ブロック１０２０が示すように、バリエーショナルモデリングツールキット５０５に関係するデータがソリッドモデルから取り除かれ、vtk_dataデータ構造内に配置される。そして、vtk_dataデータ構造はstand.vtk_dataファイルに保存される。取り除かれたソリッドボディもアプリケーションデータと同様にハードディスクドライブ１０００に保存される。
【００３６】
６．結び
実施形態はデジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェアもしくはこれらの組合せで実現しうる。実施形態の装置は、プログラマブルプロセッサによって実行される、機械可読ストレージデバイスとして有体的に実現されたコンピュータプログラム製品として実現することができ、実施形態の方法ステップは、入力データを操作し出力を生成することによって実施形態の機能を実現する命令プログラムを実行するプログラマブルプロセッサによって実行することができる。
【００３７】
実施形態は有利には少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能な１つ又は複数のコンピュータプログラムによって実現することができる。なお、この有利な実施形態において、少なくとも１つのプログラマブルプロセッサは、データと命令の授受のために、データストレージシステム、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスと接続されている。アプリケーションプログラムは手続き指向もしくはオブジェクト指向の高水準プログラミング言語で、又は必要ならば、アセンブリ言語もしくはマシン語で実現することができる。いずれにせよ、言語はコンパイラ言語でもインタプリタ言語でもよい。
【００３８】
一般的に、プロセッサは読出し専用メモリ及び／又はランダムアクセスメモリから命令とデータを受け取る。コンピュータプログラム命令とデータを有体的に実現するのに適したストレージデバイスには、非常に多くの形態の不揮発性メモリ、例えば、ＥＰＲＯＭやＥＥＰＲＯＭ、フラッシュメモリデバイスのような半導体メモリデバイス、内部ハードディスクやリムーバブルディスクのような磁気ディスク、光磁気ディスク、及びＣＤ−ＲＯＭディスクが含まれる。以上のいずれも、特別に設計されたＡＳＩＣ（特定用途向け集積回路）で補足してもよいし、これらＡＳＩＣに組み込んでもよい。
【００３９】
以上に、複数の実施形態を説明した。実施形態の趣旨と範囲を逸脱することなく様々な変更を行いうることは明らかであろう。開示された能動選択システムは、フィーチャに対してと同様に、共面性、共軸性などの条件に対しても機能することが見込まれる。それゆえ、上記以外の実施形態も特許請求の範囲の範囲内に含まれる。
【図１ａ−１ｃ】
0005840491.tif 000003
【図２】
0005840491.tif 000004
【図３】
0005840491.tif 000005
【図４】
0005840491.tif 000006
【図５−１】
0005840491.tif 000007
【図５−２】
0005840491.tif 000008
【図６】
0005840491.tif 000009
【図７】
0005840491.tif 000010
【図８】
0005840491.tif 000011
【図９】
0005840491.tif 000012
【図１０】
0005840491.tif 000013