(57)【特許請求の範囲】
【請求項１】
命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、プロセッサによって実行される場合に、前記プロセッサに、
モデルに対してチェックポイントを作成する要求を、当事者による前記モデルの編集セッション中に受信することと、
前記モデルの以前に保存された状態を識別することと、
前記モデルの前記以前に保存された状態以後に前記モデル内で変更された１つ以上のコンポーネントを識別することと、
前記要求に応答して、前記編集セッション中にチェックポイントを作成することであって、前記チェックポイントが、前記モデルの現在の状態を表しており、かつ
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの前記以前に保存された状態への参照と、
前記モデルの前記以前に保存された状態以後に、前記編集セッション中に前記モデル内で変更された前記１つ以上のコンポーネントのリストと
を含む、ことと、
前記チェックポイントを記憶装置内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの前記チェックポイントに関連付けられた前記保存された状態に戻す、ことと、
設計セッションに入ることと、
前記設計セッションに対して未変更のモデルとして使用される基本モデルを識別することと、
前記基本モデルから成るエントリチェックポイントを作成することと
を実行させ、
前記チェックポイントがツリー構造として表され、前記エントリチェックポイントが前記ツリー構造のルートを表す、媒体。
【請求項２】
前記基本モデルおよび前記チェックポイントを第１のコンピュータ上の設計セッションファイルに保存するための命令をさらに格納する、請求項１に記載の媒体。
【請求項３】
前記設計セッションファイルを第２のコンピュータ上でオープンすることと、
前記チェックポイントと一致したモデルを前記第２のコンピュータ上で作成することと
を行うための命令をさらに含む、請求項２に記載の媒体。
【請求項４】
命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、プロセッサによって実行される場合に、前記プロセッサに、
モデルに対してチェックポイントを作成する要求を、当事者による前記モデルの編集セッション中に受信することと、
前記モデルの以前に保存された状態を識別することと、
前記モデルの前記以前に保存された状態以後に前記モデル内で変更された１つ以上のコンポーネントを識別することと、
前記要求に応答して、前記編集セッション中にチェックポイントを作成することであって、前記チェックポイントが、前記モデルの現在の状態を表しており、かつ
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの前記以前に保存された状態への参照と、
前記モデルの前記以前に保存された状態以後に、前記編集セッション中に前記モデル内で変更された前記１つ以上のコンポーネントのリストと
を含む、ことと、
前記チェックポイントを記憶装置内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの前記チェックポイントに関連付けられた前記保存された状態に戻す、ことと、
前記モデルの第１のコンポーネントを変更する命令を受信することと、
前記命令に基づいて前記モデルを変更して、前記モデルに対して明示的な変更をもたらすことと、
前記モデルの第２のコンポーネントに対する派生的な変更を識別することであって、前記派生的な変更が、前記明示的な変更から生じており、前記第２のコンポーネントを変更するためのユーザー指示に起因しない、ことと、
前記第１のコンポーネントおよび前記第２のコンポーネントへの参照を、前記モデルの前記以前に保存された状態以後に前記モデル内で変更された前記１つ以上のコンポーネントの前記リストに格納することと
を実行させる、媒体。
【請求項５】
前記派生的な変更が、前記第１のコンポーネントと前記第２のコンポーネントとの間のパラメータ関係に基づく、請求項４に記載の媒体。
【請求項６】
命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、プロセッサによって実行される場合に、前記プロセッサに、
モデルに対してチェックポイントを作成する要求を、当事者による前記モデルの編集セッション中に受信することと、
前記モデルの以前に保存された状態を識別することと、
前記モデルの前記以前に保存された状態以後に前記モデル内で変更された１つ以上のコンポーネントを識別することと、
前記要求に応答して、前記編集セッション中にチェックポイントを作成することであって、前記チェックポイントが、前記モデルの現在の状態を表しており、かつ
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの前記以前に保存された状態への参照と、
前記モデルの前記以前に保存された状態以後に、前記編集セッション中に前記モデル内で変更された前記１つ以上のコンポーネントのリストと
を含む、ことと、
前記チェックポイントを記憶装置内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの前記チェックポイントに関連付けられた前記保存された状態に戻す、ことと
を実行させ、
前記モデルの前記以前に保存された状態への前記参照が第２のチェックポイントへのポインタを含む、媒体。
【請求項７】
方法であって、
モデルを、記憶装置内に保存されている保存された状態に戻す要求をコンピューティング装置内で受信することであって、前記モデルがコンポーネントを含む、ことと、
前記コンピューティング装置のプロセッサで、前記保存された状態に関連付けられたチェックポイントを取得することであって、前記チェックポイントが、以前のチェックポイントへの参照と、前記以前のチェックポイント以後に変更された前記モデル内の変更されたコンポーネントのリストとを含む、ことと、
前記以前のチェックポイントを前記モデルの現在の状態と比較するために、前記プロセッサで前記以前のチェックポイントを処理することであって、前記処理が、前記モデルの前記コンポーネントが前記変更されたコンポーネントのリスト内にあることを識別することを含む、ことと、
前記モデルを前記保存された状態に戻すために、前記プロセッサで、前記変更されたコンポーネントのリストに基づいて前記モデル内の前記コンポーネントを変更することと
を含む、方法。
【請求項８】
前記モデルを前記保存された状態に戻すことが、前記以前のチェックポイント以後に変更された前記モデルのコンポーネントのみを置換し、一方、前記以前のチェックポイント以後に変更されなかった前記モデルの任意のコンポーネントを維持することを含む、請求項７に記載の方法。
【請求項９】
前記以前のチェックポイントが基本モデルに関連付けられたエントリチェックポイントであり、前記基本モデルが前記モデルの前記以前のバージョンとして使用される、請求項７に記載の方法。
【請求項１０】
前記以前のチェックポイントを処理することが、第２の以前のチェックポイントと、前記以前のチェックポイントと前記第２の以前のチェックポイントとの間に前記モデル内で変更されたコンポーネントのリストとを取得することを含む、請求項７に記載の方法。
【請求項１１】
前記モデルを前記保存された状態に戻すことが、
エントリチェックポイントに関連付けられた基本モデルを取得することと、
前記エントリチェックポイントと前記保存された状態に関連付けられた前記チェックポイントとの間の一連の１つ以上のチェックポイントを取得することであって、前記一連のチェックポイントが１つ以上の変更されたコンポーネントの集合を含む、ことと、
前記変更されたコンポーネントに対応する前記モデル内のコンポーネントを識別することと、
前記識別されたコンポーネントを前記基本モデルに対して前記変更されたコンポーネントと置換することと
を含む、請求項７に記載の方法。
【請求項１２】
前記変更されたコンポーネントのリストが、
前記モデルを変更するための明示的な命令により前記モデルに対して行われた明示的な変更によって変更された第１のコンポーネントと、
前記モデルに関する１つ以上のパラメータ制約を満たすために、前記明示的な変更の結果として前記モデルに対して行われた派生的な変更によって変更された第２のコンポーネントと
を含む、請求項７に記載の方法。
【請求項１３】
システムであって、
第１の状態におけるモデルを格納する非一時的コンピュータ可読記憶媒体であって、前記第１の状態における前記モデルが第１のコンポーネントを含む、非一時的コンピュータ可読記憶媒体と、
プロセッサと
を備え、
前記プロセッサが、
第１の状態の前記モデルに対して行われた１つ以上の変更を追跡することであって、前記１つ以上の変更を追跡することが、
明示的な変更を前記第１のコンポーネントに生じさせる命令を識別することと、
前記明示的な変更を変更のリストに記録することと、
前記第１のコンポーネントに関連付けられた関連コンポーネントを、前記明示的な変更によって生じる前記関連コンポーネントに対する派生的な変更に基づいて、識別することと
を含む、ことと、
当事者による前記モデルの編集セッション中に前記モデルに対してチェックポイントを作成する要求を受信することと、
前記要求に応答して、前記編集セッション中に前記モデルの現在の状態を表す前記チェックポイントを作成することであって、前記チェックポイントが、
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの以前に保存された状態への参照と、
前記第１のコンポーネントと、前記モデルの前記以前に保存された状態以後に前記編集セッション中に前記モデル内で変更された前記関連コンポーネントとを含む変更されたコンポーネントのリストと
を含む、ことと、
前記チェックポイントを前記非一時的コンピュータ可読記憶媒体内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記保存された状態に戻す、ことと、
設計セッションに入ることと、
前記設計セッションに対して未変更のモデルとして使用される基本モデルを識別することと、
前記基本モデルから成るエントリチェックポイントを作成することと
を実行するようにプログラムされ、
前記チェックポイントがツリー構造として表され、前記エントリチェックポイントが前記ツリー構造のルートを表す、システム。
【請求項１４】
前記関連コンポーネントを識別することが、前記モデルに関連付けられたパラメータ制約を検査することを含む、請求項１３に記載のシステム。
【請求項１５】
前記１つ以上の変更を追跡することが、前記関連コンポーネントの識別を前記変更されたコンポーネントのリストと共に格納することを含む、請求項１３に記載のシステム。
【請求項１６】
前記第１のコンポーネントが前記関連コンポーネントのリストと共に格納される、請求項１３に記載のシステム。
【請求項１７】
前記関連コンポーネントを識別することが、前記第１のコンポーネントを他の特徴への連結について分析することを含む、請求項１３に記載のシステム。
【請求項１８】
システムであって、
第１の状態におけるモデルを格納する非一時的コンピュータ可読記憶媒体であって、前記第１の状態における前記モデルが第１のコンポーネントを含む、非一時的コンピュータ可読記憶媒体と、
プロセッサと
を備え、
前記プロセッサが、
第１の状態の前記モデルに対して行われた１つ以上の変更を追跡することであって、前記１つ以上の変更を追跡することが、
前記モデルの前記第１のコンポーネントを変更する命令を受信することと、
前記命令に基づいて前記モデルを変更して、前記モデルに対して明示的な変更をもたらすことと、
前記モデルの第２のコンポーネントに対する派生的な変更を識別することであって、前記派生的な変更が、前記明示的な変更から生じており、前記第２のコンポーネントを変更するためのユーザー指示に起因しない、ことと
を含む、ことと、
当事者による前記モデルの編集セッション中に前記モデルに対してチェックポイントを作成する要求を受信することと、
前記要求に応答して、前記編集セッション中に前記モデルの現在の状態を表す前記チェックポイントを作成することであって、前記チェックポイントが、
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの以前に保存された状態への参照と、
前記第１のコンポーネントへの参照と、前記モデルの前記以前に保存された状態以後に前記編集セッション中に前記モデル内で変更された前記第２のコンポーネントへの参照とを含む変更されたコンポーネントのリストと
を含む、ことと、
前記チェックポイントを前記非一時的コンピュータ可読記憶媒体内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記保存された状態に戻す、ことと
を実行するようにプログラムされる、システム。
【請求項１９】
システムであって、
第１の状態におけるモデルを格納する非一時的コンピュータ可読記憶媒体であって、前記第１の状態における前記モデルが第１のコンポーネントを含む、非一時的コンピュータ可読記憶媒体と、
プロセッサと
を備え、
前記プロセッサが、
第１の状態の前記モデルに対して行われた１つ以上の変更を追跡することであって、前記１つ以上の変更を追跡することが、
明示的な変更を前記第１のコンポーネントに生じさせる命令を識別することと、
前記明示的な変更を変更のリストに記録することと、
前記第１のコンポーネントに関連付けられた関連コンポーネントを、前記明示的な変更によって生じる前記関連コンポーネントに対する派生的な変更に基づいて、識別することと
を含む、ことと、
当事者による前記モデルの編集セッション中に前記モデルに対してチェックポイントを作成する要求を受信することと、
前記要求に応答して、前記編集セッション中に前記モデルの現在の状態を表す前記チェックポイントを作成することであって、前記チェックポイントが、
前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記モデルの以前に保存された状態への参照と、
前記第１のコンポーネントと、前記モデルの前記以前に保存された状態以後に前記編集セッション中に前記モデル内で変更された前記関連コンポーネントとを含む変更されたコンポーネントのリストと
を含む、ことと、
前記チェックポイントを前記非一時的コンピュータ可読記憶媒体内に格納することと、
前記当事者による前記モデルの前記編集セッション中に前記チェックポイントに戻すことであって、前記戻すことが、前記モデルを、前記当事者による前記編集セッションの以前のチェックポイントに関連付けられた前記保存された状態に戻す、ことと
を実行するようにプログラムされ、
前記モデルの前記以前に保存された状態への前記参照が第２のチェックポイントへのポインタを含む、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願
本出願は、２０１４年６月６日に出願された米国特許出願第１４／２９８，６２７号の優先権および利益を主張し、その内容が参照により全体として本明細書に組み込まれる。
【０００２】
コンポーネントベースのモデリング環境は、「コンポーネント」または「コンポーネントモデル」と呼ばれる１つ以上の要素で構成されている上位モデルを構築するために使用され得るモデリング環境である。コンポーネントモデルは、上位モデルを形成するために組み合わされ得る単体を表し得る。コンポーネントベースのモデリングは、製品の設計、モデル化、テストおよび／または視覚化を行うために使用され得る。コンポーネントベースのモデリング環境は、コンピュータ支援設計（ＣＡＤ）およびコンピュータ支援製造（ＣＡＭ）環境を含む。
【０００３】
コンポーネントモデルは、別個の内部コンポーネントを含まないスタンドアロンのコンポーネントであり得るか、またはコンポーネントモデルは、１つ以上のコンポーネントで構成され得る。異なる上位モデルが同じコンポーネントを使用し得、また、単一の上位モデルが、単一の部分の異なるバージョンを表すために異なるコンポーネントを使用し得る。各コンポーネントは別個のファイルとして記憶装置上に格納され得る。
【０００４】
従来の方式では、特に、相互に依存する多くのコンポーネントをもつ複雑なシステムを開発している場合には、新規の着想または設計変更を探索するために、モデル設計においてコンポーネントを変更することは技術的な課題である。例えば、モデル設計を変更することは、既存のコンポーネントモデルファイルを１つ以上のフォルダに手動でバックアップすること、複数のセッションをオープンしてクローズすること、ならびに異なるモデルを手動で反復して再検討および評価することを伴い得る。このプロセスは、ユーザーが管理するには、非常に厄介で困難であり得る。このプロセスは、モデルに対する若干の修正により、そのモデルに関連した各コンポーネントモデルファイルが保存されて、設計変更を実装するためにそのモデルの各コンポーネントが再構築されることが必要になり得るので、記憶空間および処理資源の無駄という結果にもなり得る。
【０００５】
その上、１つのコンポーネントに対して変更を行った後、組立体内の他の関連したコンポーネントも、組立体の残りの部分との整合性を保つために更新される必要があり得る。例えば、ユーザーが車のモデルを構築していて、ユーザーが車のシャーシの幅を変更する場合、修正された組立体と整合性をとるために、車軸の長さも変更する必要があり得る。従属コンポーネントモデルに対する係る非明示的な変更は、派生的な変更（ｄｅｒｉｖｅｄ  ｃｈａｎｇｅ）と呼ばれ得る。
【０００６】
モデルの１つ以上のコンポーネントに対して明示的な変更を行うと、派生的な変更を他のコンポーネントに伝搬するためにモデル全体を更新する必要があり得る。モデル設計の課題の１つは、漸進的な設計変更および探索（すなわち、ある変更を試みて、設計を更新し、望ましくない派生的な変更を生じた変更のいくつかを戻すこと）を管理および制御することである。どの派生的な変更がどの明示的な変更によって生じたか、どのコンポーネントが各漸次的変更で修正されたかを正確に追跡することは非常に困難であり得る。この課題により、モデルを以前の状態に手際よく戻すことが極めて困難になり得る。
【発明の概要】
【課題を解決するための手段】
【０００７】
本出願では、モデル変更を効率的かつ簡潔で使い勝手の良い方法で行って評価するための方法、媒体、およびシステムについて説明する。実施形態例によれば、ユーザーがモデルを変更するとチェックポイントが作成され得る。変更は、複数のモデルを含み得る「設計セッション」と呼ばれる、特別なタイプの編集セッション内で行われ得る。各チェックポイントは、そのモデルに対して以前のチェックポイント以後に行われた変更、および以前のチェックポイントへの参照（例えば、ポインタ）を格納し得る。チェックポイントは、未修正のコンポーネントモデルへの（例えば、ローカルまたはリモート記憶装置上の）パスも含み得、それにより、以前のチェックポイント以後に修正されなかったモデルのコンポーネントが複製される必要がない。
【０００８】
ユーザーは自由に、新しいチェックポイントを作成すること、以前のチェックポイントに戻ること、一連のチェックポイントを別のシーケンスに分けること、およびモデルの公式な作業バージョンとして使用されるモデルのチェックポイント化されたバージョンを選択することを行い得る。このように、ユーザーはモデルを容易に変更して、設計の変更または異なる潜在的な進化を評価でき、それと同時に、モデルの異なるバージョンを繰り返し保存する必要性を回避することにより記憶空間を節約できる。
【０００９】
実施形態例によれば、設計セッションに対してチェックポイントを作成する要求が受信され得る。上述のように、設計セッションは１つ以上のモデルを含み得る。設計セッション内のモデル（複数可）の以前の状態が識別され得、以前に保存された状態以後にモデル（複数可）に対して行われた変更のリストが取得され得る。チェックポイントが作成され得、そのチェックポイントは、モデル（複数可）の以前に保存された状態への参照および以前に保存された状態以後に変更されたコンポーネントモデルのリストを含む。モデルの以前に保存された状態への参照は、例えば、第２のチェックポイントへのポインタおよび／または未変更のコンポーネントモデルへのポインタであり得る。
【００１０】
変更されたコンポーネントモデルのリストは、明示的な変更および派生的な変更の影響を受けたコンポーネントモデルを含み得る。いくつかの実施形態では、モデルの第１のコンポーネントを変更するための命令が受信され得る。モデルは、命令に基づいて変更されて、モデルに対する明示的な変更となり得る。モデルの第２のコンポーネントモデルに対する派生的な変更が識別され得る。派生的な変更は明示的な変更から生じ得、第２のコンポーネントモデルを変更するためのユーザー命令ではなく、代わりに（例えば）第１のコンポーネントモデルと第２のコンポーネントモデルとの間のパラメータ関係に起因し得る。
【００１１】
一実施形態では、チェックポイントが設計セッション内で作成され得る。設計セッションに入ると、１つ以上の基本モデルが識別され得る。基本モデルは、設計セッション中に編集される未変更モデルであり得る。基本モデルを含むエントリチェックポイントが作成され得る。後続のチェックポイントが作成されて、ツリー構造内に格納され得、この場合、エントリチェックポイントがツリー構造のルートを表す。
【００１２】
基本モデルおよびチェックポイント（複数可）が、第１のコンピュータ上の設計ファイル内に格納され得る。設計ファイルは、第２のコンピュータに配信され得、第２のコンピュータ上でオープンされて、そのチェックポイントと一致したモデルを作成するために使用され得る。
【００１３】
さらなる実施形態例によれば、モデルが、保存されたチェックポイントと一致する状態に復元され得る。例えば、モデルを保存された状態に戻す要求が受信され得る。保存された状態と一致したチェックポイントが取得され得、そのチェックポイントは、以前のチェックポイントへの参照および／または未変更のコンポーネントモデルならびに以前のチェックポイント以後に変更されたコンポーネントモデルのリストを含む。以前のチェックポイントは、モデルの以前のバージョンを取得するために処理され得、変更されたコンポーネントモデルのリスト内のコンポーネントモデルが、モデルを要求された保存状態に戻すために以前のバージョンに適用され得る。
【００１４】
以前のチェックポイントは、例えば、基本モデルに関連付けられたエントリチェックポイントであり得、この場合、その基本モデルがモデルの以前のバージョンとして使用される。代替または追加として、以前のチェックポイントは、第２の以前のチェックポイントへの参照、および以前のチェックポイントと第２の以前のチェックポイントとの間で、モデル内で変更されたコンポーネントモデルのリストを含み得る。一般に、モデルを保存された状態に戻すことは、エントリチェックポイントと関連付けられた基本モデルを取得すること、およびエントリチェックポイントと保存された状態に関連付けられたチェックポイントとの間の一連の１つ以上のチェックポイントを取得することを伴い得る。一連のチェックポイントは、１つ以上の変更されたコンポーネントモデルの集合を含み得る。変更されたコンポーネントモデルは、モデルを保存された状態に戻すために、基本モデルに適用され得る。
【００１５】
いくつかの実施形態では、モデルを保存された状態に戻すことは、以前のチェックポイント以後に変更されたコンポーネントモデルだけを置き換え、一方、以前のチェックポイント以後に変更されなかったコンポーネントモデルを維持することを伴い得る。その結果、記憶空間および処理資源が節約され得る。
【００１６】
変更されたコンポーネントモデルのリストは、コンポーネントモデルを変更するための明確な命令に従った明示的な変更、ならびにモデルに関する１つ以上のパラメータ制約を満たすために明示的な変更の結果としてモデルおよび／またはモデルのコンポーネントに対して行われた派生的な変更によって変更されたコンポーネントモデルを含み得る。
【００１７】
さらなる実施形態では、第１の状態におけるモデルが提供され得、そのモデルは第１のコンポーネントを有する。モデルの第１の状態に対する１つ以上の変更が追跡され得る。例えば、明示的な変更を第１のコンポーネントに対して生じるための命令が識別され得、変更されたコンポーネントが変更されたコンポーネントのリストに記録される。第１のコンポーネントに関連付けられている関連コンポーネントが、関連コンポーネントに対する派生的な変更に基づいて識別され得る。派生的な変更は明示的な変更によって生じ得る。派生的な変更によって変更された関連コンポーネントが、変更されたコンポーネントのリストに記録され得る。変更されたコンポーネントのリストは、チェックポイントを作成するために使用され得る。
【００１８】
関連コンポーネントは、様々な方法で識別され得る。例えば、関連コンポーネントは、そのモデルに関連したパラメータ制約を調べることによって識別され得る。代替または追加として、第１のコンポーネントは、他のコンポーネントへの連結について分析され得、その連結された他のコンポーネントは関連コンポーネントとして扱われ得る。
【００１９】
一旦識別されると、関連コンポーネントの識別が、変更されたコンポーネントのリストと共に格納され得る。第１のコンポーネントも、パラメータ関係によって第１のコンポーネントに関連している関連コンポーネントのリストと共に格納され得る。
【００２０】
実施形態例は、以下で説明する図面に関して、さらに詳細に説明される。
本願明細書は、例えば、以下の項目も提供する。
（項目１）
命令を格納する非一時的コンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行される場合に、前記プロセッサに、
１つ以上のモデルに対してチェックポイントを作成する要求を受信することと、
前記モデルの以前に保存された状態を識別することと、
前記モデルの前記以前に保存された状態以後に前記モデル内で変更された１つ以上のコンポーネントを識別することと、
チェックポイントを作成することであって、前記チェックポイントが、
前記モデルの前記以前に保存された状態への参照と、
前記モデルの前記以前に保存された状態以後に、前記モデル内で変更された前記１つ以上のコンポーネントのリストと
を含む、ことと
を実行させる、媒体。
（項目２）
前記チェックポイントが、前記モデルの前記以前に保存された状態と、前記モデルに関連するパラメータとを含むコンテンツシステムキャッシュ情報をさらに含む、項目１に記載の媒体。
（項目３）
前記命令が、前記プロセッサに、
設計セッションに入ることと、
前記設計セッションに対して未変更のモデルとして使用される基本モデルを識別することと、
前記基本モデルから成るエントリチェックポイントを作成することと
をさらに実行させる、項目１に記載の媒体。
（項目４）
前記チェックポイントがツリー構造として表され、かつ前記エントリチェックポイントが前記ツリー構造のルートを表す、項目３に記載の媒体。
（項目５）
前記基本モデルおよび前記チェックポイントを第１のコンピュータ上の設計セッションファイルに保存する
ための命令をさらに格納する、項目３に記載の媒体。
（項目６）
前記設計セッションファイルを第２のコンピュータ上でオープンすることと、
前記チェックポイントと一致したモデルを前記第２のコンピュータ上で作成することと
を行うための命令をさらに含む、項目５に記載の媒体。
（項目７）
前記モデルの第１のコンポーネントを変更する命令を受信することと、
前記命令に基づいて前記モデルを変更して、前記モデルに対して明示的な変更をもたらすことと、
前記モデルの第２のコンポーネントに対する派生的な変更を識別することであって、前記派生的な変更が、前記明示的な変更から生じており、前記第２のコンポーネントを変更するためのユーザー指示に起因しない、ことと、
前記第１のコンポーネントおよび前記第２のコンポーネントへの参照を、前記モデルの前記以前に保存された状態以後に前記モデル内で変更された前記１つ以上のコンポーネントの前記リストに格納することと
を行うための命令をさらに格納する、項目１に記載の媒体。
（項目８）
前記派生的な変更が、前記第１のコンポーネントと前記第２のコンポーネントとの間のパラメータ関係に基づく、項目７に記載の媒体。
（項目９）
前記モデルの前記以前に保存された状態への前記参照が第２のチェックポイントへのポインタを含む、項目１に記載の媒体。
（項目１０）
方法であって、
モデルを保存された状態に戻す要求を受信することであって、前記モデルがコンポーネントを含む、ことと、
前記保存された状態に関連付けられたチェックポイントを取得することであって、前記チェックポイントが以前のチェックポイントへの参照と、前記以前のチェックポイント以後に変更された前記モデル内の変更されたコンポーネントのリストとを含む、ことと、
前記以前のチェックポイントを前記モデルの現在の状態と比較するために前記以前のチェックポイントを処理することであって、前記処理が、前記モデルの前記コンポーネントが前記変更されたコンポーネントのリスト内にあることを識別することを含む、ことと、
前記モデルを前記保存された状態に戻すために、変更されたコンポーネントのリストに基づいて前記モデル内の前記コンポーネントを変更することであって、適用が、コンピューティング装置のプロセッサを使用して実行される、ことと
を含む、方法。
（項目１１）
前記モデルを前記保存された状態に戻すことが、前記以前のチェックポイント以後に変更された前記モデルのコンポーネントのみを置換し、一方、前記以前のチェックポイント以後に変更されなかった前記モデルの任意のコンポーネントを維持することを含む、項目１０に記載の方法。
（項目１２）
前記以前のチェックポイントが基本モデルに関連付けられたエントリチェックポイントであり、前記基本モデルが前記モデルの前記以前のバージョンとして使用される、項目１０に記載の方法。
（項目１３）
前記以前のチェックポイントを処理することが、第２の以前のチェックポイントと、前記以前のチェックポイントと前記第２の以前のチェックポイントとの間に前記モデル内で変更されたコンポーネントのリストとを取得することを含む、項目１０に記載の方法。
（項目１４）
前記モデルを前記保存された状態に戻すことが、
エントリチェックポイントに関連付けられた基本モデルを取得することと、
前記エントリチェックポイントと前記保存された状態に関連付けられた前記チェックポイントとの間の一連の１つ以上のチェックポイントを取得することであって、前記一連のチェックポイントが１つ以上の変更されたコンポーネントの集合を含む、ことと、
前記変更されたコンポーネントに対応する前記モデル内のコンポーネントを識別することと、
前記識別されたコンポーネントを前記基本モデルに対して前記変更されたコンポーネントと置換することと
を含む、項目１０に記載の方法。
（項目１５）
前記変更されたコンポーネントのリストが、
前記モデルを変更するための明示的な命令により前記モデルに対して行われた明示的な変更によって変更された第１のコンポーネントと、
前記モデルに関する１つ以上のパラメータ制約を満たすために、前記明示的な変更の結果として前記モデルに対して行われた派生的な変更によって変更された第２のコンポーネントと
を含む、項目１０に記載の方法。
（項目１６）
システムであって、
第１の状態におけるモデルを格納する非一時的コンピュータ可読記憶媒体であって、前記第１の状態における前記モデルが第１のコンポーネントを含む、非一時的コンピュータ可読記憶媒体と、
第１の状態の前記モデルに対して行われた１つ以上の変更を追跡するようにプログラムされたプロセッサであって、前記１つ以上の変更を追跡することが、
明示的な変更を前記第１のコンポーネントに生じさせる命令を識別することと、
前記明示的な変更を変更のリストに記録することと、
前記明示的な変更によって生じる、前記関連付けられたコンポーネントに対する派生的な変更に基づいて、前記第１のコンポーネントに関連付けられた関連コンポーネントを識別することと、
前記モデルに対してチェックポイントを作成する要求を受信することと、
前記チェックポイントを作成することであって、前記チェックポイントが、
前記モデルの以前に保存された状態への参照と、
前記第１のコンポーネントと前記関連コンポーネントとを含む変更されたコンポーネントのリストと
を含む、ことと
を含む、プロセッサと
を備えた、システム。
（項目１７）
前記関連コンポーネントを識別することが、前記モデルに関連付けられたパラメータ制約を検査することを含む、項目１６に記載のシステム。
（項目１８）
前記１つ以上の変更を追跡することが、前記関連コンポーネントの識別を前記変更されたコンポーネントのリストと共に格納することを含む、項目１６に記載のシステム。
（項目１９）
前記第１のコンポーネントが前記関連コンポーネントのリストと共に格納される、項目１６に記載のシステム。
（項目２０）
前記関連コンポーネントを識別することが、前記第１のコンポーネントを他の特徴への連結について分析することを含む、項目１６に記載のシステム。
【図面の簡単な説明】
【００２１】
【図１Ａ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｂ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｃ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｄ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｅ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｆ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図１Ｇ】コンポーネントベースのモデリング環境におけるチェックポイント化の例を示す。
【図２】本明細書で説明する実施形態例での使用に適したモデリング環境例を示す。
【図３】実施形態例に従って、コンポーネント、組立体、またはモデルの設計変更を探索および評価するためのチェックポイントツリー例を示す。
【図４】実施形態例に従い、コンポーネントベースのモデリング環境においてモデル内のコンポーネントに対する変更を追跡するための変更データベース例を示す。
【図５】実施形態例に従って、チェックポイントを作成するための方法例を示す流れ図である。
【図６】実施形態例での使用に適したチェックポイントデータ構造例を示す。
【図７】実施形態例に従い、コンポーネント、組立体、またはモデルをチェックポイントから復元するための方法例を示す流れ図である。
【図８】本明細書で説明する実施形態例での使用に適したコンピューティング装置例を示す。
【図９】本明細書で説明する実施形態例での使用に適したネットワーク実施態様例を示す。
【発明を実施するための形態】
【００２２】
議論を簡単にするために、本明細書を通して、具体例は、米国マサチューセッツ州ニーダム所在のＰＴＣ（登録商標）からのＣｒｅｏ（登録商標）製品群を参照して提示され得る。当業者であれば、本明細書で説明する実施形態例は、特定の製品群に制限されるのではなく、任意の適切なコンポーネントベースのモデリング環境で適用できることを理解するであろう。さらに、本出願では、コンポーネントモデルで構成されているモデルについて説明するが、本発明はそのように限定されないことに留意されたい。例えば、ユーザーは、それ自身がコンポーネントモデルを含んでいないモデルを操作して、それに対するチェックポイントを作成し得る。
【００２３】
コンポーネントベースのモデリング環境では、ユーザーは、モデルの形状を定義することによりモデルを構築し得る。モデルを構成する形状は、表面の集合から成り得、それは、接点で交わる縁部によって結合され得る。
【００２４】
形状はモデルのコンポーネントを表し得、それは、多種多様な形またはサイズをとることができる。表面、縁部、および接点の結合された集合が、モデル内のコンポーネントを定義し得、それは、コンポーネントベースのモデルが構築され得るスタンドアロン要素と見なすことができる。コンポーネントは、記憶媒体上のファイル内に格納されるモデルの分離可能な部分であり得、所与の上位レベルモデルに加わることができる。結合されたコンポーネントの集合は、組立体と呼ばれ得る。
【００２５】
形状に加えて、コンポーネントは、１つ以上のパラメータおよび、数学関数などの１つ以上の関係とも関連付けられ得る。パラメータおよび関係は、形状または寸法と形状との関係を定義し得る。コンポーネントは、２次元空間、３次元空間、またはその両方に関して定義され得る。
【００２６】
コンポーネントベースのモデリング環境は、一般に、コンポーネントの形状を操作するためのツールを提供する。ツールの例には、２次元空間または３次元空間内で表面または表面の一部を動かす、押し出し（ｅｘｔｒｕｄｅ）ツール、および表面またはコンポーネント全体を拡大または縮小するために、選択した縁部および接点を特定の方向に動かす、ストレッチツールが含まれる。
【００２７】
ユーザーは、コンポーネントに対して変更を行うように（例えば、ツールの１つ、または一連のツールおよび／もしくは動作を適用することにより）モデリング環境に指示し得る。係る変更は、本明細書では明示的な変更と呼ぶ。明示的な変更は、変更されたコンポーネントとパラメータ関係によって関連しているモデルの別のコンポーネントにおいて派生的な変更も引き起こし得る。パラメータ関係は、それらのコンポーネントに関連付けられた１つ以上のパラメータに基づく２つ以上のコンポーネント間の関係であり得る。パラメータ関係は、２つ以上のコンポーネントを連結した結果として生じ得るか、またはパラメータ制約により（手動でまたは自動的に）定義され得る。パラメータ制約は、第１のコンポーネントのパラメータに関して、第２のコンポーネントのパラメータに対する限界を定義し得る。例えば、ユーザーは、椅子のモデルに対して、椅子の基部コンポーネントの幅が、椅子の座部コンポーネントのある割合もしくは比率（例えば、９５％）、または割合もしくは比率のある範囲内であることを示すパラメータ制約を定義し得る。
【００２８】
コンポーネントの形状を操作すると、コンポーネントに対して１つ以上の変更（明示的な変更または派生的な変更のいずれか）となり得る。ユーザーは、モデルにおける特定の変更の使用をコミットする前に、特定のコンポーネントまたは複数のコンポーネントに対する複数の異なる設計変更を評価することを望み得る。例えば、ユーザーは、モデルの１つのコンポーネントに対して明示的な変更を行って、その明示的な変更が望ましくない派生的な変更をもたらすかどうかを判断したいと望み得る。さらに、ユーザーは、異なる変更またはバージョンを、将来、その変更またはバージョンを再評価するために、検討から除かれた変更またはバージョンを含めて、保存することを望み得る。
【００２９】
その結果、本明細書で説明する実施形態例は、チェックポイントが作成できるようにする。チェックポイントは、異なる設計変更／バージョンを効率的な方法で捕捉し、評価する各変更／バージョンに対して、コンポーネントの組立体全体を新しいファイルに手動で保存するという手段を用いる必要なく、異なる設計変更／バージョンが迅速かつ容易に復元できるようにし得る。
【００３０】
チェックポイントは、コンポーネントベースのモデリング環境のセッション中に作成され得る。セッションは、モデルが操作され得る期間を表し得る。複数のファイルに保存された複数のモデルが単一のセッション内で操作され得、複数の異なるセッションが一度にアクティブであり得る。セッションは、ユーザーにより、セッションを開始／終了するようにモデリング環境に指示することによって、手動で開始および／または終了され得る。代替または追加として、セッションは、ある条件が生じると（例えば、コンポーネントベースのモデリング環境の起動またはクローズ）自動的に開始または終了され得る。
【００３１】
本明細書で説明するいくつかの実施形態例では、設計セッションと呼ばれる特別なタイプのセッションが開始および終了され得る。設計セッションは、モデルが様々な方法で変更され得る期間を表し得、その変更は、モデルのコンポーネントの異なるバージョンを作成するためにチェックポイント化され得る。チェックポイントのうちの１つ以上が、モデル設計の公式バージョン（複数可）として選択され得、一般セッションにおいてモデルに組み込まれ得る。異なるバージョンが設計セッションファイルに保存され得、設計セッションファイルは、同じか、または異なるコンピュータ上のユーザー間で共有されて、その異なるバージョンが設計チームによって検討および評価できるようにし得る。
【００３２】
設計セッションで作成されたチェックポイントは、変更されたモデル（例えば、設計セッション中に試された異なるバージョンまたは変更）を含むか、またはそれらを指し得る。いくつかの実施形態では、変更されたモデルは、設計セッション内でのみ見つかり得る（例えば、変更されたモデルおよび設計セッション情報は、特別な設計セッションファイルまたは一時的な実行時抽出フォルダ内に保存され得る）。
【００３３】
チェックポイント化は、必ずしも指定された設計セッション内で行われる必要はなく、コンポーネントベースのモデリング環境に一般的に適用可能であり得ることが理解される。加えて、説明を簡単にするために、設計セッション内で編集されている単一モデルに関して、以下で例を説明する。しかし、本発明は、設計セッション内での単一モデルの使用に限定されず、当業者は、複数のモデルが単一の設計セッション内で表され得ることを理解するであろう。
【００３４】
コンポーネントベースのモデリング環境でのチェックポイント化の使用は、非制限的な例を参照すると、さらに明瞭に理解されるであろう。図１Ａ〜図１Ｇは、係る環境で使用されているチェックポイント化の一例を示す。
【００３５】
図１Ａに示すように、モデル１１０が、モデリング環境で作成され得る。モデル１１０は、様々なコンポーネントで構成された物理的モデルであり得る。図１Ａの例では、モデル１１０は、他のコンポーネントの中でとりわけ、２つの肘掛けコンポーネント１１２、４つの車輪コンポーネント１１４、および基部コンポーネント１１６を有する椅子を表す。
【００３６】
モデリング環境は、コンポーネントリスト１１８も含み得、コンポーネントが、モデル１１０内で選択、表示、取込み、置換、または削除されるのを可能にする。モデリング環境は、現在のセッション内で作成されたチェックポイントを表示するチェックポイントツリー表現１２０もサポートし得る。
【００３７】
チェックポイントツリー表現１２０は、チェックポイントの階層を含み得る。チェックポイントは、データベース内に階層的に格納され得る。チェックポイントツリー表現１２０は、データベースからのチェックポイントを、他の可能性の中でとりわけ、フラットタイムラインとして（潜在的に、チェックポイントの異なるシーケンスを表すために、異なる色などの、視覚的に区別する特徴と共に）、またはツリーとして、表示し得る。チェックポイントがツリーとして表示される場合、そのツリーはチェックポイントシーケンスまたは分岐の階層として編成され得、この場合、分割ポイントは拡張可能なノードになり得る。分岐は、主分岐として表示し、かつ／またはグラフィック空間を節約するために垂直にリストするように、切替え可能であり得る。
【００３８】
チェックポイントツリー表現１２０は、モデル１１０の初期構成を表すエントリチェックポイント１２２を含み得る。例えば、エントリチェックポイント１２２は、現在のセッションが開始した時のモデルの状態を表し得る。モデルのこの初期状態は基本モデルと呼ばれ得る。
【００３９】
セッション中、モデル１１０は、図１Ｂに示すように、変更され得る。この例では、肘掛けコンポーネント１１２が、座ではなく、椅子の背もたれに連結するように変更されている。
【００４０】
モデル１１０に対して変更が行われると、ユーザーは、モデル１１０の現在の状態を表すチェックポイントを作成し得る。図１Ｃに示されるように、チェックポイントを作成するようにモデリング環境に指示すると、モデリング環境は、現在のチェックポイントに関する情報を入力するためのチェックポイントダイアログ１２４を表示し得る。チェックポイントダイアログは、チェックポイントツリー表現１２０内に表示されるチェックポイント名１２６、チェックポイントツリー表現１２０内の異なるチェックポイントの間でユーザーが検索できるようにする検索可能なキーワード１２８、および将来の参照のためにユーザーがチェックポイントを記述できるようにするチェックポイントコメント１３０を作成するためのフィールドを含み得る。
【００４１】
図１Ｄに示すように、新しいチェックポイントの作成後、チェックポイント１３２が、チェックポイントツリー表現１２０内に示され得る。ユーザーは、次に、その新しいチェックポイントからモデル１１０の編集を継続し得るか、または異なる設計変更を探索するために異なるチェックポイントに戻り得る。
【００４２】
図１Ｅに示す例では、ユーザーは、第１のチェックポイントからモデル１１０の編集を継続する。この場合、ユーザーは、第５の車輪コンポーネント１１４を含めるようにモデル１１０を変更した。ユーザーは、更新された肘掛けコンポーネント１１２および更新された車輪コンポーネント１１４をもつモデルの状態を捕捉する第２のチェックポイント１３４を作成し得る。
【００４３】
ユーザーが、以前に保存したチェックポイント（例えば、第１のチェックポイント１３２）に戻りたい場合、そのチェックポイントは、チェックポイントツリー表現１２０内で選択され得る。図１Ｆに示すように、以前のチェックポイントを選択すると、復元オプション１３６が表示され得る。ユーザーが復元オプション１３６を選択すると、モデル１１０が、以前のチェックポイントと一致した状態に復元され得る。この場合、第１のチェックポイント１３２に関連した復元オプション１３６が選択されると、モデル１１０は、第１のチェックポイント１３２と一致した状態（例えば、図１Ｂに示されるようなモデル１１０の状態）に戻されるであろう。
【００４４】
チェックポイントは、互いに別々に保存され得るか、またはチェックポイントの階層が作成され得る。例えば、ユーザーが第１のチェックポイント１３２から開始して、モデル１１０をさらに変更する場合、入れ子になったチェックポイントが第１のチェックポイント１３２の下に作成され得る。図１Ｇでは、ユーザーは、より大きい基部コンポーネント１１６を組み込むために、第１のチェックポイント１３２からモデル１１０を変更した。入れ子になったチェックポイント１３８が第１のチェックポイント１３２の下に作成されて、チェックポイントツリー表現１２０内に示されている。チェックポイントをこのように入れ子にすることは、チェックポイント間の関係の視覚的表示を提供するのに有用であり得る。チェックポイントを階層として表すことにより、設計変更およびプロセスがより正確かつ効率的に捕捉され得る。例えば、階層内の異なる分岐は、設計プロセスにおける分割および／またはモデルにおける変更の異なるシーケンスを表すために使用され得る。
【００４５】
ユーザーは、また、もはや必要ないチェックポイントを削除し得る。チェックポイント階層内のチェックポイントが削除されると、削除されたチェックポイント内の情報（保存されたコンポーネントモデルおよび以前のチェックポイントへの参照など）が、削除されたチェックポイントを除去する前に、後のチェックポイントと統合され得る。従って、チェックポイントのツリー構造が、情報を失うことなく維持され得る。
【００４６】
図２は、チェックポイントの作成および管理のためのモデリング環境例２００を示す。モデリング環境２００の一例は、米国マサチューセッツ州ニーダム所在のＰＴＣ  Ｉｎｃ．のＣｒｅｏ（登録商標）Ｐａｒａｍｅｔｒｉｃである。モデリング環境２００は、ローカルコンピューティング装置上に常駐し得るか、またはネットワークを通してアクセスされ得る。
【００４７】
モデル１１０は、モデリング環境２００内に存在し得る。モデル１１０は、１つ以上の組立体を含み得、各組立体は１つ以上のコンポーネントモデルで構築されている。モデリング環境２００は、モデル１１０を変更するためのツールを提供し得る。
【００４８】
モデル１１０が変更されると、そのモデルは１つ以上の変更されたコンポーネント２１２、および１つ以上の未変更のコンポーネント２１４を含み得る。モデリング環境２００は、後述のチェックポイントを作成するために、どのコンポーネントが変更されて、どのコンポーネントが変更されていないかを追跡し得る。どのコンポーネントが変更されていて、それらのコンポーネントがどのように変更されたかを追跡するために、モデリング環境２００は、変更を検出するための変更論理２２０を含み得る。例えば、変更論理２２０は、モデリング環境２００への着信命令を分析して、どの命令がコンポーネントの形状を変更して、変更されたコンポーネント２１２をもたらしたかを判断し得る。代替または追加として、変更論理２２０は、定期的に、コンポーネントの現在のバージョンをコンポーネントの以前のバージョンと比較し得る。現在のバージョンが以前のバージョンと一致しない場合、変更論理はそのコンポーネントを変更されたものとして記録し得る。
【００４９】
コンポーネントの形状および／またはコンポーネントの互いに対する配置の変更が、変更論理２２０によって変更データベース２３０内に記録され得る。変更データベース２３０は、変更されたコンポーネント２１２の結果として生じた形状に関する情報だけでなく、モデルに対する変更のリストも含み得る。
【００５０】
ユーザーは、いつでも、モデル１１０に対して（および／またはセッション内で編集された複数のモデル１１０に対して）チェックポイントを作成するためにモデリング環境２００に指示し得る。代替または追加として、モデリング環境２００は自動的に（例えば、設計セッションの開始などの所定の事象の発生時、または所定の時間間隔で）チェックポイントを作成し得る。このように、モデリング環境２００は、チェックポイント２５０がどのように作成されるかを定義するためのチェックポイント論理２４０を含み得る。
【００５１】
モデル１１０の現在の状態に対するチェックポイント２５２、２５４が作成されると、チェックポイント２５２、２５４はチェックポイントデータベース内に格納され得る。モデリング環境２００は、チェックポイント復元論理２６０をさらに含み得、それは、チェックポイントデータベースから１つ以上のチェックポイント２５０を取得して、モデル１１０をその取得されたチェックポイント（複数可）と一致した状態に復元し得る。
【００５２】
チェックポイントツリー内に階層的に配置されたチェックポイント２５０の一例が図３に示されている。図３に示すように、１つの組立体が複数の組立体バージョン３１０に関連付けられ得、各組立体バージョン３１０は、組立体の状態およびその組立体を構成するコンポーネントを表している。各組立体バージョン３１０は、設計セッション内で定義された１つ以上の下位バージョン３２０とも関連付けられ得る。図３は、ユーザーが、組立体のバージョン３を作成するために、組立体のバージョン２で作業している例を示す。
【００５３】
図３に示すように、組立体の初期バージョン（バージョン２）が設計セッションに取り込まれて、その設計セッションに対する初期の「変更前」基本モデル３３０として使用される。設計セッションの開始時にエントリチェックポイント３４０が作成され得、そのエントリチェックポイント３４０は基本モデル３３０を格納して、チェックポイント２５０のツリーのルートとして機能する。複数のチェックポイント２５０は、ユーザーがモデルを編集すると作成され得、ユーザーは、組立体に対する次の下位バージョン３２０として使用されるチェックポイントの１つを選択し得る。
【００５４】
図３に示す例では、ユーザーは、基本モデル３３０を変更して第１のチェックポイントを作成し、第１のチェックポイントに関連付けられたモデルを３つの異なる方法で変更して、第２、第３、および第４のチェックポイントを作成した。ユーザーは次いで、第２のチェックポイントに戻って、そのチェックポイントを第５のチェックポイントに対する基礎として使用し、その後、第３のチェックポイントに戻って、そのチェックポイントを第６のチェックポイントに対する基礎として使用した。このプロセスを継続して、最終的に、ユーザーは、第６のチェックポイントが次の公式の下位バージョン３２０として使用されるそのモデルのバージョンを表すと決定した。ユーザーはさらに下位バージョン３２０を通して繰り返した可能性があるが、ユーザーは、この下位バージョン３２０が満足のいくものであると決定して、この下位バージョンをその組立体の公式なバージョン（バージョン３）とした。
【００５５】
従来のコンポーネントベースのモデリングシステムでは、モデルは、実行時にロードされるファイルとして格納され得る。ユーザーがモデルに対して変更を行うと、新しいファイルがその変更されたコンポーネントに対して作成され得、それも（別のファイル）に格納され得る。その結果、上述した例では、ユーザーは、示された１４のチェックポイントバージョンの各々に対して複数の異なるモデル保存ファイルを作成した可能性がある。
【００５６】
モデルの以前のバージョンを復元するために、モデル内のコンポーネントに関連付けられたモデルファイルの各々が再ロードされて、コンポーネントが再生成される必要があり得る。例えば、モデルの要求されたバージョン内のコンポーネントに関連付けられたファイルが記憶装置から取得されて、モデルの新しいインメモリバージョンを作成するために処理される必要があり得る。上述の例では、１４の異なるバージョンの各々を評価するために、ユーザーは、選択されたバージョンに対する保存ファイル（複数可）をロードした可能性があり、それは、モデル全体およびその構成コンポーネントの全てを再ロードしたかもしれない。これは、記憶装置および処理資源の両方を大量に消費する。
【００５７】
しかし、図３に示すチェックポイント２５０は、以前のチェックポイント以後に変更されたモデルコンポーネントのみを保存および復元するために、変更データベース２３０内の情報を活用することができる。例えば、モデルの現在のバージョンと異なるチェックポイント内のコンポーネントのみに関連するファイルを取得した後、そのモデルの現在のインメモリバージョンが、変更されたコンポーネントのみを使用して更新できる。これは、モデルを構成するコンポーネントファイルの全てを必ずしもロードする必要がなく、また、モデル全体を再生成する必要もないので、かなりの処理資源を節約し得る。
【００５８】
いくつかの実施形態では、変更されたコンポーネントへの参照（例えば、ポインタ）がチェックポイント内に保存され得、各チェックポイントを格納するために必要な記憶空間の量をさらに削減する。変更データベース２３０によって識別されるように変更されたコンポーネントのみを保存および処理することにより、チェックポイントは、従来のバックアップ技法よりも少量の情報を格納および処理する。変更データベース２３０の一例を図４に示す。
【００５９】
図４に示すように、モデルのコンポーネントのうちの１つの形状に対する変更となる命令がモデリング環境によって受信される度に、その命令に関する情報が変更４１０として変更データベース２３０内に格納され得る。追加として、命令により派生的な変更が生じる（例えば、パラメータ関係またはパラメータ制約に起因して）場合、派生的な変更も変更４１０として変更データベース２３０内に記録され得る。
【００６０】
変更４１０は、命令に起因する、１つ以上の形状変更４１２を含み得る。形状変更４１２は、例えば、変更によって影響を受ける特徴の記述、または縁部、接点、および表面を含み得る。形状変更４１２は、変更に起因した新しい形状に関する情報を含み得、形状の以前の状態に関する情報を含み得、かつ／または古い形状から新しい形状へどのように変わるかに関する情報を含み得る。
【００６１】
変更４１０は、変更によって影響を受ける、影響を受けるコンポーネントのリスト４１４をさらに含み得る。影響を受けるコンポーネント４１４は、変更によって直接変更されたコンポーネントを含み得、かつ、派生的な変更が現在の変更の結果として実行され得る関連コンポーネントのリストを含み得る。関連コンポーネントは、例えば、そのモデルに関連付けられたパラメータ関係を検査することにより、かつ／またはモデル内の変更されたコンポーネントと連結されたコンポーネントを分析することにより識別され得る。
【００６２】
変更４１０は、変更が行われた時刻を記述するタイムスタンプ４１６などの管理情報（および潜在的に、変更が行われたセッションに関する詳細を提供するセッション情報）をさらに含み得る。変更４１０は、アクティブなチェックポイント４１８も含み得、変更が行われた時にどのチェックポイントが編集されていたかを示す。
【００６３】
さらなる変更４２０が、同様の方法で、変更データベース内に記録され得る。
【００６４】
変更データベース２３０内の変更がチェックポイントを作成するために使用され得る。チェックポイントを作成するためのプロセス例を図５の流れ図に示す。
【００６５】
ステップ５１０において、設計セッションが開始され得る。設計セッションは、コンポーネントベースのモデリングアプリケーションが起動された場合、もしくは新しいコンポーネントがモデリング環境に取り込まれた場合などに、自動的に開始され得るか、またはユーザーが設計セッションを開始するように（例えば、設計セッションに入るメニューオプションを選択することにより）モデリング環境に指示した場合などに、手動で開始され得る。
【００６６】
任意選択として、設計セッションが設計セッションファイルからロードされ得る。この場合、設計セッションファイル内に格納された任意のチェックポイントがモデリング環境に取り込まれて、チェックポイントツリー内に表示され得る。
【００６７】
ステップ５１５で、設計セッションの開始後、モデリング環境は、任意のアクティブなモデルの現在の状態をモデリング環境内に基本モデルとして格納し得る。１つのセッション中にアクティブな２つ以上のモデルが存在し得る。基本モデルは、設計セッションの開始時に存在していたので、モデルの未変更のバージョンを表し得る。基本モデルの表現から成るエントリチェックポイントが（変更なしで）、このステップで作成され得る。
【００６８】
基本モデルのコンポーネントが、モデリング環境に関連付けられた１つ以上の記憶装置上に既に存在する場合があり得る。この場合、そのコンポーネントを基本モデルとして（再度）保存することは不必要であり得る。従って、実施形態例によれば、設計セッションの開始時に、モデリング環境は、コンポーネントの組立体の初期状態を基本モデルとして格納し得る。これは、各コンポーネントを個々に保存することによってではなく、モデリング環境にロードされた記憶装置（複数可）上の全ての初期コンポーネントファイルへのリンク（例えば、ポインタ）を保存することによって、達成され得る。モデリング環境は、コンポーネントをモデリング環境にロードした後に変更されたコンポーネントのみをディスクに保存し得る。
【００６９】
いくつかの実施形態では、基本モデルファイル（複数可）または基本モデルファイル（複数可）へのポインタがエントリチェックポイント内に格納され得、エントリチェックポイントは設計セッションに関連付けられた設計セッションファイル内に格納され得る。システムは、階層的な方法で基本モデルファイル（複数可）を検索し得る。例えば、基本モデルファイル（複数可）の検索時、システムはまず、変更前モデルを探すために設計セッションファイルを検索し得る。変更前のモデルファイル（複数可）が設計セッションファイル内で見つからない場合、システムは、現在の作業フォルダまたはモデルワークスペースをチェックし、次いで、定義された検索パス内を検索し得る。モデルファイル（複数可）が見つからない場合、ユーザーに対してインタフェースが提示されて、ユーザーが手動でブラウズしてモデルファイル（複数可）を検索できるようにし得る。
【００７０】
行う必要がない場合には、基本モデル全体が設計セッションファイルにバックアップされない、いくつかの理由があり得る。第１に、ディスク上に既に保存されているファイルへの参照（例えば、ポインタ）のみを保存すると、設計セッションファイルのサイズが削減され、いくつかのモデルファイルがそれらの元のパス上で利用可能な場合に重複／冗長が減る。さらに、モデルファイルが設計セッションファイルにバックアップされる場合、これは、チェックポイントがアクティブ化されて基本モデルファイルがモデルワークスペースにロードされる際に、（いくつかの状況において）命名が競合し得る。
【００７１】
それにも関わらず、いくつかの実施形態では、基本モデルファイルが設計セッションファイルにバックアップされ得る。これは、例えば、設計セッションファイルが、ディスクに保存されたモデルの基本バージョンを含んでいない異なるコンピュータに移動される場合に、特に有用であり得る。
【００７２】
設計セッションが設計セッションファイルからロードされた場合、設計セッションファイル内のエントリチェックポイントがロードされ得、エントリチェックポイントの基本モデルがモデリング環境によって取得され得る。基本モデルがモデリング環境内にまだ存在していない場合、モデリング環境は基本モデルを設計セッションファイルから取り込んで、その基本モデルをモデリング環境内にロードし得る。基本モデルのロードに加え、設計セッションファイルは、環境特性などの、設計セッションの他の詳細が復元できるようにし得る。例えば、第１のユーザーがいくつかのウィンドウ／モデルをオープンして設計セッションを格納し、第２のユーザーがその関連した設計セッションファイルをオープンした場合、設計セッションファイルは、第２のユーザーのコンピュータ上でウィンドウ／モデルもオープンし得る。
【００７３】
ステップ５２０で、ユーザーは、任意選択で、既存のチェックポイントをアクティブにすることを要求し得る。既存のチェックポイントが存在しない場合、またはユーザーが既存のチェックポイントをアクティブにすることを選択しない場合、処理は直接、ステップ５３０に進む。ユーザーが既存のチェックポイントをアクティブにする場合、処理はステップ５２５に進み得、モデリング環境は選択されたチェックポイントをアクティブにし得る。チェックポイントをアクティブにするための手順例を、図７に関して、さらに詳細に説明する。
【００７４】
一旦、所望のチェックポイント（エントリチェックポイントまたは選択されたチェックポイントのいずれか）がアクティブにされると、処理はステップ５３０に進み得、ユーザーはそのモデルを編集し得る。ユーザーがモデルに対して変更を行うと、処理はステップ５３５に進み得、モデリング環境は、ユーザー編集のいずれかがモデルのコンポーネントに変更をもたらすかどうかを判断し得る。そうでない場合、処理は、編集がコンポーネントに対する変更となるまで、ステップ５３０に戻り得る。
【００７５】
ステップ５３５で、モデルのコンポーネントが変更されていると判断された場合、処理はステップ５４０に進み得、そこで、ユーザー編集によって生じた明示的な変更が実行され得る。変更が実行されると、モデリング環境は、その変更されたコンポーネントに依存する関連コンポーネントを分析し得、かつ／またはその変更されたコンポーネントに関連付けられたパラメータ関係／制約を取得し得る。明示的な変更が、関連コンポーネントにおいて派生的な変更を要求すると判断される場合、ステップ５４５で、派生的な変更が実行され得る。
【００７６】
ステップ５５０で、明示的な変更および派生的な変更の各々が変更データベース内に記録され得る。この時点で、モデルは変更されており、ユーザーは変更されたモデルをチェックポイント内に格納するようにモデリング環境に指示し得る。代替または追加として、自動チェックポイントがこの時点でトリガーされ得る。その結果、処理がステップ５５５に進み得、そこで、モデリング環境はチェックポイントを格納するかどうかを判断し得る。
【００７７】
ステップ５５５で、チェックポイントが保存されるべきであると判断されると（例えば、モデリング環境がチェックポイントを格納する命令を受信しているため、最後のチェックポイントが保存されてから所定の期間が経過しているため、または所定の事象が生じているために）、処理はステップ５６０に進み得る。そうでない場合、処理はステップ５２０に戻り得、既存のチェックポイントがアクティブにされたかどうかが判断され得る。
【００７８】
ステップ５６０で、モデリング環境は新しいチェックポイントの作成プロセスを開始する。モデリング環境は、どのチェックポイントが現在アクティブであるかを判断し得る。例えば、ユーザーが、エントリチェックポイントから基本モデルを編集している場合、そのエントリチェックポイントは現在アクティブなチェックポイントと見なされる。ユーザーがステップ５２０で異なるチェックポイントをアクティブにした場合、そのアクティブにされたチェックポイントが現在アクティブなチェックポイントと見なされ得る。
【００７９】
現在アクティブなチェックポイントへの参照が、新しいチェックポイント内に格納され得る。例えば、現在アクティブなチェックポイントは、メモリ内または記憶媒体上の位置として表され得る。現在アクティブなチェックポイントのアドレスへのポインタが、ステップ５６０で、新しいチェックポイントと共に格納され得る。処理は次いで、ステップ５６５に進み得る。
【００８０】
ステップ５６５で、モデリング環境は、変更データベースを調べて、現在アクティブなチェックポイントがアクティブにされた以後に、どのコンポーネントが変更されたかを判断し得る。現在アクティブなチェックポイント（例えば、ステップ５２５でアクティブにされたチェックポイント、またはステップ５１５で作成されたエントリチェックポイント）がアクティブ化した時と新しいチェックポイントを格納すべきと（例えば、ステップ５５５での「ＹＥＳ」判定の結果として）判断された時との間に変更された任意のコンポーネントが、新しいチェックポイントと共に格納され得る。
【００８１】
各コンポーネントはコンポーネントモデルファイルによって表され得る。各変更されたコンポーネントに対して、コンポーネントモデルファイル全体をチェックポイント内に格納することは、可能ではあるが、必要でない可能性がある。むしろ、コンポーネントに関連付けられたコンポーネントモデルファイルはメモリ内の既知の位置に格納され得、既知の位置のアドレスがチェックポイントと共に（例えば、ポインタとして）保存され得る。代替または追加として、コンポーネントモデルまたはコンポーネントモデルファイルの名前／パスがチェックポイント内に格納され得る。
【００８２】
コンポーネントに加えて、変更を表すために使用されるモデルのモデルファイル、パラメータ、および他の態様もチェックポイント内に格納され得る。例えば、ユーザーが１つのコンポーネントをモデル内の他のコンポーネントに対して移動させる（すなわち、モデル内のコンポーネントの配置に影響を及ぼす）と、コンポーネントの配置を定義するモデルファイルもチェックポイント内に格納されて、そのモデルをチェックポイントと一致する状態に復元するために使用され得る。
【００８３】
ステップ５７０で、以前のチェックポイントへの参照および以前のチェックポイント以後に変更されたコンポーネントから成る新しいチェックポイントの作成が成功した。そのチェックポイントが現在アクティブなチェックポイントにされ、ユーザーが異なるチェックポイントに戻りたいかを判断するために（または、代替として、ステップ５３０で現在アクティブなチェックポイントの編集を続行するために）、処理はステップ５２０に戻り得る。
【００８４】
設計セッションの終わりに、（エントリチェックポイントを含め）設計セッション中に作成された任意のチェックポイントが設計セッションファイル内に格納され得る。チェックポイントによって捕捉される設計変更を他のユーザーが評価できるようにするために、設計セッションファイルが他のコンピュータに配信され得る。ステップ５１５で保存された基本モデルが、（上述のように）ディスク上にローカルに格納されたモデルコンポーネントへの参照を含んでいた場合、モデルファイルをディスクから設計セッションファイルにコピーするための選択肢が提示され得る。従って、設計セッションファイルが、基本モデルのローカルコピーを有していない別のコンピュータに配信されると、基本モデルが設計セッションファイルから取得され得る。
【００８５】
図５で説明した方法によって、１つ以上のチェックポイントが作成される。チェックポイントのためのデータ構造例を図６に示す。
【００８６】
図６に示すように、初めに作成されたチェックポイントがエントリチェックポイント３４０であり得る。エントリチェックポイントは、関連する変更された特徴のない、基本モデル３３０の表現からなり得る。
【００８７】
基本モデル３３０の編集後、追加のチェックポイント２５２が作成され得る。このチェックポイント２５２は、以前のチェックポイントへの参照６１０を含み得る。参照６１０は、例えば、ポインタであり得る。この場合、チェックポイント２５２は、基本モデル３３０に対する編集に基づき作成された。その結果、参照６１０は、エントリチェックポイント３４０に戻ってポイントする。
【００８８】
チェックポイント２５２は、以前のチェックポイント以後に変更された、変更されたコンポーネントのリスト６２０をさらに含み得る。そのリストは、他の可能性の中でとりわけ、変更されたコンポーネントのコンポーネントモデルファイルへのポインタおよび／またはコンポーネントモデルファイルへのパスを含み得る。１つ以上の変更されたコンポーネント６２２、６２４は、リスト６２０内に含まれ得る。参照６３２、および変更されたコンポーネント６３６のリスト６３４を有するさらなるチェックポイント６３０が、必要に応じて作成され得る。図６に示す例では、第２のチェックポイント６３０は、第１のチェックポイント２５２によって表されるバージョンモデルに基づいて作成され、その結果、参照６３２を通して第１のチェックポイント２５２に戻ってポイントする。
【００８９】
複数のチェックポイントが単一の親を共有するツリー構造の場合におけるように、複数の異なるチェックポイントからの参照は各々、同じ以前のチェックポイントを指し得ることを理解されたい。
【００９０】
一旦、チェックポイントが作成されると、チェックポイントは、モデルをそのチェックポイントと一致する状態に復元するためにアクティブにされ得る。図７は、チェックポイントをアクティブにするための方法例を示す。簡潔に要約すれば、図７で説明する手順は、チェックポイントを選択すること、チェックポイント内に含まれる参照を使用して、チェックポイントの階層／ツリーを通じてエントリチェックポイントまで再帰的に戻り、その間、各チェックポイントに関連付けられた変更されたコンポーネントのリストを蓄積すること、変更されたコンポーネントのリストを統合して、モデル内で使用される変更されたコンポーネントの正しい（例えば、最新の）バージョンを識別すること、および再生成する必要のある基本モデルのそれらのコンポーネントだけを変更し、同時に、未変更のコンポーネントを維持すること、を伴う。
【００９１】
ステップ７１０で、モデリング環境は、識別されたチェックポイントをアクティブにするか、または復元する要求を受信し得る。チェックポイント復元要求は、例えば、チェックポイントツリー内のチェックポイントをアクティブにすることにより、受信され得る。要求内で識別されたチェックポイントが現在アクティブな要求されたチェックポイントになる。
【００９２】
ステップ７１５で、モデリング環境は、変更されたコンポーネントの当初は空のリストを作成し得る。図７で説明する手順を通してチェックポイントが取得されると、各チェックポイントで変更されたコンポーネントが変更されたコンポーネントのリストに追加され得る。
【００９３】
ステップ７２０で、モデリング環境は、現在要求されているチェックポイントを取得し得る。そのチェックポイントは、例えば、メモリ内のデータ構造として、格納され得、ステップ７２０で、識別されたチェックポイントに関連付けられたデータ構造がアクセスされ得る。データ構造は、以前のチェックポイントへの参照、および以前のチェックポイントと現在アクティブな要求されたチェックポイントとの間に生じた変更のリストを含み得る。
【００９４】
ステップ７２５で、モデリング環境は、変更されたコンポーネントのリストを要求されたチェックポイントから抽出し得る。変更されたコンポーネントのリストは、現在ロードされているチェックポイントと直前のチェックポイントとの間に変更されたコンポーネントを表し得る。ステップ７３０で、現在のチェックポイントから取得された、変更されたコンポーネントのリストが、ステップ７１５で作成された、変更されたコンポーネントのリストに追加され得る。変更されたコンポーネントがリスト内に蓄積されると、モデリング環境は、コンポーネントが変更された順序の記録を維持し得、かつ／またはどの変更されたコンポーネントが、コンポーネントの「最新」バージョン（例えば、ステップ７１０で要求されたチェックポイントに関して最新のコンポーネントのバージョン）を表すかを識別し得る。
【００９５】
ステップ７３５で、モデリング環境は、要求されたチェックポイントから取得された以前のチェックポイントへの参照を辿り得る。ステップ７４０で、モデリング環境は、以前のチェックポイントがエントリチェックポイントであるかどうかを判断する。エントリチェックポイントは、例えば、エントリチェックポイントの構造に基づき、識別され得る。例えば、全ての非エントリチェックポイントは、以前のチェックポイントへの参照および変更されたコンポーネントのリストを含み得る。それに対して、エントリチェックポイントは、基本モデルの表現を含み得、変更されたコンポーネントは含まない。
【００９６】
ステップ７４５での答えが「ＹＥＳ」である場合、必要な全ての変更されたコンポーネントが識別されて、処理はステップ７５０に進み得る。そうでない場合、さらなる変更が蓄積される必要があり、処理はステップ７４５に進み得る。
【００９７】
ステップ７４５で、アクティブなチェックポイント内の参照を通じてアクセスされた以前のチェックポイントが、新しい現在のアクティブな要求されたチェックポイントになる。処理は次いで、ステップ７２０に戻り得、そこで、残りのチェックポイントが、エントリチェックポイントに達するまで、再帰的に処理される。
【００９８】
ステップ７５０で、必要な全ての変更されたコンポーネントが蓄積されて、モデリング環境は、基本モデルを有するエントリチェックポイントを識別している。モデリング環境は、エントリチェックポイント内の基本モデルを識別し得、それは、基本モデル内に存在するコンポーネントのリストの抽出を伴い得る。
【００９９】
ステップ７５５で、モデリング環境は、ステップ７３０で構築されたリストを調べて、エントリチェックポイントと要求されたチェックポイントとの間に、基本モデルのどのコンポーネントが変更されたかを判断し得る。例えば、（要求されたチェックポイントと比較して）コンポーネントの最新バージョンのみが使用されるように、変更されたコンポーネントのリストが統合され得る。
【０１００】
基本モデルが作成された以後に変更されなかった特徴は、未変更の特徴と見なされ得る。未変更の特徴のリストも、変更されたコンポーネントのリストに追加して作成され得る。
【０１０１】
システムは、この時点で、要求されたチェックポイントによって表されるようにモデルを構成するコンポーネント（未変更の特徴および変更された特徴）のリストを蓄積している。リストは、メモリ内にロードされている現在アクティブなモデル内に存在するコンポーネントの集合と比較され得る。コンポーネントのいずれかが、現在アクティブなモデル内に存在するコンポーネントのバージョンと一致する場合、これらのコンポーネントはそれらの現在の形のままにされ得る（それにより、モデルのコンポーネントを再作成する必要を削減する）。ステップ７６０で、モデリング環境は、現在アクティブなモデル内に存在していない、ステップ７５５からの統合されたリスト内で識別されたコンポーネントの最新バージョンを取得し得る。例えば、モデリング環境は、統合されたリストおよび／または未変更のコンポーネントのリスト内で識別されたコンポーネントの最新バージョンに関連付けられたコンポーネントモデルファイル（またはコンポーネントモデルファイルのバージョン）を取得し得る。
【０１０２】
ステップ７６０で取得されたコンポーネントがモデルに適用され得、それにより、その取得されたコンポーネントがモデル内の既存のコンポーネントを置き換える。代替または追加として、モデルをチェックポイントと一致させるために、既存のコンポーネントが除去され得るか、または取得されたコンポーネントがそのモデルに追加され得る。
【０１０３】
モデルをチェックポイントと一致させるために、そのモデルに取り込まれる、取得されたコンポーネントは、コンポーネントレベルまたは特徴／パラメータ／形状レベルのいずれかで存在するパラメータ依存性および関係を維持または再構築するために操作された、それらの特徴、パラメータ、および／または形状を有し得る。
【０１０４】
いくつかの実施形態では、モデルをチェックポイントと一致させるために、変更されたコンポーネントのみが置き換えられ得る。これらのコンポーネントの置換後、システムは、更新されたモデル内で変更されたコンポーネント構造に基づき、変更されたコンポーネント（および／またはパラメータ依存性もしくは関係によって変更されたコンポーネントに関連している任意のコンポーネント）の間での依存性および／または関係を再計算または再生成し得る。これは、モデル内に既に存在していて、ステップ７５５〜７６０で以前に再生成／更新されなかったコンポーネントに対して変更を行うことを伴い得る。
【０１０５】
処理は次いで、ステップ７６５に進んで、終了し得る。
【０１０６】
いくつかの実施形態では、必ずしも、元のエントリチェックポイントまで遡って戻る必要はない。モデルが現在、チェックポイントツリー内の第１のチェックポイントによって表される状態であって、要求されたチェックポイントが、チェックポイントツリー上で第１のチェックポイントと同じ分岐上の、以前または後のチェックポイントである場合には、第１のチェックポイントと要求されたチェックポイントとの間だけ戻って、その２つのチェックポイント間で変更されたコンポーネントだけを変更することが可能であり得る。
【０１０７】
例えば、図１Ｄおよび図１Ｇの例を参照すると、第１のチェックポイント１３２は、椅子の背もたれに取り付けられた肘掛けコンポーネント１１２および、狭い基部コンポーネント１１６に取り付けられた４つの車輪コンポーネント１１４を備える椅子を表した。入れ子になったチェックポイント１３８（第１のチェックポイント１３２と同じチェックポイントツリーの分岐に沿って位置する）は、椅子の背もたれに取り付けられた肘掛けコンポーネント１１２および、広い基部コンポーネント１１６に取り付けられた４つの車輪コンポーネント１１４を備えた椅子を表した。
【０１０８】
入れ子になったチェックポイント１３８が、現在アクティブなチェックポイントであって、ユーザーが第１のチェックポイント１３２をアクティブにすることを決定した場合、モデリング環境は、これらのチェックポイントがチェックポイントツリーの同じ分岐上に位置することを識別し得る。入れ子になったチェックポイント１３８から第１のチェックポイント１３２まで戻ることにより、モデリング環境は、これら２つのチェックポイント間でのモデルに対する唯一の変更は、基部コンポーネント１１６が拡げられたことであると判断し得る。従って、第１のチェックポイント１３２に戻すために、基部コンポーネント１１６のみをロードし、パラメータ関係によって基部コンポーネント１１６に関連している任意のコンポーネントを変更するだけで十分であり得、このように、椅子モデルのほとんどのコンポーネントを維持して、基部コンポーネント１１６の幅だけを変更する。これは、モデルの以前にチェックポイント化されたバージョンをロードする際に処理資源を節約し得る。
【０１０９】
チェックポイントを作成および復元する例を次に説明する。
【０１１０】
モデルファイル「ｂｉｋｅ．ａｓｍ」内に格納されたバイク組立体の例を考える。ｂｉｋｅ．ａｓｍファイルは、バイクの異なる部品を表すファイル（例えば、操作レバーコンポーネントを表すファイル「ｈａｎｄｌｅｂａｒ．ｐｒｔ」、前輪コンポーネントを表すファイル「ｆｒｏｎｔ＿ｗｈｅｅｌ．ａｓｍ」、後輪コンポーネントを表すファイル「ｒｅａｒ＿ｗｈｅｅｌ．ａｓｍ」、およびシートコンポーネントを表すファイル「ｓｅａｔ．ｐｒｔ」）を含む組立体モデルフォルダ内に格納され得る。この例で使用されるように、部品および組立体の両方がコンポーネントを表し得る。
【０１１１】
設計セッションを開始すると、エントリチェックポイントが作成され得る。エントリチェックポイントは、ｂｉｋｅ．ａｓｍファイルを基本モデルとして含む、元の組立体モデルフォルダへのポインタを含み得る。
【０１１２】
ユーザーが次いで、バイクの操作レバー部の形状を変更すると、ｈａｎｄｌｅｂａｒ．ｐｒｔファイルの新しいバージョンが生成され得る。ユーザーは、第１のチェックポイントが作成され得ることを示し得る。チェックポイント１は、エントリチェックポイントへの参照およびｈａｎｄｌｅｂａｒ．ｐｒｔファイルの新しいバージョンを含み得る。
【０１１３】
ユーザーは次いで、バイクの前輪、後輪、およびシートの形状を変更して、新しいチェックポイントを作成し得る。チェックポイント２は、ｆｒｏｎｔ＿ｗｈｅｅｌ．ａｓｍファイル、ｒｅａｒ＿ｗｈｅｅｌ．ａｓｍファイル、およびｓｅａｔ．ｐｒｔファイルの新しいバージョンだけでなく、チェックポイント１への参照も含み得る。
【０１１４】
ユーザーは次いで、バイクモデルについてシートの配置を変更して、第３のチェックポイントを作成し得る。チェックポイント３は、チェックポイント２への参照およびシートコンポーネントの変更された配置を反映しているｂｉｋｅ．ａｓｍファイルの新しいバージョンを含む。
【０１１５】
ここで、ユーザーが設計セッションをクローズして、モデリング環境を出ると仮定する。ユーザーは次いで、モデリング環境を再オープンして、バイクの何らかのバージョンを記憶装置からロードし得る。ユーザーが次いで、バイクをチェックポイント３と一致する状態に復元することを要求すると、モデリング環境は、ｈａｎｄｌｅｂａｒ．ｐｒｔファイルをチェックポイント１からｆｒｏｎｔ＿ｗｈｅｅｌ．ａｓｍファイル、ｒｅａｒ＿ｗｈｅｅｌ．ａｓｍファイル、およびｓｅａｔ．ｐｒｔファイルをチェックポイント２から、ならびにｂｉｋｅ．ａｓｍファイルをチェックポイント３から収集し得る。これらのモデルファイルと一致していない、メモリ内のモデルの現在アクティブなバージョン内のコンポーネントが、置き換えられて再生成され得る。
【０１１６】
代替として、ユーザーは、現在のモデルをメモリにロードすることなく、第３のチェックポイントを復元することを要求し得る。この場合、モデリング環境は、エントリチェックポイント内の基本モデルおよび後続のチェックポイント内に反映された変更されたコンポーネントに基づき、必要なファイルをロードし得る。
【０１１７】
上述した動作の１つ以上が処理論理で実行可能なコンピュータ実行可能命令としてコード化され得る。コンピュータ実行可能命令は、１つ以上の非一時的コンピュータ可読媒体上に格納され得る。上述した動作の１つ以上が、適切にプログラム化された電子装置内で実行され得る。図８は、本明細書で説明する１つ以上の実施形態での使用に適した電子装置８００の一例を示す。
【０１１８】
電子装置８００は、多くの形をとり得、コンピュータ、ワークステーション、サーバー、ネットワークコンピュータ、量子コンピュータ、光コンピュータ、インターネット家電、モバイル機器、ポケットベル、タブレットコンピュータ、スマートセンサー、特定用途向け処理装置などを含むが、それらに限定されない。
【０１１９】
電子装置８００は例示であり、他の形態をとり得る。例えば、電子装置８００の代替実施態様は、図８の構成より、コンポーネントの数が少ないか、多いか、または異なる構成のコンポーネントを有し得る。図８および／または本明細書で説明する他の図面のコンポーネントは、ハードウェアベースの論理、ソフトウェアベースの論理および／またはハードウェアとソフトウェアベースの論理の組合せ（例えば、ハイブリッド論理）である論理を使用して実装され得、従って、図６および／または他の図面で例示するコンポーネントは特定のタイプの論理に限定されない。
【０１２０】
プロセッサ８０２は、電子装置８００の代わりに命令を実行するために、ハードウェアベースの論理またはハードウェアベースの論理とソフトウェアの組合せを含み得る。プロセッサ８０２は、例えば、メモリ８０４内に含まれる情報を、解釈、実行、および／または別の方法で処理し得る論理を含み得る。情報は、本発明の１つ以上の実施形態を実装し得るコンピュータ実行可能命令および／またはデータを含み得る。プロセッサ８０２は、様々な同種または異種ハードウェアを含み得る。ハードウェアは、例えば、１つ以上のプロセッサ、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け命令セットプロセッサ（ＡＳＩＰ）、特定用途向け集積回路（ＡＳＩＣ）、複合プログラム可能論理回路（ＣＰＬＤ）、グラフィック処理装置（ＧＰＵ）、または情報を解釈、実行、操作、および／もしくは別の方法で処理し得る他のタイプの処理論理の何らかの組合せを含み得る。プロセッサは、シングルコアまたは多重コア８０３を含み得る。さらに、プロセッサ８０２は、システムオンチップ（ＳｏＣ）またはシステムインパッケージ（ＳｉＰ）を含み得る。プロセッサ８０２の一例は、米国カリフォルニア州サンタクララ所在のＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＩｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）シリーズのプロセッサである。
【０１２１】
電子装置８００は、１つ以上のコンピュータ実行可能命令または本発明の１つ以上の実施形態を実装し得るソフトウェアを格納するための１つ以上の有形の非一時的コンピュータ可読記憶媒体を含み得る。非一時的コンピュータ可読記憶媒体は、例えば、メモリ８０４または記憶装置８１８であり得る。メモリ８０４は、情報を格納し得るＲＡＭ装置を含み得るＲＡＭを含み得る。ＲＡＭ装置は、揮発性または不揮発性であり得、例えば、１つ以上のＤＲＡＭ装置、フラッシュメモリ装置、ＳＲＡＭ装置、ゼロキャパシタＲＡＭ（ＺＲＡＭ）装置、ツイントランジスタＲＡＭ（ＴＴＲＡＭ）装置、読み取り専用メモリ（ＲＯＭ）装置、強誘電体ＲＡＭ（ＦｅＲＡＭ）装置、磁気抵抗ＲＡＭ（ＭＲＡＭ）装置、相変化メモリＲＡＭ（ＰＲＡＭ）装置、または他のタイプのＲＡＭ装置を含み得る。
【０１２２】
１つ以上のコンピューティング装置８００は、メモリ８０４内にロードされた命令を実行するための仮想マシン（ＶＭ）８０４を含み得る。仮想マシン８０６は、複数のプロセッサ上で実行するプロセスを処理するために提供され得、それにより、プロセスは、複数のコンピューティング資源ではなく１つだけのコンピューティング資源を使用しているように見え得る。仮想化は、電子装置内のインフラおよび資源が動的に共有され得るように、電子装置８００内で利用され得る。複数のＶＭ８０６が、単一のコンピューティング装置８００上に常駐し得る。
【０１２３】
ハードウェアアクセラレータ８０８は、ＡＳＩＣ、ＦＰＧＡ、または何らかの他の装置内に実装され得る。ハードウェアアクセラレータ８０８は、電子装置８００の一般的な処理時間を削減するために使用され得る。
【０１２４】
電子装置８００は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）またはインターネットに様々な接続を通して接続するためのネットワークインタフェース８１０を含み得、様々な接続には、標準的な電話回線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（例えば、総合サービスデジタル通信網（ＩＳＤＮ）、フレームリレー、非同期転送モード（ＡＴＭ）、無線接続（例えば、８０２．１１）、高速相互接続（例えば、ＩｎｆｉｎｉＢａｎｄ、ギガビットイーサネット（登録商標）、Ｍｙｒｉｎｅｔ）または上述のいずれかもしくは全部の何らかの組合せを含むが、それらに限定されない。ネットワークインタフェース７０８は、内蔵式ネットワークアダプタ、ネットワークインタフェースカード、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）ネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ネットワークアダプタ、モデム、または電子装置８００を任意のタイプのネットワーク可能通信に接続して、本明細書で説明する操作を実行するのに適した任意の他の装置を含み得る。
【０１２５】
電子装置８００は、１つ以上の入力装置８１２を含み得、例えば、ユーザーからの入力を受信するために使用され得る、キーボード、マルチポイントタッチインタフェース、ポインティングデバイス（例えば、マウス）、ジャイロスコープ、加速度計、力覚装置、触覚デバイス、ニューラルデバイス、マイクロフォン、またはカメラなどである。電子装置８００は、他の適切な入出力周辺装置を含み得ることに留意されたい。
【０１２６】
入力装置８１２は、ユーザーが、視覚的表示装置８１４上で登録される入力を提供できるようにし得る。グラフィカルユーザーインタフェース（ＧＵＩ）８１６が表示装置８１４上に表示され得る。
【０１２７】
記憶装置８１８もコンピュータ８００に関連付けられ得る。記憶装置８１８は、入出力バスを経由してプロセッサ８０２にアクセス可能であり得る。記憶装置８１８内の情報は、プロセッサ８０２により、実行、解釈、操作、および／または別の方法で処理され得る。記憶装置８１８は、例えば、磁気ディスク、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤプレイヤー）、ランダムアクセスメモリ（ＲＡＭ）ディスク、テープ装置、および／またはフラッシュドライブなどの記憶装置を含み得る。情報は、記憶装置内に含まれる１つ以上の非一時的有形のコンピュータ可読媒体上に格納され得る。この媒体は、例えば、磁気ディスク、光ディスク、磁気テープ、および／またはメモリデバイス（例えば、フラッシュメモリデバイス、スタティックＲＡＭ（ＳＲＡＭ）デバイス、ダイナミックＲＡＭ（ＤＲＡＭ）デバイス、または他のメモリデバイス）を含み得る。情報は、本発明の１つ以上の実施形態を実装し得るデータおよび／またはコンピュータ実行可能命令を含み得る。
【０１２８】
記憶装置８１８は、実施形態例で提供される、任意のモジュール、出力、ディスプレイ、ファイル８２０、情報、ユーザーインタフェースなどを格納し得る。記憶装置８１８は、コンピューティング装置８００または別の電子装置によって使用するためのアプリケーション８２２を格納し得る。アプリケーション８２２は、コンピューティング装置１３００がタスクを実行するのを可能にする、プログラム、モジュール、またはソフトウェアコンポーネントを含み得る。アプリケーションの例には、文書処理ソフトウェア、シェル、インターネットブラウザ、生産性スイート、およびプログラミングソフトウェアを含む。記憶装置８１８は、コンピューティング装置８００または別の装置によって使用するためのデータだけでなく、追加の機能を提供するための追加のアプリケーションを格納し得る。データは、ファイル、変数、パラメータ、画像、テキスト、および他の形式のデータを含み得る。
【０１２９】
記憶装置８１８は、コンピューティング装置８００を実行するためのオペレーティングシステム（ＯＳ）８２４をさらに格納し得る。ＯＳ  ８２４の例には、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、Ｕｎｉｘ（登録商標）およびＬｉｎｕｘ（登録商標）オペレーティングシステム、Ｍａｃｉｎｔｏｓｈコンピュータ向けのＭａｃＯＳ（登録商標）、Ｓｙｍｂｉａｎ  ＯＳなどの組み込みオペレーティングシステム、リアルタイムオペレーティングシステム、オープンソースオペレーティングシステム、独自のオペレーティングシステム、携帯電子機器向けのオペレーティングシステム、または電子装置上で実行して本明細書で説明する操作を実行可能な他のオペレーティングシステムを含み得る。オペレーティングシステムは、ネイティブモードまたはエミュレートモードで実行され得る。
【０１３０】
一実施形態では、コンピューティング装置８００は、モデルを構築するための特徴ベースのモデリング環境８３０を含み得る。モデリング環境８３０は、例えば、ソフトウェアコンポーネントまたはコンピュータプログラムであり得る。モデリング環境８３０は、ＣＡＤ環境であり得る。モデリング環境８３０は、モデル１１０の構築、編集、保存およびロード、モデル１１０の性能のシミュレーション、ならびにモデル１１０のラピッドプロトタイピングまたは製造ユニットへの入力としての提供のための手段を含み得る。モデリング環境８３０は、幾何学形状カーネル（ｇｅｏｍｅｔｒｙ  ｋｅｒｎｅｌ）８３２をさらに含み得、それは、モデル内の特徴の形状を計算して表し得る。
【０１３１】
本発明の１つ以上の実施形態は、１つ以上の非一時的有形のコンピュータ可読媒体上に具現化され得る、コンピュータ実行可能命令および／またはデータを使用して実装され得る。媒体は、ハードディスク、コンパクトディスク、デジタル多用途ディスク、フラッシュメモリカード、プログラマブル読取り専用メモリ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、磁気テープ、または他のコンピュータ可読媒体であり得るが、それらに限定されない。
【０１３２】
本発明の１つ以上の実施形態は、プログラミング言語で実装され得る。使用され得る言語のいくつかの例には、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋、Ｃ＃、ＳｙｓｔｅｍＣ、Ｊａｖａ（登録商標）、Ｊａｖａｓｃｒｉｐｔ、ハードウェア記述言語（ＨＤＬ）、統一モデリング言語（ＵＭＬ）、およびプログラマブル論理制御装置（ＰＬＣ）言語を含むが、それらに限定されない。さらに、本発明の１つ以上の実施形態は、ハードウェア記述言語または計算の指示を可能にしる他の言語で実装され得る。本発明の１つ以上の実施形態は、１つ以上の媒体上または媒体内にオブジェクトコードとして格納され得る。本発明の１つ以上の実施形態を実装し得る命令は、１つ以上のプロセッサによって実行され得る。本発明の一部は、プロセッサ以外の１つ以上のハードウェアコンポーネントに関して実行する命令内にあり得る。
【０１３３】
本発明は分散またはネットワーク環境で実装され得ることを理解されたい。例えば、モデルが、中央サーバーで提供および操作され得、一方、ユーザーは、ユーザー端末を通してモデルとやり取りする。
【０１３４】
図９は、本発明の１つ以上の実施形態を実装し得るネットワーク実施態様を示す。システム９００は、コンピューティング装置８００、ネットワーク９１０、サービスプロバイダ９２０、モデリング環境８３０、およびクラスタ９３０を含み得る。図９の実施形態は例示であり、他の実施形態は、さらに多くの装置、より少ない装置、または図９の配置とは異なる配置の装置を含むことができる。
【０１３５】
ネットワーク９１０は、データを供給源から宛先に伝送し得る。ネットワーク９１０の実施形態は、ルーター、スイッチ、ファイアウォール、および／またはサーバー（図示せず）などのネットワーク装置、ならびにデータを伝送するための接続（例えば、リンク）を使用し得る。データは、１つ以上のネットワークおよび／または１つ以上の装置（例えば、コンピューティング装置８００、サービスプロバイダ９２０など）での使用に対して適合され得る実質的に任意のフォーマットを有する任意のタイプのマシン可読情報を指し得る。データは、デジタル情報またはアナログ情報を含み得る。データはさらにパケット化されることがあり、かつ／またはパケット化されないこともある。
【０１３６】
ネットワーク９１０は、有線導体および／もしくは光ファイバを使用した配線接続されたネットワークであり得、かつ／または自由空間光、無線周波数（ＲＦ）、および／もしくは音響伝達経路を使用した無線ネットワークであり得る。一実施態様では、ネットワーク９１０は、インターネットなどの、実質的にオープンな公衆回線であり得る。別の実施態様では、ネットワーク９１０は、企業の仮想ネットワークなどの、より制限されたネットワークであり得る。ネットワーク９１０は、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、無線ネットワーク（例えば、ＩＥＥＥ８０２．１１を使用）、または他のタイプのネットワークを含み得る。ネットワーク９１０は、共通オブジェクトリクエストブローカーアーキテクチャ（ＣＯＲＢＡ）または分散型コンポーネントオブジェクトモデル（ＤＣＯＭ）などの、ミドルウェアを使用し得る。本明細書で説明するネットワークおよび／またはネットワーク上で動作する装置の実施態様は、例えば、任意の特定のデータタイプ、プロトコル、および／またはアーキテクチャ／構成に限定されない。
【０１３７】
サービスプロバイダ９２０は、サービスを別の装置に対して利用可能にする装置を含み得る。例えば、サービスプロバイダ９２０は、サーバーおよび／または他の装置を使用して、１つ以上のサービスを宛先に提供する実体（例えば、個人、企業、教育機関、政府機関など）を含み得る。サービスは、操作（例えば、最適化操作）を実行するために、宛先によって実行される命令を含み得る。代替として、サービスは、宛先の代わりに操作を実行するために、宛先の代わりに実行される命令を含み得る。
【０１３８】
モデリング環境８３０は、ネットワーク９１０を経由して情報を受信する装置を含み得る。例えば、モデリング環境８３０は、電子装置８００からユーザー入力を受信する装置上でホストされ得る。
【０１３９】
クラスタ９３０は、いくつかの実行ユニット（ＥＵ）９３２を含み得、電子装置８００および／または、サービスプロバイダ９２０などの、別の装置の代わりに、処理を実行し得る。例えば、クラスタ９３０は、電子装置８００から受信した操作に関して並列処理を実行し得る。クラスタ９３０は、単一の装置もしくはチップ上に常駐するか、またはいくつかの装置もしくはチップ上に常駐するＥＵ  ９３２を含み得る。
【０１４０】
ＥＵ９３０は、要求している装置などの、装置の代わりに操作を実行する処理装置を含み得る。ＥＵは、マイクロプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、および／または別のタイプの処理装置であり得る。ＥＵ  ９３２は、動作環境のためのコードなどの、コードを含み得る。例えば、ＥＵは、並列処理動作に関連する動作環境の一部を実行し得る。サービスプロバイダ９２０は、クラスタ９３０を操作し得、申込みベースで（例えば、ウェブサービスを介して）対話型最適化機能を電子装置８００に提供し得る。
【０１４１】
ＥＵは、図８のモデリング環境８３０などの製品に対してリモート／分散処理機能を提供し得る。ハードウェアＥＵは、並列プログラミング動作を実行し、かつ／または並列プログラミング動作に関与し得る装置（例えば、ハードウェア資源）を含み得る。例えば、ハードウェアＥＵは、それが受信している（例えば、直接またはプロキシを経由して受信した）要求および／またはタスクに応答して、並列プログラミング動作を実行し、かつ／または並列プログラミング動作に関与し得る。ハードウェアＥＵは、１つ以上の装置を使用して、実質的に任意のタイプの並列プログラミング（例えば、タスク、データ、ストリーム処理など）を実行し、かつ／または並列プログラミングに関与し得る。例えば、ハードウェアＥＵは、多重コアまたはいくつかのプロセッサを含む単一の処理装置を含み得る。ハードウェアＥＵは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、または他のプログラム可能装置などの、プログラム可能装置でもあり得る。ハードウェアＥＵ内で使用される装置は、グリッド、リング型、星型、または他の構成などの、多数の異なる構成（またはトポロジ）で配置され得る。ハードウェアＥＵは、処理作業の実行時に、１つ以上のスレッド（またはプロセス）をサポートし得る。
【０１４２】
ソフトウェアＥＵは、１つ以上の並列プログラミング動作を実行し、かつ／または並列プログラミング動作に関与し得るソフトウェア資源（例えば、技術計算環境）を含み得る。ソフトウェアＥＵは、プログラムおよび／またはプログラムの１つ以上の部分の受信に応答して、１つ以上の並列プログラミング動作を実行し、かつ／または並列プログラミング動作に関与し得る。ソフトウェアＥＵは、１つ以上のハードウェア実行ユニットを使用して、異なるタイプの並列プログラミングを実行し、かつ／または並列プログラミングに関与し得る。ソフトウェアＥＵは、処理作業の実行時に、１つ以上のスレッドおよび／またはプロセスをサポートし得る。
【０１４３】
用語「並列プログラミング」は、複数のタイプの並列プログラミング、例えば、タスク並列プログラミング、データ並列プログラミング、およびストリーム並列プログラミング、を含むと理解され得る。並列プログラミングは、複数の資源（例えば、ソフトウェア実行ユニット、ハードウェア実行ユニット、プロセッサ、マイクロプロセッサ、クラスタ、ラボ）にわたって分散され得、かつ同時に実行され得る、様々なタイプの処理を含み得る。
【０１４４】
例えば、並列プログラミングは、いくつかのタスクがいくつかのソフトウェア実行ユニット上で同時に処理され得る、タスク並列プログラミングを含み得る。タスク並列プログラミングでは、タスクは、他のタスク実行とは関係なく、例えば、同時に、処理され得る。
【０１４５】
並列プログラミングはデータ並列プログラミングを含み得、その場合、データ（例えば、データセット）は、例えば、ソフトウェア実行ユニットを使用して、並列に実行され得るいくつかの部分に分解され得る。データ並列プログラミングでは、ソフトウェア実行ユニットおよび／またはデータ部は、処理を進めながら、互いに通信し得る。
【０１４６】
並列プログラミングは、ストリーム並列プログラミング（パイプライン並列プログラミングと呼ばれることもある）を含み得る。ストリーム並列プログラミングは、例えば、直列（例えば直線）に配置された、いくつかのソフトウェア実行ユニットを使用し得、その場合、第１のソフトウェア実行ユニットが、第２のソフトウェア実行ユニットに供給され得る第１の結果を生成し得、第２のソフトウェア実行ユニットは、第１の結果を所与として第２の結果を生じ得る。ストリーム並列プログラミングは、タスク割当てが、有向非巡回グラフ（ＤＡＧ）または巡回グラフで表現され得る状態も含み得る。
【０１４７】
他の並列プログラミング技法は、タスク、データ、および／またはストリーム並列プログラミング技法のみ、もしくはハイブリッドの並列プログラミング技法を形成するための他のタイプの処理技法と共に、何らかの組合せを含み得る。
【０１４８】
前述の説明は、本発明の様々な実施形態の実例および説明を提供し得るが、網羅的であることも、本発明を開示する正確な形式に限定することも意図していない。修正形態および変更形態が、上述の教示を踏まえて可能であり得るか、または本発明の実施から得られ得る。例えば、一連の動作が上で説明されているが、動作の順序は、本発明の原理と一致する他の実施態様で変更され得る。さらに、非依存動作が並行して実行され得る。さらに、特徴およびアクセスクラスが特定の構文を使用して上述されているが、特徴およびアクセスクラスは、異なる方法を使用し、かつ異なる構文を使用して、同様に指定され得る。
【０１４９】
加えて、本発明の原理と一致する１つ以上の実施態様が、本発明の精神から逸脱することなく、図面で例示して、本明細書で説明するもの以外の１つ以上の装置および／または構成を使用して実装され得る。１つ以上の装置および／またはコンポーネントが、特定の配置および／または用途に応じて、図面の実施態様に追加され、かつ／または図面の実施態様から除去され得る。また、１つ以上の開示する実施態様は、ハードウェアの特定の組合せに限定されない。
【０１５０】
その上、本発明のある部分は、１つ以上の関数によって実行され得る論理として実装され得る。この論理は、配線接続された論理などのハードウェア、特定用途向け集積回路、フィールドプログラマブルゲートアレイ、マイクロプロセッサ、ソフトウェア、またはハードウェアとソフトウェアの組合せを含み得る。
【０１５１】
本明細書の説明で使用されるどの要素、動作、命令も、そのように明示的に記述されていない限り、本発明にとって重要または必須であると解釈されるべきでない。また、本明細書では、冠詞「１つの（ａ）」は、１つ以上のアイテムを含むことを意図する。１つだけのアイテムを意図する場合には、用語「単一の」または同様の用語が使用される。さらに、句「基づく」は、本明細書では、特に明示的に記載されない限り、「少なくとも一部が基づく」を意味することを意図する。加えて、用語「ユーザー」は、本明細書では、特に明記しない限り、例えば、電子装置（例えば、ワークステーション）または電子装置のユーザーを含むと広く解釈されることを意図する。
【０１５２】
本発明は上で開示した特定の実施形態に限定されず、本発明は、次の添付の特許請求の範囲の範囲内に含まれる、ありとあらゆる特定の実施形態および等価物を含むことを意図する。
【図１Ａ】
0006604655.tif 000002
【図１Ｂ】
0006604655.tif 000003
【図１Ｃ】
0006604655.tif 000004
【図１Ｄ】
0006604655.tif 000005
【図１Ｅ】
0006604655.tif 000006
【図１Ｆ】
0006604655.tif 000007
【図１Ｇ】
0006604655.tif 000008
【図２】
0006604655.tif 000009
【図３】
0006604655.tif 000010
【図４】
0006604655.tif 000011
【図５】
0006604655.tif 000012
【図６】
0006604655.tif 000013
【図７】
0006604655.tif 000014
【図８】
0006604655.tif 000015
【図９】
0006604655.tif 000016