以下、図面を参照して、本発明の実施の形態の一例について説明する。
図1は、本発明の3次元形状データ管理システム100のシステム構成の一例を示す図である。本発明の3次元形状データ管理システム100は、情報処理装置101、サーバ102が設置されており、それら装置はLAN(Local Area Network)等のネットワーク103を介して相互にデータ通信可能に接続されている。図1のネットワーク103上に接続される各種端末あるいはサーバの構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
情報処理装置101は、3次元CADアプリケーションを実行する装置である。3次元CADアプリケーションは後述する図2のROM202または外部メモリ211に記憶されており、設計者(以下、ユーザ)からの指示に応じて、CPU201がRAM203に読みだして各種動作を行う。
3次元CADアプリケーションは、ユーザからの操作に応じて、形状データの作成や構築を行う。本実施例においては、3次元CADアプリケーションが形状データの輪郭線を抽出し、レイヤーに割り当てて2次元CADアプリケーションで読み込み可能な図面データを作成する。尚、形状データはサーバ102の外部メモリ211に記憶されても、情報処理装置101の外部メモリ211に記憶されてもよい。本実施例では、情報処理装置101の外部メモリ211に記憶されているものとして、以下説明を行う。
サーバ102は、情報処理装置101で作成された各種データを記憶管理する装置である。形状データは、複数のユーザによって作成される場合があり、その場合には1つのサーバ102に各ユーザの情報処理装置101で作成された形状データを一元管理する。
尚、情報処理装置101が、サーバ102の構成を含んでもよいし、サーバ102が情報処理装置101の構成を含んでもよい。また、本実施例においては、情報処理装置101に各種データが記憶され、ユーザからの操作によって動作させる形態に基づいて説明を行う。
図2は、本発明の実施形態における各種端末のハードウェア構成を示す図である。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボード209や不図示のマウス等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、CRTディスプレイ(CRT)210等の表示器への表示を制御する。表示器はCRTだけでなく、液晶ディスプレイでも構わない。これらは必要に応じて管理者が使用するものである。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT210上での表示を可能としている。また、CPU201は、CRT210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明の情報処理装置101が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、情報処理装置101及びサーバ102のモジュール構成を示す機能構成図について、図3を用いて説明する。尚、図3の各種端末あるいはサーバのモジュール構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
情報処理装置101は、形状データ記憶モジュール301、レイヤー管理モジュール302、画面表示モジュール303、テーブル管理モジュール304を備える。
形状データ記憶モジュール301は、3次元CADアプリケーションによって作成された形状データを記憶するモジュールである(構成部品記憶手段)。形状データ記憶モジュール301によって記憶された形状データは、情報処理装置101の外部メモリ211等に記憶され、必要に応じて、形状データ記憶モジュール301によって読みだされる。
レイヤー管理モジュール302は、2次元CADアプリケーションで取り込み可能な図面データを構成するレイヤーの作成や、作成されたレイヤーに対して構成部品を割り当てる処理を行うモジュールである。
画面表示モジュール303は、各種情報を情報処理装置101のCRT210に表示させるためのモジュールである。画面表示モジュール303は後述するレイヤー名指定ダイアログ1400等の画面に情報を表示させ、必要に応じてユーザからの選択を受け付ける。また、3次元形状データ自体を表示させ、必要に応じて識別可能に表示させる。
テーブル管理モジュール304は、後述する図10の各種テーブルの記憶や更新等を行うためのモジュールである。各種テーブルは、外部メモリ211に記憶され、必要に応じてRAM203に読み出す。
サーバ102は、形状データ記憶モジュール306を備える。形状データ記憶モジュール306は、前述した情報処理装置101の形状データ記憶モジュール301と同様である。情報処理装置101に形状データを記憶管理させる場合には情報処理装置101の形状データ記憶モジュール301を利用し、サーバ102に形状データを記憶管理させる場合にはサーバ102の形状データ記憶モジュール306を利用する。本実施例では、情報処理装置101の形状データ記憶モジュール301を利用するものとして説明を行う。
次に、本発明の実施例における情報処理装置101によって行われる一連の処理について、図4に示すフローチャートを用いて説明する。尚、S401乃至S412の各ステップは情報処理装置101におけるCPU201の制御の下、処理が行われる。
尚、この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
図4に示す処理を行う際には、情報処理装置101のCPU201は3次元CADアプリケーションを動作可能な状態にある。本発明では、図面データで表示される部品の輪郭線を部品の上下関係を参照しながら任意のレイヤーに割り当てる。
まず、ステップS401では、情報処理装置101は、ユーザによる3次元CADアプリケーションの操作により任意の形状データを読み込み、3次元CADアプリケーション上に表示する。
ステップS402では、情報処理装置101は、ユーザによるレイヤー分け出力プログラムの起動指示を受け付けると、外部メモリ211からレイヤー分け出力プログラムを読み出して、起動する。レイヤー分け出力プログラムは3次元CADアプリケーションのメニューの1つとして動作してもよいし、3次元CADアプリケーションとは別のプログラムとして動作してもよい。
ステップS403では、情報処理装置101は、ステップS401で読み込まれた形状データが保持するビュー(例えば、第三角法で作成されている場合の正面図、平面図、右側面図ひとつひとつをビューと識別する)の総数と名称を取得してビューテーブル1000(図10参照)に格納する。具体的には、ビューテーブル1000のNo1001に識別したビューごとに識別番号を格納し、ビュー名1002に識別したビューの名称を格納する。格納結果としては、図11に示す通りとなる。「View−1」は正面図、「View−2」は平面図、「View−3」は右側面図と考えるものとする。本実施例では、「View−1」に限って説明を行うが、他のビューであっても動作は同様である。
ビューテーブル1000(図10参照)は、ビューのレコード番号を示すNo1001、ビューの識別名称を示すビュー名1002から構成される。
ステップS404では、情報処理装置101は、ステップS401で読み込んだ形状データを構成するアセンブリデータや部品データといった構成部品を取得し、ステップS403においてビューテーブル1000に格納した全てのビューに対して、レイヤーテーブル1010(図10参照)に格納する。具体的には、レイヤーテーブル1010のID1011にレコード番号を格納し、ステップS403で格納したビュー名1002をビュー名1012に格納する。また、参照ID1013にレコード番号を格納し、構成部品の上下関係パスにあたるコンポーネント名をコンポーネント名1014に格納し、構成部品のフォルダパスをファイルパス1015に格納する。
レイヤーテーブル1010(図10参照)は、レコード番号を示すID1011、処理対象のビュー名を示すビュー名1012、どの構成部品のレイヤーに含まれるかを示すための参照ID1013、構造物全体における構成位置を示すコンポーネント名1014、構成部品の記憶場所を示すファイルパス1015、及びレイヤーを作成する場合のレイヤーの名称を示すレイヤー名1016から構成される。
コンポーネント名1014とは構造物全体における特定の構成部品に対する構成位置に相当するものである。例えばステップS401で読み込んだファイル名が「Structure」、その下位に位置する構成部品名が「Unit01」だった場合のコンポーネント名は、「Structure/Unit01−1」のように表記される。この場合の「−1」とは複数の「Unit01」が配置されている場合に対する便宜上の識別番号である。「/」はファイル間の上下関係を意味している区切り記号であるが、記号として必ずしもこの限りではない。この場合であれば「Unit01−1」にとって「Structure」は上位にあたる。尚、本実施例では、コンポーネント名1014に格納するデータは「Structure」を省略するものとする。
ステップS405では、情報処理装置101は、ステップS404で作成したレイヤーテーブル1010に対して、コンポーネント名1014の値とステップS401で読み込んだファイル名を組み合わせてレイヤー名を作成し、レイヤー名1016に格納する。
図21に示すような構成部品から成る形状データに基づく、ステップS404及びステップS405の格納結果としては、区切り記号を置換した図12に示す通りとなる。格納した情報のうち参照ID1013とレイヤー名1016については後述の手順によって変更する場合がある。
ステップS406では、情報処理装置101は、ステップS405で作成されたレイヤーテーブル1010に基づいて、チェックボックステーブル1020(図10参照)を作成する。具体的には、まずレイヤーテーブル1010のファイルパス1015によって構成部品のドキュメントタイプを取得する。ドキュメントの拡張子が「SLDASM」の場合にはアセンブリデータとして、拡張子が「SLDPRT」の場合には部品データとしてそれぞれを識別する。チェックボックステーブル1020のID1021に処理中のID1011を格納し、処理中の構成部品のコンポーネント名1014に基づいて上位部品を特定し、当該上位部品に相当するレコードのID1011を親ID1022に格納する。また、処理中の構成部品のドキュメントタイプがアセンブリデータの場合にはチェック1023に「1」を格納し、ドキュメントタイプが部品データの場合にはチェック1023に「0」を格納する。
例えば、図12に示すレイヤーテーブル1010のID1011のうち、「1」は上位部品がステップS401での読み込みファイルであるためチェックボックステーブル1020の親ID1022には自分のID1011の値を格納する。一方、図12に示すレイヤーテーブル1010のID1011のうち、「2」から「5」までの構成部品は上位部品が「Unit01」であるため、親ID1022には「1」を格納する。ID1011が「6」は、上位部品が「Unit02」であるため、親ID1022には「5」を格納する。ステップS406の格納結果としては、図13に示す通りとなる。
チェックボックステーブル1020は、レコード番号を示すID1021、上位部品のID1011を示す親ID1022、及び後述するレイヤー名指定ダイアログ1400(図14)に設けるチェックボックスの有無やチェックの有無を示すチェック1023から構成される。チェック1023は、「0」はチェックボックスを設けないことを示し、「1」はチェックボックスを設けるがチェックがなされていない状態を示し、「2」はチェックボックスが設けられており、かつチェックがなされている状態を示す。これらのフラグはチェックボックスの管理ができればよく、これに限らない。
ステップS407では、情報処理装置101は、ユーザからの操作に基づいて出力する構成部品の指定を受け付ける処理を行う。レイヤー名指定処理の詳細は、後述する図5に示す。
ステップS408では、情報処理装置101は、ステップS401で読み込んだ形状データを編集するために形状データのコピーをテンポラリファイルとしてカレントフォルダに作成する。
ステップS409では、情報処理装置101は、ステップS408で作成したテンポラリファイルに対して、レイヤーテーブル1010のレイヤー名1016に基づいたレイヤーの作成処理を行う。レイヤー作成処理の詳細は、後述する図8に示す。
ステップS410では、情報処理装置101は、ステップS409で作成したレイヤーに対して、レイヤーテーブル1010のコンポーネント名1014単位で図面データの割り当て処理を行う。レイヤー割当処理の詳細は、後述する図9に示す。
ステップS411では、情報処理装置101は、ステップS410でレイヤーの割当処理が完了した形状データを2次元CADアプリケーションで読み込み可能なファイル形式に保存して、外部メモリ211に記憶する。保存場所は、後述するステップS510において指定されたファイルパスの場所をRAM203から取得して、当該ファイルパスに保存する。
ステップS412では、情報処理装置101は、ステップS408で作成したテンポラリファイルを削除し、ステップS402において起動したレイヤー分け出力プログラムを終了し、本一連の処理を終了する。
次に、レイヤー名指定処理について図5を用いて説明する。尚、S501乃至S511の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
ステップS501では、情報処理装置101は、ステップS405で作成したレイヤーテーブル1010及び、ステップS406で作成したチェックボックステーブル1020を取得する。
ステップS502では、情報処理装置101は、ステップS501で取得した各テーブルを基にユーザコントロール用のレイヤー名指定ダイアログ1400(図14参照)を表示する。画面の構成はこれに限らない。
レイヤー名指定ダイアログ1400は、レイヤーテーブル1010のレコードを昇順に表示する際、チェックボックステーブル1020のチェック1023に「1」が格納されているレコードにチェックボックス1401を表示する。チェックボックス1401は、アセンブリデータのレコードにのみ表示され、チェックがなされると、そのアセンブリデータが管理する構成部品を当該アセンブリデータのレイヤーと同一のレイヤーに割り当てられる仕組みとなっている。こうすることで、部品データごとではなく、アセンブリデータのような任意の構成部品単位でレイヤー分けを行うことができる。
またレイヤー名指定ダイアログ1400は、レイヤーテーブル1010のファイルパス1015よりドキュメント名のみを抽出して構成部品名欄1402に表示し、レイヤーテーブル1010の参照ID1013と同じ値を持つID1011のレコードのレイヤー名1016をレイヤー名欄1403に表示する。
例えば図12のレイヤーテーブル1010に基づいて説明すると、ID1011が「3」のレコードを処理する場合、ID1011におけるレコードの参照ID1013は「3」であるためID1011が「3」のレコードについてのレイヤー名欄1403にはID1011が「3」のレコードに格納しているレイヤー名1016を表示する。仮に当該レコードの参照ID1013が「1」であった場合、レイヤー名欄1403にはID1011が「1」のレコードに格納しているレイヤー名1016を表示する。レイヤー名指定ダイアログ1400に構成部品名を表示する際には上下関係の下位へ移るごとに段落を下げて表示し、チェックボックスを有する行については背景色を変更して表示する。図12のレイヤーテーブル1010に基づいて作成されたレイヤー名指定ダイアログ1400は、図14に示す内容の通りとなる。
ステップS503では、情報処理装置101は、ステップS502において表示されたレイヤー名指定ダイアログ1400に対してユーザが行うチェックボックス1401のオンオフ操作を受け付ける。チェックボックス1401にチェックがなされたと判定された場合には、ステップS504に処理を進め、そうでない場合には、ステップS506に処理を進める。
ステップS504では、情報処理装置101は、ステップS503で受け付けたチェックボックス1401のオンオフ状態を基に、チェックボックステーブル1020のチェック1023に対して更新処理を行う。例えば、図15に示すように、レイヤー名指定ダイアログ1400に表示された構成部品のうち、「Unit02.SLDASM」のチェックボックス1401がオフからオンに変更されると、図15のチェックボックステーブル1020に示すように、「Unit02」に該当するID1021が「5」のレコードに対してチェック1023の値を「2」に更新する。つまり、チェックボックス1401にチェックがなされたことを格納する。
ステップS505では、情報処理装置101は、ステップS504でチェックボックステーブル1020が更新されると、レイヤーテーブル1010の更新を行う。レイヤーテーブル更新処理の詳細は、後述する図6に示す。
ステップS503でチェックボックス1401のオンオフ操作が行われなかった場合、処理はステップS506に移行する。
ステップS506では、情報処理装置101は、表示中のレイヤー名指定ダイアログ1400のレイヤー名欄1403または構成部品名欄1402部分がユーザによって選択されたか否かを判定する。選択されたと判定された場合には、ステップS507に処理を進め、選択されたと判定できなかった場合には、ステップS508に処理を進める。
ステップS507では、情報処理装置101は、ステップS506において選択されたレイヤー名欄1403または構成部品名欄1402のレコードのコンポーネントを対象として、その輪郭線を3次元CADアプリケーションの図面データ上で選択状態にする処理を行う。輪郭選択表示処理の詳細は、後述する図7に示す。
ステップS508では、情報処理装置101は、参照ボタン1404の押下を検知したか否かを判定する。参照ボタン1404の押下を検知した場合には、ステップS509に処理を進め、そうでない場合には、ステップS503に処理を戻す。
ステップS509では、情報処理装置101は、ステップS508において参照ボタン1404の押下を受け付けると、2次元CADアプリケーションで読み込み可能な図面データの保存先を指定するためのファイル保存ダイアログ(不図示)を表示し、ユーザから保存するフォルダの指定を受け付ける。
ステップS510では、情報処理装置101は、ステップS509で表示したファイル保存ダイアログで、保存するファイル名の受付処理を行い、保存するフォルダ及び保存するファイル名が入力され、ユーザから確定の指示があった場合には、当該フォルダのフォルダパスとファイル名を組み合わせて、ファイルパスを作成し、RAM203に記憶する。ファイル保存ダイアログは閉じる。
ステップS511では、情報処理装置101は、実行ボタン1405の押下を検知したか否かを判定する。実行ボタン1405の押下を検知した場合には、レイヤー名指定処理を終了して呼び出し元に処理を戻し、そうでない場合には、押下されるまで待機する。
次に、レイヤーテーブル更新処理について図6を用いて説明する。尚、S601乃至S610の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
ここでは、図15のレイヤー名指定ダイアログ1400に示すように、「Unit02」にチェックがなされた状態で、図15のチェックボックステーブル1020の5番目のレコードが取得された場合を例にとってステップS601乃至ステップS604、及びステップS610を説明する。
ステップS601では、情報処理装置101は、チェックボックステーブル1020からID1021の昇順にレコードを取得する。
ステップS602では、情報処理装置101は、ステップS601で取得したレコードのチェック1023の値が「1」または「2」であるか否かを判定する。つまり、取得したレコードにチェックボックスが存在するか否かを判定することになる。チェック1023の値が「1」または「2」であると判定された場合には、ステップS603に処理を進め、チェック1023の値が「1」または「2」ではないと判定された場合には、ステップS605に処理を進める。前述の例を引き継ぐと、チェックボックステーブル1020のID1021が「5」のレコードのチェック1023の値は「2」である。よって、チェックボックスありを示すので、ステップS603に処理を進める。
ステップS603では、情報処理装置101は、ステップS601で取得したレコードのチェック1023の値が「2」であるか否かを判定する。つまり、チェックボックス1401にチェックが入っているか否かを判定することになる。チェック1023の値が「2」であると判定された場合には、ステップS604に処理を進め、そうでない場合には、ステップS605に処理を進める。前述の例を引き継ぐと、チェック1023の値は「2」である。よって、チェックボックス1401にチェックがなされている旨を示すため、ステップS604に処理を進める。
ステップS604では、情報処理装置101は、レイヤーテーブル1010の更新処理を行う。ここではチェックボックステーブル1020に対して処理中のID1021と同一の値を持つ、レイヤーテーブル1010のID1011のレコードを特定し、当該レコードに対して参照ID1013の値をレコードのID1011の値に更新する。前述の例を引き継ぐとレイヤーテーブル1010のID1011が「5」のレコードにおいて参照ID1013を「5」に更新することになる。初期状態からの処理とすれば参照ID1013に変化は生じないケースとなる。参照ID1013は、どのレコードのレイヤー名1016のレイヤーに割り当てられるのかを決定するためのものである。よって、自身のレコードのID1011を参照ID1013に格納するということは、自身のレイヤー名1016のレイヤーに割り当てられることを示す。
ステップS610では、情報処理装置101は、チェックボックステーブル1020の処理中レコードが最終レコードであるか否かを判定する。つまり、チェックボックステーブル1020のすべてのレコードの処理が終了したか否かを判定する。処理中レコードが最終レコードであると判定された場合には、レイヤーテーブル更新処理を終了して、呼び出し元に処理を戻し、そうでない場合には、ステップS601に処理を戻す。前述の例を引き継ぐと、処理中のID1021は「5」であるため、ステップS601に処理を戻すことになる。
次に、前述に引き続き図15に示すように、「Unit02」にチェックがなされた状態で、図15のチェックボックステーブル1020の6番目のレコードが取得された場合を例にとって、ステップS605乃至ステップS607を説明する。ステップS601では、チェックボックステーブル1020のID1021が「6」のレコードを取得し、ステップS602では、チェックボックステーブル1020のID1021が「6」のレコードのチェック1023の値を確認する。値は「0」であるため、チェックボックスがないことを示すので、ステップS605に処理を進める。
ステップS605では、情報処理装置101は、チェックボックステーブル1020において処理中のレコードが他の構成部品の中で、最上位に位置する構成部品であるか否かを判定する。具体的には、処理中のレコードのID1021と当該レコードの親ID1022の値を比較し、同じか否かを判定する。同じであるということは、当該レコードの上位に当たる構成部品は存在しないので、最上位の構成部品であることがわかる。よって、最上位に位置する構成部品は自分のレイヤー名1016以外のレイヤーに属することはないので、ステップS604に進めることになる。最上位の位置する構成部品である場合には、ステップS604に処理を進め、そうでない場合には、ステップS606に処理を進める。前述の例を引き継ぐとID1021が「6」のレコードの親ID1022は「5」であるため、ステップS606に処理を進める。
ステップS606では、情報処理装置101は、処理中のレコードの親ID1022のレコードのチェック1023に対してチェックボックス1401のオンオフ状態を取得し、チェックボックス1401がオンであるか否かを判定する。つまり、上位の構成部品のチェックボックス1401がオンになっているということは、処理中のレコードは当該上位の構成部品のレイヤーに属する必要があるので、ステップS607に進めることとなる。チェックボックス1401のオンオフ状態は、チェック1023が「1」であるか「2」であるかによって判定する。「2」であればオンを示す。チェックボックス1401がオンである場合には、ステップS607に処理を進め、そうでない場合には、ステップS608に処理を進める。尚、親ID1022に設定されるレコードはドキュメントタイプが必ずアセンブリデータとなるためチェックボックス1401を必ずもつことになる。前述の例を引き継ぐとID1021が「6」の親ID1022は「5」であるため取得するレコードはID1021が「5」のレコードのチェック1023の値となり、ここではチェックオンを示す「2」を取得することになるため、処理をステップS607に進める。
ステップS607では、情報処理装置101は、処理中のID1021と同一のID1011のレコードをレイヤーテーブル1010より取得し、取得したレコードの参照ID1013に処理中レコードの親ID1022の値を反映する。前述の例を引き継ぐとチェックボックステーブル1020のID1021が「6」のレコードの親ID1022は「5」であるため、レイヤーテーブル1010のID1011が「6」のレコードの参照ID1013に「5」を格納することになる。格納した結果としては、図15の格納例1501に示す通りとなる。また、例えばこのまま処理を継続し、7番目のレコードまで処理した結果は、図15に示す格納例1502に示す通りとなる。このように、「Unit02」のチェックボックス1401にチェックがなされた場合、「Unit02」の下位に位置する「Type04」と「Type05」が「Unit02」のレイヤーに割り当てられるように設定がなされる。
次に、図16のレイヤー名指定ダイアログ1400に示すように「Unit01」にチェックがなされた状態で、図16のチェックボックステーブル1020の6番目のレコードが取得された場合を例にとってステップS608、ステップS609を説明する。またこの処理を行う時点でのレイヤーテーブル1010の状態を示すのが図16のレイヤーテーブル1010である。チェックボックステーブル1020のID1021が「5」のレコードのチェック1023はチェックオフを示す「1」であるため、ステップS606の分岐によりステップS608に処理を進めることになる。
ステップS608では、情報処理装置101は、チェックボックステーブル1020で処理中のレコードの親ID1022を取得し、その親ID1022の値と同一のID1011のレコードをレイヤーテーブル1010から取得する。続いて、レイヤーテーブル1010で取得したレコードのID1011と参照ID1013を比較し、同一であるか否かを判定する。ここでは、処理中のレコードに該当する構成部品の上位にあたる構成部品の更に上位の構成部品(仮に第2上位構成部品とする)がチェックされた場合、処理中の構成部品と、その構成部品の上位のあたる構成部品も、第2上位構成部品のレイヤーに割り当てられることになる。よって、ステップS609で参照ID1013を更新すべく、ステップS608で判定することになる。ID1011と参照ID1013が同一である場合には、ステップS604に処理を進め、そうでない場合には、ステップS609に処理を進める。前述の例を引き継ぐと、6番目のレコードの親ID1022は「5」であり、レイヤーテーブル1010のID1011が「5」のレコードにおいては参照ID1013が「1」であるため、ステップS609へ処理を進めることになる。
ステップS609では、情報処理装置101は、チェックボックステーブル1020で処理中のレコードの親ID1022に相当するレイヤーテーブル1010のレコードが格納する参照ID1013を、チェックボックステーブル1020で処理中のレコードのID1021と同一のレイヤーテーブル1010のID1011のレコードの参照ID1013に格納する。つまり、処理中のレコードの構成部品の上位にあたる構成部品の参照ID1013を処理中のレコードの構成部品の参照ID1013に格納することになる。前述の例を引き継ぐと、処理中のチェックボックステーブル1020のID1021が「6」のレコードの親ID1022は「5」であるからレイヤーテーブル1010で取得するレコードはID1011が「5」のレコードとなり、そのレコードの参照ID1013は「1」である。よって、レイヤーテーブル1010でのID1011が「6」のレコードの参照ID1013に取得した値の「1」を格納することになる。格納した結果としては、図16の格納例1601に示す通りとなる。ステップS609の処理を行うとステップS610に進める。また、例えばこのまま処理を継続し、7番目のレコードまで処理した結果は、図16に示す格納例1602に示す通りとなる。このように、「Unit01」のチェックボックス1401にチェックがなされた場合、「Unit01」の下位に位置する構成部品がすべて「Unit01」のレイヤーに割り当てられるように設定がなされる。
次に輪郭選択表示処理について図7を用いて説明する。尚、S701乃至S708の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
ステップS701では、情報処理装置101は、ステップS506で選択されたものがレイヤー名欄1403であるか否かを判定する。レイヤー名欄1403が選択されたと判定された場合には、ステップS702に処理を進め、そうでない場合には、ステップS706に処理を進める。
ステップS702では、情報処理装置101は、ユーザによって選択されたレイヤー名欄1403の表示リストの行番号を取得する。例えば、1行目の「Structure$Unit01−1」が選択された場合、行番号の「1」を取得する。
ステップS703では、情報処理装置101は、ステップS702で取得した行番号と同一の値を示すID1021に対応するID1011のレコードを取得し、そのレコードの参照ID1013を取得する。
ステップS704では、情報処理装置101は、ステップS703で取得した参照ID1013と同一の参照ID1013を格納するレコードの一覧をレイヤーテーブル1010から取得する。例えば、ステップS703で取得した参照ID1013が「1」であった場合、全レコードのうち参照ID1013に「1」が格納されているレコードをすべて取得する。
ステップS705では、情報処理装置101は、ステップS704で取得したレコードのコンポーネント名1014を取得し、それにより3次元CADアプリケーション上で形状の輪郭を選択する処理をステップS704で取得した全レコードに対して行う。こうすることで、選択を行った後の3次元CADアプリケーション上では、選択された輪郭線を通常と異なる着色によって表示するため、ステップS701で受け付けたレイヤー名欄1403と同一のレイヤーに割り当てられるすべての構成部品の輪郭線を目視確認することができる。
ステップS706では、情報処理装置101は、ステップS506で選択されたものが構成部品名欄1402であるか否かを判定する。構成部品名欄1402が選択されたと判定された場合には、ステップS707に処理を進め、そうでない場合には、輪郭選択表示処理を終了する。
ステップS707では、情報処理装置101は、ユーザによって選択された構成部品名欄1402の表示リストの行番号を取得する。例えば、3行目の「Type02.SLDPRT」が選択された場合、行番号の「3」を取得する。
ステップS708では、情報処理装置101は、レイヤーテーブル1010からステップS707で取得した行番号と同一のID1011をもつレコードを取得し、そのレコードのコンポーネント名1014を取得して3次元CADアプリケーション上で形状の輪郭を選択する処理を行う。選択する輪郭線はステップS705と同様に表示する。レイヤー名欄1403との違いは、レイヤー名欄1403が選択された場合には、当該レイヤーと同じレイヤーに属する構成部品の輪郭線を表示するのに対して、構成部品名欄1402が選択された場合には、選択された構成部品のみ表示する点が異なる。こうすることで、ユーザがどの構成部品をどのレイヤーに含めるのかを決定しやすくなる。
次にレイヤー作成処理について図8を用いて説明する。なお、S801乃至S806の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
ステップS801にて、情報処理装置101は、レイヤーテーブル1010に基づいて、レイヤー割当テーブル1030を作成し、レイヤー名指定ダイアログ1400を閉じる。レイヤー割当テーブル1030のレイヤー名1034は、レイヤーテーブル1010の参照ID1013と同じ値を持つID1011のレコードのレイヤー名1016を格納する。それ以外のID1031、ビュー名1032、コンポーネント名1033には、レイヤーテーブル1010のID1011、ビュー名1012、コンポーネント名1014の値をそれぞれ格納する。格納結果は、図17に示す通りである。図17は、図15の格納例1502を元に作成されたレイヤー割当テーブル1030である。よって、「Unit02」にチェックがなされているので、レイヤー割当テーブル1030のID1031が「5」「6」「7」のレイヤー名1034は、同じレイヤーとなっている。
ステップS802では、情報処理装置101は、レイヤー割当テーブル1030のレコードを取得する。ここでは例として6番目のレコードを元に説明する。
ステップS803では、情報処理装置101は、後述するステップS805で既に作成されているレイヤーの一覧を取得する。何もレイヤーが作成されていなければ、取得できないので、そのまま取得しなくてよい。
ステップS804では、情報処理装置101は、ステップS803で取得したレイヤーの一覧に処理中レコードのレイヤー名1034のレイヤーが存在するか否かを判定する。つまり、処理中のレコードが割り当てられるレイヤーが既に作成済みか否かを判定することになる。処理中レコードのレイヤー名1034のレイヤーが存在する場合は、ステップS806に処理を進め、処理中レコードのレイヤー名1034のレイヤーが存在しない場合には、ステップS805処理を進める。前述の例を引き継ぐと、ID1031が「6」のレイヤー名1016はID1031が「5」のレコードを処理する際に作成済みのため、既存レイヤーが存在することとなり、ステップS806に進むこととなる。
ステップS805では、情報処理装置101は、レイヤー割当テーブル1030のレイヤー名1034の値を取得し、取得した値の名前のレイヤーを作成する(レイヤー作成手段)。例えば、ID1031が「5」のレイヤー名1034は「Structure$Unit01−1$Unit02−1」であるので、このレイヤー名1034を使用してレイヤーを作成することとなる。
ステップS806では、情報処理装置101は、レイヤー割当テーブル1030で処理中のレコードが最終レコードであるか否かを判定する。最終レコードであると判定された場合には、レコード作成処理を終了して呼び出し元に処理を戻し、最終レコードでないと判定された場合には、ステップS802に処理を戻す。
次にレイヤー割当処理について図9を用いて説明する。尚、S901乃至S904の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている3次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、3次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
ステップS901では、情報処理装置101は、レイヤー割当テーブル1030からレコードを取得する。
ステップS902では、情報処理装置101は、レイヤー割当テーブル1030のビュー名1032とコンポーネント名1033によって図面データの輪郭線を構成部品単位で選択する(輪郭線抽出手段)。例えばID1031が「6」のレコードについて処理を行う場合、「View−1」に表示するコンポーネント名1033が「Unit01−1/Unit02−1/Type04−1」の部品を選択することで図面データ上での輪郭線を選択する。つまり、「View−1」が正面図であった場合、コンポーネント名1033が「Unit01−1/Unit02−1/Type04−1」を正面から捉えた場合の図面データ上の輪郭線を選択することになる。尚、アセンブリデータに関しては、あくまで部品データを管理するためのデータに過ぎず、3次元モデルそのものではないので、ステップS902及びステップS903の処理を除外してもよい。
ステップS903では、情報処理装置101は、ステップS902で選択した輪郭線をレイヤー割当テーブル1030のレイヤー名1034と一致するレイヤーに対して割り当てて、割り当てた構成部品ごとに識別表示する(レイヤー割当手段)。例えば前述の例を引き継ぐとID1031が「6」の場合はレイヤー名が「Structure$Unit01−1$Unit02−1」のレイヤーに対して割り当てることになる。
図15のレイヤー名指定ダイアログ1400のように「Unit02」にチェックがなされて、レイヤー割当処理を行うと、図22のように割り当てられることになる。ステップS805において作成されるレイヤーは、「Type01−1」「Type02−1」「Type03−1」「Unit02−1」の4枚である。この4枚に対して、それぞれ構成部品を割り当てる。レイヤー割当処理を行うと、「Type01−1」には「Type01.SLDPRT」を割り当て、「Type02−1」には「Type02.SLDPRT」を割り当て、「Type03−1」には「Type03.SLDPRT」を割り当てる。そして、「Unit02−1」には「Type04.SLDPRT」と「Type05.SLDPRT」をまとめて割り当てることになる。その結果、図18に示すような単一のレイヤーにすべての構成部品の輪郭線が割り当てられて出力されるのではなく、図19に示すように複数の構成部品の輪郭線を複数のレイヤーに分けて割り当てることができる。図19は複数のレイヤーから構成される図面データであるので、図20に示すように構成部品1901だけ表示することができる。こうすることで、アセンブリデータのようなまとまりでもレイヤーに割り当てることができ、2次元CADアプリケーションに取り込んだ場合でも無駄な作業は発生しない。
また、図16のレイヤー名指定ダイアログ1400のように「Unit01」にチェックがなされて、レイヤー割当処理を行うと、図23のように割り当てられることになる。この場合は、すべての構成部品の輪郭線を1枚のレイヤーにまとめることとなるので、「Unit01−1」に「Type01.SLDPRT」から「Type05.SLDPRT」までを割り当てることになる。つまり、従来の3次元CADアプリケーションの機能で出力されるように、単一のレイヤーに割り当てる。よって、図18に示すような出力結果となる。
ステップS904では、情報処理装置101は、レイヤー割当テーブル1030で処理中のレコードが最終レコードであるか否かを判定する。最終レコードであると判定された場合には、レイヤー割当処理を終了して呼び出し元に処理を戻し、最終レコードでないと判定された場合には、ステップS901に処理を戻す。
以上説明したように、本実施形態によれば、3次元CADアプリケーションで作成した形状データを用いて、2次元CADアプリケーションで効率よく作業を行うための図面データ出力を補助することが可能となる。例えば単一のレイヤーに全ての構成部品の輪郭を割り当てて出力した図面データを示す図18と、構成部品の輪郭をまとまった単位でレイヤーに割り当てて出力した図面データを示す図19及び図20を用いて比較する。図18では重なった輪郭線の境目が分かり難いのに対し、図19ではレイヤー割り当てを行っているためレイヤーごとに表示色を変更できるため輪郭線の境目がより明確になっていることが確認できる。またレイヤーごとに表示・非表示を変更できるため図20のように特定のレイヤーのみを表示することによってより一層輪郭線に対する指示情報などの付加操作の効率化が期待できる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。