(57)【要約】【課題】コンピュータ支援設計（ＣＡＤ）システムにおけるデータの処理を提供すること。【解決手段】コンピュータ支援設計（ＣＡＤ）システムにおけるデータ処理は、３次元モデルのフィーチャが、訂正を必要とする条件を有しているという決定を含む。条件は、アクションを実施することによって、自動的に訂正される。アクションは、３次元モデル中の一連のフィーチャを並べ替えるアクション、フィーチャの少なくとも１つのパラメータを変更するアクション、フィーチャ参照を削除するアクション、またはフィーチャ参照を変更するアクションでよい。さらに、アクションは、アクションが作用するフィーチャに直接かつ間接的に関連する１組のフィーチャにアクションを制限する１つまたは複数の制約を有し得る。【選択図】図１
2006209763.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ支援設計システムにおいてデータを処理するコンピュータ実装方法であって、
３次元モデルのフィーチャが、訂正を必要とする条件を有していると決定するステップと、
アクションを実施することによって、前記条件を自動的に訂正するステップとを備え、
前記アクションは、前記３次元モデルにおける一連のフィーチャを並べ替える前記アクション群から選ばれた少なくとも１つのアクション、前記フィーチャの少なくとも１つのパラメータを変更するアクション、およびフィーチャ参照を削除し、または変更するアクションを含む複数のアクションから選ばれ、
前記アクションは、複数の直接および間接関連フィーチャがあれば、前記アクションが作用するかどうか判定することによって、前記アクションを制限する１つまたは複数の制約を有していることを特徴とする方法。
【請求項２】
イベント駆動機構を介した通知が、訂正を必要とする条件を前記フィーチャが有しているという決定を助けることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項３】
前記一連のフィーチャは、前記フィーチャおよび他の少なくとも１つのフィーチャからなり、
前記一連のフィーチャを並べ替える前記１つまたは複数のアクションは、前記フィーチャが親フィーチャおよび子フィーチャのどちらであるか、前記他の１つのフィーチャを参照して検討することを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項４】
前記一連のフィーチャを並べ替える前記アクションは、前記フィーチャのタイプを検討することを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項５】
前記一連のフィーチャの中の第１のフィーチャを、前記一連のフィーチャの中の第２のフィーチャに先立って並べ替えるステップをさらに備え、
前記第１のフィーチャはドラフトタイプであり、
前記第２のフィーチャはフィレットタイプであることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項６】
前記一連のフィーチャの中の第１のフィーチャを、前記一連のフィーチャの中の第２のフィーチャに先立って並べ替えるステップをさらに備え、
前記第１のフィーチャはフィレットタイプであり、
前記第２のフィーチャは、前記第１のフィーチャよりフィレット半径が小さいフィレットタイプであることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項７】
前記複数の直接および間接関連フィーチャ中の直接関連フィーチャは、前記フィーチャとの親関係、子関係、クロスパート関係、隣接関係、および幾何学的結合関係の少なくとも１つを有しており、
前記複数の直接および間接関連フィーチャ中の間接関連フィーチャは、前記複数の直接および間接関連フィーチャ中の別の関連フィーチャとの直接関係を有していることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項８】
コンピュータに、
複数のフィーチャからなる３次元モデルを構築させ、
訂正アクションを要求する、前記複数のフィーチャに属すフィーチャにおける条件を認識させ、
複数のアクションから選択される前記訂正アクションを実行させる命令を備え、
前記訂正アクションは、前記複数のフィーチャの配置を並べ替え、前記フィーチャ中のパラメータを修正し、前記フィーチャの参照を変更し、前記フィーチャの参照を削除し、前記フィーチャを多数のフィーチャに分割し、前記フィーチャを第２のフィーチャとマージするプロシージャ群から選択されるプロシージャを実施することを特徴とするコンピュータ可読データ記憶媒体。
【請求項９】
前記プロシージャは、前記フィーチャおよび直接または間接的に前記フィーチャに関連する少なくとも１つである前記複数のフィーチャのサブセットに対して作用することを特徴とする請求項８に記載のデータ記憶媒体。
【請求項１０】
前記プロシージャが作用するフィーチャの範囲は、前記複数のフィーチャの前記サブセットより少数のフィーチャを指定することによってさらに制約されることを特徴とする請求項９に記載のデータ記憶媒体。
【請求項１１】
前記プロシージャは、第１のフィーチャおよび第２のフィーチャが、互いを参照して相対順序を確実に維持するように制約されることを特徴とする請求項８に記載のデータ記憶媒体。
【請求項１２】
前記訂正アクションは、前記フィーチャがイベント駆動中断を受け取った後で実行されることを特徴とする請求項８に記載のデータ記憶媒体。
【請求項１３】
フラグとして振舞う、状況の変化およびデータ構造の設定の一方は、前記イベント駆動中断を起こすことを特徴とする請求項１２に記載のデータ記憶媒体。
【請求項１４】
前記フィーチャを分割する前記プロシージャは、前記フィーチャの非同一エンティティ、ならびに前記フィーチャの凹および凸要素の１つに従って前記フィーチャを分割することを特徴とする請求項８に記載のデータ記憶媒体。
【請求項１５】
前記複数のフィーチャの配置を並べ替える前記プロシージャは、フィーチャタイプおよび親子関係の少なくとも一方に基づいて並べ替えることを特徴とする請求項８に記載のデータ記憶媒体。
【請求項１６】
前記フィーチャのフィーチャタイプはフィレットであり、前記プロシージャは、フィレット半径がより小さい１つまたは複数の関連するフィレットフィーチャを、前記複数のフィーチャのそれぞれのフィーチャの構成順序を表すフィーチャ順において、より後に並べ替えることを特徴とする請求項１５に記載のデータ記憶媒体。
【請求項１７】
前記フィーチャのフィーチャタイプはドラフトであり、前記プロシージャは、１つまたは複数の関連フィレットフィーチャを、前記複数のフィーチャのそれぞれのフィーチャの構成順序を表すフィーチャ順において、より後に並べ替えることを特徴とする請求項１５に記載のデータ記憶媒体。
【請求項１８】
複数のフィーチャおよび前記複数のフィーチャの構成順序を指定するデータ構造からなる３次元モデルを格納するデータ記憶システムに動作可能に結合されたプロセッサと、
前記プロセッサに動作可能に結合され、前記プロセッサを、
前記複数のフィーチャ中の第１のフィーチャに影響する条件を認識し、
前記条件を改めるためのアクションを自動的に起こすように構成するための命令を備えるデータ記憶メモリとを備え、
前記起こされるアクションの動作範囲は、前記第１のフィーチャと関係する前記複数のフィーチャ中の１組のフィーチャからなり、
前記アクションは、並べ替え、パラメータの変更、参照の除去、参照の修正、前記第１のフィーチャおよび第２のフィーチャの一方の分割、ならびに前記第１のフィーチャおよび前記第２のフィーチャの一方のマージの１つであることを特徴とするコンピュータ支援設計システム。
【請求項１９】
前記プロセッサを、前記動作範囲内の１つまたは複数の追加アクションを起こすように構成するための命令をさらに備えることを特徴とする請求項１８に記載のコンピュータ支援設計システム。
【請求項２０】
前記プロセッサを、
前記第１のフィーチャのタイプを判定し、
前記タイプに基づいて、並べ替えアクションを選択するように構成するための命令をさらに備えることを特徴とする請求項１９に記載のコンピュータ支援設計システム。
【請求項２１】
前記第１のフィーチャの前記タイプはフィレットであり、
前記並べ替えアクションは、前記複数のフィーチャの前記構成順序において、前記第１のフィレットを、半径がより小さい、前記動作範囲内の１つまたは複数のフィレットフィーチャに先立って並べ替えることを特徴とする請求項２０に記載のコンピュータ支援設計システム。
【請求項２２】
前記第１のフィーチャの前記タイプはドラフトであり、
前記並べ替えアクションは、前記複数のフィーチャの前記構成順序において、前記第１のフィレットを、前記動作範囲内の１つまたは複数のフィレットフィーチャに先立って並べ替えることを特徴とする請求項２０に記載のコンピュータ支援設計システム。
【請求項２３】
前記第１のフィーチャおよび第２のフィーチャの一方の分割は、非同一エンティティの１つに従って、前記第１のフィーチャおよび前記第２のフィーチャの一方を分割し、前記第１のフィーチャおよび第２のフィーチャのどちらかに隣接する凹および凸面が分割されていることを特徴とする請求項１８に記載のコンピュータ支援設計システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ支援設計（ＣＡＤ）に関し、より詳細には、３ＤフィーチャベースのＣＡＤモデリングシステムにおけるフィーチャの順序付けに関する。
【背景技術】
【０００２】
ＣＡＤ製品を、エンジニアによって設計される３次元（３Ｄ）の形状を設計し取り込むために用いることができる。このような３Ｄ  ＣＡＤ製品は、何年にも渡って発展し、この技術の様々なレベルのものが、今日も依然として用いられている。開発されてきた最も初期のものから最新の３Ｄ技術の順に、ＣＡＤ製品は、３Ｄワイヤフレームモデリング、３Ｄサーフェスモデリング、３Ｄソリッドモデリング、および３Ｄフィーチャベースのモデリングを含む。ワイヤフレームモデリングシステムは、モデルのエッジのみを取り込む。エッジは、線、弧、および他のタイプの曲線からなる幾何形状によって定義される。３次元サーフェスモデリングシステムは、ＣＡＤモデルにおける表面も定義することによって、ワイヤフレームモデリングシステムの機能性をさらに一歩拡張させる。非限定的な例として、表面は、平面、円柱、および錐体を含み得る。
【０００３】
３次元ソリッドモデリングシステムは、ワイヤフレームおよび表面幾何形状技術を、システムがパートの中の幾何形状すべての結合性について知るように組み合わせる。３Ｄソリッドモデリングシステムが、どのエッジが表面に接するか、およびどの２つの表面がエッジを定義するように交差するかを追跡する。この幾何形状の「簿記（ｂｏｏｋ−ｋｅｅｐｉｎｇ）」は、ソリッドモデリングソフトウェアによって、ユーザのために行われる。ブロック、円柱、および錐体など、原始的なソリッド形状を組み合わせることができ、ソフトウェアシステムは、「隙間のない（ｗａｔｅｒ−ｔｉｇｈｔ）」モデルが維持されるように、幾何形状すべてが確実に結び付けられるようにする。
【０００４】
３次元フィーチャベースのＣＡＤモデリングシステムは、ソリッドモデリング技術をさらに拡張する。単純な幾何プリミティブの集合体としてモデルを構築するのではなく、３ＤフィーチャベースのＣＡＤモデリングシステムがフィーチャを利用する。フィーチャのいくつかの例は、指定された距離だけ形状を押し出すことによって作成される押出し、モデルの中の１つまたは複数の鋭エッジを丸くするフィレット、パートのモデルまたはパートの一部分をくりぬくシェル、およびホールを含む。フィーチャの定義に関する情報を取り込むことが可能である。この情報は、フィーチャをどのようにして構築するかを記述することができ、ホールの直径などのパラメータを含み得る。フィーチャの定義はまた、予め定義されたフィーチャから参照される幾何形状をも含み得る（たとえば、ホールの定義は、ホールの場所を指定するための、予め作成された何らかのフィーチャのエッジからの距離を含み得る）。このタイプの情報を取り込むことによって、３ＤフィーチャベースのＣＡＤモデリングシステムは、変更が加えられたとき、必要に応じてフィーチャを更新するための能力を有する。たとえば、ホールの直径を指定するパラメータを変更することによって、ホールの幾何形状は、新たな直径を反映するようにアップデートすることができる。親フィーチャ（すなわち、従属フィーチャへの階層パスを有する、予め定義されたフィーチャ）に変更があった場合、フィーチャの階層関係の結果として親フィーチャを暗黙的に参照する、後から定義されたフィーチャ（これ以降、子または子フィーチャと呼ばれる）が、親フィーチャ中のエッジからの距離を維持するホールなど、予め定義された関係を維持するようにアップデートされる。
【０００５】
作成されたフィーチャの間の親／子関係、および子フィーチャの、その子フィーチャの１つまたは複数の親への依存の結果として起こるアップデートに起因して、階層データ構造におけるフィーチャのシーケンスまたは順序は、非常に重要である。３ＤフィーチャベースのＣＡＤモデリングシステムにおいて、親は、常に、それに依存する子のいずれにも先立って定義されるべきである（たとえば、ホールフィーチャの場所が依存する、あるサイズの曲面フィーチャ）。
【０００６】
親／子関係に加えて、フィーチャの順序は、モデルの、結果として得られた幾何形状、およびモデルに変更が加えられたときに必要となり得るアップデートが成功する程度を左右し得る。さらに、フィーチャの定義中で使われる参照の組合せおよび参照のタイプも、モデルの幾何形状およびアップデートが成功する程度を左右し得る。
【０００７】
フィーチャの順序つきリストは、３ＤフィーチャベースのＣＡＤモデリングシステム、またはフィーチャベースのモデラにおけるモデルを構築する手法を提供する。この手法は、モデルがアップデートされる必要があるとき、たとえば、非限定的な例として、モデルに変更が加えられたときに、順序通り評価される。ただし、特定の状況下では、１つまたは複数の変更がモデルに加えられた後、ＣＡＤシステムは、１つまたは複数のフィーチャを成功裏に更新できなくなる場合がある。アップデートの成功を妨げ得る問題は、より後で定義されたフィーチャからの幾何形状を調整するには小さすぎる、より前に定義されたフィーチャからの幾何形状、または、もはやモデルに存在しない、またはアクセス可能でないフィーチャの定義中で使われる参照を含む。モデル中で起こり得る問題の種類および組合せは、ユーザには計り知れないものとなる場合がある。問題が起こると、ＣＡＤシステムは、成功裏にアップデートすることができないフィーチャを識別することができ、そうすることによって、ユーザは、アップデートの成功を可能にするようなフィーチャの順序づけを目標として、モデルのフィーチャを手作業で固定し、または手作業で並べ替えるプロセスを始めることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
モデルは、数百のフィーチャを含むことができ、モデル階層でのフィーチャ順、およびモデルにおける様々なフィーチャの間の関係の管理および固定は、ユーザにとって非常に時間がかかる場合がある。問題が起きたときの問題の解決には、どのようにして、フィーチャすべてが対話して、モデル（たとえば、親子関係および相互参照）を定義するかに関して、ユーザによる相当の洞察を要する。問題解決には、フィーチャを成功裏にアップデートする絶好の機会を生かすように、様々なフィーチャの相互関係を念頭に置いた、フィーチャの定義に関する考慮も必要となる。その結果、３ＤフィーチャベースのＣＡＤモデリングシステムは、モデルはそれ程複雑でなくても、使いにくくなる可能性がある。
【課題を解決するための手段】
【０００９】
概して、一態様において、本発明は、ＣＡＤシステムにおいてデータを処理するコンピュータ実装方法を特徴とする。本方法は、３次元モデルのフィーチャが、訂正を必要とする条件を有していると決定することを含む。この条件を自動的に訂正するためのアクションが起こされる。アクションは、３次元モデル中の一連のフィーチャを並べ替えるアクション、フィーチャの少なくとも１つのパラメータを変更するアクション、およびフィーチャ参照を削除または変更するアクションを含むいくつかのアクションから選ばれる。さらに、アクションは、アクションが作用するフィーチャに直接かつ間接的に関連する、１組のフィーチャへのアクションを制限する１つまたは複数の制約を有している。
【００１０】
実装形態は、非限定的な例として、フィーチャが、訂正を必要とする条件を有しているという決定を助けるイベント駆動機構を介した通知などのフィーチャを含み得る。さらに、アクションの結果、一連のフィーチャが並べ替えられる際の考慮すべき点の中には、１つまたは複数のフィーチャに関して、フィーチャが、関連フィーチャに関して親フィーチャであるか、それとも子フィーチャであるかということ、およびフィーチャタイプがある。非限定的な例として、フィーチャがフィレットフィーチャであり、関連フィーチャがドラフトフィーチャである場合、ドラフトフィーチャは、フィレットフィーチャに先立って順序づけることができ、大きいフィレットフィーチャは、より小さいフィレットフィーチャに先立って順序づけることができ、モデルへのアップデートが成功する可能性を高める。
【００１１】
本発明の１つまたは複数の実施形態の詳細を、添付の図面および以降の説明に示す。本発明の他の特徴、目的、および利点が、説明および図面から、かつ特許請求の範囲から明らかになるであろう。
【発明を実施するための最良の形態】
【００１２】
本発明は、３ＤフィーチャベースのＣＡＤモデリングシステムにおける認識およびアクティブフィーチャ（これ以降、ＡＡＦとも呼ばれる）を提供する。認識およびアクティブフィーチャは、３ＤフィーチャベースのＣＡＤモデリングシステムによって生成されるフィーチャの機能を強化し、フィーチャ管理に関して、３ＤフィーチャベースのＣＡＤモデリングシステムのユーザの責任を大幅に削減する。１つまたは複数の既存フィーチャの不具合または他の望ましくない条件を引き起こす変更がモデルに加えられると、認識およびアクティブフィーチャは、自動的に自己修復する。自己修復は、たとえば、内部参照、パラメータ設定、フィーチャ順、またはこれらの組合せを変更することによって起こり得る。フィーチャが自己修復するための能力を組み入れることによって、３ＤフィーチャベースのＣＡＤモデリングシステムは、大幅に使いやすくなる。
【００１３】
ＡＡＦとは、望ましくない条件を認識し、条件に応答する能力があるフィーチャである。モデルのフィーチャをすべて監視し管理しようと試みるＣＡＤシステムを実現するのではなく、本明細書に記載する本発明は、個々のフィーチャが、その特定の条件の特性に基づいて、かつ他のフィーチャとの直接および間接的関係に基づいて、望ましくない条件の修復を管理できるようにする。
【００１４】
ＡＡＦは、望ましくないいくつかの条件を認識することができる。条件のタイプは、ＡＡＦが属す、モデリングされたパートまたはアセンブリの条件である局所的な条件、あるいは１つまたは複数の関連フィーチャ（たとえば、親、子、参照フィーチャ、またはＡＡＦに隣接し、もしくは幾何学的に結び付けられたフィーチャ）の条件を含む。条件は、ＡＡＦのアップデート状況（たとえば、アップデートプロセス中に不具合が起きたかどうか）、参照の欠如、および無効な幾何形状の存在を含み得るが、それに限定されない。
【００１５】
条件に応答するために、ＡＡＦは、条件を修復するためのいくつかのアクションを起こし得る。このようなアクションは、ＡＡＦを定義するのに使われるパラメータのうち１つまたは複数の変更、参照の変更または消去、フィーチャ順における位置の変更、多数のフィーチャへのフィーチャの分割、および他のフィーチャとのフィーチャのマージを含み得るが、それに限定してはならない。
【００１６】
動作効率のために、当業者は、ＡＡＦが識別し得る条件の数の制限を望む場合がある。同様に、条件に応答するためにＡＡＦがとり得る訂正アクションの数も、モデリングシステムの効率を最大限にするために、制限することができる。
【００１７】
ＡＡＦを使用するモデリングシステムには、プログラムによって、上位レベルからのモデルのフィーチャすべての監視および管理を必要としないという利点がある。評価されるフィーチャの範囲は、直接または間接的に互いに関連するフィーチャによって制限され、したがって、大域的な分析ではなく局所的な分析が要求される。ＡＡＦは、その特定のＡＡＦに内部的に影響する条件に応答するだけである。さらに、ＡＡＦによって起こされるアクションが、別のＡＡＦにおいて条件を引き起こす場合、別のＡＡＦは、その条件に応答する。
【００１８】
概して、モデルの中の全フィーチャタイプは、モデルのフィーチャ順における位置の管理など、全般的なＡＡＦ機能を有することができる。特定のフィーチャタイプ（たとえば、フィレット、ドラフト、およびシェル）は、全般的な機能を超えて、追加ＡＡＦ機能を有し得る。ＡＡＦ機能は、既存のＣＡＤ製品の機能性に組み入れることができ、従来のフィーチャの振舞いに指示を与えるデータ構造を含み得る。
【００１９】
ここで図１を参照すると、条件（たとえば、ＡＡＦに対するエラーまたは不具合を引き起こす状況）を評価し応答するプロシージャ１００を示してある。この評価は、条件を訂正するための１つまたは複数のアクションの呼出しにつながる。条件は、ＡＡＦの不具合状況、ＡＡＦに関連する１つまたは複数のフィーチャに対する不具合状況、ＡＡＦまたは関連フィーチャにおいてフラグをセットすることによって示される条件（たとえば、フィーチャがそれ自体の並べ替えを試みたが、失敗したとき）、およびモデルのデータ構造においてフラグをセットすることによって示される条件を含み得る。ＡＡＦは、その不具合状況を調べることができ、１つまたは複数の関連フィーチャの１つまたは複数の状況インジケータを調べることができる。
【００２０】
プロシージャ１００は、始めに、対象となっているＡＡＦが認識している第１の条件を評価し（ステップ１０）、条件に対して規定された１組のアクションを循環するのに使われる変数ｎを１にセットする（ステップ１１）。上述したように、ＡＡＦアクションは、ＡＡＦのパラメータ、参照、およびフィーチャ順における位置の変更を含み得る。通常、自己修復用のＡＡＦによってアクションが起こされる。
【００２１】
プロシージャ１００は次いで、評価されるべき条件にＡＡＦが直面しているかどうか調べ（ステップ１２）、この場合、条件は、ＡＡＦが変化することを要求し得る。条件が発生しているかどうかをＡＡＦが調べるための一方法は、状況フラグを評価することによるものである。ＡＡＦが条件に直面していない場合、およびすべての条件がまだ調査されているわけではない場合（ステップ２６）、プロシージャ１００は、ＡＡＦが認識している次の条件の評価に進む（ステップ２４）。
【００２２】
ただし、実装形態は、イベント駆動でよく、このことは、（たとえば、状況フラグを評価することによって）条件が発生しているかどうか調べるのではなく、特定の条件が存在することを示すソフトウェアの中断によって、ＡＡＦを起こすことができることを意味する。したがって、ＡＡＦには、イベントを自動的に通知することができる。このようなイベントは、たとえば、１つまたは複数の状況フラグの変更や１つまたは複数の特定のフラグのセットを含み得る。自動通知は、フィーチャ関係（たとえば、親、子、およびクロスパート関連付け）に基づいて暗黙的に確立することも、たとえば、ＣＡＤモデリングシステムのユーザによって明示的に確立することもできる。
【００２３】
評価される条件にＡＡＦが直面している場合（ステップ１２）、ＡＡＦは、その条件に応答して、第１のアクションを決定する（ステップ１４）。ＡＡＦが直面している条件に対して、ＡＡＦは、１つまたは複数のアクションを利用して、条件への対処を試みる。ＡＡＦは、その条件にＡＡＦが直面しなくなる（ステップ１８でテストされる）まで、またはすべてのアクションが起こされるまで（ステップ２０でテストされる）、各アクションを実施する（ステップ１６）。
【００２４】
ＡＡＦは、全条件が調査される（ステップ２６）まで、調査される条件の設定を含む反復プロセスを介して各条件を調査する（最初にステップ１０で、その後はステップ２４で）。ただし、上述したように、反復プロセスではなくイベントがＡＡＦを中断する可能性があり、この場合、直面している条件を示すイベントの中断とともに、データを提供することができる。
【００２５】
図２は、モデルに属すパートのＡＡＦ中を反復する反復プロシージャ２００を示す。パートのＡＡＦ中の概略フローは、パートの中のフィーチャ順（フィーチャ履歴としても知られる）によって定義され、この順序は、フィーチャが作成される順序に従って、最初に確立されることに留意されたい。これ以降、作用を受けているＡＡＦは、ターゲットＡＡＦまたはターゲットフィーチャと呼ばれる。パートのＡＡＦ中の反復は、最後の反復中にパートの中の少なくとも１つのフィーチャに変更がある（ステップ５８）限り、継続する。パートの中の第１のＡＡＦで始まり（ステップ５０）、各ＡＡＦに対してアクションが起こされる（ステップ５２）が、これについては図３により詳しく示す。パートの中の全ＡＡＦを繰り返した（ステップ５４およびステップ５６）後、現在の反復において１つまたは複数のフィーチャに変更があった場合（ステップ５８でテストされる）、プロシージャ２００は、第１のＡＡＦに戻って、反復サイクルを再度開始する（ステップ５０）。
【００２６】
ここで図３を参照すると、プロシージャ３００は、図２のステップ５２を詳しく示す。ＡＡＦが編集モードにない（ステップ９８でテストされるが、これについては図４のステップ１０８を参照して後で論じる）限り、プロシージャ３００は、ＡＡＦフィーチャタイプに応じて適切なアクションを開始する。プロシージャ３００は、フィーチャタイプがフィレット（ステップ８０）、ドラフト（ステップ８２）、シェル（ステップ８４）、および他の具体的なフィーチャタイプ（ステップ８６）であるかどうかを含む、ＡＡＦのフィーチャタイプを調べる。プロシージャ３００は次いで、ターゲットＡＡＦフィーチャタイプを扱うプロセスの実行（それぞれ、ステップ８８、９０、９２、または９４）に進む。たとえば、ターゲットＡＡＦのフィーチャタイプがフィレットの場合、プロシージャ３００は、フィレットに関連するプロセスを実行する（ステップ８８）が、これについては図１０を参照してより詳しく記述する。ターゲットＡＡＦに具体的なフィーチャタイプが関連づけられていない場合、プロシージャ３００は、全般的なプロセスを実行する（ステップ９６）が、これについては図４を参照してより詳しく記述する。
【００２７】
ここで図４を参照すると、全般的なアクションプロシージャ４００を示してある。プロシージャ４００は、最初に、並べ替えグラフを構築する（ステップ１００）が、これについては図５Ａにより詳しく示す。プロシージャ４００は次いで、並べ替えグラフに基づいて、ターゲットＡＡＦがフィーチャ順における理想的な場所にあるかどうかテストし（ステップ１０２）、理想的な場所にある場合、プロシージャ４００は終了する。ターゲットＡＡＦがフィーチャ順における理想的な場所にない場合、フィーチャ階層として表すことができる、フィーチャシーケンス中でのターゲットＡＡＦの並べ替えが試みられる（ステップ１０４）。プロシージャ４００は次に、試行フラグがセットされているかどうか調べる（ステップ１０６）。セットされている場合、試行フラグは、ターゲットＡＡＦが理想的な場所に到達できないことを示し、ターゲットＡＡＦに関連するフィーチャがアクションを起こすことができ、次いで、このアクションの結果、ターゲットＡＡＦが理想的な場所に到達できるようになる可能性がある。この場合、ターゲットＡＡＦ用のＥｄｉｔＭｏｄｅフラグが、ＴＲＵＥにセットされ（ステップ１０８）、プロシージャ４００は次いで、関連フィーチャへのＴａｋｅＡｃｔｉｏｎプロシージャを実行して（ステップ１１０）、図７でより詳しく記述するように、ターゲットＡＡＦに関連するフィーチャに対してアクションを起こす。
【００２８】
関連フィーチャへのアクション（ステップ１１０）がとられた後、プロシージャ４００は、図６でより詳しく記述するように、フィーチャ順におけるターゲットＡＡＦの並べ替えを再度試み（ステップ１１２）、ターゲットＡＡＦ用のＥｄｉｔＭｏｄｅフラグをＦＡＬＳＥにセットし（ステップ１１４）、終了する。
【００２９】
好ましい実施形態では、関連フィーチャへのＴａｋｅＡｃｔｉｏｎプロシージャ（ステップ１１０）は、再帰的にコールされ、親、子、および隣接フィーチャ、ならびにターゲットＡＡＦと関係がある他のフィーチャに対して作用する。関連フィーチャへのＴａｋｅＡｃｔｉｏｎプロシージャ（ステップ１１０）を再帰的にコールすることができる間、このプロシージャは、ターゲットＡＡＦに関連するＡＡＦのどれに対しても、一度より多くコールされてはならない。
【００３０】
ここで図５Ａを参照すると、プロシージャ５００は、ターゲットフィーチャ用の並べ替えグラフを構築する。並べ替えグラフ（その例示的な例を図５Ｂに示す）は、パートの中の各フィーチャごとに計算されたスコアを表す。スコアは、フィーチャ順におけるフィーチャの場所を判定し並べ替えるのに使われる。概して、フィーチャ順における、ＡＡＦにとって理想的な場所は、関連フィーチャが実施を試みている並べ替えのタイプに基づいて判定される。関連フィーチャは、親、子、および幾何形状的に隣接するフィーチャを含む。プロシージャ５００は、図８を参照してさらに完全に論じるが、フィーチャシーケンス中でより後に並べ替えることを望むターゲットフィーチャの親（ステップ１２０およびステップ１２１）と、フィーチャシーケンス中でより前に並べ替えることを望む子（ステップ１２２およびステップ１２３）と、フィーチャシーケンス中でより後に並べ替えることを望むより前の隣接フィーチャ（ステップ１２４およびステップ１２５）と、フィーチャシーケンス中でより前に並べ替えることを望むより後の隣接フィーチャ（ステップ１２６およびステップ１２７）とを含む、ターゲットフィーチャに関連するフィーチャの並べ替えグラフを作成することができる。場所スコアは次いで、図９を参照してさらに記述するように、隣接フィーチャの間の順序関係を維持するために下げ調整される（ステップ１２８およびステップ１２９）。
【００３１】
図５Ｂは、１５個のフィーチャを有するパートの中の例示的なターゲットＡＡＦ（フィーチャ８）用の例示的な並べ替えグラフを提示する。図５Ａに示した各並べ替えルーチンに対する図５Ａの記述に基づいて、ターゲットフィーチャの前および／または後のフィーチャの場所にスコア値を追加することができる。並べ替えグラフは、ターゲットフィーチャに対する、各フィーチャの関係を列挙する（たとえば、フィーチャ５は、好ましくはより後に並べ替えられる隣接および親フィーチャとして列挙される）。この関係に基づき、図８の実施形態の例示的なスコア値に相応して、「６」というスコア値が、図５Ｂの「フィーチャ５」で始まる行にある左の列の見出し「スコア付け」の下に示されるように、フィーチャ８の後のフィーチャに対応する各場所に追加される。他のスコア値は、各関連フィーチャの影響を示す、図５Ｂに示す注で示す。スコア値がそれぞれ、各場所に対して追加されると、ターゲットフィーチャ向けの理想的な場所は、スコア値が最高である場所の後の場所と見なすことができる。図５Ｂでの例示的なスコア値およびフィーチャとして、フィーチャ８向けの理想的な場所は、フィーチャ６の後である。
【００３２】
図６を参照すると、プロシージャ６００は、ターゲットＡＡＦが理想的な場所への並べ替えを試みるためのプロセスを示す。ターゲットフィーチャがその理想的な場所になく（ステップ１５０でテストされる）、理想的な場所に到達することができない（ステップ１５２でテストされる）場合、プロシージャ６００は、ターゲットＡＡＦを、理想的な場所に最も近い場所に並べ替えようと試みる（ステップ１５４）。ターゲットＡＡＦがその理想的な場所になく（ステップ１５０でテストされる）、理想的な場所に到達することができる（ステップ１５２でテストされる）場合、ターゲットＡＡＦは、理想的な場所に並べ替えられる（ステップ１５６）。理想的な場所に最も近い場所または理想的な場所への並べ替えにより、ターゲットＡＡＦが不具合を起こす（それぞれ、ステップ１５８およびステップ１６０でテストされる）場合、並べ替えは取り消され（ステップ１６２）、試行フラグは、並べ替えグラフに応じて、より前またはより後の順序を示すようにセットされる（ステップ１６４）。
【００３３】
理想的な場所に最も近い場所への並べ替え（ステップ１５４）により、ターゲットＡＡＦが不具合を起こさない（ステップ１５８でテストされる）場合、試行フラグは、理想的な場所に相対的に最も近い場所に応じて、より前またはより後の位置を示すようにセットされ（ステップ１６４）、プロシージャ６００は終了する。ターゲットＡＡＦが、既に理想的な場所にある（ステップ１５０でテストされる）か、または理想的な場所への並べ替えにより、ターゲットフィーチャが不具合を起こさない（ステップ１６０でテストされる）場合、試行フラグはクリアされ（ステップ１６６）、プロシージャ６００は終了する。
【００３４】
図７を参照すると、プロシージャ７００、すなわち関連フィーチャへのＴａｋｅＡｃｔｉｏｎは、ターゲットＡＡＦに関連するフィーチャに対して後続のアクションを起こす。（図３を参照して論じたように、このようなアクションは、ターゲットフィーチャに関連するフィーチャのフィーチャタイプ（たとえば、フィレット、ドラフト、フィレット、シェル、または他の具体的なタイプ）に依存する。関連フィーチャは、ターゲットフィーチャの各親フィーチャ（ステップ１８０）、ターゲットフィーチャの前の各隣接フィーチャ（ステップ１８２）、ターゲットフィーチャの各子フィーチャ（ステップ１８４）、およびターゲットフィーチャの後の各隣接フィーチャ（ステップ１８６）を含み得る。関連フィーチャの順序は、特定の関連フィーチャがターゲットフィーチャの順序付けに対して与え得る相対的インパクトを示し得る。
【００３５】
図８は、プロシージャ５００からコールされる（図５Ａのステップ１２０に示す）ように、ターゲットフィーチャの親フィーチャが、ターゲットフィーチャの後の場所への並べ替えを望むときに、場所スコアを判定する例示的なプロシージャを示す。図９は、プロシージャ５００からコールされる（図５Ａのステップ１２８に示す）ように、場所スコアを判定して、隣接フィーチャの間の順序関係を維持するようにスコアを調節する例示的なプロシージャを示す。他の並べ替えケースを扱うプロシージャ（たとえば、プロシージャ５００のステップ１２２、１２４、１２６からコールされる）も、図５Ａに提示したそれぞれの命令に基づいて、同様に構成することができる。他の並べ替え方式は、ＡＡＦが実装されるモデリングシステムによって維持される、フィーチャの間の関係に応じて企図することができる。
【００３６】
特に図８を参照すると、プロシージャ８００は、ターゲットＡＡＦの親フィーチャを循環するが、ターゲットＡＡＦの第１の親フィーチャから始まり（ステップ２００）、ターゲットＡＡＦの次の親フィーチャに繰り返し循環し（ステップ２０２）、最後の親フィーチャが処理される（ステップ２０４でテストされる）まで続く。現在反復されている親が、より後に並べ替えることを望む（ステップ２０６でテストされる）場合、ターゲットフィーチャの後の、フィーチャ履歴中に置かれた各フィーチャに対する場所スコアが、スコア値（ステップ２１０またはステップ２１２でセットされる）によって増加され（ステップ２０８）、ターゲットフィーチャの後の、フィーチャ履歴中に置かれた第１のフィーチャから始まり（ステップ２１４）、次の場所に繰り返し循環し（ステップ２１６）、最後の場所が処理される（ステップ２１８）まで続く。スコア値は、不具合があったという状況を親が有するかどうか（ステップ２２０で判定される）に依存する。
【００３７】
例示的な一実施形態では、不具合がなかった、および不具合があった親フィーチャのスコア値を、それぞれ６および１０として示してある（それぞれステップ２１０および２１２でセットされる）。代替実施形態では、こうした値はそれぞれ変わり得る。スコアの相対値は、関連フィーチャの並べ替えがターゲットフィーチャの順序付けに与え得る相対的インパクトを示し得る。様々な代替実施形態において、スコア値は、関係のタイプおよびフィーチャの不具合状況に依存し得る。例示的なスコア付け値は、以下のようになり得る。
【００３８】
不具合があった親＝１０
親＝６
不具合があった子＝１０
子＝６
不具合があった隣接フィーチャ＝４
隣接フィーチャ＝２
【００３９】
図９は、ターゲットフィーチャに隣接する各フィーチャを循環するプロシージャ９００を示し、このプロシージャは、ターゲットフィーチャに隣接する第１のフィーチャで始まる（ステップ２４０）。プロシージャ９００は、現在の反復における隣接フィーチャが、パートの中のフィーチャ順においてターゲットフィーチャの前に位置するかどうか（ステップ２４２でテストされる）調べる。
【００４０】
現在の反復における隣接フィーチャが、フィーチャ順においてターゲットフィーチャの前に位置する場合、プロシージャ９００は、パートの中の第１のフィーチャに移り（ステップ２４４）、対応する場所のスコア値を削減し（ステップ２５０）、次いで、現在のフィーチャが、現在の反復における隣接フィーチャの直前のフィーチャであるかどうか（ステップ２４８でテストされる）調べる。現在のフィーチャが、現在の反復における隣接フィーチャの直前のフィーチャでない場合、プロシージャ９００は、現在のフィーチャが、パートの中の次のフィーチャとなるように繰り返し循環し（ステップ２４６）、現在のテスト済みフィーチャの対応する場所のスコアを削減し（ステップ２５０）、現在のフィーチャが、現在の反復における隣接フィーチャの直前のフィーチャであるかどうか（ステップ２４８でテストされる）調べるプロセスを繰り返す。プロシージャ９００は、このようにして、現在の反復における隣接フィーチャの直前の現在のフィーチャを処理する（ステップ２４８でテストされる）まで繰り返し進む。
【００４１】
現在の反復における隣接フィーチャが、フィーチャ順においてターゲットフィーチャの前に位置しない（ステップ２４２でテストされる）場合、プロシージャ９００は、隣接フィーチャに移り（ステップ２５２）、現在のフィーチャの対応する場所のスコア値を削減し（ステップ２５８）、フィーチャ順でパートの中の最後のフィーチャを処理するまで、パートの中の次のフィーチャに繰り返し循環し（ステップ２５４）、その対応する場所のスコア値を削減する（ステップ２５８）（ステップ２５６でテストされる）。
【００４２】
ターゲットフィーチャの前または後のフィーチャを繰り返し循環すると、プロシージャ９００は次いで、現在の反復において予め処理された隣接フィーチャが、パートの中で最後の隣接フィーチャであるかどうか（ステップ２６０でテストされる）判定し、最後の隣接フィーチャである場合、プロシージャ９００は終了する。現在の反復において予め処理された隣接フィーチャが、パートの中のフィーチャ順において最後の隣接フィーチャでない（ステップ２６０でテストされる）場合、新たな反復においてターゲットフィーチャの次の隣接フィーチャが処理される（ステップ２６２）。
【００４３】
ここで図１０を参照すると、フィーチャタイプがフィレットであるターゲットフィーチャに対するＴａｋｅＡｃｔｉｏｎプロシージャ１０００（たとえば、プロシージャ３００のステップ８８からコールされる）を示してある。不具合があったという状況がない（ステップ２８０でテストされる）フィレットターゲットフィーチャの場合、プロシージャ１０００は終了する。
【００４４】
不具合があったという状況があるフィレットターゲットフィーチャ（ステップ２８０でテストされる）の場合、図１１により詳しく示すように、フィーチャは、半径がターゲットフィーチャより小さい、パートの中の他の関連するフィレットフィーチャの前に並べ替えられる（ステップ２８２）。このような並べ替えの後で、ターゲットフィーチャに依然として不具合がある（ステップ２８４でテストされる）場合、ターゲットフィーチャは、隣接フィーチャとの相対的な位置を変え（ステップ２８６）、プロシージャ１０００は終了する。
【００４５】
ここで図１１を参照すると、プロシージャ１１００を示し、図１０のステップ２８２をより詳しく示してある。パートの中に、ターゲットフィレットフィーチャに隣接するフィレットフィーチャがある（ステップ３００でテストされる）場合、ターゲットフィレットフィーチャより半径が小さい各隣接フィレットフィーチャを指定するリストが構築される（ステップ３０２）。親／子関係によって、ターゲットフィーチャが、半径がより小さい第１のフィレットフィーチャの前に並べ替えられるのが妨げられる（ステップ３０４でテストされる）場合、ターゲットフィーチャは、半径がより小さい第１の隣接フィレットフィーチャに可能な限り近くに並べ替えられ（ステップ３０６）、試行フラグが、より前に並べ替えるようにセットされ（ステップ３０８）、次いで、プロシージャ１１００は終了する。親／子関係により、ターゲットフィーチャが第１のフィレットフィーチャの前に並べ替えられるのが妨げられない（ステップ３０４でテストされる）場合、ターゲットフィーチャは、半径がより小さい第１の隣接フィレットフィーチャの前の場所に並べ替えられ（ステップ３１０）、試行フラグはクリアされ（ステップ３１２）、プロシージャ１１００は終了する。
【００４６】
本発明の実装形態では、並べ替えグラフを構築し、フィーチャの場所にスコア付けする必要がない。そうではなく、一実装形態では、たとえば、フィーチャを並べ替え、フィーチャのパラメータを変更し、または参照を消去もしくは変更することによって、望ましくない条件の訂正を助けるための１組のアクションを単に提供することができる。図１０および図１１を参照して上述し論じたように、このような１つのアクションは、関連フィーチャの中で、半径がより大きいフィレットフィーチャが、フィーチャ履歴中の、半径がより小さいフィレットフィーチャに確実に先行するようにし得る。別のアクションは、１つまたは複数の関連するフィレットフィーチャにドラフトフィーチャが先行するようにフィーチャを並べ替えることができる。このようなアクションの少なくとも１つの目的は、フィレットおよびドラフトフィーチャに対して実施される動作を簡素化し、その結果得られる幾何形状を簡素化することである。あるいは、たとえば、フィレットフィーチャは、可変半径に関するものである必要があり得る。実際、モデリングシステムはしばしば、フィレットを有する曲面を下書き（すなわち、先細に）しようとして失敗し、一方、不具合は、下書きした曲面に輪郭線をつけるときに起こり得る。概して、フィーチャタイプに応じて、各フィーチャは、その特定のタイプのフィーチャに適した１組のアクションを含み、またはアクションにアクセスする。さらに、望ましくない条件が存在しなくなるまで、アクションが適用される。
【００４７】
アクションが作用するフィーチャの範囲は、ターゲットフィーチャと直接または間接的に関係するフィーチャに限定される。関係は、親／子、隣接幾何形状、および交差する幾何形状を含み得るが、それに限定されない。たとえば、ターゲットフィレットフィーチャが、パートの中のより小さいすべてのフィレットフィーチャの前に並べ替えられることはなく、ターゲットフィレットフィーチャは、ターゲットフィーチャに隣接する幾何形状を有する別のフィレットフィーチャなど、並べ替えられるフィレットフィーチャと関係するフィーチャの前にだけ並べ替えられることになる。
【００４８】
ときには、エンティティの集合体から、フィーチャを定義することができる。たとえば、１つのフィレットフィーチャは、輪郭線をつけられるエッジの集合体でよい。並べ替えフィーチャが、望ましくない条件を修復しない場合、アクションが、フィーチャを断片に分割することができる。分割されるフィーチャは、望ましくない条件を提示するフィーチャでも、関連フィーチャでもよい。同一でない断片へのフィーチャの分割は、次いで、望ましくない条件を提示するフィーチャを並べ替えさせる。フィーチャの幾何形状分析は、フィーチャの様々なエンティティが交差するのか、それとも互いに隣接するのか判定し、そうすることによってエンティティが互いから解体されるのかどうか判定することができる。
【００４９】
さらに、アクションが、輪郭線をつけられるエッジの集合体を有するフィレットフィーチャを、エッジに隣接する曲面が凸であるか、それとも凹であるか（すなわち、鋭角を形成するか、それとも鈍角を形成するか）に応じて、断片に分割することができる。その結果、分割フィーチャは、２つのフィーチャ、すなわち隣接する凸面を有する全エッジを含む１つのフィーチャ、および隣接する凹面を有する全エッジを含む別のフィーチャとして表される。
【００５０】
フィーチャが参照を失うと、望ましくない条件が起こり得る。この状況は、並べ替えられたフィーチャが参照するエンティティ（エッジや曲面など）が存在しなくなった場所にフィーチャが並べ替えられると起こり得る。というのは、エンティティは、フィーチャリストまたは階層において、並べ替えられたフィーチャに先行するからである。この場合、並べ替えられたフィーチャは、動作を実施するための、参照されるエンティティを位置決めすることができなくなる。エンティティは存在するが、並べ替えられたフィーチャが見つけることができない場所にある条件に対する解決策は、並べ替えられたフィーチャを、参照されるエンティティが失われる前に、モデル履歴においてより前の場所（たとえば、フィーチャ階層においてより上位、またはフィーチャリストにおいてより前）に、および並べ替えられたフィーチャが次いで、エンティティを成功裏に参照することができる所に移動することである。失われた参照条件を訂正するアクションは、親／子関係を分析して、フィーチャ順において、失われたエンティティが存在することが依然として分かっている場所を見つける。
【００５１】
上述したように、望ましくない条件は、フィーチャのパラメータを変更することによって、訂正することができる。望ましくない条件の訂正を助けることができるパラメータの例は、セットされると、フィレットを全正接エッジに伝播させるパラメータである。このパラメータを、フィレットが伝播しないように変更するアクションは、モデルが生成し直されると、望ましくない条件を訂正することができる。望ましくない条件を訂正するようにパラメータを修正するアクションの別の例は、押出しの深さを変更する（たとえば、深さが無限の押出しであるスルーホールを、指定された深さのブラインド押出しに変更する）アクションである。
【００５２】
さらに、アクションは、参照を削除することも変更することもできる。参照を変更するこのような１つのアクションは、参照が、可能な限り最上位レベルのエンティティを確実に参照するようにする。１組のエッジが曲面を構成し、設計修正がエッジの数を変えさせ得るとすると、曲面は、その曲面のエッジより安定した参照となる。さらに、望ましくない条件が、条件を自動的に固定するための特定のプロシージャの実施に先立って起こるのを待つのではなく、アクションは、１つのフィーチャに対する動作が他のフィーチャに与え得る影響を予期することによって、望ましくない条件（たとえば、不具合）の発生を妨げることができる。参照が、可能な限り最上位レベルのエンティティを確実に参照するようにするアクションも、望ましくない条件の発生を妨げるのに用いることができる。
【００５３】
さらに、本発明の実装形態により、ユーザは、追加制約を追加することができるようになる。非限定的な例として、このような追加制約は、アクションを、２つのフィーチャの間の相対オーダーをロックする（たとえば、１つのフィーチャが、常に第２のフィーチャの前に確実に順序付けられるようにする）ことに制約することを含み得る。２つのフィーチャの順序のロックは、２つのフィーチャが一体となる幾何形状の形状を維持するように実装することができる。フィーチャの順序を調節する際、本発明では、ユーザが定義した制約すべてを常に尊重する。
【００５４】
本発明の利益により、フィレット、ドラフト、および他のフィーチャが、作成順序から完全に独立して作成され、削除され、または修正されるようになる。というのは、望ましくないどの条件（たとえば、作成順序によって引き起こされる不具合や、失われたフィーチャ参照によって引き起こされる不具合）も、たとえば、順序の決め直し、参照の除去、パラメータの変更、または上記の組合せによって、自動的に固定されるからである。アクションは、直接または間接的に関連するフィーチャの特定の範囲によって制限され、したがって、望ましくない条件を局所的に管理する。
【００５５】
本明細書に記載した方法およびシステムは、特定のハードウェアにもソフトウェア構成にも限定されず、多くのコンピューティングまたは処理環境において適用可能であり得る。たとえば、示し記述したプロシージャは、ハードウェアまたはソフトウェアでも、ハードウェアおよびソフトウェアの組合せでも実装することができる。本方法およびシステムは、１つまたは複数のコンピュータプログラムにおいて実装することができ、この場合、コンピュータプログラムは、１つまたは複数のプロセッサ実行可能命令を含むことが理解できよう。（複数の）コンピュータプログラムは、１つまたは複数のプログラム可能なプロセッサ上で実行することができ、プロセッサによって可読な１つまたは複数の記憶媒体（揮発性および不揮発性メモリおよび／または記憶要素を含む）に格納することができる。プロセッサはしたがって、１つまたは複数の入力デバイスにアクセスして、入力データを入手することができ、１つまたは複数の出力デバイスにアクセスして、出力データを伝達することができる。記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）、フロッピー（登録商標）ディスク、ＣＤ、ＤＶＤ、磁気ディスク、内部ハードドライブ、外部ハードドライブ、メモリスティック、または本明細書において提示した、プロセッサによってアクセスすることができる他の記憶デバイスでよいが、上述したこのような例は網羅的でなく、例示であって限定ではない。
【００５６】
（複数の）コンピュータプログラムは、好ましくは、コンピュータシステムと通信するための１つまたは複数の高度プロシージャ言語またはオブジェクト指向プログラミング言語を用いて実装されるが、（複数の）コンピュータプログラムは、所望される場合、アセンブリ言語でもマシン言語でも実装することができる。言語は、コンパイル型とすることも、インタプリタ型とすることもできる。
【００５７】
本明細書において提示したように、（複数の）プロセッサは、それぞれ独立して、またはネットワーク接続された環境において協働して作用することができる１つまたは複数のデバイスに組み込むことができ、（複数の）ネットワークは、たとえば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはその両方を含み、イントラネット、インターネット、別のネットワーク、またはその組合せを含み得る。ネットワークは、有線または無線あるいはその組合せでよく、１つまたは複数の通信プロトコルを用いて、異なるプロセッサの間の通信を容易にすることができる。プロセッサは、分散処理用に構成することができ、いくつかの実施形態では、必要に応じてクライアント−サーバモデルを使用することができる。したがって、本方法およびシステムは、多数のプロセッサおよび／またはプロセッサデバイスを使用することができ、プロセッサ命令は、このような単一または多数のプロセッサ／デバイスの間で分割することができる。
【００５８】
「あるプロセッサ」または「特定のプロセッサ」への参照は、スタンドアロンおよび／または（複数の）分散環境において通信することができる１つまたは複数のプロセッサを含むと理解でき、有線または無線通信を介して他のプロセッサと通信するように構成することができ、このような１つまたは複数のプロセッサは、同様のデバイスでも異なるデバイスでもよい１つまたは複数のプロセッサ制御デバイスに対して作用するように構成することができる。さらに、メモリの参照は、別段の指定がない限り、プロセッサ制御デバイスにとって内部であり、プロセッサ制御デバイスにとって外部である１つまたは複数のプロセッサ可読およびアクセス可能メモリ要素および／またはコンポーネントを含み、様々な通信プロトコルを用いて、有線または無線ネットワークを介してアクセスすることができ、別段の指定がない限り、外部および内部メモリデバイスの組合せを含むように配置することができ、このようなメモリは、アプリケーションに基づいて、連続する、かつ／または区画することができる。
【００５９】
本明細書において記述し示した細部、素材、および配置における多くの追加変更を、当業者によって行うことができる。したがって、添付の特許請求の範囲は、本明細書で開示した実施形態に限定されるものではなく、具体的に記述した以外の実施を含み、法の下で許容される限り広く解釈されるべきであることが理解されよう。
【００６０】
以上、本発明のいくつかの実施形態を記述した。それにも関わらず、本発明の精神および範囲から逸脱することなく、様々な修正を行うことができることが理解されよう。たとえば、実装形態は、動作が実施される順序を変更することができる。さらに、実装の必要に応じて、本明細書に記載した特定の動作を、動作の組合せとして実装し、排除し、追加を行い、または別の方法で構成し直すことができる。
【００６１】
したがって、他の実施形態も、添付の請求項の範囲内である。
【図面の簡単な説明】
【００６２】
【図１】条件を評価し、条件に応答するプロシージャを示す図である。
【図２】モデリングされたパートの中で、各アクティブおよび認識フィーチャを反復するプロシージャを示す図である。
【図３】アクティブおよび認識フィーチャタイプに応じて、適切なアクションを開始するプロシージャを示す図である。
【図４】全般的なアクション用のプロシージャを示す図である。
【図５Ａ】並べ替えグラフを構築するプロシージャを示す図である。
【図５Ｂ】並べ替えグラフの例を示す図である。
【図６】アクティブおよび認識フィーチャの並べ替えを試みるプロシージャを示す図である。
【図７】関連フィーチャに対してアクションを起こすプロシージャを示す図である。
【図８】場所スコアを調節するプロシージャを示す図である。
【図９】隣接フィーチャに対する場所スコアを調節するプロシージャを示す図である。
【図１０】フィレットフィーチャ向けのアクションを実施するプロシージャを示す図である。
【図１１】フィレットフィーチャ向けのアクションを実施するプロシージャを示す図である。
【符号の説明】
【００６３】
１０  ＣＯＮＤＩＴＩＯＮ＝ＡＡＦが認識している第１の条件
１１  ｎ＝１
１２  ＡＡＦが条件に直面しているか？
１４  ＡＣＴＩＯＮ＝ＣＯＮＤＩＴＩＯＮに対してｎ番目に起こり得るアクション
１６  ＡＣＴＩＯＮを実施する
１８  ＡＡＦが、依然としてＣＯＮＤＩＴＩＯＮに直面しているか？
２０  これが、ＣＯＮＤＩＴＩＯＮに対して最後に起こり得るアクションか？
２２  ｎ＝ｎ＋１
２４  ＣＯＮＤＩＴＩＯＮ＝ＡＡＦが認識している次の条件
２６  これが、ＡＡＦが認識している最後の条件か？
５０  ＦＴＲ＝パートの中の第１のフィーチャ
５２  Ｆｅａｔｕｒｅ．ＴａｋｅＡｃｔｉｏｎ（図３を参照）
５４  ＦＴＲはパートの中の最後のフィーチャか？
５６  ＦＴＲ＝パートの中の次のフィーチャ
５８  フィーチャのどれかが変わったか？
８０  フィーチャタイプはフィレットか？
８２  フィーチャタイプはドラフトか？
８４  フィーチャタイプはシェルか？
８６  フィーチャタイプは別の具体的なフィーチャタイプか？
８８  Ｆｉｌｌｅｔ．ＴａｋｅＡｃｔｉｏｎ（図１０を参照）
９０  Ｄｒａｆｔ．ＴａｋｅＡｃｔｉｏｎ
９２  Ｓｈｅｌｌ．ＴａｋｅＡｃｔｉｏｎ
９４  ｏｔｈｅｒ．ＴａｋｅＡｃｔｉｏｎ
９６  Ｇｅｎｅｒｉｃ．ＴａｋｅＡｃｔｉｏｎ（図４を参照）
９８  このフィーチャは編集モードか？
１００  並べ替えグラフを構築する（図５Ａを参照）
１０２  フィーチャが、フィーチャ順序中の理想的な場所にあるか？
１０４  理想的な場所へのフィーチャの並べ替えを試みる（図６を参照）
１０６  試行フラグがセットされているか？
１０８  フィーチャ用のＥｄｉｔＭｏｄｅフラグをＴＲＵＥにセットする
１１０  関連フィーチャへのＴａｋｅＡｃｔｉｏｎ（図７を参照）
１１２  理想的な場所へのフィーチャの並べ替えを試みる（図６を参照）
１１４  フィーチャ用のＥｄｉｔＭｏｄｅフラグをＦＡＬＳＥにセットする
１２０  ＰａｒｅｎｔｓＷａｎｔＴｏＲｅｏｒｄｅｒＬａｔｅｒ（図８を参照）
１２２  ＣｈｉｌｄｒｅｎＷａｎｔ  ＴｏＲｅｏｒｄｅｒＥａｒｌｉｅｒ
１２１  このフィーチャより後の場所のスコアを増やす
１２３  このフィーチャの前の場所のスコアを増やす
１２４  ＥａｒｌｉｅｒＡｄｊａｃｅｎｔ  ＷａｎｔＴｏＲｅｏｒｄｅｒＬａｔｅｒ
１２５  より前にあり、より後に並べ替えることを望むどの隣接フィーチャに対しても、このフィーチャの後の場所のスコアを増やす
１２６  ＬａｔｅｒＡｄｊａｃｅｎｔ  ＷａｎｔＴｏＲｅｏｒｄｅｒＥａｒｌｉｅｒ
１２７  より後にあり、より前に並べ替えることを望むどの隣接フィーチャに対しても、このフィーチャの前の場所のスコアを増やす
１２８  ＡｄｊｕｓｔＳｃｏｒｅＤｏｗｎＤｕｅＴｏＡｄｊａｃｅｎｔ（図９を参照）
１２９  隣接フィーチャの間の順序を維持するために、隣接フィーチャを超えた場所のスコアを削減する
１５０  フィーチャが、既に理想的な場所にあるか？
１５２  理想的な場所に到達することができるか？
１５４  理想的な場所にできるだけ近い場所に並べ替える
１５６  理想的な場所に並べ替える
１５８  並べ替えによって、フィーチャに不具合が生じたか？
１６０  並べ替えによって、フィーチャに不具合が生じたか？
１６２  並べ替えを取り消す
１６４  試行フラグをより前またはより後にセットする
１６６  試行フラグをクリアする
１８０  各親フィーチャに対して、Ｆｅａｔｕｒｅ．ＴａｋｅＡｃｔｉｏｎをコールする（図３を参照）
１８２  フィーチャの前に隣接する各フィーチャについて、Ｆｅａｔｕｒｅ．ＴａｋｅＡｃｔｉｏｎをコールする（図３を参照）
１８４  各子フィーチャに対して、Ｆｅａｔｕｒｅ．ＴａｋｅＡｃｔｉｏｎをコールする（図３を参照）
１８６  フィーチャの後に隣接する各フィーチャについて、Ｆｅａｔｕｒｅ．ＴａｋｅＡｃｔｉｏｎをコールする（図３を参照）
２００  親＝ターゲットフィーチャの第１の親
２０２  親＝ターゲットフィーチャの次の親
２０４  ターゲットフィーチャの最後の親か？
２０６  親が、より後に並べ替えることを望む
２０８  Ｌｏｃａｔｉｏｎ．Ｓｃｏｒｅ＝Ｌｏｃａｔｉｏｎ．Ｓｃｏｒｅ＋Ｓｃｏｒｅ
２１４  場所＝ターゲットフィーチャの後の第１のフィーチャ
２１６  場所＝現在の場所の後の次のフィーチャ
２１８  場所が、シーケンス中で最後か？
２２０  親が、不具合があったという状況を有しているか？
２４０  ＡＤＪＡＣＥＮＴ＝ターゲットへの第１の隣接フィーチャ
２４２  シーケンス中のターゲットの前のＡＤＪＡＣＥＮＴか？
２４４  ＦＥＡＴＵＲＥ＝パートの中の第１のフィーチャ
２４６  ＦＥＡＴＵＲＥ＝パートの中の次のフィーチャ
２４８  ＦＥＡＴＵＲＥは、ＡＤＪＡＣＥＮＴの前のフィーチャか？
２５０  ＦＥＡＴＵＲＥのスコアの値を削減する
２５４  ＦＥＡＴＵＲＥ＝パートの中の次のフィーチャ
２５６  ＦＥＡＴＵＲＥが、パートの中の最後か？
２５８  ＦＥＡＴＵＲＥのスコアの値を削減する
２６０  ＦＥＡＴＵＲＥが、パートの中の最後の隣接フィーチャか？
２６２  ＡＤＪＡＣＥＮＴ＝ターゲットへの次の隣接フィーチャ
２８０  このフィレットが、不具合があったという状況を有しているか？
２８２  より小さいフィレットの前に並べ替える（図１１を参照）
２８４  まだ不具合があるか？
２８６  隣接フィーチャとの相対的な位置を変更する
３００  いずれかのフィレットが、ターゲットフィレットに隣接するか？
３０２  半径がより小さい隣接フィレットのリストを構築する
３０４  親子関係が、半径がより小さい第１のフィレットの前にフィレットを並べ替えるのを妨げるか？
３０６  半径がより小さい第１のフィレットのできるだけ近くに並べ替える
３０８  より前に並べ替えるように、試行フラグをセットする
３１０  半径がより小さい第１のフィレットの前に並べ替える
３１２  試行フラグをクリアする
【図１】
2006209763.tif 000003
【図２】
2006209763.tif 000004
【図３】
2006209763.tif 000005
【図４】
2006209763.tif 000006
【図５Ａ】
2006209763.tif 000007
【図５Ｂ】
2006209763.tif 000008
【図６】
2006209763.tif 000009
【図７】
2006209763.tif 000010
【図８】
2006209763.tif 000011
【図９】
2006209763.tif 000012
【図１０】
2006209763.tif 000013
【図１１】
2006209763.tif 000014
【外国語明細書】
2006209763000001.pdf