(57)【要約】【課題】  履歴ベースの設計システムに基づいて、部品、または部品のアセンブリを設計する宣言的なシステムを提供する。【解決手段】  このシステム（４０）は、プリミティブおよび演算によるストレージフォーマットを有する。モデリングされたオブジェクトが、演算およびプリミティブの順序づけられたシーケンスによって、履歴ベースの設計システムにおいて定義される。この宣言的なシステムは、いくつかの機能フィーチャを有する。こうした機能は、エンドユーザによって選択され（４８）インスタンス化される。インスタンス化された機能フィーチャは、コントリビューション（５０）を提供する。各コントリビューションは、履歴ベースの設計システムの、演算およびプリミティブの順序づけられたシーケンスである。コントリビューション（５０）は、シード構造（５２）によって受け取られる。エディタ（５６）は、シード構造を文法に従って編集する。【選択図】  図５
2005044365.tif 000002
【特許請求の範囲】
【請求項１】
部品、または部品のアセンブリを設計するシステムであって、
（ａ）プリミティブおよび演算によるストレージフォーマットを有する履歴ベースの設計システムであって、前記部品または部品のアセンブリは、前記履歴ベースの設計システムにおいて、演算およびプリミティブの順序づけられたシーケンスによって定義される履歴ベースの設計システムと、
（ｂ）少なくとも２つの機能フィーチャであって、それぞれの機能フィーチャは１組の仕様を提供することによりエンドユーザによってインスタンス化されるように適合され、該インスタンス化された機能フィーチャは、少なくとも１つのコントリビューションを提供し、該コントリビューションは、前記履歴ベースの設計システムにおける演算およびプリミティブの順序づけられたシーケンスである、少なくとも２つの機能フィーチャと、
（ｃ）文脈自由文法を用いて定義されるシード構造であって、該シード構造は、前記インスタンス化された機能フィーチャから前記コントリビューションを受け取り、該受け取ったコントリビューションの演算およびプリミティブを順序づけ、該演算およびプリミティブの順序づけられたシーケンスを前記履歴ベースのシステムに提供するように適合されたシード構造と、
（ｄ）前記文法により前記シード構造を編集するエディタと、
を有することを特徴とするシステム。
【請求項２】
前記演算は、可換演算および非可換演算を含み、前記シード構造は、前記コントリビューションを受け取るように適合された入力を有し、前記シード構造は、各入力において受け取られた前記コントリビューションに対して前記可換演算を適用し、前記コントリビューションに対して適用された前記可換演算の結果に、前記可換演算または前記非可換演算を適用するように適合される、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記シード構造は、前記文脈自由文法において、非循環指向グラフとして表される、ことを特徴とする請求項１または２に記載のシステム。
【請求項４】
前記シード構造はバイナリツリーである、ことを特徴とする請求項３に記載のシステム。
【請求項５】
前記シード構造は非バイナリツリーである、ことを特徴とする請求項３に記載のシステム。
【請求項６】
前記文脈自由文法の終端アルファベットは、少なくとも１つのソリッド、ユニオン、インターセクションおよびサブトラクションを含む、ことを特徴とする請求項１ないし５のいずれかに記載のシステム。
【請求項７】
前記終端アルファベットは並置をさらに含む、ことを特徴とする請求項６に記載のシステム。
【請求項８】
前記文脈自由文法の前記終端アルファベットは、少なくとも１つの曲線、少なくとも１つの面、および再限定を含む、ことを特徴とする請求項１ないし５のいずれかに記載のシステム。
【請求項９】
部品、または部品のアセンブリを設計するための履歴フリーシステムを提供する方法であって、
（ａ）プリミティブおよび演算によるストレージフォーマットを有する履歴ベースの設計システムを提供するステップであって、前記部品または部品のアセンブリは、前記履歴ベースの設計システムにおいて、演算およびプリミティブの順序づけられたシーケンスによって定義されるステップと、
（ｂ）少なくとも２つの機能フィーチャを提供するステップであって、それぞれの機能フィーチャは１組の仕様を提供することによりエンドユーザによってインスタンス化されるように適合され、該インスタンス化された機能フィーチャは、少なくとも１つのコントリビューションを提供し、該コントリビューションは、前記履歴ベースの設計システムにおける演算およびプリミティブの順序づけられたシーケンスであるステップと、
（ｃ）文脈自由文法を用いてシード構造を定義するステップであって、該シード構造は、前記インスタンス化された機能フィーチャから前記コントリビューションを受け取り、該受け取ったコントリビューションの演算およびプリミティブを順序づけ、該演算およびプリミティブの順序づけられたシーケンスを前記履歴ベースのシステムに提供するように適合されたステップと、
を有することを特徴とする方法。
【請求項１０】
前記演算は、可換演算および非可換演算を含み、前記シード構造を定義するステップは、前記コントリビューションを受け取るように適合された入力を有し、前記シード構造は、各入力において受け取られた前記コントリビューションに対して前記可換演算を適用し、前記コントリビューションに対して適用された前記可換演算の結果に、前記可換演算または前記非可換演算を適用するように適合される、ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記文脈自由文法を用いてシード構造を定義するステップにおいて、前記シード構造は、非循環指向グラフとして表される、ことを特徴とする請求項９または１０に記載の方法。
【請求項１２】
前記文脈自由文法を用いてシード構造を定義するステップにおいて、前記シード構造はバイナリツリーである、ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記文脈自由文法を用いてシード構造を定義するステップにおいて、前記シード構造は非バイナリツリーである、ことを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、部品設計プログラムおよびシステムに関する。
【背景技術】
【０００２】
いくつかのシステムおよびプログラム、たとえば出願人によってＣＡＴＩＡという商標で提供されているものが、部品、または部品のアセンブリの設計の市場で販売されている。こうしたいわゆるコンピュータ支援設計（ＣＡＤ）システムは、ユーザが、部品、または部品のアセンブリの複合３次元（３Ｄ）モデルを組み立て、処理することを可能にする。
【０００３】
異なるいくつかのモデリング技法を、アセンブリのモデルを作成するのに用いることができる。こうした技法は、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングを含む。ソリッドモデリング技法は、トポロジカルな３Ｄモデルを実現し、この３Ｄモデルは、たとえば、相互に連結されたエッジおよび面の集合体である。幾何学的には、３Ｄソリッドモデルとは、閉じられた面(closed skin)を定義するトリム面の集合体である。トリム面は、エッジによって境界が定められるトポロジカルな面に対応する。閉じられた面は、部品の材料で満たされた３Ｄ空間の、境界づけられた領域を定義する。一方、ワイヤフレームモデリング技法は、モデルを単純な３Ｄラインの集合体として表すのに用いることができ、サーフェスモデリングは、モデルを外面の集合体として表すのに用いることができる。ＣＡＤシステムは、こうしたモデリング技法、および他のモデリング技法、たとえばパラメトリックモデリング技法を組み合わせることができる。
【０００４】
パラメトリックモデリング技法は、モデルの異なるフィーチャおよびコンポーネント用の様々なパラメータを定義するのに、また、そうしたフィーチャとコンポーネントの間の関係を、様々なパラメータの間の関係に基づいて定義するのに用いることができる。ソリッドモデリングおよびパラメトリックモデリングは、パラメトリックソリッドモデリングをサポートするＣＡＤシステムにおいて、組み合わせることができる。
【０００５】
設計技師は、３Ｄ  ＣＡＤシステムの一般的なユーザである。設計技師は、３Ｄモデルの機能的、物理的および外見的な面を設計し、３Ｄモデリング技法に熟練している。設計技師は、部品を作成し、部品を１つまたは複数のサブアセンブリに組み立てることができる。部品だけでなく、サブアセンブリも、他のサブアセンブリからなることがあり得る。部品およびサブアセンブリを使って、設計技師はアセンブリを設計する。これ以降、部品およびサブアセンブリは、まとめて「コンポーネント」と呼ばれる。
【０００６】
部品またはコンポーネントは、様々な幾何学的ビルディングブロックを使って、一般にＣＡＤシステムにおいて提供されるツールを使って構成される。設計技師が、部品を構成しながらフィーチャを作成する順序は、フィーチャベースのＣＡＤにおいて、その部品の物理構造に影響を与える。こうしたシステムはしたがって、履歴ベースである。たとえば、最初にブロックを円筒形でカットし、次いでカットを行った円筒形によって残された隙間の内部に伸びる突起を追加することによって構成された部品は、ホール内部の突起の材料をもつホールを生じる。円筒形によるカットの前に突起が追加されるように動作の順序が逆にされると、カット動作は、元のブロックの材料をカットするだけでなく、後から加えられた突起の材料もカットすることになり、内部に材料をもたないホールを生じる。このことは、図１から図３に例示され、こうした図は、従来技術のＣＡＤシステムの画面に表示されるウィンドウを示す。図１は、構成中の部品の３通りのビューを含むウィンドウ２を示す。上面図４、正面図６、および回転図８は、部品が２つのブロックフィーチャ（すなわち、上側ブロック１２および下側ブロック１４）によって部分が定義されることを明らかにしている。さらに、上面図４および正面図６は、円形の突出プロファイル(extruded profile)１０を簡単に示している。突出プロファイル１０の目的は、部品に円筒形のカットフィーチャ(cut feature)を作成することである。図２は、突出プロファイル１０がカットフィーチャを構成するのに使われた後のウィンドウ２を示す。カット１６は、突出プロファイル１０内にあった材料を上側ブロック１２および下側ブロック１４から取り去ることによって作成された。カットフィーチャ１６を含める前に、部品定義に上側ブロック１２および下側ブロック１４が含まれていた（すなわち、存在していた）場合、カット１６は、履歴ベースのＣＡＤシステムにおいて、図２に示されるように現れる。図３は、カットフィーチャ１８が上側ブロック１２から材料を取り去らなかった場合の部品を含むウィンドウ２を示す。下側ブロック１４が第１に部品定義に含められ、カットフィーチャ１８が第２に部品定義に含められ、第３に上側ブロックが部品定義に含められた場合、カット１８は、履歴ベースのＣＡＤシステムにおいて、図３に示されるように現れ得る。図１〜図３の例は、コンポーネントを定義するためにフィーチャが入力される順序が、コンポーネントの出力形状に影響することを示す。機械的な部品を参照しているこの説明は、設計システムにおける他のタイプの部品またはコンポーネント、たとえば型取りによる部品、回路の電気的フィーチャ、またはより一般的には、そのアセンブリが部品またはコンポーネントを形成するどのタイプのフィーチャにも当てはまる。
【０００７】
たとえば、特許文献１は、このような履歴ベースのＣＡＤシステムにおけるフィーチャの順序の問題に対する解決法を提供する。この解決法は、フィーチャ作成順序およびフィーチャ再生順序を別個にするという原理に基づく。フィーチャ作成は、ユーザがコンポーネントにフィーチャを追加する順序を参照する。フィーチャ再生順序は、幾何学的なフィーチャ動作が基底の幾何学モデルに適用される順序を参照する。このことは、所与のフィーチャがそれに対して影響を与える他のフィーチャを表すフィーチャ有効範囲に、その所与のフィーチャを関連づけることによって遂行される。フィーチャ有効範囲は、明示的でよく、その場合、ＣＡＤシステムのユーザは、所与のフィーチャがそれに対して作用する他のフィーチャの一覧を明示的に構築する。フィーチャ有効範囲は、暗黙でもよく、その場合、規則体系に基づいて、たとえばフィーチャが導入される順序、近接計算、またはフィーチャの属性に依拠して、システムによって自動的に定義される。フィーチャ有効範囲を明示的に定義することは、ユーザにさらに負担を与える。フィーチャ有効範囲の暗黙の定義は、予めプログラミングされた所与の数の規則に限定される。特許文献１はさらに、フィーチャ有効範囲に従ってフィーチャを動的にグループ化し順序づけて、フィーチャチェーンを構築することを論じている。フィーチャチェーンは、３つのボリュームを保持する。第１のボリュームは、材料を追加するすべてのフィーチャを組み合わせる正のボリュームである。第２のボリュームは、材料を取り除くすべてのフィーチャを組み合わせる負のボリュームである。第３のボリュームは、正のボリュームおよび負のボリュームを組み合わせる。フィーチャチェーンは、フィーチャツリーによって作成され表される。こうしたツリーは、フィーチャ有効範囲を考慮に入れて作成される。システムはしたがって、フィーチャツリーを構築するために、フィーチャ有効範囲に依存する。より一般的には、この特許において提案されている解決法は、時間的な複雑さ、すなわちフィーチャが定義される順序を有効範囲に変えることと等価である。しかし、有効範囲の定義は、フィーチャに適正な順序を定義することと同程度に複雑な場合がある。
【０００８】
特許文献２は、水平構成によるＣＡＤ−ＣＡＭモデリングシステムを論じている。この特許は、データ面を定義すること、およびデータ面に新しいフィーチャをリンクすることを提案している。したがって、フィーチャは、それぞれ独立して修正可能であるとされている。この解決法は、ユーザが、データ面を定義し、新しい各フィーチャごとに、どのデータ面にそのフィーチャが付与されるべきかを決定することを必要とする。この解決法は、いくつかのフィーチャを他のフィーチャとはそれぞれ独立して修正することを可能にする。しかし、この解決法は、上述したように、フィーチャの時間的な順序についての問題に対処していない。図１〜図３の例を再度参照すると、上側ブロック、下側ブロックおよび突出プロファイルが同じデータ面に「付与される(attached)」ということは、こうしたフィーチャが定義される順序が、その結果生じる部品またはコンポーネントを変え得るという事実を変えない。
【０００９】
履歴依存(history dependent)でない他のシステムも提案されている。こうした他のシステムは、境界表現モデリングに依拠するシステムを含む。システムは、境界表現のみを格納し、表現を定義するユーザ動作のシーケンスは格納しない。こうしたシステムに伴う問題は、システムが、ユーザが既に設計されている構造を変更し、または修正することをほとんど可能にしていないことである。より具体的には、こうしたシステムは、新しい構造の生成においてユーザを助けるツールを提供することができる。こうしたツールは、既存の境界を外挿(extrapolate)し、境界に対する限られた変更を行うだけである。こうしたツールはまた、予めプログラミングされている限られた一連の変更に依拠する。図４は、境界表現モデリングにおける部品の断面の例である。この部品は、ホールがその中に穿設されているボリューム２０である。このホールは、軸２６を中心とした曲線２４の回転、および底面２８によって定義される形状を有する。底面がシステムによって線として識別される場合、ホールの底面２８の、点線で表される位置３０への置換えは、システムによって可能にされることがあり得る。底面が線として識別されない場合、底面の移動は、底面を完全に再設計することを含む場合がある。さらに、底面が移動される場合、壁２４の下部は、拡張される必要がある。この拡張は、壁の下部を再設計することを含み得る。反対に、履歴ベースのシステム(history based system)では、壁２４の下部は、円錐面の再限定(relimination)として定義されることができ、単に設計シナリオを「再現する(replay)」こと、すなわち再限定ステップを「再現する」(replaying the relimitation step)ことによって、容易に拡張される。この例は、履歴ベースのシステムの利点のいくつかを示している。すなわち、履歴ベースのシステムは、エンドユーザの設計意図を取り込む。言い換えると、履歴ベースのシステムは、後続の設計ステップを反映する。履歴ベースのシステムは、容易な事後変更も可能にする。
【００１０】
【特許文献１】欧州特許出願公開第１，３０２，９０４号明細書
【特許文献２】米国特許出願公開第２００２／０，１３３，８０３号明細書
【非特許文献１】Introduction to Automata Theory, Language and Computation, J.E. Hopcroft, J.D. Ullmann, Addison-Wesley, 1979
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、より容易に使用することができるとともに履歴依存システム(history-dependent system)の利点を提供するＣＡＤシステムが必要である。このようなシステムは、好ましくは、ユーザの要求、およびシステムが用いられる当該分野に容易に適応されるべきである。
【課題を解決するための手段】
【００１２】
本発明は、部品、または部品のアセンブリを設計するシステムであって、
（ａ）プリミティブ(primitive)および演算(operation)によるストレージフォーマット(storage format)を有する履歴ベースの設計システム(history-based design system)であって、前記部品または部品のアセンブリは、前記履歴ベースの設計システムにおいて、演算およびプリミティブの順序づけられたシーケンス(ordered sequence)によって定義(define)される履歴ベースの設計システムと、
（ｂ）少なくとも２つの機能フィーチャ(functional feature)であって、それぞれの機能フィーチャは１組の仕様(specification)を提供することによりエンドユーザによってインスタンス化(instantiate)されるように適合(adapt)され、該インスタンス化された機能フィーチャは、少なくとも１つのコントリビューション(contribution)を提供し、該コントリビューションは、前記履歴ベースの設計システムにおける演算およびプリミティブの順序づけられたシーケンスである、少なくとも２つの機能フィーチャと、
（ｃ）文脈自由文法(context-free grammar)を用いて定義(define)されるシード構造(seed structure)であって、該シード構造は、前記インスタンス化された機能フィーチャ(instantiated functional feature)から前記コントリビューションを受け取り(receive)、該受け取ったコントリビューションの演算およびプリミティブを順序づけ、該演算およびプリミティブの順序づけられたシーケンスを前記履歴ベースのシステムに提供するように適合されたシード構造と、
（ｄ）前記文法により前記シード構造を編集するエディタ(editor)と、
を有する、システムである。
【００１３】
前記演算(operation)は、可換演算(commutative operation)および非可換演算(non-commutative operation)を含み、前記シード構造は、前記コントリビューションを受け取るように適合された入力(input)を有し、前記シード構造は、各入力において受け取られた前記コントリビューションに対して前記可換演算を適用し、前記コントリビューションに対して適用された前記可換演算の結果に、前記可換演算または前記非可換演算を適用するように適合される。
【００１４】
前記シード構造は、前記文脈自由文法において、非循環指向グラフ(acyclic oriented graph)として表される。
【００１５】
前記シード構造はバイナリツリー(binary tree)、あるいは、非バイナリツリー(non-binary tree)とすることができる。
【００１６】
前記文脈自由文法の終端アルファベット(terminal alphabet)は、少なくとも１つのソリッド(solid)、ユニオン(union)、インターセクション(intersection)およびサブトラクション(subtraction)を含むことができる。前記終端アルファベットは、さらに、並置(juxtaposition)を含むことができる。
【００１７】
ある実施形態において、前記文脈自由文法の前記終端アルファベットは、少なくとも１つの曲線(curve)、少なくとも１つの面(surface)、および再限定(relimitation)を含む。
【００１８】
本発明は、また、部品、または部品のアセンブリを設計するための履歴フリーシステム(history-free system)を提供する方法であって、
（ａ）プリミティブおよび演算によるストレージフォーマットを有する履歴ベースの設計システムを提供するステップであって、前記部品または部品のアセンブリは、前記履歴ベースの設計システムにおいて、演算およびプリミティブの順序づけられたシーケンスによって定義されるステップと、
（ｂ）少なくとも２つの機能フィーチャを提供するステップであって、それぞれの機能フィーチャは１組の仕様を提供することによりエンドユーザによってインスタンス化されるように適合され、該インスタンス化された機能フィーチャは、少なくとも１つのコントリビューションを提供し、該コントリビューションは、前記履歴ベースの設計システムにおける演算およびプリミティブの順序づけられたシーケンスであるステップと、
（ｃ）文脈自由文法を用いてシード構造を定義するステップであって、該シード構造は、前記インスタンス化された機能フィーチャから前記コントリビューションを受け取り、該受け取ったコントリビューションの演算およびプリミティブを順序づけ、該演算およびプリミティブの順序づけられたシーケンスを前記履歴ベースのシステムに提供するように適合されたステップと、
を有する方法を提供する。
【００１９】
ある実施形態において、前記演算は、可換演算および非可換演算を含み、前記シード構造を定義するステップは、前記コントリビューションを受け取るように適合された入力を有し、前記シード構造は、各入力において受け取られた前記コントリビューションに対して前記可換演算を適用し、前記コントリビューションに対して適用された前記可換演算の結果に、前記可換演算または前記非可換演算を適用するように適合される。
【００２０】
前記文脈自由文法を用いてシード構造を定義するステップにおいて、前記シード構造は、非循環指向グラフとして表される。
【００２１】
前記文脈自由文法を用いてシード構造を定義するステップにおいて、前記シード構造は、バイナリツリーあるいは非バイナリツリーとすることができる。
【発明を実施するための最良の形態】
【００２２】
本発明を適用したコンピュータ支援設計システム(computer-aided design system)について、添付の図面を参照して、非限定的な例を以下に説明する。
【００２３】
これ以降、本明細書では、「部品(part)」または「部品のアセンブリ(assembly of parts)」という言葉は、コンピュータ支援設計システムにおいてモデリングされる、すなわち設計されるオブジェクト(object)を示すのに使われる。
【００２４】
図５を参照して、本発明によるシステムの全体構造を説明する。
【００２５】
図６および図７を参照して、文脈自由文法に関して説明をう。
【００２６】
本発明の第１の実施形態は、図８〜図１８を参照して説明する。本発明は、薄型ソリッド(thin solid)のモデリングに適用される。
【００２７】
本発明の第２の実施形態は、図１９〜図２０を参照して説明する。本発明は、対応するモールドを有する薄型ソリッドの並行モデリング(the concurrent modeling of thin solids with the corresponding moulds)に適用される。
【００２８】
本発明の第３の実施形態は、図２１〜図３０および図３５を参照して説明する。シード構造を非バイナリツリーで表すことを可能にする一般的な文脈自由文法が開示される。
【００２９】
最後に、本発明の第４の実施形態として、図３１〜図３４を参照して説明する。本実施形態は、境界表現(B-rep)エバリュエータ(evaluator)内での、モデリングされたオブジェクトの高速評価を可能にする。
【００３０】
本発明は、ＣＡＤシステムのユーザが、フィーチャ順序(feature order)を気にすることなく、部品、または部品のアセンブリを設計することを可能にする。本質的に、本発明によって提供されるシステムは、履歴フリー型設計システムである。ただし、このシステムは、履歴ベースの設計システムを含み、したがって、上述したように履歴ベースのシステムの利点をもたらす。したがって、本発明によるシステムは、ユーザの設計意図を取り込み、事後変更を可能にする。
【００３１】
このことは、システムにおいて、以下のものを提供することによって実現される。
−履歴ベースの、または履歴従属型のコンピュータ支援設計システム；
−エンドユーザによってアクセスされインスタンス化される１組の機能フィーチャ。
−シード構造。
【００３２】
履歴ベースの設計システムでは、モデリングされたオブジェクトは、演算およびプリミティブの順序づけられたシーケンスによって定義される。このシステムは、このような順序づけられたシーケンスの形で、データを受け取るように適合される。ソリッドオブジェクトのモデリングに適合された設計システムにおけるプリミティブ、すなわちブロックの例が、図１〜図３を参照して与えられる。演算の例は、たとえば、図１の２つのブロックに適用されるような組立てや、たとえば図２および図３の様々な段階で適用されるようなカットを含む。シーケンス中の順序の重要性は、図１〜３図を参照して例示される。このような履歴ベースの設計システムは、当業者に公知であり、上で言及したＣＡＴＩＡシステムを含む。このようなシステムにおいて使用可能なプリミティブおよび演算も、当業者に公知である。
【００３３】
履歴ベースのシステムは、図５の４０で表されており、これ以上は詳述しない。このシステム４０は、本明細書ではこれ以降、「コアシステム(core system)」とも呼ばれ、プリミティブ(primitive)および演算(operation)の順序づけられたシーケンス(ordered sequence)を受け取るように適合されるというだけで十分である。システム４０は、次いで、受け取ったシーケンスを評価して、モデリングされたオブジェクトを計算し、モデリングされたオブジェクトをユーザに表示し、シーケンスを格納し、または、受け取った、順序づけられたシーケンスのどのような追加処理も提供することができる。このシステムにおいて、境界表現タイプエバリュエータ(B-rep type evaluator)を使うことができる。境界表現タイプエバリュエータとは、入力されたソリッドの境界記述から、得られたソリッドの境界記述を計算する、幾何学的、かつトポロジカルなアルゴリズムである。
【００３４】
本発明を適用したシステム４２は、履歴フリー型であり、宣言的である。システム４２は、エンドユーザインターフェース４４を備える。このインターフェースは、機能フィーチャの組から機能フィーチャを選択し、選択された機能フィーチャを、パラメータを用いてインスタンス化(instantiate)する機能を、エンドユーザに提供する。このことは、図５において、エンドユーザインターフェース４４に入力されるパラメータ４６および選択された機能フィーチャ４８で概略的に表される。機能フィーチャは、対象となっている分野に適した設計機能を表す。たとえば、設計システムが、ソリッドの設計に適用される場合、機能フィーチャは、ハウジング、スルーホール、ブラインドホールを含むことができる。機能フィーチャの他の例は、後で論じられる。所与の機能フィーチャが、選択された機能フィーチャに関連したパラメータまたは値を与えることによって、インスタンス化されることができる。たとえば、ハウジングは、プロファイル、高さおよび厚さというパラメータを与えることによってインスタンス化(instantiate)されることができる。スルーホールは、位置決め点、軸および直径を与えることによってインスタンス化されることができる。ブラインドホールは、位置決め点、軸および直径、ならびに深さを与えることによってインスタンス化されることができる。後で論じられるように、機能フィーチャの組は、エキスパートユーザによって適合されることができる。
【００３５】
ユーザインターフェース４４は、コントリビューション５０を出力し、コントリビューション５０は、シード構造５２に与えられる。コントリビューションは、後で詳しく論じられる。本質的に、エンドユーザインターフェース４４への、インスタンス化された機能フィーチャの入力(instantiated functional feature input)は、インターフェース４４による少なくとも１つのコントリビューション出力(contribution output)をもたらす。このコントリビューションとは、コアシステム(core system)におけるプリミティブおよび演算の順序づけられたシーケンス(ordered sequence)である。コントリビューションは、後で論じられるように、シード構造(seed structure)の所与の入力において与えられる。
【００３６】
コントリビューションは、シード構造５２に与えられる。シード構造は、コントリビューションを受け取り、受け取ったコントリビューションに基づいて、コアシステム４０にデータフロー５４をもたらす。データフロー５４は、プリミティブおよび演算の順序づけられたシーケンスであり、コアシステムによって処理されるように適合される。より詳細には、シード構造は、コントリビューションを受け取り、コントリビューションに演算を適用すること、または追加のプリミティブを加えることによって、こうしたコントリビューションを処理する。シード構造は、所与のコントリビューションを分離することも、区切ることもしない。言い換えると、シード構造に入力された所与のコントリビューションは、シード構造によって提供された、得られたシーケンス中に見いだされる。
【００３７】
シード構造は、コントリビューションが受け取られる順序が、シード構造によって出力される結果、またはより具体的には、コアシステムによるこの結果の評価を変えないように構築される。シード構造のこのプロパティは、以下の理由により保証される。
−シード構造にコントリビューションを与えるのに用いられる規則が可換的である；
−各コントリビューションが、シード構造によってそのままの状態に保たれる。
【００３８】
本質的に、エンドユーザは、可換的であると思われるツール、すなわち機能フィーチャを提供される。機能フィーチャは、したがって、エンドユーザによって、どの順序でもインスタンス化されることができる。非可換演算は、コントリビューション中に含まれるか、またはシード構造によって実行される。コントリビューションは、シード構造において分割されることも区切られることもないので、コントリビューション中のプリミティブおよび演算の順序は、設計システムによって修正されない。シード構造における順序づけはユーザ依存ではないので、シード構造における非可換演算は、ユーザ依存でない結果をもたらす。
【００３９】
さらに、本システムは、図５の５６で概略的に表される、シード構造を編集するエディタを提供する。このエディタは、エキスパートユーザが、シード構造を修正し、設計システムが使用される所与の技術分野の特定要件にシード構造を適合させることを可能にする。シード構造は、文脈自由文法で定義され、この文法で編集されることができる。この文法の構文規則を守ることは、シード構造が、様々なコントリビューションを順序づけるプロパティを常に保持して、機能フィーチャがエンドユーザによってインスタンス化される順序に関わらず、コアシステム４０における出力データフローの同一評価をもたらすことを保証する。
【００４０】
本発明の好ましい使用において、エキスパートユーザは、能力の高い設計者である。エキスパートユーザは、当該技術分野（航空宇宙用板金加工、航空宇宙用機械加工部品、自動車駆動機構など）、ならびにＣＡＤシステムの動作および制限（多様体(manifold solid)または非多様体、線形ＣＳＧ(Constructive Solid Geometry)構造、バランスＣＳＧ構造など）を熟知している。エンドユーザは、機械設計者であり、様々な機能フィーチャを提供される。コンピュータシステムにおいてユーザに権利が与えられることができる方法は、当業者に公知であり、これ以上詳述されない。
【００４１】
図５の矢印５８で示されるように、エディタは、エキスパートユーザが、たとえば新しい機能フィーチャを追加するために、機能フィーチャの組を変更することも可能にし得る。
【００４２】
システム４２は、エンドユーザの視点から見ると、オブジェクトの容易なモデリングを可能にするという利点をもつ。第１に、オブジェクトのモデリングを容易にする、当該分野に適合された機能フィーチャが提供される。第２に、機能フィーチャがインスタンス化される順序は、その結果生じる、モデリングされたオブジェクトに関連しない。
【００４３】
システム４２は、シード構造を編集することによって、当該分野に容易に適合されるというさらなる利点をもつ。この利点は、様々な技術分野に同じ設計システムを使うことを可能にし、エキスパートユーザが、システムをカスタマイズすることを可能にする。シード構造のいくつかの例は、後で明らかにされる。図８〜図１５の例において、シード構造は、薄型プラスチック部品の設計に適合される。図１６〜図１７の例において、シード構造は、同時に上側モールドおよび下側モールドを設計することを可能にする。説明はさらに、モデリングされたオブジェクトの評価を最適化するように適合されたシード構造の図２７〜図３０を参照して、暫定的な結果が格納される場合の例を与える。コアシステムの能力に従って、シード構造は適合されることができる。
【００４４】
エディタは、既存のシード構造を、コアシステムの能力に従ってより効率的にさせるように、その機能を変えることなく適合させることを可能にする。エディタは、所与のアプリケーションにおいてシード構造の性能を向上させることも可能にする。たとえば、エディタは、後で例示されるように、ソリッドに対して、ソリッドコンポーネントおよびそのモールドを並行して設計することを可能にする。エディタは、アセンブリの対応する要素、たとえば結合によってハウジングを形成する２つの部品を同時に設計することを可能にする。エディタは、エキスパートユーザが、所与のアプリケーションに適合されたシード構造を作成することも可能にする。たとえば、艦船製造では、壁、開口部、強化部材が、特定の再限定と組み合わされる。シード構造は、この分野で用いられる設計方法を取り込むエディタにおいて設計されることができる。より一般的には、ＣＡＤシステムにおいて用いられるどの設計工程も、シード構造およびそれに関連づけられた機能フィーチャに取り込まれることができる。
【００４５】
さらに、後で論じられるように、エディタは、エキスパートユーザが、既存の機能フィーチャを修正することも、新しい機能フィーチャを作成することも可能にし得る。
【００４６】
本発明を適用したシステムはさらに、コンカレントエンジニアリング(concurrent engineering)を可能にする。コンカレントエンジニアリングは、共有部品またはアセンブリに同時に取り組む数人の設計者を調整する技術である。各設計者は、（共有）部品を変更することになっており、他の設計者による変更点を受け取るようにもなっている。重要な点は、変更を調和することである。このことは、従来技術のシステムでは、各設計者による変更が実行される順序が、その結果生じる、モデリングされたオブジェクトに影響し得るので、問題となる。本発明における、設計変更の間の順序への非依存は、各設計者によって実行される変更または追加の直接併合を可能にする。
【００４７】
本発明の実施形態を詳述する前に、文脈自由文法について簡潔に説明する。文脈自由文法に関する詳細は、たとえば、非特許文献１に見られることができる。この参照文献は、文脈自由文法を論じているが、このような文法をコンピュータ支援設計システムにおいて使うための提案を行っていない。
【００４８】
文脈自由文法Ｇは、Ｇ＝（Ｘ，Ｖ，Ｐ）によって定義され、この式において、Ｘは１組の終端記号であり、Ｖは１組の非終端記号(non-terminal symbol)であり、Ｐは１組の規則(rule)である。規則とは、（Ｓ，ｍ）という一対であり、第１のオブジェクトは非終端記号であり、第２のオブジェクトは、終端記号および非終端記号からなる文字列である。より正確には、Ｐは、Ｖ×（Ｘ∪Ｖ）＊の部分集合である。規則は、
【００４９】
【数１】
2005044365.tif 000003
【００５０】
のようにも書き表される。言い換えると、規則は、非終端記号を終端記号および非終端記号からなる文字列に変える。文脈自由文法を使うことは、ワードを明確な構文で再帰的に作成することを可能にし、また、アルゴリズムに、こうしたワードを走査させ、構文を調べさせ、計算を開始させる。この点において、非終端記号の機能は、ある機能のおかげで、終端記号および非終端記号からなる文字列によって置き換えられることになる。ここで、文法における一連の記号は、ワードと呼ばれる。
【００５１】
シード構造５２は、文脈自由文法で定義され編集される。このように、シード構造は、文脈自由文法ではワードに過ぎない。文脈自由文法は、シード構造を定義する、形式的で厳密な環境を最初に提供する。エディタ５６で編集されたシード構造の構文を調べることは、エンドユーザが構文規則に違反しないようにすることを可能にする。このことは、システム４２が使われる分野から完全に独立している。
【００５２】
文脈自由文法の使用は、再帰関数を使うことによって、シード構造にコントリビューションを入力することを容易にする。具体的には、シード構造は、いくつかの終端記号および非終端記号を含むワードであり、こうした記号は、シード構造にコントリビューションを与えるために使われる。非終端記号は、シード構造への「入力(input)」として理解されることができ、終端記号は、オブジェクト（この例ではソリッドオブジェクト）を組み合わせる演算を指定するのに使われる。この点において、シード構造にコントリビューションを与えることは、シード構造の非終端記号をコントリビューションで置き換えるだけで実行されることができる。コントリビューションをワードであると仮定すると、シード構造にコントリビューションを与えることは、所与の文法規則に過ぎない。再帰性、すなわちシード構造に任意の数のコントリビューションを与える能力を保証するためには、シード構造の非終端記号を、コントリビューションだけでなく、置き換えられる非終端記号も含むシーケンスで置き換えることによって、シード構造にコントリビューションを与えるだけで十分である。これ以降本明細書では、置き換えられた非終端記号が置換え文字列に出現する規則は、置換(substitution)と呼ばれる。この置換の定義を使って、コントリビューションが、シード構造の非終端記号を、非終端記号およびコントリビューションを含むワードに変える置換を用いることによって、シード構造に与えられる。このことは、その結果生じるワードが非終端記号を依然として含むことを保証し、その非終端記号には、追加コントリビューションが再度与えられることができる。このことはさらに、シード構造の構造が、コントリビューションの入力を通じて保たれることを保証する。
【００５３】
文脈自由文法を使うとさらに、エキスパートユーザが、システム４２が相変わらず宣言的であることを保証することが容易になる。コントリビューションがシード構造に与えられることを可能にする置換規則が、相変わらず可換的であることを調べるだけで十分である。
【００５４】
次に、本発明において使われる最も単純な文脈自由文法が、図６および７を参照して論じられる。この文法は、以下のように定義される。
【００５５】
【数２】
2005044365.tif 000004
【００５６】
記号ａは、第１の終端記号であり、コントリビューションによる、またはコアシステムの、プリミティブおよび演算の順序づけられたシーケンスによる実施形態において定義されるどのソリッドも表す。記号φは、第２の終端記号であり、ユニオン（＋）、サブトラクション（−）およびインターセクション（．）という演算など、どの演算も表す。非終端記号Ｓは、規則の組Ｐに含まれる規則を用いて、一連の非終端記号および終端記号によって置き換えられることができる。具体的には、第１の規則
【００５７】
【数３】
2005044365.tif 000005
【００５８】
は、非終端記号Ｓを、２つの非終端記号の間の演算φの結果で置き換える。この結果はＳＳφと記され、ＳφＳをより簡略に表しているに過ぎない。ツリーに関していうと、第１の演算は、ツリーのリーフＳを、２つの分岐をもつノードで置き換える。このノードは、分岐の終端にある２つの非終端記号に対する演算φの結果である。第２の演算
【００５９】
【数４】
2005044365.tif 000006
【００６０】
は、非終端記号を終端記号で置き換え、通常、所与の値、すなわち終端記号がツリーのリーフに適用されるべきときに使われる。
【００６１】
この文法を使って作成されたワードの構文は、図６に表されるプッシュダウンオートマトンによって調べられることができる。この図において、状態１は初期状況であり、状態２は最終状況である。オートマトンが、最後の記号を読んだ後に最終状況に到達した場合、構文は正しい。そうでない場合、構文は正しくない。形式言語の当業者であれば、文法におけるどのワードの構文も容易に調べられることができることが理解されよう。
【００６２】
図７は、この文脈自由文法で符号化されたバイナリツリーの例である。このツリーは、ワードａｂｃ＋ｄ−−によって符号化され、このワードは、ａ−（（ｂ＋ｃ）−ｄ）を簡略に表している。このツリーは、文法規則の以下のシーケンスを介して作成される。
【００６３】
【数５】
2005044365.tif 000007
【００６４】
言い換えると、ツリーは、非終端記号Ｓから始まる。第１の演算は、非終端記号を、ルートにａ−演算がある２つの分岐６０および６２をもつツリーで置き換えるために適用される。第２の演算は、ツリーの第１の分岐６０のリーフにある非終端記号Ｓを終端記号ａで置き換えるために適用される。第１の演算は次いで、分岐６２のリーフにある残りの非終端記号に適用され、この非終端記号は、ルートにａ−演算がある２つの分岐６４、６６をもつツリーで置き換えられる。第２の演算は、ツリーの分岐６６のリーフにある非終端記号Ｓを終端記号ｄで置き換えるために適用される。第１の演算は次いで、分岐６４のリーフにある非終端記号に適用され、この非終端記号は、ルートにａ＋演算がある２つの分岐６８、７０をもつツリーで置き換えられる。第２の演算は、分岐６８、７０のリーフにある非終端記号Ｓを終端記号ｂおよびｃで置き換えるために、二度適用される。図７の例において、Ｓのすべてのインスタンスがツリーまたは終端記号で置き換えられたので、非終端記号Ｓはこれ以上現れない。図７の記述において、記号ａは、終端記号を記述するために使われる。終端記号は、可能なソリッドａ、ｂ、ｃおよびｄの１つとしても使われる。
【００６５】
図８〜図１８は、本発明の第１の実施形態における設計システムを例示する。この第１の実施形態におけるシード構造は、バイナリツリーとして表される。説明のために、設計システムは、薄型ソリッド、たとえば射出成形によるプラスチック部品の設計に適用される。２つの機能フィーチャが提供される。第１の機能フィーチャは薄型ブロックであり、第２の機能フィーチャは取付け部分である。
【００６６】
図８は、この例におけるシード構造の概略図である。図８のシード構造は、薄型ソリッドが２つのソリッドのサブトラクションによって構造化されることを考慮して導出される。第１のソリッドは薄型ソリッドの外部形状であり、第２のソリッドは薄型ソリッドの内部形状である。薄型ソリッドに対する機械機能は、以下の５つの基本演算に分解することができる。
−外部形状に材料を追加する、
−外部形状から材料を取り除く、
−内部形状に材料を追加する、
−内部形状から材料を取り除く、
−全体形状から材料を取り除くことによって、全体形状が二度と材料で満たされることができないようにする。
【００６７】
シード構造は、基本演算が以下の順序で実行されることを表す。
−外部形状に材料を追加し、外部形状から材料を取り除くことによって、外部形状を定義する、
−内部形状に材料を追加し、内部形状から材料を取り除くことによって、内部形状を定義する、
−外部形状から内部形状を取り除く、
−全体形状から材料を取り除くことによって、全体形状が二度と材料で満たされることができないようにする。
【００６８】
演算をこの順序で用いると、生じるソリッドが常に同じものになる。
【００６９】
シード構造は、以下の文脈自由文法Ｇ０＝（Ｘ，Ｖ，Ｐ）で定義されることができ、この式では、以下のようになる。
【００７０】
【数６】
2005044365.tif 000008
【００７１】
この文脈自由文法は、図６および図７を参照して開示された文法を精密にしたバージョンである。上記のように、第１の終端記号ａは、どのソリッドも表す。第２、第３および第４の終端記号＋、−、・はそれぞれ、ユニオン、サブトラクションおよびインターセクションを表す。第１の非終端記号Ｓは、総称的である。非終端記号ｅ＋、ｅ−、ｉ＋、ｉ−およびｕは、上に列挙した５つの演算においてコントリビューションの入力を表すために、便宜上使われる。こうした非終端記号は、「ハンドル(handle)」とみなすことができる。具体的には、非終端記号ｅ＋は、外部形状に材料を追加するために使われる、などである。非終端記号ｅ＋、ｅ−、ｉ＋、ｉ−およびｕの幾何学的な評価は空集合であるので、シード構造の幾何学形状は空集合である。このことは、バイナリツリーにおける実際のソリッドとの共存を可能にする。言い換えると、非終端記号ｅ＋、ｅ−、ｉ＋、ｉ−およびｕは、シード構造の出力で提供された、順序づけられたシーケンスに残ることができ、このことは、取得されたソリッドに対してどのような因果関係ももたない。
【００７２】
形式文法(formal grammar)における第１の演算(first operation)は、シード構造を提供することである。一般的な記号Ｓは、ｅ＋ｅ−−ｉ＋ｉ−−−ｕ−と書き表される、図８のシード構造で置き換えられる。シード構造を形成するツリーのリーフは、記号「ｅ＋」、「ｅ−」、「ｉ＋」、「ｉ−」および「ｕ」である。こうしたリーフ(leaves)は、上で論じられた５つの演算に、上で与えられた順序で対応する。シード構造において、記号「−」は、サブトラクション(subtraction)を表す。ツリー構造は、次のように説明されることができる。ツリーのノード８０において、外部形状から取り除かれた材料（リーフｅ−）は、外部形状に追加された材料（リーフｅ＋）からサブトラクションされる。結果は、簡潔な表現でｅ＋ｅ−−と記される。グラフのノード８２において、内部形状から取り除かれた材料（リーフｉ−）は、内部形状に追加された材料（リーフｉ＋）からサブトラクションされる。結果は、やはりｉ＋ｉ−−と記されることができる。グラフのノード８４において、ノード８２の結果ｉ＋ｉ−−は、ノード８０の結果ｅ＋ｅ−−からサブトラクションされ、したがって、簡潔な表現でｅ＋ｅ−−ｉ＋ｉ−−−と記される結果につながる。実際に、このことは、外部形状から薄型ソリッドの内部形状をサブトラクションすることと同等である。ツリールートである、グラフのノード８６において、全体形状から取り除かれるべき材料は、ノード８４の結果からサブトラクションされる。このことは、ｅ＋ｅ−−ｉ＋ｉ−−−ｕ−と記される。
【００７３】
第２の組の演算は、置換演算を含み、置換演算はそれぞれ、非終端記号の１つを、コントリビューションおよび置き換えられる非終端記号を含むシーケンスで置き換えることである。「ハンドル」に少なくとも１つの置換を適用すると、モデリングされたオブジェクトをもたらす。
【００７４】
上述したように、置換は、シード構造を保存するという第１のプロパティを有し、シード構造では、さらにコントリビューションが与えられることを可能にするために、置換が適用された後でも、置き換えられた非終端記号が使用可能である。さらに、置換は、どの順序でコントリビューションが与えられても、その結果生じる、モデリングされたオブジェクトを変えないという第２のプロパティを有する。たとえば、
ｅ＋ｂ＋ｃ＋ｅ−−ｉ＋ｉ−−−ｕ−
は、材料ｂおよびｃをこの順序で外部形状に追加することによって取得される。モデリングされたオブジェクトは、
ｅ＋ｃ＋ｂ＋ｅ−−ｉ＋ｉ−−−ｕ−
と同じであり、これは、材料ｃおよびｂを、この順序で外部形状に追加することによって取得される。したがって、第２の組の演算、すなわち置換が可換的であるおかげで、機能フィーチャは、どの順序でもインスタンス化されることができる。その結果得られるソリッドは、機能フィーチャがインスタンス化される順序に依存しない。
【００７５】
上述したように、図８の例示的なシード構造は、エキスパートユーザによって修正されることができる。修正されたシード構造の例が、以下に挙げられる。シード構造を修正するために、以下の文法Ｇ１を使うことができる。
【００７６】
【数７】
2005044365.tif 000009
【００７７】
この文法は、実際には、上で定義されたように文法Ｇ０を「含み(include)」、「メタ文法(meta-grammar)」を表す。このメタ文法は、どのシード構造を定義することも可能にする。文法Ｇ０と反対に、文法Ｇ０は、システムが相変わらず宣言的であることを保証しない。実際、文法Ｇ１は、非可換的な置換を定義することを可能にする。文法Ｇ１は、エキスパートユーザによって修正または作成されたシード構造の構文を調べるために使われることができる。このことは、上で論じられたシード構造（ｅ＋ｅ−−ｉ＋ｉ−−−ｕ−）を別のシード構造に変えることを可能にする。文法Ｇ０、またはその修正版は、可換的な置換を使用し、システム全体が宣言的であり履歴フリー(history-free)であることを保証する。
【００７８】
図９〜図１８は、図８のシード構造および様々な機能フィーチャを用いて取得される、モデリングされたオブジェクトの例を示す。この例において用いられる第１の機能フィーチャは、基本となる薄型ブロックである。このブロックは、平面プロファイルおよび突出の長さによって定義される。厚さは、設計において機械部品に付与された、予め定義された値である。各機能フィーチャは、その値を再定義しない。この規定は、薄型プラスチック部品の設計に有利であるが、規定なしでも設計されることができる。所与のオブジェクトに対して厚さが定義されると仮定すると、機能フィーチャは、プロファイルおよび突出の長さを提供することによって、エンドユーザによって実施することができる。
【００７９】
慣例により、この例では、底面は、デフォルトの開放面である。したがって、この薄型ブロックは、入力データ、すなわちプロファイル、高さおよび厚さから容易に作成される２つの突出ソリッドＡおよびＢによって定義される。突出ソリッドＡは、リーフｅ＋に与えられたコントリビューションである、外部形状に追加された材料を表す。突出ソリッドＢは、リーフｉ＋に与えられたコントリビューションである、シード構造において内部形状に追加され、内部形状から取り除かれる材料を表す。コントリビューションＡおよびＢは、ユーザによって提供された情報に基づいて、エンドユーザインターフェース４４によって定義される。
【００８０】
図９は、コントリビューションＡおよびＢを示す。コントリビューションＡは、平面プロファイルに対応する外側形状と、突出部分の長さに対応する長さＬとを有するソリッドである。コントリビューションＢは、平面プロファイルに対応する外側形状を有し、予め定義された厚さおよび同じ長さＬを引いたソリッドである。論じられたように、コントリビューションＡは、演算
【００８１】
【数８】
2005044365.tif 000010
【００８２】
を用いて、リーフｅ＋に与えられ、コントリビューションＢは、演算
【００８３】
【数９】
2005044365.tif 000011
【００８４】
を用いて、リーフｉ＋に与えられる。したがって、シード構造から開始して、薄型ブロックを作成すると、図１０のツリーに等価なワードｅ＋Ａ＋ｅ−−ｉ＋Ｂ＋ｉ−−−ｕ−を生じる。このツリーは、履歴ベースのシステムにおける標準エバリュエータを介して、図１１のモデリングされたオブジェクトを生じさせる。この評価中、エバリュエータにおいて、Ａ＋ｅ＋＝ＡかつＢ＋ｉ＋＝Ｂであることに留意されたい。
【００８５】
機能フィーチャのこの第１の例は、シード構造のエントリに与えられたコントリビューションが、ユーザの様々な入力に基づいて定義されることを明確にする。エンドユーザは、様々なコントリビューションに関心をもつ必要はない。エンドユーザの唯一の入力は、機能フィーチャ、およびこうした機能フィーチャのパラメータに関する。
【００８６】
この例において用いられる第２の機能フィーチャは、図１２で表される取付け部分フィーチャである。このフィーチャは、空間中の点、方向およびホールタイプによって定義される。こうした様々なパラメータは、機能フィーチャを実施する際に、エンドユーザによって入力される。やはり、所与のモデリングされたオブジェクトに対して厚さが固定されると仮定され、固定されていない場合、厚さは追加パラメータとなり得る。空間中の点、および方向を定義するために、従来技術において論じられている方法、たとえば特許文献２で論じられているようなデータ面(datum plane)などを使うことができる。
【００８７】
この取付け部分の機能フィーチャは、穿設された円形ブロック、および適切な空間確保を部品に追加し、そうすることによって、組立てが容易になる。その結果、取付け部分は、図１２においてＣ、Ｄ、Ｅ、ＦおよびＧで参照される、いくつかのコントリビューションとなる。コントリビューションは、エンドユーザによって入力された機能フィーチャのパラメータに従って定義される。
【００８８】
第１のコントリビューションは、外部形状から材料を取り除く。この材料は、図１２でＣと記され、このコントリビューションは、関数
【００８９】
【数１０】
2005044365.tif 000012
【００９０】
を用いて、シード構造のリーフｅ−に与えられる。コントリビューションＣは、実際に外部形状から円錐部分を取り除き、図１２の上部から、コントリビューションＦの上側ディスクまで伸びる。第２のコントリビューションＤおよび第３のコントリビューションＥは、内部形状から材料を取り除く。こうしたコントリビューションは、関数
【００９１】
【数１１】
2005044365.tif 000013
【００９２】
および
【００９３】
【数１２】
2005044365.tif 000014
【００９４】
を用いて、シード構造のリーフｉ−に与えられる。この段階で、第２および第３のコントリビューションが与えられる順序は、その結果生じる、モデリングされたオブジェクトにとって重要でないことに留意されたい。第４のコントリビューションＦは、関数
【００９５】
【数１３】
2005044365.tif 000015
【００９６】
を用いて、リーフｅ＋において外部形状に材料を追加する。第５のコントリビューションＧは、関数
【００９７】
【数１４】
2005044365.tif 000016
【００９８】
を用いて、穿設された領域を永久に取り除く。定義により、穿設された領域は、どの場合でも材料で満たされることができない。ｕという記号の役割は、このプロパティを取り込むことである。
【００９９】
現在の部品上に作成された取付け部分は、更新されたワードｅ＋Ｆ＋Ａ＋ｅ−Ｃ＋−ｉ＋Ｂ＋ｉ−Ｅ＋Ｄ＋−−ｕＧ＋−となる。このワードは、図１３で表されるバイナリＣＳＧツリーと等価である。モデリングされた対応するオブジェクトは、図１４にに示してある。やはり、様々なコントリビューションがシード構造のリーフに与えられる順序は、評価されるモデリングされたオブジェクトと関係しないことに留意されたい。言い換えると、以下のワードｅ＋Ａ＋Ｆ＋ｅ−Ｃ＋−ｉ＋Ｂ＋ｉ−Ｄ＋Ｅ＋−−ｕＧ＋−は、履歴ベースの設計システムにおいて評価されると、モデリングされた同一のオブジェクトをもたらす。
【０１００】
機械機能と関連する基本ソリッドの間のリンクを維持するために、追加データ構造を使うことができる。この例では、薄型ソリッドフィーチャとコントリビューションＡおよびＢとの間にリンクがあり得る。取付け部分フィーチャとコントリビューションＣ、Ｄ、Ｅ、ＦおよびＧとの間にもリンクがある。このことは、エンドユーザが、いくつかのコントリビューション、たとえばコントリビューションＡおよびＢが実際に、所与の機能フィーチャのインスタンス化から生じることを維持することを可能にする。機能フィーチャに対する修正は次いで、影響を受ける様々なコントリビューションを変えることになる。
【０１０１】
図１１の薄型ソリッドおよび図１２の取付け部分の例において、インスタンス化された(instantiated)様々な機能フィーチャの間には依存関係(dependency)がないことにも留意されたい。システム側から見ると、取付け部分は、薄型ソリッドなしで存在することができる。薄型ソリッドは、削除されることができる。この部品は、構文的、およびトポロジカルな観点から、依然として有効である。このことは、図１５から図１７に例示されている。図１５および図１６において、取付け部分は、ソリッドの中央にインスタンス化される。斜視図１５は、取付け部分を有する、結果である薄型ソリッドの内側を示す。この図は、外側形状に追加されたコントリビューションＦ、および内部形状から取り除かれたコントリビューションＤを示す。図１５における、コントリビューションＤとＦの間の線は、判り易くするために表わしているに過ぎず、エバリュエータによって作成される、モデリングされたオブジェクトには存在しない。図１６は、取付け部分を有する、結果として生じた薄型ソリッドの上側を示す。この図は、外部形状から取り除かれたコントリビューションＣを示す。図１７において、取付け部分は、薄型ソリッドの外側でインスタンス化される。したがって、コントリビューションＣ、ＤおよびＥは、取り除くべき材料がない位置に与えられるので、どの材料も取り除かない。コントリビューションＦは、図６の薄型ソリッドＡとは別の円盤形で、外部形状に材料を追加する。コントリビューションＧは、コントリビューションＦとして追加された円盤から材料を取り除き、そうすることによって、その結果生じる取付け部分は単に、別個の、穿設された円盤となる。技術的な見地からは、薄型ソリッドの外側への材料の追加は、無意味になる場合がある。構文的またはトポロジカルな見地からは、結果として生じた、モデリングされたオブジェクトは正しい。こうした図の例は、取付け部分が、どの位置でも構文エラーなしでインスタンス化されることができることを示す。その結果生じるオブジェクトは、コアシステムによって常に評価されることができる。
【０１０２】
さらに、ラウンド、フィレットおよびドラフトを、基本ソリッドに追加することができる。このことは、ラウンドされた（あるいはドラフトまたはフィレットされた）基本ソリッドが基本ソリッドのように動作するので、構文を変えない。こうした追加フィーチャのパラメータは、機能フィーチャ定義に含まれることができる。たとえば、ラウンドされドラフトされた薄型ソリッドは、図１８に表される部品を生じる。
【０１０３】
エキスパートユーザおよびエンドユーザの役割は、これまでの例を通して説明される。薄型プラスチック部品業界をよく知っているエキスパートユーザは、以下のものを設計する。
−シード構造；
−機能フィーチャ。
【０１０４】
機能フィーチャはすべて、専用の「薄型プラスチック部品(thin plastic part)」ワークベンチにおいて、エンドユーザに利用可能となり得る。エンドユーザは、このワークベンチを開き、予め専用に定義された宣言的な機能フィーチャを使って、薄型部品を設計する。
【０１０５】
図８〜図１８に示した実施形態は、２つの機能フィーチャのみを提供する。より多くの機能フィーチャが、エキスパートユーザによって定義されることができる。たとえば、薄型プラスチックソリッドの例では、他のタイプの取付け部分を提供することができる。機能フィーチャは、一方では、機能フィーチャをインスタンス化するためにエンドユーザに提供されるパラメータ（群）を含む。他方では、機能フィーチャは、シード構造に与えられるべき様々なコントリビューションを含む。各コントリビューションは、エンドユーザによって入力されたパラメータに従って定義される。エキスパートユーザは、任意の数の機能フィーチャを定義することができる。
【０１０６】
システムの動作は、図８〜図１８に示してある。エキスパートユーザは最初に、シード構造および機能フィーチャを定義する。エンドユーザは、機能フィーチャの１つまたは複数をインスタンス化する。このインスタンス化は、図８、図１０および図１３に示すシード構造に与えられるコントリビューションという結果をもたらす。置換の再帰性のおかげで、新しいコントリビューションが、常に追加されることができる。いつでも、対応するワード（すなわち対応するツリー構造）は、履歴ベースの設計システムにおいて評価されることができる。エンドユーザにとって、システムは、履歴ベースであるとみえる。しかし、上述したように、機能フィーチャのいずれも、フィーチャがインスタンス化される順序からそれぞれ独立して修正されることができる。上述したように、このことは、コントリビューションがシード構造に与えられる順序が、モデリングされたオブジェクトと無関係となるように、シード構造およびコントリビューションが構築されるおかげである。
【０１０７】
第２の実施形態は、図１９および図２０に示してある。本実施形態は、部品、およびこの部品用のモールドを同時に設計することを可能にする。図８〜図１８のシード構造およびコントリビューションは、部品用に使われることができる。さらに、追加シード構造が、モールドの上三角行列および下三角行列用に提供される。
【０１０８】
本実施形態における文脈自由文法は、図８〜図１８を参照して論じた文脈自由文法に類似している。以下の追加終端記号および関数が提供される。
【０１０９】
【数１５】
2005044365.tif 000017
【０１１０】
上三角行列および下三角行列用の開始形状が、ＵおよびＬとして定義される。ＵおよびＬは、例示した文脈自由文法において非終端記号であり、当然ながら、特定の機能フィーチャによって定義されることができる。こうした形状は、上三角行列Ｕおよび下三角行列Ｌを有する最も単純なモールドの例である。こうした行列の形状は、エンドユーザの責任、特に結合(join)サーフェス定義による。
【０１１１】
Ｐ１およびＰ２における追加機能は、上三角行列Ｕおよび下三角行列用のシード構造を提供する。こうしたシード構造は、図１９および図２０に示してある。図１９の、上三角行列用シード構造は、ワードＵ  ｅ＋−ｅ−＋によって定義される。Ｕは、上三角行列の開始形状である。「ハンドル」ｅ＋、ｅ−は、図８〜図１８の実施形態の場合と同じ意味をもつ。図２０の、下三角行列用シード構造は、ワードＬｉ＋＋ｉ−−によって定義される。Ｌは、下三角行列用の開始形状であり、「ハンドル」ｉ＋およびｉ−は、上記の実施形態の場合と同じである。インスタンス化された機能フィーチャからのコントリビューションが、３つのツリーに同時に与えられる。
【０１１２】
具体的には、薄型ソリッドが、図９〜図１１を参照して上述したように定義されると仮定する。外部形状に対するコントリビューションＡは、図１０を参照して上述したように与えられる。コントリビューションＡは、図１９のツリーにも与えられ、ワードＵ  Ａ  ｅ＋＋−ｅ−＋となる。言い換えると、薄型部品の外部形状は、上側モールドＵから取り除かれる。内部形状に対するコントリビューションＢは、図１０を参照して上述したように与えられる。さらに、このコントリビューションは、図２０のツリーに与えられ、ワードＬ  Ｂ  ｉ＋＋＋ｉ−−となる。このことは、薄型ソリッドの内部形状が下側モールドＬに追加されることを意味する。この段階で、上側および下側モールドに追加用ワードまたはシード構造を提供するだけで、上側および下側モールドが部品そのものとして同時に定義されることが理解されよう。コントリビューションは、上で定義したものと同じであることが理解されよう。ただし、シード構造は、モデリングされたオブジェクト、上側モールドおよび下側モールド用に、３つの別個のワードを含む。
【０１１３】
ここで、第２の機能フィーチャが、取付け部分を追加するためにインスタンス化されると仮定する。図１９のツリーは、Ｕ  Ａ  Ｆｅ＋＋＋−Ｃ  ｅ−＋＋となり、図２０のツリーは、Ｌ  Ｂ  ｉ＋＋＋Ｄ  ｉ−＋Ｅ＋−となる。この例は、シード構造が、部品ならびに上側および下側モールドを並行して設計するために、いくつかのワードを含むことができることを示す。
【０１１４】
したがって、部品の中での新しい機能フィーチャのインスタンス化は、上三角および下三角行列の形状を自動的に更新する。機械加工フィーチャがモールドのすぐ外の部品上に現れないので、ｕという非終端記号は、モールド構造に現れないことに留意されたい。
【０１１５】
図１９〜図２０の例は、エキスパートユーザにシード構造を修正されることにより、このエキスパートユーザが設計システムを自分の要求に適合させること、を可能にすることを示す。
【０１１６】
図２１〜図２９は、本発明の別の実施形態における設計システムを例示する。本実施形態におけるシステムは、非バイナリツリー(non-binary tree)を使用する。非バイナリツリーは、より単純でより短いシード構造の提供を可能にする。共通の非バイナリ文脈自由文法は、図２１〜図２４に示してある。特定の非バイナリ文脈自由文法を使うツリー構造の第１の例は、図２４〜図２６に示してある。非バイナリツリーの使用の第２の例は、図２７および図２８にしめしてある。図２９は、非バイナリツリーを使って、図８〜図１８と同じシード構造を開示している。
【０１１７】
本実施形態では、以下の文脈自由文法を使用する。文法は、ＧＴ＝（Ｘ，Ｖ，Ｐ）であり、この式で、以下が成り立つ。
【０１１８】
【数１６】
2005044365.tif 000018
【０１１９】
終端記号ａは、ツリーのどのノードも表す。終端記号δは、親ノードの下の子ノードの数をカウントする構文フィーチャであり、ツリーを構築するのに使われる。このレベルの抽象化では、オペランド記号と演算記号の間の区別がない。この指定(specialization)は、文法を使うアプリケーションによって行われる。このことは、終端記号の組が、上で挙げた例とは反対に、どの「演算」も含まないことを説明する。
【０１２０】
非終端記号Ｓは、規則の組Ｐに含まれる規則を使って、一連の非終端記号および終端記号によって置き換えられることができる。非終端記号Ｔは、ツリーに分岐を追加し、終端記号δを使って、ツリー中の分岐をカウントするのに使われる。言い換えると、非終端記号Ｔは、ツリー中のどの場所でも、置換を許可することを可能にする。
【０１２１】
第１の規則
【０１２２】
【数１７】
2005044365.tif 000019
【０１２３】
は、非終端記号Ｓを、１つの分岐をもつツリーで置き換える。第２の規則
【０１２４】
【数１８】
2005044365.tif 000020
【０１２５】
は、ツリーのノードＳに１つの分岐を追加する。第３の規則
【０１２６】
【数１９】
2005044365.tif 000021
【０１２７】
は、非終端記号を終端記号で置き換え、通常、ツリーのノードに所与の値、すなわち終端記号が与えられるべきときに使われる。第４の規則
【０１２８】
【数２０】
2005044365.tif 000022
【０１２９】
は、非終端記号を１で置き換え、したがって、シード構造から非終端記号Ｔを削除する。この第４の規則は、所与のノードにこれ以上の分岐を追加する必要がないとき、特にツリーが完成されたときに使われる。
【０１３０】
明らかに、どのバイナリツリーも、φをδ２φで置換することによって書き換えられる場合、この言語に従っている。この文法はしたがって、上で論じられた文法を包含する。
【０１３１】
図２１は、ワードａｈｂｃｄδ３ｅδｇδ３ｉによって符号化されたツリーに対する、この文法の使用を例示する。このツリーは、以下の一連の文法規則によって作成される。
【０１３２】
【数２１】
2005044365.tif 000023
【０１３３】
図２２は、この文法を用いて作成されたワードの構文を調べることができるオートマトンを示す。状態０は初期状態であり、状態１は最終状態である。
【０１３４】
ツリーとワードの間の等価性は、動作をオートマトンの遷移に関連づけることによって、実証されることができる。２つのヒープ、すなわちＨ１およびＨ２が有用である。ヒープに対する標準演算、すなわちポップアップ（オブジェクトをヒープの一番上に置くこと）およびプッシュダウン（ヒープの一番上からオブジェクトを取ること）が利用可能である。遷移（ｐ，ａ，ｑ）に関連づけられた動作は、以下のようになる。
Ｈ２が空でないとき  ｄｏ  ｂｅｇｉｎ
Ｈ２の一番上からｙを取る。
ツリーに枝（ｙ，ａ）を追加する。
エンド
Ｈ１の一番上にａを置く。
遷移（ｑ，δ，ｐ）に関連づけられた動作は、以下のようになる。
Ｈ１の一番上からｙを取る。
Ｈ２の一番上にｙを置く。
【０１３５】
ワード全体が走査された後、ヒープＨ１は、ルートノードであるただ１つのオブジェクトを含むはずであり、ヒープＨ２は、空になるはずである。そうならない場合、構文は間違っている。図２２のオートマトンはしたがって、文法におけるどのツリーの構文のチェックも可能にする。このようなオートマトンの使用はしたがって、エディタ内で、エキスパートユーザによって入力されたシード構造の構文を調べることを可能にする。
【０１３６】
前述の文法は、以下の理由により、メタ言語を定義する。どの（文脈自由）文法も、いわゆる導出木において非終端記号、終端記号および規則を取り込むグラフによって記述されることができる。前述の文法は、どのツリーも記述するように設計されているので、それ自体を記述することができる。ツリー文法の導出木が、図２３に表される。したがって、どのツリーも、この文脈自由文法で記述されることができる。エディタは、明確に設計された何らかの終端記号をもつ、このメタ言語も、この言語のより制限されたバージョンも使うことができる。共通メタ言語の使用は、設計システムの適合可能分野を増加させたが、能力の高いユーザによって行われるべき作業も増加させる。一方、言語の記号または演算をより明確に定義することは、能力の高いユーザがシード構造を書き、または修正することを助ける。
【０１３７】
図２１〜図２３に示した文法は、さらに、指向非循環グラフ(directed acyclic graph)がどのループもサイクルも含まない場合、どの指向非循環グラフも包含することを可能にする。この拡張は、言語が、部品構造のデータフロー中の共有データ、共有入力または結果を処理することを可能にする。データはしたがって、設計システムにおいて共有されることができる。
【０１３８】
図２４は、モデリングされたオブジェクトのプロダクト(product)も構造も表すことができる指向非循環グラフである。このグラフは、共有ノードを必要な回数だけ複製することによって、ツリーに変えられることができる。その結果得られるツリーが、図２５に表される。
【０１３９】
共有(sharing)は、記号の繰返しを通して取り込まれる。開始グラフ(initial graph)は、２つのルートノード、すなわちｉおよびｊを特徴とするので、共有ノードを複製すると、それぞれワードａｅｂｃδ２ｅｃｄδ２ｆδ２ｈｇδ４ｉおよびｇｆｄδ３ｊによって符号化された２つのツリーが生じる。１組のツリーへの、非循環グラフの分解は、一義的でない。たとえば、前述のグラフは、図２６のツリーおよび以下のワードになり得る。
ａｂｃｅδ２ｅｆｈδ２ｇδ４ｉ
ｇｃｄδ２ｆｄδ３ｊ
【０１４０】
このツリー分解の非一義性は、同じレベルの情報が取り込まれるので、障害にならない。可能なより優れたまたは最高の分解基準は、アプリケーションの責任である。
【０１４１】
図２４〜図２６の例から、シード構造および得られるワードは、図１９および２０を参照して例示してあるように一義的でなくてよいことが理解されよう。
【０１４２】
図２７および図２８は、図２１〜図２３の１つから導出された文法で定義された非バイナリツリーを用いるツリー構造を開示する。このツリーは、部品からなる複合アセンブリを設計するのに用いられ、主プロダクトの、そのコンポーネントへのトップダウン型の再帰的分解を取り込む。「・・・含む・・・(includes)」という意味的リンク(semantic link)が、本システムによって取り込まれる。プロダクトストラクチャ文法は、エキスパートユーザが、主プロダクトに追加されたどの装置も、適切な下位プロダクトを自動的に更新するような方法で、予め定義されたスケルトン構造を設計することを可能にする。プロダクトストラクチャコンテキストには、順序への依存がないことを留意されたい。追加される値は、構造定義であり、新しい装置の追加の容易さである。
【０１４３】
ワードＳ１Ｔ１δａＳ２Ｔ２δｂｆＴ３δｃδ３ｄは、図２７で表される単純なツリー構造を取り込む。この構造には、タイプＳおよびＴという非終端記号が備えられている。こうした非終端記号には、理解しやすくするためにのみ、インデックスが与えられる。このツリーにおいて、ｄは部品のアセンブリまたは下位プロダクトａ、ｂおよびｃである。ｆは、下位プロダクトｃのコンポーネントである。非バイナリ文法は、以下の演算により、コンポーネントｅを下位プロダクトａに、かつコンポーネントｇおよびｈを下位プロダクトｃに追加することを可能にする。
【０１４４】
【数２２】
2005044365.tif 000024
【０１４５】
タイプＴの記号は、
【０１４６】
【数２３】
2005044365.tif 000025
【０１４７】
という置換を可能にし、上式においてｘは終端記号であることに留意されたい。この置換は、以下のワードＳ１ｅＴ１δ２ａＳ２Ｔ２δｂｆｇＴ３δ３ｃδ３ｄおよび図２８のツリーを生じる。前述の通り、非終端記号Ｓ１およびＳ２は、さらなる置換のために相変わらず使用可能である。
【０１４８】
非バイナリツリーの使用はしたがって、追加されるコンポーネントの数に対する制限なく、所与のレベルでコンポーネントまたはコントリビューションを追加することをより容易にする。
【０１４９】
非バイナリツリーは、図８〜図１８に示したように、薄型ソリッドを対象としたシード構造用に使われることができる。形式文法は以下のようになる。
【０１５０】
【数２４】
2005044365.tif 000026
【０１５１】
図８〜図１８を参照して論じた文法と比較すると、この文法は、追加終端記号δを含む。上述したように、この記号は、所与のノードから発生した分岐の数をカウントするために使われる。この議論では、単に議論をわかりやすくするために、非終端記号Ｔを使っていない。
【０１５２】
演算の組Ｐ中の第１の演算は、シード構造をもたらす。そのワードは、ｅ＋δ＋ｅ−δ＋δ２−ｉ＋δ＋ｉ−δ＋δ２−δ２−ｕδ＋δ２−であり、対応するツリーは、図８のツリーと同様であり、図２９に表される。繰返しになるが、このシード構造は、メタ文法を使って構築される。ただし、置換のおかげで、ツリーに分岐を追加する能力が提供される。置換は、
【０１５３】
【数２５】
2005044365.tif 000027
【０１５４】
というタイプの演算であり、この演算において、ｚは、非終端記号ｅ＋、ｅ−、ｉ＋、ｉ−およびｕのいずれも表す。置換はしたがって、ｚを含むリストに新しいオペランドを追加する。言い換えると、置換は、ｚに兄弟を追加する。置換は、図８〜１８の実施形態と比較するとツリーの深さが制限されるという点において、ツリーを単純化する。
【０１５５】
コントリビューションは、上述したように定義されることができる。薄型ソリッドおよび取付け部分のコントリビューションを、上記のようにインスタンス化すると、図３０のツリー、または以下のワードをもたらす。
ＡＦｅ＋δ３＋Ｃｅ−δ２＋δ２−Ｂｉ＋δ２＋ＤＥｉ−δ３＋δ２−δ２−Ｇｕδ２＋δ２−
【０１５６】
履歴ベースの設計システムにおける、このワードの評価が、図１４のモデリングされたオブジェクトをもたらすことは明白である。しかし、図３０のツリーの深さは４であり、図１３のツリーの深さは５である。図８のシード構造における追加コントリビューションにより、ツリーの深さはさらに増すことになるが、本実施形態のシード構造への追加コントリビューションによって、図３０のツリーの深さがこれ以上増すことはない。
【０１５７】
したがって、シード構造を定義する、非バイナリ文脈自由文法の使用は、エキスパートユーザに役立つ可能性を広げる。
【０１５８】
次に、本発明の第３の実施形態について、図３１〜図３４を参照して説明する。第３の実施形態は、モデリングされたオブジェクトのコンポーネントに対する変更の後の、このモデリングされたオブジェクトの評価を速めることを可能にする。この目的のために、中間ソリッドが、変更の場合の再評価を避けるように、可能な限り保たれる。
【０１５９】
コンポーネントに対する変更の問題は、図３１に例示してある。図３１は、図１３のツリー構造と似ているが、「ハンドル」をもたないツリー構造を示す。このツリー中のリーフ(leaf)Ｌが修正(modify)されると仮定する。中間ソリッド(intermediate solid)が保たれる場合、再現される演算(replayed operation)は、ルートソリッドから、変更されるリーフソリッドへのパスに対する演算である。図３１の例では、再現される唯一の演算は、ツリーのリーフＬからルートへのパスに対する演算だけであり、すなわち図３１に示した４つの演算である。ソリッドの新しい形状を得るためには、４つの演算だけが再計算(recompute)されればよい。
【０１６０】
この利益を残しておくためには、置換は、既存の中間ソリッドができる限り変化しない状態にとどまるような方法で構造を増分すべきである。これは、新しいソリッドが既存のソリッドの上に現れているので、図８のバイナリツリー文法およびシード構造には当てはまらない。このことは、無用な境界表現演算を引き起こし得る。
【０１６１】
この第３の実施形態における文法およびシード構造の目標は、新しいソリッドを、構造中の可能な最良の場所に配置することである。文法は以下のようになる。
【０１６２】
【数２６】
2005044365.tif 000028
【０１６３】
この文法では、記号ｘは、空集合として評価を行うダミーソリッドを表す。シード構造は、第１の演算によって提供され、置換は、他の演算において提供される。置換は、上で論じた理由のため、明らかに可換的である。
【０１６４】
シード構造は、ワード
ｘｅ＋＋ｘｅ−＋−ｘｉ＋＋ｘｉ−＋−−ｘｕ＋−
であり、図３２のツリーとして表される。品質の観点から見ると、図８の「ハンドル」はそれぞれ、終端記号ｘおよびそれに対応するハンドルから形成される２リーフツリーによって置き換えられる。
【０１６５】
置換規則は、
【０１６６】
【数２７】
2005044365.tif 000029
【０１６７】
によって、文法で表されるように定義され、この式で、ｚはやはり非終端記号ｅ＋、ｅ−、ｉ＋、ｉ−およびｕのいずれをも表し、ａは、どの基本ソリッドも表す。
【０１６８】
このシード構造の演算は、図１１および図１２の同じ薄型ソリッドおよび取付け部分を用いて再度例示される。薄型ソリッドの機能フィーチャは、以下の置換によって取り込まれる。
【０１６９】
【数２８】
2005044365.tif 000030
【０１７０】
この置換は、図３３で表されるツリーまたは以下のワードにつながる。
ｘＡ＋ｅ＋ｘｅ−＋−ｘＢ＋ｉ＋＋ｘｉ−＋−−ｘｕ＋−
【０１７１】
取付け部分の機能フィーチャは、以下の置換によって取り込まれる。
【０１７２】
【数２９】
2005044365.tif 000031
【０１７３】
こうした置換は、図３４で表されるツリーおよび以下のワードをもたらす。
ｘＡ＋Ｆ＋ｅ＋＋ｘＣ＋ｅ−＋−ｘＢ＋ｉ＋＋ｘＤ＋Ｅ＋ｉ−＋−−ｘＧ＋ｕ＋−
【０１７４】
文法により期待されるように、新しい基本ソリッドが、ツリー中で既存のソリッドの後に現れる。したがって、中間結果は、新しいソリッドが追加された後でも保たれ、再利用されることができる。たとえば、ＦがＡの後になり、ＥがＤの後になる。
【０１７５】
本実施形態では、バイナリツリー、および図８〜図１８に示した文法から派生した文法を用いる。この第３の実施形態において論じた利点が、非バイナリツリーにも当てはまることに注目すべきである。同じ解決法を、薄型ソリッド以外の、モデリングされたオブジェクト用に、他のシード構造にも提供することができる。
【０１７６】
本発明は、詳細な説明において提供した例に限定されない。特に、そうした例において論じたシステムとは異なる履歴ベースの設計システムを用いることができる。各実施形態を参照して論じた様々な解決法は、他の実施形態に適用されることができる。このことは特に、エキスパートユーザの職務の説明、および図８〜図１８の第１の実施形態を参照して与えられたシステムの動作の説明に当てはまる。こうした説明は、他の実施形態にも当てはまる。
【０１７７】
上で挙げられた例では、モールドされた薄型ソリッドに言及している。追加の、または代替的な演算およびコントリビューションが、他のタイプのモデリングされたオブジェクト用に使われることができる。たとえば、部品のアセンブリ用に、さらに複数の部品が並置されることを可能にすることができる。このことは、追加の非終端記号を簡単に表す。サーフェスから、モデリングされたオブジェクト、たとえば打抜きによる金属製自動車部品を設計するために終端記号として、曲線およびサーフェスを使うことができる。演算は、したがって、既存のモデリングされたオブジェクトの部品を打ち抜く再限定、または、曲線またはサーフェスをカットするカットを含むことができる。
【０１７８】
上で挙げた例では、非終端記号はすべて、初期シード構造中で使われる。一連の置換規則は、初期シード構造中になかった新しい非終端記号を導入することができる。このようにできることにより、シード構造は、より複雑になり得る。動的な非終端記号が、さらなる置換規則において再利用されることができる。たとえば、いくつかの設計ステップの後、第１のサブトラクション(subtraction)の後でソリッド部品に材料を追加する必要がある。図３０のツリー構造は、この演算をサポートすることができず、材料の追加を可能にする図３５の構造に変えられることができる。図３５のツリーは、ソリッドコントリビューションを取り込む状態にある新しい非終端記号ｆを特徴とする。置換規則のシーケンスは、式
ＡＦｅ＋δ３＋Ｃｅ−δ２＋δ２−Ｂｉ＋δ２＋ＤＥｉ−δ３＋δ２−δ２−Ｇｕδ２＋δ２−
で始まり、この式は、図３０のツリーを表す。この式において、第１のサブトラクション記号は、非終端記号
【０１７９】
【数３０】
2005044365.tif 000032
【０１８０】
で置き換えられ、この記号は、構文を保存し、ノード挿入の準備をする。この結果、以下の式がもたらされる。
【０１８１】
【数３１】
2005044365.tif 000033
【０１８２】
予想通り、シード構造の編集は、メタ文法を必要とする。次いで、以下の置換が実行される。
【０１８３】
【数３２】
2005044365.tif 000034
【０１８４】
この置換、および結果として得られる式は、図３５の予想されるツリーに対応する。
ＡＦｅ＋δ３＋Ｃｅ−δ２＋δ２−ｆδ＋δ２＋Ｂｉ＋δ２＋ＤＥｉ−δ３＋δ２−δ２−Ｇｕδ２＋δ２−
【０１８５】
この例は、同じメタ文法を用いて、より複雑なシード構造を作成するためにシード構造を修正することができることを示す。
【０１８６】
論理変数の値に従って、機能フィーチャに付与された置換規則を実行することもしないことも可能である。この変数は、一般に「アクティビティ(activity)」と呼ばれ、機能フィーチャ定義に組み込まれることができ、エンドユーザは、どの規則またはプログラムを介しても、その値（「真」または「偽」）を定義する。このことは、モデリングされたオブジェクト中に機能フィーチャを保持することを可能にし、機能フィーチャは、コアシステム内のエバリュエータによって考慮されない。機能フィーチャは、非活動化されており、必要な場合に活動化されることができる。論理変数の使用は、モデリングされたオブジェクトの追加ビューの提供も可能にする。たとえば、どの機械加工ステップの前でも、モデリングされたオブジェクトのビューを提供したいと思う場合がある。その場合、モデリングされたオブジェクトを評価する前に、ハンドルｕに与えられるコントリビューションを非活動化する。この例は、完全な機能フィーチャだけでなく、機能フィーチャのコントリビューションも非活動化することができることを示す。
【０１８７】
最後に、置き換えられた非終端記号がターゲット構造中にない場合、置換規則は実行されなくてよい。これは、置換規則の標準動作であり、エラーメッセージにはつながらない。たとえば、上側および下側モールドの例では、図１９および図２０のシード構造は、ハンドルｕを含まない。このことは、コントリビューションＧが考慮されることなく、システムが上側および下側モールドに取付け部分の機能フィーチャを与えることを妨げない。
【０１８８】
上記において、コンピュータシステムにおける本発明の実装形態は、十分詳細には論じられなかった。履歴ベースの設計システム４０の実装形態は、当業者に公知である。図５の追加フィーチャは、同じコンピュータシステムでも、別のコンピュータシステムでも、既存のプログラミング言語（Ｃ＋＋、Ｊａｖａ（登録商標）、フォートランなど）、ならびにどのＣＡＤシステムでも通常は利用可能なプログラムのライブラリなどのツールを使うことによって、実装されることができる。このようなライブラリのプログラムは、以下のことを可能にする。
−オブジェクトを作成する；
−オブジェクトを書く；
−モデリングされたオブジェクトを読む、など。
【０１８９】
したがって、図５に表したように、既存のどのＣＡＤシステムでも本発明を実装することができ、その場合、ＣＡＤシステムは、図５のコアシステム４０として用いられる。
【０１９０】
このこともやはり、ほとんどの既存のＣＡＤシステムが、本発明の追加要素がプログラミングされることができるプログラミングプラットフォームを提供するので、より容易に行われる。
【０１９１】
本発明は、ＣＡＤシステムの好ましい実施形態を参照して説明されたが、コンピュータ支援製造（ＣＡＭ）システムおよびコンピュータ支援エンジニアリング（ＣＡＥ）システムにも適用されることができる。他のシステム、たとえが製品データ管理（ＰＤＭ）システム、仮想製品モデリング（ＶＰＭ）または製品ライフサイクル管理（ＰＬＭ）システム、さらに企業資源計画（ＥＲＰ）システム用に、類似の文法およびメタ文法を使うことができる。このようなシステムは、（一般的な意味における）製品上で実行されるようにタスクを編成する。一般に処理モデラに依拠するこのようなシステムでは、クエリおよびタスクは、順序に依存する。以下のテーブルは、説明したＣＡＤシステムの要素とＰＤＭシステムの要素の間の、可能な対応例を示す。
−履歴ベースの設計システム  順序に基づくクエリシステム；
−機能フィーチャ            パラメトリックタスク(parametric task)；
−フィーチャパラメータ      タスクパラメータ；
−部品                      タスク；
−プリミティブ              基本動作；
−演算                      演算。
【０１９２】
ＰＤＭシステムにおけるタスクとは、基本動作および演算の、順序づけられたシーケンスであり、ＣＡＤシステムにおける部品に対応する。上のテーブルは、ＣＡＤシステムを参照して上で論じられた解決策が、ＰＤＭシステムにも適用され、同様の利点をもたらすことを示す。
【図面の簡単な説明】
【０１９３】
【図１】従来技術における履歴ベースのシステムにおけるコンポーネントを示す図である。
【図２】従来技術における履歴ベースのシステムにおけるコンポーネントを示す図である。
【図３】従来技術における履歴ベースのシステムにおけるコンポーネントを示す図である。
【図４】境界モデリングシステムにおけるコンポーネントを示す断面図である。
【図５】本発明を適用した設計システムを示す図である。
【図６】文脈自由文法における構文を調べるプッシュダウンオートマトンを示す図である。
【図７】文脈自由文法で符号化されたバイナリツリーの例を示す図である。
【図８】本発明の第１の実施形態におけるシード構造を示す図である。
【図９】実施形態における第１の機能フィーチャを示す図である。
【図１０】第１の機能フィーチャにおけるコントリビューションを有するシード構造を示す図である。
【図１１】モデリングされた対応するオブジェクトを示す概略図である。
【図１２】実施形態における第２の機能フィーチャを示す概略図である。
【図１３】第２の機能フィーチャにおけるコントリビューションを有するシード構造を示す図である。
【図１４】モデリングされた対応するオブジェクトを示す図である。
【図１５】モデリングされた他のオブジェクトを示す図である。
【図１６】モデリングされた他のオブジェクトを示す図である。
【図１７】モデリングされた他のオブジェクトを示す図である。
【図１８】モデリングされた他のオブジェクトを示す図である。
【図１９】本発明の第２の実施形態におけるシード構造を示す部分図である。
【図２０】第２の実施形態のためのシード構造を示す別の部分図である。
【図２１】一般的な文脈自由文法で符号化されたツリーの例を示す図である。
【図２２】一般的な文脈自由文法の構文を調べるオートマトンを示す概略図である。
【図２３】一般的な文脈自由文法のグラフを示す図である。
【図２４】指向非循環グラフを示す図である。
【図２５】図２４のグラフに対応するツリーを示す図である。
【図２６】図２４のグラフに対応する別のツリーを示す図である。
【図２７】文脈自由文法における別のツリー構造の例を示す図である。
【図２８】様々な追加コンポーネントで完成された図２７のツリーを示す図である。
【図２９】図８のツリーに対応する非バイナリツリーを示す図である。
【図３０】図１３のツリーに対応する非バイナリツリーを示す図である。
【図３１】ツリーのリーフに対する変更の影響を示す図である。
【図３２】別のシード構造を示す図である。
【図３３】第１の機能フィーチャのコントリビューションを有する、図３２のシード構造を示す図である。
【図３４】第２の機能フィーチャのコントリビューションを有する、図３２のシード構造を示す図である。
【図３５】図３０のツリーに類似した別の例のツリーを示す図である。
【符号の説明】
【０１９４】
４０  履歴ベースの設計システム
４４  エンドユーザインターフェース
４６  パラメータ
４８  選択された機能フィーチャ
５０  コントリビューション
５２  シード構造
５４  データフロー
５６  エディタ
【図１】
2005044365.tif 000035
【図２】
2005044365.tif 000036
【図３】
2005044365.tif 000037
【図４】
2005044365.tif 000038
【図５】
2005044365.tif 000039
【図６】
2005044365.tif 000040
【図７】
2005044365.tif 000041
【図８】
2005044365.tif 000042
【図９】
2005044365.tif 000043
【図１０】
2005044365.tif 000044
【図１１】
2005044365.tif 000045
【図１２】
2005044365.tif 000046
【図１３】
2005044365.tif 000047
【図１４】
2005044365.tif 000048
【図１５】
2005044365.tif 000049
【図１６】
2005044365.tif 000050
【図１７】
2005044365.tif 000051
【図１８】
2005044365.tif 000052
【図１９】
2005044365.tif 000053
【図２０】
2005044365.tif 000054
【図２１】
2005044365.tif 000055
【図２２】
2005044365.tif 000056
【図２３】
2005044365.tif 000057
【図２４】
2005044365.tif 000058
【図２５】
2005044365.tif 000059
【図２６】
2005044365.tif 000060
【図２７】
2005044365.tif 000061
【図２８】
2005044365.tif 000062
【図２９】
2005044365.tif 000063
【図３０】
2005044365.tif 000064
【図３１】
2005044365.tif 000065
【図３２】
2005044365.tif 000066
【図３３】
2005044365.tif 000067
【図３４】
2005044365.tif 000068
【図３５】
2005044365.tif 000069
【外国語明細書】
2005044365000001.pdf