(58)【調査した分野】(Int.Cl.,DB名)
前記外形線特定手段は、前記選択受付手段で選択を受け付けた前記線要素の少なくとも一部を含む閉領域の外形線も前記閉領域の外形線として特定することを特徴とする請求項1または2に記載のプログラム。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施の形態の一例について説明する。
【0014】
図1は、本発明のCADシステム100のシステム構成の一例を示す図である。本発明のCADシステム100は、情報処理装置101、サーバ102が設置されており、それら装置はLAN(Local Area Network)等のネットワーク103を介して相互にデータ通信可能に接続されている。
図1のネットワーク103上に接続される各種端末あるいはサーバの構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
【0015】
情報処理装置101は、2次元CADアプリケーションを実行する装置である。2次元CADアプリケーションは後述する
図2のROM202または外部メモリ211に記憶されており、設計者(以下、ユーザ)からの指示に応じて、CPU201がRAM203に読み出して各種動作を行う。
【0016】
2次元CADアプリケーションは、ユーザからの操作に応じて、設計物の平面形状を示す2次元CADデータの作成を行う。本実施例においては、2次元CADアプリケーションで作成された2次元CADデータに基づいて立体データを作成する。尚、2次元CADデータはサーバ102の外部メモリ211に記憶されても、情報処理装置101の外部メモリ211に記憶されてもよい。本実施例では、情報処理装置101の外部メモリ211に記憶されているものとして、以下説明を行う。
【0017】
サーバ102は、情報処理装置101で作成された各種データを記憶管理する装置である。2次元CADデータは、複数のユーザによって作成される場合があり、その場合には1つのサーバ102に各ユーザの情報処理装置101で作成された2次元CADデータを一元管理する。
【0018】
尚、情報処理装置101が、サーバ102の構成を含んでもよいし、サーバ102が情報処理装置101の構成を含んでもよい。また、本実施例においては、情報処理装置101に各種データが記憶され、ユーザからの操作によって動作させる形態に基づいて説明を行う。
【0019】
図2は、本発明の実施形態における各種端末のハードウェア構成を示す図である。
【0020】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0021】
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
【0022】
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
【0023】
また、入力コントローラ(入力C)205は、キーボード209や不図示のマウス等のポインティングデバイスからの入力を制御する。
【0024】
ビデオコントローラ(VC)206は、CRTディスプレイ(CRT)210等の表示器への表示を制御する。表示器はCRTだけでなく、液晶ディスプレイでも構わない。これらは必要に応じて管理者が使用するものである。
【0025】
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
【0026】
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
【0027】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、CRT210上での表示を可能としている。また、CPU201は、CRT210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0028】
本発明の情報処理装置101が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
【0029】
次に、情報処理装置101及びサーバ102のモジュール構成を示す機能構成図について、
図3を用いて説明する。尚、
図3の各種端末あるいはサーバのモジュール構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
【0030】
情報処理装置101は、CADデータ記憶モジュール301、画面表示モジュール302、テーブル管理モジュール303、閉領域特定モジュール304、面積計算モジュール305を備える。
【0031】
CADデータ記憶モジュール301は、2次元CADアプリケーションによって作成された2次元CADデータを記憶するモジュールである。CADデータ記憶モジュール301によって記憶された2次元CADデータは、情報処理装置101の外部メモリ211等に記憶され、必要に応じて、CADデータ記憶モジュール301によって読みだされる。
【0032】
画面表示モジュール302は、各種情報を情報処理装置101のCRT210に表示させるためのモジュールである。画面表示モジュール302は各種画面を表示させ、必要に応じてユーザからの選択や入力を受け付ける。また、2次元CADデータを表示させ、必要に応じて識別可能に表示させる。
【0033】
テーブル管理モジュール303は、後述する
図8の各種テーブルの記憶や更新等を行うためのモジュールである。各種テーブルは、外部メモリ211に記憶され、必要に応じてRAM203に読み出す。
【0034】
閉領域特定モジュール304は、2次元CADデータによって表現される線要素で構成される閉じられた領域である閉領域(平面領域)を特定するためのモジュールである。当該閉領域を特定するために後述する端点や交点、中点を特定して、それらに基づいて閉領域を囲む線要素である外形線を特定し、閉領域を抽出する。
【0035】
面積計算モジュール305は、閉領域の面積を計算するためのモジュールである。本実施例では、面積の計算方法については、従来技術を利用するものとする。
【0036】
サーバ102は、CADデータ記憶モジュール307を備える。CADデータ記憶モジュール307は、前述した情報処理装置101のCADデータ記憶モジュール301と同様である。情報処理装置101に2次元CADデータを記憶管理させる場合には情報処理装置101のCADデータ記憶モジュール301を利用し、サーバ102に2次元CADデータを記憶管理させる場合にはサーバ102のCADデータ記憶モジュール307を利用する。本実施例では、情報処理装置101のCADデータ記憶モジュール301を利用するものとして説明を行う。
【0037】
次に、本発明の実施例における情報処理装置101によって行われる一連の処理について、
図4に示すフローチャートを用いて説明する。尚、S101乃至S118の各ステップは情報処理装置101におけるCPU201の制御の下、処理が行われる。
【0038】
尚、この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている2次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、2次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
【0039】
まず、ステップS101では、情報処理装置101はユーザによる2次元CADアプリケーションの操作により、任意の2次元CADデータを読み込み、2次元CADアプリケーションに表示する。本実施例では、
図9に示す2次元CADデータ(以下、モデルA)を用いて以下説明を行う。
【0040】
ステップS102では、情報処理装置101は、ユーザによる閉領域計算プログラムの起動指示を受け付けると、外部メモリ211から閉領域計算プログラムを読み出して起動する。
【0041】
ステップS103では、情報処理装置101は、ユーザからのKB209による操作により、ユーザが閉領域計算の対象としたい閉領域を含む大まかな範囲を選択する。そして、選択された範囲に含まれる線要素を候補要素としてそれぞれ閉領域候補要素テーブル800のNo801、要素ID802、要素タイプ803に登録する。この際、候補要素と非対象要素を区別するため、判別フラグ804を用意し本ステップの段階では0を登録する。
図10は、
図9に示すモデルAを矩形選択範囲1001で選択した場合を示す。線要素のうち、破線で表現されている線が選択された線要素である。
【0042】
閉領域候補要素テーブル800(
図8参照)は、一意に割り振られるNo801、線要素ごとに2次元CADアプリケーションによって割り振られた要素ID802、当該線要素が直線なのか円弧なのかを示す要素タイプ803、後述する非対象要素であるか否かを示す判別フラグ804から構成される。判別フラグは、「1」が格納されていると非対象要素である。
【0043】
ステップS117では、情報処理装置101は、抽出したい閉領域をまたぐ線要素である非対象要素の選択の解除をするか否かを判定する。具体的には、非対象要素の選択の解除が行える機能の実行命令がなされたか否かで判定する。抽出したい閉領域は複数の閉領域の組み合わせであることが多い。複数の閉領域から成る閉領域は、閉領域同士の境界には線要素がまたがっているはずである。よって、この線要素の選択を解除することで当該線要素が含まれる閉領域を複数抽出するようにすれば、ユーザの手間を軽減できる。非対象要素の選択をすると判定された場合には、ステップS104に処理を進め、そうでない場合には、ステップS105に処理を進める。
【0044】
ステップS104では、情報処理装置101は、ステップS103で選択した線要素のうち、大きな閉領域を分断している線要素をユーザによる任意選択によって受け付ける(選択受付手段)。そして、選択された線要素の判別フラグ804を「1」に変更する。非対象要素の解除が指示されると、画面上では
図11に示すような状態になる。破線で示されている線要素が非対象要素として選択を解除された線要素である。
【0045】
ステップS105では、情報処理装置101は、非対象要素があるか否かを判定する。具体的には、閉領域候補要素テーブル800の判別フラグ804の値に「1」があるか否かで判定する。非対象要素があると判定された場合には、ステップS106に処理を進め、非対象要素がない場合には、ステップS111に処理を進める。
【0046】
ステップS106では、情報処理装置101は、ポイント位置特定処理を行う。ポイント位置特定処理は、ステップS104で選択された非対象要素の端点と、当該非対象要素と他の線要素とが重なる交点の2つに基づいて、端点から交点または交点から交点までの真ん中の点である中点を特定する処理である。ポイント位置特定処理の詳細は、後述する
図5に示す。
【0047】
ステップS107では、情報処理装置101は、対象閉領域抽出処理を行う(特定手段)。対象閉領域抽出処理は、ステップS106で特定された中点に基づいて、非対象要素が含まれる閉領域の抽出を行う。対象閉領域抽出処理の詳細は、後述する
図6に示す。
【0048】
ステップS108では、情報処理装置101は、ステップS107で抽出された対象閉領域があるか否かを判定する。具体的には、ステップS107で作成される閉領域の面積テーブル850にレコードが存在するかどうかにより判定する。閉領域が存在すると判定された場合には、ステップS109に処理を進め、そうでない場合には、選択された非対象要素が含まれる閉領域が存在しない旨をユーザに通知し、本一連の処理を終了する。
【0049】
面積テーブル850(
図8参照)は、一意に割り振られるNo851、ステップS107において抽出された閉領域に対して割り振られた要素ID852、当該閉領域の面積を示す面積853から構成される。ステップS107において抽出された閉領域の面積を格納するためのテーブルとなっている。
【0050】
ステップS109では、情報処理装置101は、ステップS107にて抽出した閉領域を面積テーブル850よりレコードを取得し、算出対象とする閉領域を選択するための閉領域選択ダイアログ1300(
図13参照)で一覧表示する(表示手段)。この画面に表示する閉領域は、
図12に示すように各閉領域に対して番号が振られ、当該番号に対応するように該当閉領域一覧1301に表示を行う。
【0051】
ステップS118では、情報処理装置101は、閉領域選択ダイアログ1300の該当閉領域一覧1301に表示された閉領域がユーザから選択され、計算ボタン1303が押下されたか否かを判定する。つまり、ユーザが求める閉領域の選択を閉領域選択ダイアログ1300で受け付け、計算ボタンを押下することで、複数の閉領域の面積の計算を行うことができるようになっている。計算ボタン1303が押下されたと判定された場合には、ステップS110に処理を進め、そうでない場合には、計算ボタン1303が押下されるまで待機する。
【0052】
ステップS110では、情報処理装置101は、ステップS109で選択された閉領域の面積を合計し、面積合計値1304に表示する(面積計算手段)。この合計面積は面積テーブル850より該当レコードの面積853を基に算出する。OKボタン1305の押下を受け付けると、処理をステップS115に進める。
【0053】
一方、ステップS105で、非対象要素が選択されていないと判定した場合、ステップS111に処理を進める。つまり、ステップS103において範囲選択された線要素が構成する最も大きな閉領域(最大閉領域)を特定するために、ステップS111乃至ステップS114の処理を行う。
【0054】
ステップS111では、情報処理装置101は、ステップS103で範囲選択された線要素のうち、最大閉領域を特定するための開始点となる線要素の選択を開始点要素選択ダイアログ1400(
図14参照)で受け付ける。具体的には、ステップS103で範囲選択した矩形の開始点(マウスカーソルのドラッグ選択開始点)から、最も近い位置の線要素の順に最大閉領域候補テーブル860(
図8参照)にNo861、要素ID862、要素タイプ863を登録する。この登録したデータを、矩形開始点の座標値から最も近い位置の順に表示し、開始点要素選択ダイアログ1400上でユーザからの選択を受け付ける。本実施例では、範囲詮索された矩形の開始点から近い順に線要素を抽出しているが、線要素が抽出できれば、これに限らない。表示についても、線要素が選択できればよい。開始点要素選択ダイアログ1400で線要素が選択された場合には、対応する線要素を2次元CADデータ上で識別可能にハイライト表示する。次へボタン1403の押下を検知するとステップS112に処理を進める。
【0055】
最大閉領域候補テーブル860(
図8参照)は、一意に割り振られるNo861、閉領域を構成する線要素の要素ID802を格納する要素ID、当該線要素が直線なのか円弧なのかを示す要素タイプ863から構成される。
【0056】
ステップS112では、情報処理装置101は、ステップS111にて選択された線要素の両端のうち、矩形開始点から近い方の端点の座標値と、その線要素と交差する要素との交点の座標値とを、2次元CADアプリケーションにてそれぞれ取得する。取得した座標値を、端点は端点テーブル810(
図8参照)のNo811と要素ID812とX座標813とY座標814に格納し、また交点は基準点として基準点テーブル840(
図8参照)のNo821と要素ID822とX座標823とY座標824に格納する。基準点とは、最大閉領域を特定する際のゴール地点である。
【0057】
端点テーブル810(
図8参照)は、一意に割り振られるNo811、端点ごとに2次元CADアプリケーションによって割り振られた要素ID812、当該端点のX座標とY座標を示すX座標813、Y座標814から構成される。
【0058】
また、基準点テーブル840は、一意に割り振られる841、基準点ごとに2次元CADアプリケーションによって割り振られた要素ID842、当該基準点のX座標とY座標を示すX座標843、Y座標844から構成される。
【0059】
次に、ステップS113では、情報処理装置101は、最大閉領域特定処理を行う。ステップS112で特定した基準点に基づいて最大閉領域を特定し、面積の算出を行う。最大閉領域特定処理の詳細は、後述する
図7に示す。
【0060】
ステップS114では、情報処理装置101は、ステップS108と同様に閉領域が存在するか否かを判定する。閉領域が存在する場合には、ステップS115に処理を進め、存在しなかった場合には、閉領域が存在しない旨をユーザに通知し、本一連の処理を終了する。
【0061】
ステップS115では、情報処理装置101は、特定した閉領域に対してハッチング表示を施す。ハッチング表示とは、ある面を斜線や特定の模様で埋めることを言う。特定した閉領域が識別可能に表示できるのであれば、ハイライト表示でもよいし、他の表示方法でもよい。
【0062】
ステップS116では、情報処理装置101は、ステップS115で閉領域の面積の算出対象となっている閉領域をハッチング表示にて明示した画面に重ねて、面積の算出結果の値を画面上に表示する。こうすることで、閉領域の特定を容易にし、更に当該閉領域の面積を計算して表示させることができる。
【0063】
次に、ポイント位置特定処理について
図5を用いて説明する。尚、S201乃至S206の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
【0064】
尚、この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている2次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、2次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
【0065】
ステップS201では、情報処理装置101は、ステップS104にて選択された非対象要素を閉領域候補要素テーブル800の判別フラグ804に基づいて、特定する。
【0066】
ステップS202では、情報処理装置101は、ステップS201で特定された非対象要素の両端点の座標値を2次元CADアプリケーションに表示されている2次元CADデータ上より取得し、端点テーブル810(
図8参照)のNo811、要素ID812、X座標813、Y座標814に格納する。
【0067】
ステップS203では、情報処理装置101は、非対象要素となっている線要素と当該非対象要素とは他の線要素との交点があるか否かを判定する。交点があると判定された場合には、ステップS204に処理を進め、そうでない場合には、ステップS206に処理を進める。の座標値を2次元CADアプリケーションにて算出し、記憶する。
【0068】
ステップS204では、情報処理装置101は、ステップS203で特定された交点の座標値を2次元CADアプリケーションで算出し、算出された交点の座標値を交点テーブル820(
図8参照)のNo821、要素ID822、X座標823、Y座標824に格納する。
【0069】
交点テーブル820(
図8参照)は、一意に割り振られるNo821、交点ごとに2次元CADアプリケーションによって割り振られた要素ID822、当該交点のX座標とY座標を示すX座標823、Y座標824から構成される。
【0070】
ステップS205では、情報処理装置101は、ステップS204で取得した交点の座標値をもとに、両端点と交点との中点、交点と交点との中点を2次元CADアプリケーションで算出し、中点テーブル830(
図8参照)のNo831、要素ID832、X座標833、Y座標834に格納する。また、中点を算出する際に参照した端点と交点の要素IDをレコード毎に要素IDa835、要素IDb836に格納する。このとき両端点と交点との中点の場合は、判別フラグ837の値を「0」にし、交点と交点との中点の場合は、同値を「1」で格納する。本実施例におけるモデルAの非対象要素に対して端点、交点、中点を特定すると、
図15に示すような部分が該当する。非対象要素の両端が端点、他の線要素と交差する点が交点、端点と端点または端点と交点の間に位置する点が中点である。
【0071】
中点テーブル830(
図8参照)は、一意に割り振られるNo831、中点ごとに2次元CADアプリケーションによって割り振られる要素ID832、当該中点のX座標とY座標を示すX座標833、Y座標834、中点を構成する端点と交点、または交点と交点の要素IDを格納する要素IDa835、要素IDb836、中点を構成するのが端点と交点なのか、交点と交点なのかを示す判別フラグ837から構成される。
【0072】
ステップS206では、情報処理装置101は、閉領域候補要素テーブル800の判別フラグの値を参照して、未処理のレコードがあるか否かを判定する。未処理のレコードがあると判定された場合には、ステップS201に処理を戻し、ない場合にはポイント位置特定処理を終了し、呼び出し元に処理を戻す。これらの処理によって、選択された非対象要素の端点と交点と中点を特定し、後述する
図6の対象閉領域抽出処理の準備を行う。
【0073】
次に、対象閉領域抽出処理について
図6を用いて説明する。尚、S301乃至S310の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
【0074】
尚、この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている2次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、2次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
【0075】
ステップS301では、情報処理装置101は、ステップS205で取得した中点を中点テーブル830より取得する。対象閉領域抽出処理では、この中点を基に閉領域を抽出する。閉領域の抽出は閉領域を構成する外周の線要素を、基準点テーブル840の基準点に基づいて走査することで抽出する。基準点からの走査方法は、スタート点である中点が端点と交点の中点である場合と、交点と交点の中点である場合の2つがある。以下、まずは
図16に示す端点と交点の中点をスタート点とする場合を例にとって説明を行っていく。
【0076】
ステップS302では、情報処理装置101は、ステップS301で取得した中点から走査をスタートし、最初に見つかった交点を走査のゴール点である基準点に決定する。具体的には、まず中点テーブル830より取得した中点の判別フラグ837が「0」である場合、つまり端点と交点の中点である場合には、
図16の<ステップ1>に示すように、取得した中点から端点とは反対の方向、つまりは交点の座標(中点テーブル830の要素IDa835、要素IDb836を交点テーブル820と突き合わせた結果の座標値)に向かって走査を開始する。そして、最初に遭遇した交点を基準点に決定し、基準点テーブル840のNo841、要素ID842、X座標843、Y座標844に格納する。
【0077】
ステップS303では、情報処理装置101は、基準点まで走査してきた線要素から反時計回り(左回り)で次の走査対象である線要素を探し、該当する線要素に走査する。次に走査すべき線要素の候補がいくつか存在する場合は、走査してきた方向から左方向へ走査の進路をとる。この左方向というのは、走査してきた線要素から左回りで角度を測定したときに最も角度が大きくなる線要素を左方向の線要素とする。走査候補が円弧の場合は交点からの接線に基づいて角度を判断する。また、2つの円弧に正接な接線と、走査してきた直線とが一致してしまう場合がある。こうなると、2つの円弧の接線と走査してきた直線との角度は同じであるので判断ができない。よって、この場合には、円弧の向きが左回りか右回りかの情報を2次元CADアプリケーションより取得することでより左方向に向かう線要素を選択する。
【0078】
図16の<ステップ1>を例にとって説明すると、ステップS301で取得された中点から走査をスタートし、最初の交点である基準点に到着する。ここは十字路となっているが、走査してきた線要素から左回りで最も角度が大きくなる線要素は上方向に伸びる線要素であるので、この線要素に沿って走査を再開する。
【0079】
ステップS304では、情報処理装置101は、到達した点が交点なのか、端点なのか、基準点なのかを判定する。まず到達した点の座標値が基準点かどうかを基準点テーブル840に登録されている座標値を参照して判定する。次に基準点でなかった場合に、到達した点から次に走査すべき線要素が存在するかどうかによって、交点なのか端点なのかを判定する。基準点であると判定された場合には、ステップS306に処理を進め、交点であると判定された場合には、ステップS303に処理を戻し、端点であると判定された場合には、ステップS305に処理を進める。
【0080】
尚、交点だと判定した場合、閉領域を構成する要素として辿ってきた線要素を
図8の閉領域構成要素テーブル880のNo881、要素ID882、要素タイプ883に格納し、次に走査すべき線要素を走査対象要素テーブル890のNo891、要素ID892、要素タイプ893、交点No894に格納する。この走査対象要素テーブル890の交点No894には、同じ交点から延びる走査対象の線要素に対しては同じ番号を振ることで、グルーピングしておく。走査対象要素テーブル890は、端点で行き止まりになった場合に1つ前の交点に戻って、走査を再開するためのテーブルである。よって、再開する候補となる線要素は1つの交点ごとにグルーピングしておく必要がある。
【0081】
閉領域構成要素テーブル880(
図8参照)は、一意に割り振られるNo881、閉領域を構成する線要素の要素ID802を格納する要素ID882、当該線要素が直線なのか、円弧なのかを示す要素タイプ883から構成される。
【0082】
また、走査対象要素テーブル890(
図8参照)は、一意に割り振られるNo891、走査対象候補である線要素の要素ID802を格納する要素ID892、当該線要素が直線なのか、円弧なのかを示す要素タイプ893、走査対象の線要素を抽出した交点ごとに割り振られる交点No894、当該交点のX座標とY座標を示す交点X座標895、交点Y座標896から構成される。
【0083】
ステップS305では、情報処理装置101は、端点であると判定されたので、別の走査線があるか否かを判定する。具体的には、走査対象要素テーブル890を参照して、当該端点に到達する前に格納された交点から伸びる他の線要素がないか判定する。要は、走査してきた線要素を交点まで逆走して、そこから更に走査を再開できる線要素があるか否かを判定するということである。別の走査線があると判定された場合には、ステップS303に処理を戻し、そうでない場合には、ステップS310に処理を進める。
【0084】
このようにステップS303乃至ステップS305を繰り返して、ゴールである基準点まで走査を行う。基準点まで到達すれば、1つの閉領域が完成する。尚、本実施例ではこのような走査方法で閉領域を特定しているが、これに限らない。
【0085】
図16の<ステップ2>を例にとって説明する。基準点から次の交点に到達すると、ステップS303における判定の結果、走査の進行方向を上方向にとる。直進方向に走査が進むと今回の場合は端点に到達する。端点は次に走査を進める方向が存在しないため、処理をステップS305に進め、1つ前の交点から進行可能な他の線要素があるかどうか判定する。走査対象要素テーブル890には、当該1つ前の交点から進行可能な線要素の情報が格納されているので、当該交点に向かって走査する。
【0086】
次に
図16の<ステップ3>に説明を移す。交点に到達したところで処理をステップS303に戻し、次の走査要素を前述した条件に基づいて判断し、次の走査方向に走査する。<ステップ3>に示すように、円弧の部分を進むことになる。そして、次に走査するべき線要素がなくなるか、または基準点の交点に戻ってくるまで処理を繰り返すと、本実施例におけるモデルAでは、
図16の<ステップ4>に示すような閉領域を抽出する。
【0087】
次に、
図17を用いて、交点と交点の中点をスタート点とする場合を例にとって説明を行う。ステップS302では、中点テーブル830より取得した中点が交点と交点の中点だった場合、
図17の<ステップ1>のように取得した中点から双方向へそれぞれ走査を開始し、双方向それぞれについて最初の交点を基準点に決定する。その後の処理は前述した同様の処理を繰り返し、閉領域を確定する。こちらの閉領域は、端点と交点の中点をスタート点とした場合とは異なり、
図17の<ステップ2>に示すような閉領域が抽出される。つまり、スタート点が異なると抽出される閉領域も異なることになる。
【0088】
ステップS306では、情報処理装置101は、ステップS304の処理にて、基準点に戻ってきたと判定すると、2次元CADアプリケーションにより、
図8の閉領域構成要素テーブル880に格納された線要素に基づいて構成される閉領域の面を作成する。
【0089】
ステップS307では、情報処理装置101は、ステップS306で作成された閉領域の面に基づいて、2次元CADアプリケーションの機能により面積を算出する(面積計算手段)。
【0090】
ステップS308では、情報処理装置101は、ステップS307で算出された閉領域の面積が既に面積テーブル850に格納済みであるか否かを判定する。つまり、二重登録しないための処理である。面積テーブル850に格納済みであると判定された場合には、ステップS310に処理を進め、そうでない場合には、ステップS309に処理を進める。
【0091】
ステップS309では、情報処理装置101は、面積テーブル850のNo851と要素ID852と面積853に作成した閉領域の面積を格納する。
【0092】
ステップS310では、情報処理装置101は、未処理の他の中点(スタート点)があるか否かを判定する。本実施例におけるモデルAでは、端点と交点の中点が2つ、交点と交点の中点が1つ存在するため、これらすべてについてステップS301乃至ステップS309の処理を行う。未処理の他の中点があると判定された場合には、ステップS301に処理を戻して新しい中点を取得し、すべて処理したと判定された場合には、閉領域抽出処理を終了し、呼び出し元に処理を戻す。
【0093】
次に、最大閉領域特定処理について
図7を用いて説明する。尚、S401乃至S407の各ステップは情報処理装置101おけるCPU201の制御の下、処理が行われる。
【0094】
尚、この処理を情報処理装置101に実行させるためのプログラムは、情報処理装置101にインストールされている2次元CADアプリケーションの一部、若しくはアドオンプログラムとして用意されていてもよいし、2次元CADアプリケーションとは別にインストールされたプログラムとして用意されていてもよい。
【0095】
ステップS401では、情報処理装置101は、ステップS112で端点テーブル810に格納された端点を取得する。
【0096】
ステップS402では、情報処理装置101は、ステップS112で格納された基準点を基準点テーブル840から取得する。
【0097】
ステップS403乃至ステップS407は、前述したステップS303乃至ステップS307と同様であるので説明を省略する。複数の閉領域が存在する可能性のある対象閉領域特定処理とは異なり、最大となる閉領域のみを算出するため、
図7のステップS401からステップS407までの処理フローには複数の閉領域をテーブルへ登録するフローは存在しない。ステップS407にて最大閉領域の面積が確定するか、若しくは走査の途中にて閉領域が確定されなかった場合に最大閉領域確定処理を終了する。
【0098】
以上、説明したように、本実施形態によれば、2次元図面上で特定したい閉領域をまたぐ線要素を指定することで、指定された線要素が含まれる閉領域を特定することが可能となるので、効率的にユーザが望む閉領域を特定できる。
【0099】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
【0100】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0101】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0102】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0103】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0104】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0105】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0106】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0107】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0108】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0109】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。