以下、図面を参照して、本発明の実施の形態の一例について説明する。
図1は、本発明の3次元CADデータ作成システムのシステム構成の一例を示す。図中、101は管理サーバであって、本システムで取り扱う3次元CADデータ(3次元CADモデルということもある)を管理するサーバ装置である。102−1、102−2はクライアント装置であって(以下、まとめてクライアント装置102とする)、3次元CADアプリケーションがインストールされており、3次元CADデータの作成を行うために設計者が使用する情報処理装置である。また、作成された3次元CADデータは管理サーバ101で記憶管理されることになる。尚、クライアント装置102−1と102−2には、異なる3次元CADアプリケーションがインストールされており、クライアント装置102−1で作成された3次元CADデータをクライアント装置102−2で編集したり、クライアント装置102−2で作成された3次元CADデータをクライアント装置102−1で編集したりすることが行われる。
103は、管理サーバ101、クライアント装置102−1、クライアント装置102−2をそれぞれ相互に通信可能に接続するための、例えばLAN(Local Area Network)等のネットワークである。
図2は、図1のクライアント装置102−1、及び102−2として適用可能な情報処理装置のハードウェアの構成の一例を示す模式図である。
CPU201は、システムバス204に接続される後述の各デバイスやコントローラを統括的に制御する。また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM202にロードして、プログラムを実行することで各種動作を実現するものである。また、入力コントローラ(入力C)205は、キーボードやポインティングデバイス等で構成される入力装置209からの入力を制御する。ビデオコントローラ(VC)206は、ディスプレイ装置210等の表示装置への表示を制御する。ディスプレイ装置210は、例えばCRTディスプレイや液晶ディスプレイ等で構成される。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
なお、CPU201は、例えばRAM202内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ装置210上での表示を可能としている。また、CPU201は、ディスプレイ装置210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明のクライアント装置102−1の各種処理を実行するために用いられるプログラムは外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、図3を参照して、クライアント装置102−1によって行われるデータ修復処理の概要について説明する。尚、この処理をクライアント装置102−1に実行させるためのプログラムは、クライアント装置102−1にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、当該プログラムの制御に従って、後述する各ステップにおける処理をクライアント装置102−1のCPU201は行うことになる。
このフローに示す処理を行う際には、クライアント装置102−1のCPU201は、クライアント装置102−2で作成された3次元CADデータのうち、変更前の3次元CADデータ(モデルAとする)とモデルAの一部の取り込み形状を他の取り込み形状に置き換えることで作成した3次元CADデータ(モデルBとする)を、3次元CADアプリケーションで閲覧可能な状態にある。本発明では、モデルAの取り込み形状とは異なる取り込み形状を用いることで作成したモデルBで参照エラーが発生した場合に、取り込み形状の変更前のモデルAでの参照関係を利用することで、モデルBで参照先を特定できなくなってしまったフィーチャーの参照先候補を探索する。
まず、CPU201は、モデルBに含まれる1つめのフィーチャー(3次元CADで個々の形状を形作る要素単位)情報を選択する(ステップS301)。尚、ここで、モデルBに含まれるフィーチャーを選択する際に、あらかじめ決められているルールに従って選択しても、設計者の入力装置209操作に基づく指示により選択しても、勿論構わない。
そして、3次元CADプログラムにより実現される判定機能により、選択したフィーチャーにエラーが含まれているかを判定する(ステップS302)。そして、CPU201は、エラーが含まれていると判定した場合(ステップS302でYES)には、処理をステップS303に、エラーが含まれていないと判定した場合(ステップS302でNO)には、処理をステップS311に進めることになる。
ステップS302で、エラーが含まれていると判定した場合には、CPU201は、ステップS301で選択したフィーチャーに含まれているエラーのエラータイプを取得する(ステップS303)。尚、本データ修復処理は、全てのエラーに対して対応することは必ずしも想定しておらず、頻出するエラータイプに対してその修復を支援することを想定するものである。
そして、その後、CPU201は、ステップS303で取得したエラータイプが本処理でデータ修復が可能な(対応可能な)エラータイプであるかの判定を行う(ステップS304)。この判定処理でCPU201が対応可能なエラータイプであると判定した場合には(ステップS304でYES)、処理をステップS305に、対応していないエラータイプであると判定した場合には(ステップS304でNO)、処理をステップS310に進める。
ステップS304でCPU201がYESと判定した場合には、その後、修復処理実行時に3次元CADアプリケーションの制御に従いCPU201が行う3次元CADデータの再計算処理の負荷を抑えるために、3次元CADデータ内の有効とされているフィーチャーのうち、処理中のフィーチャー形成に影響を及ぼさないフィーチャーを無効化する(ステップS305)。
そして、その後、ステップS303で取得したエラータイプに基づいて、データ修復のために必要な設定要素が「面」であるか、それともエッジであるかの判定を行う(ステップS306:面選択?)。CPU201が「面」であると判定した場合(ステップS306でYES)、処理をステップS307に進め、面設定処理を行う。この処理の詳細については、図4を参照して後述する。
一方、ステップS306でCPU201が「エッジ」であると判定した場合には(ステップS306でNO)、処理をステップS308に進め、エッジ設定処理を行う。この処理の詳細については、図7を参照して後述する。
ステップS307若しくはステップS308の処理終了後、CPU201は、ステップS303で取得したエラータイプのエラーが修復されているかを判定する(ステップS309)。そして、エラーが修復されていると判定した場合には(ステップS309でYES)、処理をステップS302に進め、ステップS301で選択したフィーチャーにまだエラーが残っているかを判定し、エラーが残っていると判定した場合には、ステップS302でNOと判定する、即ち当該フィーチャーのエラーが全て修復されたと判定するまで上記のステップS302から309の処理を繰り返すことになる。
ステップS302の判定処理で、ステップS301で取得したフィーチャーにエラーが含まれないと判定した場合には(ステップS303からの処理でエラーを修復し終えた場合も含む)、処理をステップS311に進め、ステップS305で無効化したフィーチャーの解除が必要であるかを判定する。この判定処理では、ステップS305で無効化したフィーチャーが存在する場合には、解除が必要であるとの判定をCPU201は行うことになる。一方、ステップS311でNOと判定した場合には、処理をステップS313に進める。
ステップS311の判定処理でYESと判定した場合には、その後、ステップS305で無効化したフィーチャーを有効に戻す再計算範囲限定解除処理を行うことになる(ステップS312)。ステップS312の処理終了後、ステップS301に処理を進め、次に処理対象とするフィーチャーを新たに選択し、ステップS302以降の処理を繰り返すことになる。
ステップS309の判定処理で修復が完了しなかったと判定した場合には、処理をステップS310に進め、本フローチャートで示す修復処理を中断するかの判定を行う。この判定処理は、クライアント装置102−1を操作する設計者の入力装置209の操作により入力される指示に従って判定することになる。中断すると判定した場合には本処理を終了する。
ステップS310の判定処理で、中断指示を受け付けていないと判定した場合には処理をステップS313に進め、エラー修復処理をしたフィーチャーが最終フィーチャーであるかを判定する。
その後、ステップS313で最終フィーチャーであると判定した場合には本処理を終了する。一方で、最終フィーチャーではないと判定した場合には、処理をステップS301に進め、新たにフィーチャーを選択して、上述の処理を繰り返すことになる。以上がクライアント装置102−1により行われるデータ修復処理の説明である。
次に、図4を参照して、図3のステップS307の面設定処理の詳細について説明する。本処理をクライアント装置102−1に実行させるためのプログラムは、3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、本処理を実行する際には、CPU201は、当該プログラムをRAM202にロードし、その制御に従って本処理を行うことなる。
まず、CPU201は、モデルBのうち、ステップS301で選択されたフィーチャーに対応するモデルA中のフィーチャー(設計情報1)の参照先として設定されている面の一覧を3次元CADアプリケーションのAPIを用いて取得し、取得した面にモデルA中で割り当てられている内部ID(以降、面ID)を図14に示す参照元面テーブルへ登録する(ステップS401)。図27に示す面は、設計情報1の参照先として参照元テーブルへ登録される面である。
図14の参照元面テーブルについて説明する。面IDとは前述のとおりである。測定座標とは参照元面テーブルに登録された面上の座標である。法線ベクトルとは面上の測定座標における法線ベクトルである。ベクトル符号とは面上において測定座標が面の表であるか裏であるかの符号である。基点とは測定座標、法線ベクトル、ベクトル符号もとに導き出される座標点であり、モデルBに配置する無限長の円筒空間の開始座標である。近似面IDとはモデルBに配置された無限長の円筒空間に位置する面のうち最も基点に近い座標に位置する面に割り当てられたモデルB上における内部IDである。対応するフィーチャーを取得する際には、例えば、ステップS301で選択したフィーチャーの名称と同一の名称を有するモデルA中のフィーチャーを取得するなどの方法を用いるが、方法はこれに限られるわけではない。
ステップ401で取得した面のうち、未処理の面の1つを処理対象の面として取得する(参照先取得:ステップS402)。例えば参照元面テーブルのレコードNoが1のものから昇順に処理フラグが0のレコードを対象として取得するものとし、例えば図28に示す面が選ばれたものとする。その後、3次元CADアプリケーションのAPIを用いて処理中の面を囲む空間座標(バウンディングボックス、例えば図29に示すような図28に示す面を囲む直方体空間)を取得し、次にその空間の中心座標を算出し(例えば図29で示す直方体空間の中心座標)、この中心座標にもっとも近い面上の座標点を特定する。取得した座標点を参照元面テーブルの測定座標へ登録する。続いてその座標点における面の法線ベクトルとベクトル符号(面の表側か裏側のいずれの方向であるか)を前述同様に3次元CADアプリケーションのAPIを用いて取得し、法線ベクトル、ベクトル符号として参照元面テーブルへ登録する。続いて法線ベクトルにベクトル符号と任意の乗数を演算した値と面上の座標点とを加算し、基点を設定して参照元面テーブルへ登録する(参照先情報抽出:ステップS403)。最後にこの基点から面に向かって任意の半径による無限長の円筒空間を導き出す。図30は図29にもとづいた無限長の円筒空間を示す一例である。
その後、ステップS403で導出した円筒空間をモデルBに配置し(例えば図31が示すように図30で示される円筒空間がモデルB中の同一座標空間にて定義される)、円筒空間と重なる面があれば、その中で最も基点に近い位置で重なる面(例えば図31が示すモデル形状において変色している面)を取得する。続いて取得した面に割り当てられたモデルB中における内部IDを取得し、参照元面テーブルへ近似面IDとして登録する。なお、該当する面が取得できなかった場合(例えば円筒空間内にモデル上の面が存在しない)には近似面IDへNullを登録する(近似面選択:ステップS404)。
ステップS405では、CPU201は、ステップS404の近似面選択処理で最も基点に近い位置で重なる面を取得できたか(参照元面テーブルの近似面がNullか否か)を判定する(面選択可能?:ステップS405)。そして、取得できなかったと判定(Null)した場合には(ステップS405でNO)、処理をステップS402に進め、ステップS401で取得した面のうち、まだステップS402からS404の処理を終了していない参照元面テーブル中の次のレコードNoの面を処理対象の面として新たに取得し、ステップS402からS404の処理を当該新たに取得した処理対象の面に対して行うことになる。
一方、ステップS405の処理で、取得できたと判定(Not Null)した場合には、CPU201は、モデルBの処理中のフィーチャーの参照先候補として設定する面である選択面の一覧に取得した面を追加記録することにより、RAM202上に記憶されている選択面一覧情報を更新する(ステップS406)。
そして、その後、ステップS401で取得した全ての面に対して上記のステップS402からステップS406に示す一連の処理を行ったか(処理中のレコードNoが末尾であるか)を判定する(ステップS407)。全ての面に対して行っていないと判定した場合には、処理をステップS402に進め、未処理の面に対しての処理を行うことになる。
ステップS407の判定処理で、YESと判定した場合には、本システムのRAM202上の選択面一覧情報にモデルB中のフィーチャーの参照先候補である面として格納された全ての面(参照元面テーブルの全レコードにおける近似面IDに該当する全てのモデルB中の面)をモデルB上で選択した状態にして不図示の3次元CADデータ表示画面に表示する(ステップS408)。図32はステップS408までの処理で取得された面をモデルB中で選択状態にした際の一例であるが、図27で選択されている面の領域と比較すると未選択の領域が確認できる。また、モデルAの面の一覧(ステップS401で取得)についてもモデルA上で選択した状態にして、不図示の3次元CADデータ表示画面の表示領域に表示する。このときに、モデルA、モデルBともに、選択されている面と、選択されていない面とを識別可能に表示することになる。このステップにおいて、CPU201はモデルA、モデルBを表示するための不図示の3次元CADデータ表示画面とともに、図10に示す参照面選択画面1000がディスプレイ装置210に表示されることになる。
図10を参照して、参照面選択画面の構成について説明する。図10に示す参照面選択画面1000には、モデルA表示ボタン1001、モデルB表示ボタン1002、選択面一覧表示部1003、更新ボタン1004、リセットボタン1005、設定ボタン1006、正接選択ボタン1007、隣接選択ボタン1008、可視変更ボタン1009が用意されている。
モデルA表示ボタン1001が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルAを最前面に表示する制御をCPU201が行う。モデルB表示ボタン1002が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルBを最前面に表示する制御をCPU201が行う。
選択面一覧表示部1003には、3次元CADデータ表示画面にモデルAが最前面に表示されている場合にはモデルAでの選択面が、モデルBが最前面に表示されている場合にはモデルBでの選択面が表示される。
更新ボタン1004が押下指示されると、CPU201は、その時点でモデルB上において選択されている面を選択面一覧表示部1003に設定する。尚、この処理はモデルBが最前面に表示されている場合にのみ行われることになる。
リセットボタン1005が押下指示されると、CPU201は、この画面を介した操作指示による選択面変更をリセットし、当該参照面選択画面1000が表示された際の面の選択状態に戻す処理を行う。モデルBが最前面に表示されている際に、設定ボタン1006が押下されると、選択面一覧表示部1003に表示されている選択面を参照先面として設定し、本画面の表示を終了する。
正接選択ボタン1007が押下指示されると、CPU201は、図5に示す正接面選択処理を行う。この正接面選択処理の詳細については後述する。隣接選択ボタン1008が押下指示されると、CPU201は、図6に示す隣接面選択処理を行う。この隣接面選択処理の詳細については後述する。可視変更ボタン1009が押下指示されると、CPU201は、図9に示す可視選択処理を行う。この可視選択処理の詳細については後述する。
設計者は、参照面選択画面1000を介して操作指示を入力することによって選択された面を非選択(除外)への切り替えや、新たに別の面を選択された一覧に追加することができる。また、CPU201に対して、後述する正接選択処理、隣接選択処理、及び可視選択処理の実行指示を入力することが可能となる。以上が、図10の参照面選択画面1000の説明である。
図4の説明に戻る。ステップS408で表示される参照面選択画面1000を介した操作指示に基づいて参照先面として選択された面で選択面の一覧を更新する(ステップS409)。以上が、図3のステップS307の面設定処理の詳細な説明である。
次に、図5を参照して、図4のステップS408で表示される参照面選択画面1000の正接選択ボタン1007の押下指示を受け付けることでCPU201が実行する正接面選択処理の詳細について説明する。本処理をクライアント装置102−1に実行させるためのプログラムは、3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、本処理を実行する際には、CPU201は、当該プログラムをRAM202にロードし、その制御に従って本処理を行うことなる。
まず、ステップS501において、CPU201は、図10の選択面一覧表示部1003に表示されている面の情報を取得する。なお、ここでの初期状態は図32の状態と仮定する。図15に示す正接面テーブルが作成されていない場合にはこれを作成し、ステップS409終了後の参照元面テーブルより近似面IDがNullでないレコードを対象として取得し、近似面IDの値を正接面テーブルの選択面IDへ登録する。その後、選択した面のうち、全ての隣接する面に対する本処理による正接面選択処理をまだ終了していない面を1つ選択する。この場合では正接面テーブルにおいてレコードNoが1のものから昇順に処理フラグが0のレコードを対象として選択面IDを取得する(ステップS502)。
そして、ステップS502で取得した面について、隣接する面が存在するかを3次元CADアプリケーションのAPIを用いて判定する(ステップS503)。隣接面が存在すると判定した場合には(ステップS503でYES)、処理をステップS504に進め、当該面に隣接する面の一覧を取得し、図16に示すサブ正接面テーブルにそれぞれの面に割り当てられたモデルB中の内部IDを隣接面IDとして登録する。サブ正接面テーブルについて説明する。隣接面IDは正接面テーブルで処理中の面に隣接する面のモデルB中における内部IDである。一方、隣接面がないと判定した場合には(ステップS503でNO)、処理をステップS510に進める。
ステップS504の処理終了後、CPU201は、ステップS504で取得した面のうち1つの面(サブ正接面テーブルにおいてレコードNoが1から昇順に取得される隣接面IDに相当)を取得する(ステップS505)。そして取得した面が、ステップS502で取得した選択面と正接の関係になっているかを3次元CADアプリケーションのAPIを用いて判定する(ステップS506)。正接であると判定した場合には、ステップS504で取得した面が既に選択面一覧に含まれるかを判定する。例えば正接面テーブルの全レコードの選択面IDを対象として処理中の隣接面IDをもとに一致検索を行い、選択面として正接面テーブルに登録済みであるかを判定する(ステップS507)。処理中の隣接面が正接面テーブルに含まれていないと判定した場合には、選択面一覧情報にステップS504で取得した面を追加し、選択面一覧情報を更新する。具体的には正接面テーブルの末尾へ処理中の隣接面を新規レコードとして追加し、サブ正接面テーブルの隣接面IDを正接面テーブルの選択面IDへ登録する。正接面テーブルへ隣接面IDを登録した場合にはサブ正接面テーブルを削除し、処理をステップS501に進める。(ステップS508)。
ここで新たに正接面を選択面一覧に追加することにより、新たに選択面として追加された面に対しても、正接する面があるかを判定し、正接面があった場合には当該面を選択面として追加する処理が行われることになる。そして、ステップS508の処理終了後、処理をステップS501に移行し、更新された選択面一覧を取得しなおし、ステップS502以降の処理を行うことになる。ステップS508を経由してステップS502以降の処理を行う際には、処理中の正接面テーブルレコードNoが引き継がれる。
ステップS506でNOと判定した場合、若しくはステップS507でYES(処理中の隣接面が正接面テーブルへ登録済み)と判定した場合には、CPU201は、処理をステップS509に進め、ステップS504で取得した隣接面のうち、まだステップS505で取得されていない面が存在するかを判定する。具体的には処理中のサブ正接面テーブルレコードが末尾であるかによって判定する。(隣接面残あり?)。存在すると判定した場合、この場合では処理中のサブ正接面テーブルレコードが末尾でない場合(ステップS509でYES:隣接面あり)には、処理をステップS505に進め、まだ取得していない隣接面を1つ選択(サブ正接面レコードのレコードに対して昇順に取得)し、ステップS506以降の処理を行う。上記ステップS505からステップS508までの処理を、ステップS509でNO(隣接面残なし)と判定する(具体的には処理中のサブ正接面テーブルレコードが末尾である場合)まで行うことになる。
ステップS509で未処理の隣接面が存在しない(隣接面残なし)と判定した場合には、CPU201はサブ正接面テーブルを削除し、正接面テーブルにて処理中のレコードについて処理フラグの値を1へ変更し、処理をステップS510に進め、選択面(正接面テーブルのレコード)のうち、まだステップS502以降の処理を行っていない面があるか(選択面残あり)を判定する。具体的には正接面テーブルにて処理中のレコードが末尾であるかを判定する。ステップS510の判定処理で、選択面残があると判定した場合には、ステップS502に処理を戻し、まだステップS503以降の処理を行っていない選択面を(正接面テーブル上のレコードに対して昇順に)取得し後続する処理を行う。上記の処理を選択面残がないとCPU201が判定するまで繰り返すことになる。
一方、レコードが末尾である場合には正接面テーブルに登録される選択面IDにもとづいてモデルB上の該当面を全て選択状態にし、選択面一覧表示部1003の表示内容を更新して処理を終了する。図33に示すのは図27に対して正接面選択処理によって新たに選択対象となる面と選択対象とならない面の一例である。また図34に示すのは図33が示す正接面選択処理によって選択する面が、ステップS408までに選択された面に追加された場合の一例である。以上が、正接面選択処理の説明である。
次に、図6を参照して、図4のステップS408で表示される参照面選択画面1000の隣接選択ボタン1008の押下指示を受け付けることでCPU201が実行する隣接面選択処理の詳細について説明する。本処理をクライアント装置102−1に実行させるためのプログラムは、3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、本処理を実行する際には、CPU201は、当該プログラムをRAM202にロードし、その制御に従って本処理を行うことなる。ここでは図27と比較して図34では選択されなかった面に対して隣接面選択処理を行う具体例にもとづいて説明する。図35に示すのは隣接面選択処理で扱うモデルB中の具体的な部位と、正接面選択処理では選択されなかった面の一例である。
まず、CPU201は、隣接選択ボタン1008の押下指示を受け付けると、押下指示を受け付けた際に参照先面として選択されている面(図35に示す選択状態の面全て)の一覧を取得し、図17に示す既定面テーブルを作成して取得した面のモデルB中における面IDを既定面テーブルの選択面IDへ登録する。同時に図18に示す隣接面テーブルを作成する。ここで隣接面テーブルについて説明する。選択面IDはモデルB中における面IDである。グループNoは隣接面選択処理における隣接面のグループNoであり、グループリスト表示部1103に表示される際のNoである。レコード登録時のグループNo初期値は0である。次に取得した面から設計者による入力装置209操作に従って初期選択面として設定する任意の面の指定を受け付ける(ステップS601)。図36に示すのは既定面から任意の面の指定を受けつけた際の一例である。
そしてその後、ステップS601で初期設定面に設定した面に選択状態になっていない隣接面があるか(非選択隣接面あり)を判定する。具体的にはステップS601で取得した初期設定面に対して隣接面があるかを3次元CADアプリケーションのAPIを用いて判定し、隣接面があると判定した場合には隣接面の一覧を同様の手段によって取得する。続いて図19に示す初期隣接面テーブルを作成し、取得した隣接面に対してモデルB中で割り当てられている面IDを初期隣接面テーブルの初期隣接面IDへ登録する。既定面テーブル及び隣接面テーブルの選択面IDを対象として初期隣接面テーブルのレコードNoが1のものから昇順に初期隣接面IDをもとにして一致検索を行い、既定面テーブルもしくは隣接面テーブルのいずれかへ登録済みであるかを判定する(ステップS602)。
ステップS602の判定処理の結果、非選択隣接面が存在すると判定した場合、つまり前述の処理における結果として既定面テーブル及び隣接面テーブルのいずれにおいても指定の初期隣接面が未登録であった場合には(ステップS602でYES)、一致検索処理を中断して処理をステップS603へ進める。また、処理中の隣接面が全て既定面テーブルもしくは隣接面テーブルいずれかへ登録済みの場合には非選択隣接面なしと判定し、初期隣接面テーブルを削除して処理をステップS614へ進める。
ステップS602の判定処理の結果、非選択隣接面が存在すると判定した場合にはその非選択隣接面情報(具体的には初期隣接面ID)を取得したうえで初期隣接面テーブルを削除し(ステップS603)、取得した非選択隣接面を新たな選択グループとして隣接面テーブルに追加する(ステップS604)。ここで具体的な選択グループの作成手順を説明する。まずステップS603で取得した面IDを新規レコードとして隣接面テーブルの選択面IDへ登録する。次にテーブル内のグループNoの最大値を取得した結果に1を加算した値を新たな選択グループの管理Noとして、登録したレコードのグループNoへ登録する。尚、この選択グループには、本処理で隣接面の選択処理を行う対象となる面が含まれることになる。
そして、ステップS604で作成した選択グループに含まれる面(選択グループ面という)を取得する(ステップS605)。具体的にはステップS604で作成したグループNoに該当するレコードを隣接面テーブルより抽出し、図20に示すグループNoテーブルを作成して登録する。ここでグループNoテーブルについて説明する。隣接面IDは隣接面がモデルB中で割り当てられる面IDである。グループNoは処理中の選択グループに割り当てた管理Noである。そして、ステップS605で取得した面のうち1つを取得する。例えばグループNoテーブルにおいてレコードNoが1のものから昇順に隣接面IDを取得する(ステップS606)。そしてステップS606で取得した選択グループ面に隣接面があるかを判定する。具体的には3次元CADアプリケーションのAPIを用いて隣接面の有無の確認を行う(ステップS607)。ステップS607の判定処理で、CPU201が隣接面があると判定した場合には処理をステップS608へ進め、3次元CADアプリケーションのAPIを用いて隣接面の一覧を取得し、図21に示すサブ隣接面テーブルを作成するとともに、取得した隣接面それぞれの面IDをサブ隣接面IDとして登録する(ステップS608)。一方、隣接面がないと判定した場合には(ステップS607でNO)、処理をステップS613に進める。
その後、ステップS608で取得した隣接面のうち1つの面を処理対象として取得(例えばレコードNoが1のものから昇順にサブ隣接面IDを取得)し(ステップS609)、その面が既に参照先面として選択されているかを判定する。具体的には処理中のサブ隣接面IDをもとにして既定面テーブルを対象として一致検索を行い、既定面テーブルに登録済みであった場合には選択済みと判定して処理をステップS612へ進める。一方、既定面テーブルに未登録であった場合には引き続き隣接面テーブルを対象として一致検索を行う。隣接面テーブルに登録済みであった場合には選択済みと判定して処理をステップS612へ進める。一方、隣接面テーブルにも未登録であった場合には選択済みでないと判定して処理をステップS611へ進める(ステップS610)。
ステップS610の判定処理で選択されていない(NO)と判定した場合には、隣接面テーブルへ当該隣接面を登録することにより選択グループに追加して、選択グループを更新する。具体的には処理中のサブ隣接面IDを隣接面テーブルの選択面IDへ登録し、処理中のグループNoテーブルのグループNoを隣接面テーブルのグループNoへ登録する。続いてグループNoテーブル及びサブ隣接面テーブルを削除する(ステップS611)。その後処理をステップS605に進め、更新された隣接面テーブルにもとづいてステップS605の処理を行うことで選択グループ面を取得しなおし、ステップS606以降の処理を行う。
ステップS610の判定処理で既に選択されていると判定した場合には(ステップS610でYES)、処理をステップS612に進め、ステップS608で取得した隣接面のうち、まだステップS610の選択済み判定処理を行っていない隣接面があるかを判定する。(ステップS612)。この判定処理で隣接面がある(隣接面残あり)と判定した場合(具体的には処理中のサブ隣接面テーブル上のレコードが末尾でない場合)には(ステップS612でYES)、処理をステップS609に進め、未処理の隣接面を取得し、ステップS610の判定処理を行うことになる。
ステップS607の判定処理で隣接面がないと判定した場合(ステップS607でNO)、若しくは、ステップS612の判定処理でNO(隣接面残なし)と判定した場合(具体的には処理中のサブ隣接面テーブル上のレコードが末尾である場合)には、サブ隣接面テーブルを削除して処理をステップS613に進める。
選択グループ面(グループNoテーブルに登録済みの面)のうち、隣接面に対するステップS606からの処理を終了していない選択グループ面があるかを判定する。具体的には処理中のグループNoテーブルにおけるレコードがテーブルの末尾であれば選択グループ面残なしとし、末尾でなければ選択グループ面残ありと判定する。まだ処理を終了していない選択グループ面があると判定した場合には(ステップS613でNO)、処理をステップS606に進め、全ての選択グループ面に対する処理を終了したと判定した場合には、グループNoテーブルを削除したのち処理をステップS602に進める(ステップS613)。図37に示すのは、ステップS601で設定した初期選択面に隣接する非選択隣接面と、この非選択隣接面に連なる隣接面が選択グループに割り当てられた際の一例である。具体的には、既定面に囲まれた面領域において、初期選択面に隣接する非選択隣接面に連なる面が選択されることになる。
そして、上記のステップS603からステップS613の処理をステップS602で非選択隣接面がない(NO)と判定するまで繰り返すことになる。図38に示すのは、ステップS601で設定した初期選択面に隣接する非選択隣接面のうち選択グループ1に割り当てられなかった面と、この非選択隣接面に連なる隣接面が選択グループに割り当てられた際の一例である。ここでは選択グループ2として隣接面テーブルへ登録されることになる。
ステップS602の判定処理で非選択隣接面がないとCPU201が判定した場合には、処理をステップS614に移行し、この図に示す処理で選択グループが作成されたかを判定する。具体的な判定に隣接面テーブルにおいてレコードが登録されている場合をYESとし、隣接面テーブルにレコードが登録されていない場合をNOとする(ステップS614)。選択面グループが作成されたと判定した場合には(ステップS614でYES)、ステップS408で選択された面の一覧に後述する面設定−隣接面画面1100の操作にもとづいた隣接面テーブルに登録されているレコードの選択面IDに該当するモデルB中の面を追加する(ステップS615)。このとき、図11に示す面設定−隣接面画面がディスプレイ装置210上に表示されることになる。以上が、図6の隣接面選択処理の詳細な説明である。ここで図39に示すのは、図38に示す隣接面選択処理の結果をモデルBへ反映した場合における面の選択状態の一例である。
次に、図11を参照して、図6のステップS615で表示される、面設定−隣接面画面の構成について説明する。図11に示す面設定−隣接面画面1100には、モデルA表示ボタン1101、モデルB表示ボタン1102、グループリスト表示部1103、選択グループ表示部1104、追加ボタン1105、削除ボタン1106、反映ボタン1107が用意されている。
モデルA表示ボタン1101が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルAを最前面に表示する制御をCPU201が行う。モデルB表示ボタン1202が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルBを最前面に表示する制御をCPU201が行う。尚、モデルAが最前面に表示されている場合には、図4のステップS401で取得した面を選択状態にてモデルAを表示し、後述するグループリスト表示部1103、選択グループ表示部1104を空欄にする。また、モデルBを最前面に表示するには、選択グループ表示部1104に表示されているグループに含まれている面を選択状態にしてモデルBを表示する。
グループリスト表示部1103には、図6のステップS615で取得したグループを表示する。ただし、モデルBが最前面に表示されている状態でのみ表示されることになる。 選択グループ表示部1104には、グループリスト表示部1103に表示されているグループのうち、ユーザの操作により指定を受け付けたグループが表示される。
追加ボタン1105は、グループリスト表示部1103に表示されているグループのうち、選択状態のグループを選択グループ表示部1104に追加するためのボタンである。削除ボタン1106は、選択グループ表示部1104に表示されているグループのうち、選択状態のグループを選択グループ表示部1104から削除するためのボタンである。
反映ボタン1107が押下されると、CPU201は、選択グループ表示部1104に表示されているグループに含まれる面を参照先面として設定し、本画面を非表示にする。
以上が、図11の面設定−隣接面画面1100の説明である。
次に、図7を参照して、図3のステップS308のエッジ設定処理の詳細について説明する。本処理をクライアント装置102−1に実行させるためのプログラムは、3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、本処理を実行する際には、CPU201は、当該プログラムをRAM202にロードし、その制御に従って本処理を行うことなる。
まず、CPU201は、モデルBのうち、ステップS301で選択されたフィーチャーに対応するモデルA中のフィーチャーの参照先として設定されているエッジの一覧を取得する(ステップS701)。対応するフィーチャーを取得する際には、例えば、ステップS301で選択したフィーチャーの名称と同一の名称を有するモデルA中のフィーチャーを取得するなどの方法を用いるが、方法はこれに限られるわけではない。
その後、ステップS701で取得したエッジのうち、未処理のエッジの1つを処理対象のエッジとして取得する(参照先取得:ステップS702)。その後、ステップS702で取得した処理中のエッジを構成する面(上位2つ)をCADアプリケーションの機能を利用して取得する(ステップS703:構成面一覧取得)。
その後、ステップS703で取得した面のうち、未処理の面の1つを処理対象面として取得する(構成面取得:ステップS704)。そして、ステップS704で処理対象の面として取得したエッジの構成面を囲む空間座標(バウンディングボックス)を取得し、次にその空間の中心座標を算出し、この中心座標にもっとも近い面上の座標点を特定する。続いて受け取った座標点における面の法線ベクトルとベクトル符号(面の表側か裏側のいずれの方向であるか)を取得し、法線ベクトルにベクトル符号と任意の乗数を演算した値と面上の座標点とを加算し、基点を設定する。最後にこの基点から面に向かって任意の半径による無限長の円筒空間を導き出す(構成面情報抽出:ステップS705)。
ステップS705の処理で導出した円筒空間をモデルBに配置し、円筒空間と重なる面があれば、その中で最も基点に近い位置で重なる面を取得する(近似面取得:ステップS706)。
ステップS706の処理終了後、CPU201は、ステップS706の近似面取得処理で面を取得できたかを判定する(近似面選択可能?:ステップS707)。取得できたと判定した場合には、取得した面のエッジの一覧を、フィーチャーの参照先候補となるエッジとしてRAM202上に格納する。また、既に格納されているエッジが別の面の処理によって格納される際には、そのエッジを共通エッジとして格納することになる(選択エッジ一覧更新:ステップS708)。ステップS708の処理終了後、ステップS703で取得した構成面のうち、まだ処理が終わっていない構成面があるかを判定する(構成面残あり?:ステップS709)。まだ処理が終わっていない構成面があると判定した場合には、処理をステップS704に進め、まだ処理が終わっていない構成面を取得し、ステップS705以降の処理を行う。
一方、ステップS709の判定処理で、未処理の構成面がないと判定した場合には(ステップS709でNO)、その後、処理をステップS710に進め、RAM202上に共通エッジが格納されている場合、共通エッジの一つをモデルB上で選択した状態にして表示する。共通エッジが格納されていない場合、格納されたエッジの一つをモデルB上で選択した状態にして、不図示の3次元CADデータ表示画面に表示する。また、ステップ502で処理対象のエッジとして選択したモデルAに含まれるエッジを、モデルA上で選択した状態にして不図示の3次元CADデータ表示画面に表示する。
設計者は、本ステップで表示される画面に対する操作によって、格納された共通・非共通エッジの一覧から任意のエッジを選択することができ、CPU201は選択されたエッジIDを受け取って、3次元CADアプリケーションが提供する不図示の3次元CADデータ表示画面に該当エッジを選択状態にして表示する。設計者は前記画面に対する入力装置209からの操作指示を行うことで、任意のエッジを選択状態にするための指示をCPU201に対して入力することができる。以上の操作にもとづいてエッジが選択された状態で操作者からの情報更新の指示を受け取ることにより、選択されたエッジを更新エッジとして格納する。尚、このステップにおいて、3次元CADアプリケーションが提供する画面には、モデルA及びモデルBの形状を表示するための画面とともに、図12に示すエッジ設定(個別)画面が表示されることになる。
図12を参照して、エッジ設定(個別)画面の構成について説明する。図12に示すエッジ設定(個別)画面1200には、モデルA表示ボタン1201、モデルB表示ボタン1202、選択エッジ候補一覧表示部1203、可視変更ボタン1204、選択ボタン1205が用意されている。
モデルA表示ボタン1201が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルAを最前面に表示する制御をCPU201が行う。モデルB表示ボタン1202が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルBを最前面に表示する制御をCPU201が行う。
選択エッジ候補一覧表示部1203には、ステップS710で受け取ったエッジが表示される。操作者が選択エッジ候補一覧表示部1203の画面上でいずれかのエッジ名をポインティングデバイス操作することにより、3次元CADデータ表示画面で当該エッジが選択状態になる。また、3次元CADデータ表示画面のエッジ上で同様の操作を行ってもよい。なお、この処理は、モデルBが最前面に表示されている場合にのみ有効となる。
可視変更ボタン1204が押下指示されると、CPU201は、図9に示す可視選択処理を行う。この可視選択処理の詳細については後述する。選択ボタン1205が押下されると、3次元CADデータ表示画面で選択状態となっているエッジを参照先エッジとして設定し、本画面の表示を終了する。以上が、図12のエッジ設定(個別)画面の説明である。
図7の説明に戻る。ステップS710の処理後、全ての参照先にエッジに対する処理が終了したかを判定し、全ての参照先エッジに対する処理が終了していないと判定した場合には(ステップS711でNO)、ステップS702に処理を進め、未処理の参照先エッジを取得し、取得した参照先エッジに対して後続の処理を行うことになる。一方、全参照先エッジに対する処理が終了したと判定した場合には(ステップS711でYES)、処理をステップS712に進め、ステップS710で格納された全ての選択エッジをモデルB上で選択した状態にして、不図示の3次元CADデータ表示画面に表示する。また、モデルAのエッジの一覧についてもモデルA上で選択した状態にして、不図示の3次元CADデータ表示画面に表示する。設計者は、本ステップで表示される画面に対する操作によって選択されたエッジを非選択(除外)への切り替えや、新たに別のエッジを選択された一覧に追加することができる。尚、このステップにおいて、3次元CADアプリケーションが提供する画面には、モデルA及びモデルBの形状を表示するための画面とともに、図13に示すエッジ設定画面が表示されることになる。
図13を参照して、エッジ設定画面の構成について説明する。図13に示すエッジ設定画面1300には、モデルA表示ボタン1301、モデルB表示ボタン1302、選択エッジ一覧表示部1303、更新ボタン1304、リセットボタン1305、設定ボタン1306、正接選択ボタン1307、可視変更ボタン1308が用意されている。
モデルA表示ボタン1301が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルAを最前面に表示する制御をCPU201が行う。モデルB表示ボタン1302が押下されると、不図示の3次元CADデータ表示画面に表示されているモデルAとモデルBのうち、モデルBを最前面に表示する制御をCPU201が行う。
選択エッジ一覧表示部1303には、3次元CADデータ表示画面にモデルAが最前面に表示されている場合にはモデルAでの選択エッジが、モデルBが最前面に表示されている場合にはモデルBでの選択エッジが表示される。
更新ボタン1304が押下指示されると、CPU201は、その時点でモデルB上において選択されているエッジを選択エッジ一覧表示部1303に設定する。尚、この処理はモデルBが最前面に表示されている場合にのみ行われることになる。
リセットボタン1305が押下指示されると、CPU201は、この画面を介した操作指示による選択面変更をリセットし、当該エッジ設定画面1300が表示された際のエッジの選択状態に戻す処理を行う。モデルBが最前面に表示されている際に、設定ボタン1306が押下されると、選択エッジ一覧表示部1303に表示されているエッジを参照先エッジとして設定し、本画面の表示を終了する。
正接選択ボタン1307が押下指示されると、CPU201は、図8に示す正接エッジ選択処理を行う。この正接エッジ選択処理の詳細については後述する。可視変更ボタン1308が押下指示されると、CPU201は、図9に示す可視選択処理を行う。この可視選択処理の詳細については後述する。
設計者は、エッジ設定画面1300を介して操作指示を入力すること操作によって選択されたエッジを非選択(除外)への切り替えや、新たに別のエッジを選択エッジ一覧に追加することができる。また、CPU201に対して、後述する正接選択処理、及び可視選択処理の実行指示を入力することが可能となる。以上が、図13のエッジ設定画面1300の説明である。
図7の説明に戻る。ステップS712の処理終了後、ステップS712で表示されるエッジ設定画面1300を介した操作指示に基づいて参照先エッジとして選択されたエッジで参照先エッジの一覧を更新する(ステップS713)。以上が、図3のステップS308のエッジ設定処理の詳細な説明である。
次に、図8を参照して、図7のステップS712で表示されるエッジ設定画面1300の正接選択ボタン1307の押下指示を受け付けることでCPU201が実行する正接エッジ選択処理の詳細について説明する。本処理をクライアント装置102−1に実行させるためのプログラムは、3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、本処理を実行する際には、CPU201は、当該プログラムをRAM202にロードし、その制御に従って本処理を行うことなる。
まず、ステップS801において、CPU201は、図13の選択エッジ一覧表示部1303に表示されているエッジの情報を取得する。その後、取得したエッジのうち、本処理による隣接する全てのエッジに対する正接判定処理を終了していないエッジを1つ選択する(ステップS802)。
そして、ステップS802で取得したエッジについて、隣接するエッジが存在するかを判定する(ステップS803)。隣接エッジが存在すると判定した場合には(ステップS803でYES)、処理をステップS804に進め、当該エッジに隣接するエッジの一覧を取得する。一方、隣接エッジがないと判定した場合には(ステップS803でNO)、処理をステップS810に進める。
ステップS804の処理終了後、CPU201は、ステップS804で取得したエッジのうち1つのエッジを取得する(ステップS805)。そして取得したエッジが、ステップS802で取得した選択エッジと正接の関係になっているかを判定する(ステップS806)。正接であると判定した場合には、ステップS804で取得したエッジが既に選択エッジ一覧に含まれるかを判定する(ステップS807)。含まれていないと判定した場合には、選択エッジ一覧情報にステップS804で取得したエッジを追加し、選択エッジ一覧情報を更新する(ステップS808)。ここで新たに正接エッジを選択エッジ一覧に追加することにより、新たに選択エッジとして追加されたエッジに対しても、正接するエッジがあるかを判定し、正接エッジがあった場合には当該エッジを選択エッジとして追加する処理が行われることになる。そして、ステップS808の処理後、処理をステップS801に戻し、更新された選択エッジ一覧を取得しなおし、ステップS802以降の処理を行う。
ステップS806でNOと判定した場合、若しくは、ステップS807でYESと判定した場合には、CPU201は、処理をステップS809に進め、ステップS804で取得した隣接エッジのうち、まだステップS805で取得されていないエッジが存在するかを判定する(隣接エッジ残あり?)。存在すると判定した場合(ステップS809でYES:隣接エッジあり)には、処理をステップS805に進め、まだ取得していない隣接エッジを1つ選択し、ステップS806以降の処理を行う。そして、上記ステップS805からステップS808までの処理を、ステップS809でNO(隣接エッジなし)と判定するまで行うことになる。
ステップS809で未処理の隣接エッジが存在しない(隣接エッジなし)と判定した場合には、CPU201は、処理をステップS810に進め、選択エッジのうち、まだステップS802以降の処理を終了していないエッジがあるか(選択エッジ残あり?)を判定する。ステップS810の判定処理で、選択エッジ残があると判定した場合には、ステップS802に処理を戻し、隣接する全てのエッジに対してまだステップS803以降の処理を終了していない選択エッジを取得し、後続する処理を行う。そして、上記の処理を選択エッジ残なしとCPU201が判定するまで繰り返すことになる。以上が、正接エッジ選択処理の説明である。
以上の説明では、図4のステップS401で取得した面に隣接する面や正接する面を参照先エンティティとして自動的に選択する処理や、図7のステップS701で取得したエッジに正接するエッジを参照先エンティティとして選択する例について述べたが、参照先エンティティの選択方法としてはこれに限られず、例えば、不図示の3次元CADデータ表示画面に表示されているモデルBに含まれる各エンティティに対するポインティングデバイス操作によって、選択状態を切り替える(選択状態→非選択状態、非選択状態→選択状態)等の手法を合わせて採用しても勿論構わない。
次に、図9を参照して、図10の参照面選択画面1000の可視変更ボタン1009、図12のエッジ設定(個別)画面1200の可視変更ボタン1204、図13のエッジ設定画面1300の可視変更ボタン1308の押下指示を受け付けた場合にCPU201が実行する可視変更処理の詳細について説明する。尚、この処理をクライアント装置102−1に実行させるためのプログラムは、クライアント装置102−1にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されており、当該プログラムの制御に従って、後述する各ステップにおける処理をクライアント装置102−1のCPU201は行うことになる。
この処理を行う目的としては、例えば、フィーチャーの参照先候補として選択されている面やエッジ等のエンティティに対応するオブジェクト(選択オブジェクト)のみを表示状態にし、それ以外を非表示状態にしたり、参照先候補として選択されているエンティティに対応するオブジェクト以外を半透明表示にしたりと表示状態を切り替える等を行うことにより、不図示の3次元CADデータ表示画面に表示されているモデルBの各オブジェクトに対するポインティングデバイス操作による参照先エンティティとして選択されているエンティティに対応するオブジェクト(面、エッジ)の選択/非選択の操作をより容易にすることにある。
例えば、選択状態のオブジェクトを非選択状態に切り替えるには、選択されていないオブジェクトが非表示状態のほうが操作を行いやすい。また、選択状態になっているオブジェクトが他のオブジェクトに隠れてしまい確認できない場合などは、非選択状態のオブジェクトを半透明状態で表示することにより、選択オブジェクトの視認性を向上させ、その付近のオブジェクトに対するポインティングデバイス操作による選択/非選択の操作が行いやすくなるという効果が期待できる。
まず、CPU201は、モデルB上で選択されている面、エッジを構成するソリッド及びサーフェス(以下総じてオブジェクト)の一覧を取得する(ステップS901)。その後、モデルB上に存在するオブジェクトの一覧を取得する(ステップS902)。
その後、CPU201は、ステップS902で取得したオブジェクトのうち、未処理のオブジェクトの1つを処理対象オブジェクトとして取得する(ステップS903)。そして、その後、ステップS903で取得した処理対象オブジェクトとステップS901で取得した選択オブジェクト一覧とを照合することにより、ステップS903で取得したオブジェクトが選択状態のオブジェクトかの判定を行う(ステップS904)。ステップS904の判定処理で選択オブジェクトではないと判定した場合(ステップS904でNO)、可視変更対象とし当該オブジェクトを変更リストに追加することで変更リストを更新する(ステップS905)。
ステップS904の判定処理でNOと判定した場合、若しくはステップS905の処理終了後、ステップ902で受け取ったオブジェクトの一覧において未処理のものが無いかの判定を行う(ステップS906)。ステップ906の判定処理で未処理のものは無いと判定した場合(ステップS906でNO)本システムのメモリ上に格納された全てのオブジェクトの可視を変更するウィンドウを表示する。このウィンドウに対する操作者の操作にもとづき、変更リストに追加されたオブジェクトの非表示切り替えや、操作者が指定する任意の透明度への表示変更を行う(ステップS907)。以上が、可視変更処理の説明である。このような表示制御を行うことで、ポインティングデバイス操作によるオブジェクトの選択をより容易に行うことが可能となる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図3から図9に示すフローチャートに対応したプログラム)を、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。