以下、図面を参照して、本発明の実施の形態の一例について説明する。
図1は、本発明のCADシステム100のシステム構成の一例を示す図である。本発明のCADシステム100は、情報処理装置101、サーバ102が設置されており、それら装置はLAN(Local Area Network)等のネットワーク103を介して相互にデータ通信可能に接続されている。図1のネットワーク103上に接続される各種端末あるいはサーバの構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
情報処理装置101は、オペレーティングシステム上でCADアプリケーションと重なり制御プログラムを実行する装置である。CADアプリケーションと重なり制御プログラムは後述する図2のROM202または外部メモリ211に記憶されており、ユーザからの指示に応じて、CPU201がRAM203に読み出して各種動作を行う。すなわち、2次元図面(設計図)を表示するアプリケーションとオペレーティングシステムを有する情報処理装置の一例を示す。
オペレーティングシステムは、情報処理装置101を動作させるための基本的なアプリケーションである。オペレーティングシステム上でCADアプリケーションや重なり制御プログラム、その他各種プログラムを動作させることができる。
CADアプリケーションは、ユーザからの操作に応じて、設計物の立体形状を示す3次元モデルの作成や構築、また3次元モデルに基づく2次元図面の作成を行う。
重なり制御プログラムは、表示された2次元図面に配置されている寸法や注記(アノテート)情報をCADアプリケーションから取得する。この取得には、重なり制御プログラムがCADアプリケーションのAPIを実行して取得する。取得した寸法や注記(アノテート)情報と、ユーザにより重なりを回避するための優先度等の設定値(条件)をもとに、寸法や注記(アノテート)の移動する位置を決定し、CADアプリケーションのAPIを用いて、寸法や注記(アノテート)の重なりがなくなるように、寸法や注記(アノテート)を移動させる。
このように、重なり制御プログラムは、CADアプリケーションに備えられた各種APIを用いて指示を出力することが可能なプログラムである。重なり制御プログラムは、CADアプリケーションのアドオン(アドイン)であることが望ましい。
サーバ102は、情報処理装置101で作成された各種データ(3次元モデルや2次元図面)を記憶管理する装置である。サーバ102にはファイル管理アプリケーションが動作している。
尚、情報処理装置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の機能部を示す機能構成図について、図3を用いて説明する。
情報処理装置101は、図面の内容を付加的に示すオブジェクトを表示する情報処理装置であり、重なり制御プログラム310により情報処理装置の各手段として機能させることができる。
設定部311は、オブジェクトの移動に用いる設定値を設定する機能部である。
特定部312は、オブジェクトの位置に基づき、オブジェクトの重なりを特定する機能部である。
位置決定部313は、設定部311により設定された設定値に従って、移動する位置を決定する機能部である。
移動制御部314は、特定部312で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを位置決定部313で決定された位置に移動するよう制御する機能部である。
また、設定値は、オブジェクトで表示する値間の距離を得るための値を含み、位置決定部313は、オブジェクトで表示する値間の距離を得るための値を用いて、移動する位置を決定する機能部である。
また、設定値は、移動可能な距離を示す値を含み、位置決定部313は、移動可能な距離を示す値を用いて、移動する位置を決定する機能部である。
また、設定値は、移動する方向の優先度を示す値を含み、位置決定部313は、移動する方向の優先度を示す値を用いて、移動する方向を決定して移動する位置を決定する機能部である。
オブジェクト優先度決定部315は、設定値に含まれるオブジェクト種別の優先度を示す値を用いて、オブジェクトの優先度を決定する機能部である。
また、移動制御部314は、オブジェクト優先度決定部315で決定されたオブジェクトの優先度により優先度の低いオブジェクトを位置決定部313で決定された位置に移動するよう制御する機能部である。
出力制御部316は、位置決定部313により移動する位置が決定できず、移動できなかったオブジェクトを他のオブジェクトと識別させるように出力する機能部である。
また、出力制御部316は、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する機能部である。
また、出力制御部316は、異なる色情報を用いて、オブジェクトを識別可能に出力する機能部である。
次に、図4〜図21を用いて、本実施形態における詳細な処理について説明する。
図4は、重なり制御処理における全体の処理を示すフローチャートである。
なお、各ステップの処理は、各装置のCPU201が実行する。
ステップS400では、サーバ102又は、情報処理装置に格納されている2次元図面をCADアプリケーションが表示する。2次元図面は、3次元モデルから生成した三面図(正面図、上面図、側面図を含む図)を用いるものとする。この三面図は、正面図、上面図、側面図がそれぞれ別のビューで管理されているものとする。
ステップS401では、重なり制御プログラムを起動する。重なり制御プログラムを起動することで重なり回避処理が実行される。なお、重なり制御プログラムを起動し、ユーザからの所定の条件や実行ボタンの押下後に重なり回避処理が実行される構成であってもよいことは言うまでもない。
ステップS402では、重なり回避設定処理を実行する。重なり回避設定処理については、図9を用いて後述する。この重なり回避設定(条件設定)を用いて、アノテートの重なり回避が実行される。
ステップS403では、最初のビューを取得する。例えば、正面図のビュー情報(ビューの識別情報)を取得する。このビュー情報はCADアプリケーションのAPIを用いて取得することが可能である。
ステップS404では、取得したビュー情報をもとにアノテート情報を取得する。アノテートとは図面上に付されている引き出し線、注記、注釈、寸法のオブジェクトである。アノテート情報の取得には、CADアプリケーションのAPIを用いて取得することが可能である。なお、ステップS404の処理については、図5を用いて後述する。
ステップS405では、ステップS404で取得したアノテート情報に対して、アノテートの位置や種別や値の情報を基に重み付けを実施する。ステップS405の処理については、図13を用いて後述する。
ステップS406では、重なっているアノテートを特定して、アノテートの重み付けに従ってアノテートを移動させる(重なり回避処理)。ステップS406の処理については、図16を用いて後述する。
ステップS407では、現在処理しているビューが最後のビューか否かを判定する。最後のビューである場合には、ステップS409へ処理を移す。最後のビューでない場合(他のビューがある場合)には、ステップS408へ処理を移す。
ステップS408では、処理していない次のビューを取得する。ビューの情報はステップS403と同様に取得することができる。
ステップS409では、移動したアノテートの識別表示を行う。具体的には、アノテート情報記憶領域を用いて、移動したレコードについて移動フラグを付し、この移動フラグのあるアノテートについて任意に設定した色「例えば青」で表示するように、CADアプリケーションのAPIを用いて実行し、図面上で変更箇所(移動されたアノテーション)がわかるように表示(出力制御)する。
これにより、移動できたオブジェクト(青)と、移動できる地点がなく移動できなかったオブジェクト(赤)を識別させることができる。また、重なりがなく移動を要しないオブジェクト(黒)との識別状態となる。すなわち、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する処理の一例である。
なお、ユーザの設定により、移動できなかったオブジェクトだけ識別表示する設定があった場合には、ステップS409の表示(出力制御)を行わないようにしてもよい。
ステップS409は、移動制御されたオブジェクトを識別表示する処理と言い換えることが可能である。
ステップS410では、重なり制御プログラムのダイアログで重なり回避処理の完了指示をするとステップS409で識別表示したアノテートを基の色(例えば、黒色)に戻すように制御する。識別表示OFF(識別表示解除)して、最終の2次元図面を確定する。
ステップS410は、識別表示したオブジェクトの識別表示を解除する処理と言い換えることが可能である。
次にステップS402の処理を、図9のフローチャート、図10A、図10B、図10C、図11、図12の例を用いて説明する。図9は、アノテートの条件設定処理の詳細を示すフローチャートである。
ステップS901では、判定領域の重み設定の入力を受け付ける。具体的には、図10Aの重なり回避設定画面の判定領域重み設定画面(タブ)にて、図面上の領域ごとの優先度を設定する。1001は図面が描画されている領域であり、優先度(重み付け値)が一番高い「1」が予め設定されている。1001は、図11のエリア005であり、モデルを囲う外形線(矩形)の領域である。この判定領域重み設定画面(タブ)で1〜9の優先度(重み付け値)の入力を受け付ける。重み付けの例が1002(例1)と1003(例2)である。1が重み付けとして一番高く、9が重み付けとして一番低い。
なお、重なり回避設定画面は、既に設定された値をHDDや外部ファイルから読み出すボタンや、設定された値をHDDや外部ファイルに保存するボタンや、重なり回避を開始するボタンを備えるものとする。
ステップS902では、アノテート種別の重み設定の入力を受け付ける。具体的には、図10Bの重なり回避設定画面の判定領域重み設定画面(タブ)にて、アノテートの種別を表示し、1011で重み付け(順位)を決定する。この順位によって重み付け値が決定されるものとする。この重み付け値は、オブジェクトに係るオブジェクト種別の優先度を示す値と言い換えることができ、このオブジェクト種別の優先度を示す値を用いて、オブジェクトの優先度が決定される。
なお、アノテートの種別は、現在表示している図面で用いられている種別を表示するようにしてもよいし、CADアプリケーションが有する種別を表示してもよい。この判定領域重み設定画面(タブ)で順番の入力(入れ替え)を受け付ける。重み付けの例が1012(例1)と1013(例2)である。70が重み付けとして一番高く、10が重み付けとして一番低い。
ステップS903では、アノテートの回避方向優先度設定の入力を受け付ける。具体的には、図10Cの重なり回避設定画面の移動方向優先度設定画面(タブ)にて、アノテートを移動させる際の優先度を設定する。1021〜1024で優先度順に数値を入力する。この移動方向優先度設定画面(タブ)で1〜4の優先度(重み付け値)の入力を受け付ける。重み付けの例が1025〜1028である。1が重み付けとして一番高く、4が重み付けとして一番低い。すなわち、1の方向を優先してアノテートを移動させる。1の方向に移動できない場合には、2の方向への移動を試みて、移動できない場合には、3,4と順に移動できるかを判定するものとする。この1〜4の優先度(重み付け値)は、移動する方向の優先度と言い換えることができる。この移動する方向の優先度を示す値を用いて、移動する方向を決定して移動する位置が決定される。
図10Aと図10Bで設定して保存されたデータの例が、図12の重み付けテーブル1210である。設定例ごとに保存されているデータイメージで、1002と1012が1211、1003と1013が1212に対応する。
図10Cの例では、「1」の方向は「上方向」、「2」の方向は「右方向」、「3」の方向は「下方向」、「4」の方向は「左方向」である。
図10A〜図Cの設定は、オブジェクトの移動に用いる設定値を設定する処理の一例を示すものである。
ステップS904では、回避方向別の最大移動移動距離の入力を受け付ける。具体的には、図10Cの重なり回避設定画面の移動方向優先度設定画面(タブ)にて、アノテートを移動させる際の最大移動距離を設定する。1031〜1034で、移動距離の数値を入力する。任意の数値を入力するようにしているが、プルダウンなどで一定の範囲の数値を入れさせるように制御してもよい。この移動方向優先度設定画面(タブ)での最大移動距離の例が1035〜1038である。
最大移動距離は、移動可能な距離を示す値とも言い換えることができる。すなわち、移動可能な距離を示す値を用いて、移動する位置が決定される。
ステップS905では、寸法値領域拡大幅の入力を受け付ける。具体的には、図10Cの回避設定画面の移動方向優先度設定画面(タブ)にて、寸法値領域拡大幅の数値を設定する。1041で寸法値を囲う外形(矩形)を拡大する幅の入力を受け付ける。入力された値の例が1042である。
なお、本実施形では、拡大幅を設定するようにしたが、寸法値と他のアノテートの間隔を所定範囲確保するための値である間隔値(距離)を設定するようにしてもよい。この距離を満たすようにアノテートを移動させる。すなわち、オブジェクトで表示する値(寸法値)間の距離を得るための値とも言い換えることができる。よって、このオブジェクトで表示する値間の距離を得るための値を用いて、移動する位置が決定される。
次にステップS404の処理を、図5のフローチャート、図6、図7、図8の例を用いて説明する。図5は、アノテートの情報取得処理の詳細を示すフローチャートである。
ステップS501では、処理対象のビュー(図6の601)の最初の処理対象のアノテートを特定する情報(例えば、ターゲットとなるアノテートのハンドル)を取得する。アノテートを特定する情報はCADアプリケーションのAPIを利用することで取得することができる。なお、本実施形態では、処理対象のアノテートを特定する情報を取得して、その後にCADアプリケーションのAPIを用いて種別等を取得する構成としたが、アノテート情報を構造体として一括して取得する構成であってもよい。
図6の602を例にすると、アノテート1を取得する。図6はアノテート1の情報を取得する際の概念を示す図である。また、図7は、図6に対応する記憶領域を示す図である。
ステップS502では、取得したアノテートを特定する情報を用いて、処理対象のアノテートの種別を取得する。この種別の取得もCADアプリケーションのAPIを用いて取得する。図6の602のアノテート1では「水平」の種別が取得される。この取得された種別を図7の重なり制御プログラムが管理するメモリ上の記憶領域(アノテート情報記憶領域)701に記憶する。種別を記憶した例が702である。不図示であるがアノテートの識別情報(アノテートID)なども合わせて管理されるものとする。
ステップS503では、取得したアノテートを特定する情報を用いて、アノテートのテキスト(値)の座標を取得する。この座標の取得もCADアプリケーションのAPIを用いて取得する。具体的にはテキストを囲う矩形の左下と右上の座標値を取得し、記憶する。座標を記憶した例が703である。
ステップS504では、取得したアノテートを特定する情報を用いて、最初の処理対象の引き出し線を特定する情報(例えば、ターゲットとなる引き出し線のハンドル)を取得する。図6の604の引き出し線1が処理対象の引き出し線となる。引き出し線を特定する情報はCADアプリケーションのAPIを利用することで取得することができる。アノテート1の場合、引き出し線が3つあるため、3つの引き出し線に対して処理が繰り返される。
なお、引き出し線についても、複数の引き出し線の情報をまとめた構造体で一括して取得する構成であってもよい。
ステップS505では、引き出し線を特定する情報を用いて、対象の引き出し線の始点と終点の座標を取得し、記憶する。記憶した例が704である。引き出し線の始点と終点の座標はCADアプリケーションのAPIを利用することで取得することができる。
ステップS506では、最後の引き出し線か否かを判定する。最後の引き出し線の場合には、ステップS508へ処理を移す。最後の引き出し線でない場合(残りの引き出し線がある場合)には、ステップS507へ処理を移す。
ステップS507では、取得したアノテートを特定する情報を用いて、次の引き出し線の情報を取得し、ステップS505の処理を繰り返す。図6の605と606の引き出し線2と引き出し線3が処理対象の引き出し線となる。引き出し線の始点と終点の座標を繰り返し取得し、記憶した例が、図7の705と706である。706はすべての引き出し線の始点と終点の座標を記憶した場合の例である。
ステップS508では、最後のアノテートか否かを判定する。最後のアノテートの場合には、処理を終了する。最後のアノテートでない場合(他のアノテートがある場合)には、ステップS509に処理を移す。
ステップS509では、次のアノテートを特定する情報を取得し、各アノテートの種別、座標値を取得して、記憶する。すべてのアノテートの種別、座標値を記憶した例(アノテート情報記憶領域)が、図8の801である。また、801は、802の図面のアノテート(レコードNo 1〜8)の情報が801に記憶されている例で、図5の処理の完了時の例である。
なお、各レコードは、CADアプリケーションが管理しているアノテートの識別情報(アノテートID)と対応付いて管理されているものとする。
次にステップS405の処理を、図13のフローチャート、図14、図15の例を用いて説明する。図13は、アノテートの重み付け処理の詳細を示すフローチャートである。
ステップS1301では、対象のビューのモデルの表示領域を取得する。図11の例を参照すると、「エリア5」の領域の座標が取得できる。座標は、CADアプリケーションのAPIを用いて取得することができる。本実施形態では、各ビューに対応する3次元モデルを保持する構成となっており、3次元モデルから高さ、幅、奥行きを特定することで現在表示している図面の領域(囲う枠)を特定することができる。なお、3次元モデルから特定せずに、処理対象のビューの2次元図面から直接領域を特定する構成であってもよい。
ステップS1302では、アノテートを移動させる際に用いる判定領域を設定する。具体的には、図11を参照すると、CADアプリケーションから「エリア5」の領域(モデルを囲う矩形領域)の四隅の座標が取得されるため、四隅から延長線を引いた9個の領域を座標領域として定義する。各領域の優先順位は、図10Aで設定した優先順位となる。設定例(1002)では、「エリア5>エリア4>エリア6>エリア8>エリア2>エリア1>エリア3>エリア7>エリア9」。「エリア5」の優先度が一番高いのは、重なっているアノテートを移動させる際に、モデルに重ならないように移動することが望ましいためである。この優先順位は、後述のステップS1304で用いる。
以降は、各アノテートの優先度を決定するために、各要素の設定を行う処理である。ここで要素について説明する。図12の1200のように、第1要素は[領域の重み付け]。第2要素は[寸法種別の重み付け]、第3要素は[アノテートの値による重み付け]となる。また、第2要素の[寸法種別の重み付け]には、重み付けテーブル1210を用いて決定する。
ステップS1303では、記憶領域に記憶したアノテート(例えば、レコードNo.1)の情報を取得する。
ステップS1304では、第1要素の設定を行う。具体的には、処理対象のアノテートの2点座標(寸法値の矩形領域の座標点1&2)を用いて判定領域のどの領域に位置するかを決定する(図11を参照)。そして、重み付けテーブル1210を用いて、処理対象のアノテートの位置する領域に対応する重み付けを決定する。「エリア5」の場合重み付け値「1」となる。
ステップS1304は、図面の位置を基に設定された領域を用いて、オブジェクトの位置する領域を決定する処理と言い換えることが可能である。
図11は、各領域におけるアノテートの位置を示す図である。なお、図11の1101の例のように、座標点が複数の領域にまたがっているケースにおいて、「エリア4」と「エリア5」にまたがる場合には優先度の高い「5」と設定する。1102の例のように座標点が複数の領域にまたがっているケースにおいて、領域の序列(優先度)に従って最も低い序列の領域を位置する領域(例えば、設定例1ではエリア9)として設定する。
なお、領域の設定は、これに限ることなく、重なっている領域面積がより広いほうを設定する領域として設定してもよい。
ステップS1305では、第2要素の設定を行う。具体的には、重み付けテーブル1210を用いて、処理対象のアノテートの種別に対応する重み付けを決定する。
ステップS1306では、第3要素の設定を行う。具体的には、アノテートの表示内容(寸法値等)に基づいて設定する。例えば、処理対象のアノテートが寸法だった場合、値に−1を乗算した値を設定する。また、処理対象のアノテートがテキスト(種別:注記)だった場合、そのテキスト文字数を設定する(例えば、図14の1421の通り「注記:XXXXXXX」は10文字であるため10が設定されている。)。
なお、本実施形態においては、水平寸法や累進寸法は値の小さいアノテートが重い。直径寸法や角度寸法は値の大きいアノテートが重い。また、注記はテキスト文字数の多いアノテートが重く優先度が高いものとなる。
また、第1の要素と第2の要素を用いて優先度を決定して移動することで一部は重なり回避することも可能であるが、第3の要素を用いて優先度を決定して重なり回避することでより容易に効率的に重なり回避することができる。
すなわち、複数の属性による重み付けは、領域決定により決定した領域に係る情報と、オブジェクトの種別に係る情報に基づき決定される。そして、複数の属性による重み付けは、更にオブジェクトで表示する値に基づき決定される。
ステップS1307では、最後のアノテートか否かを判定する。最後のアノテートの場合には、ステップS1309に処理を移す。最後のアノテートでない場合(他のアノテートがある場合)には、ステップS1308に処理を移す。
ステップS1308では、記憶領域に記憶した次のアノテート(例えば、レコードNo.2以降)の情報を取得して、重み付けの処理(要素設定)を繰り返す。
すべてのアノテートの重み付けの処理(要素設定)が終了した際の例が、図14の1420で、1422が重み付けした例である。なお、1220は重み付けによるソート前の例である。設定例2の重み付けによるソート前の例は、1520である。
ステップS1309では、1422の重み付けの情報を用いてソートする。ソートした結果の例(ソート後の例)が図14の1430である。本実施形態では、第1の要素、第2の要素、第3の要素の順にソートがされる。なお、設定例2のソートした結果の例は、図15の1530である。
ステップS1309は、複数の属性による重み付けに基づき、各オブジェクトの優先度を決定する処理と言い換えることが可能である。
図14は図12の1211の設定例1に対応する重み付け結果である。また図15は図12の1212の設定例2に対応する重み付け結果である。
次にステップS406の処理を、図16のフローチャート、図17、図18、図19の例を用いて説明する。図16は、アノテートの重なり回避処理の詳細を示すフローチャートである。
ステップS1601では、ソート後のアノテート情報記憶領域から2つ目のレコードの情報を取得する(処理レコードの情報取得)。1つ目のレコードは、一番優先度の高いレコード(アノテート)であるため移動しないことから2つ目のレコードから処理をスタートするものとする。また、2つ目のレコードが終了したら、3つ目のレコードを処理レコードとし、4つ目、5つ目と繰り返す。処理レコード以外のレコードが比較レコードの対象となる。
ステップS1602では、比較対象となる1つ目のレコードの情報を取得する(比較レコードの情報取得)。
ステップS1603では、上位の比較レコードである(優先度の高いアノテート)の矩形領域に、処理レコードの矩形領域(座標点1&2)が重なるか否かを判定する。重なる場合には、処理レコードのアノテート(優先度の低いアノテート)を移動させるべく、ステップS1615へ処理を移す。重ならない場合には、ステップS1607へ処理を移す。
なお、矩形領域に対して引き出し線が重なる場合については、ステップS1611で後述する。
ステップS1603は、図面の内容を付加的に示すオブジェクトで表示する値の表示領域を用いて、他のオブジェクトの表示領域と重なるか否かを判定する第1の重なり判定処理の一例を示すステップである。
矩形領域の重なりの詳細を、図17を用いて説明する。図17は、矩形領域同士の重なりを示す概念図である。
図17の1700と1710の例は、矩形領域が重なる例を示している。具体的には、レコードの座標点XYである「1」「2」と、異なるレコードの座標点XYである「3」「4」の比較によって重なりを判定する。「X1≦X3≦X2、且つY1≦Y3≦Y2」もしくは「X1≦X4≦X2、且つY1≦Y4≦Y2」のいずれかを満たす場合は重なるものとなる。
ステップS1615では、設定値(方向優先、寸法値領域拡大幅、最大移動距離の移動条件)を基に、移動できる地点があるかを判定する。ここでステップS1615の処理の具体的な例を示す。図10Cの移動方向優先度設定例1を参照し、図19の1900のように、鉛直寸法「100」を方向優先で優先度の高い「1」である上へ移動できるかを試みる。「100」の寸法値を上に移動しても、寸法線が鉛直寸法「30」にかかるため、上方向に移動できる地点はないと判定される。
次に、鉛直寸法「100」を方向優先で次に優先度の高い「2」である右へ移動できるかを試みる。寸法値領域拡大幅1402を参照し、その値、例えば「3mm」の幅を、寸法値の領域に加え、領域を拡大する(オフセットする)。
そして、この拡大した領域を有する寸法値と寸法線(オブジェクト)を右に、他のアノテーションの領域と重なる位置を特定する。この位置があれば移動できる地点があると判定する。なお、元の位置からの距離が、最大移動距離1036を超える場合、移動できないと判定する。移動できないと判定された場合には、次の優先度の方向へ、寸法値領域拡大幅や最大移動距離を用いて移動を試みることを繰り返す。
移動できる位置が特定できない場合には、ステップS1616へ処理を移す。移動できる位置が特定できない場合には、ステップS1604へ処理を移す。なお、寸法値領域拡大幅の適用は、移動前に行うように構成したが、移動するたびに寸法値領域拡大幅を適用して、重なるか否かを判定する手順であってもよい。また、まず、寸法値領域拡大幅は適用せず、アノテートを移動させて移動できる位置が特定できた場合に、寸法値領域拡大幅を適用して最終的な位置を決定する手順であってもよい。
なお、寸法値領域拡大幅を最後に適用した結果、最大移動距離を超える場合には、移動できる位置が特定できない(位置がない)と判定するようにしてもよい。また、注記や半径を示すアノテーションは、方向優先度は用いず、同心円状の任意角度(45度など)に移動を試みて、移動できる位置を特定する。 これにより、種別により見易い位置にアノテーションが移動され、よりユーザが所望する形での移動が可能となる。
なお、ステップS1615は、設定された設定値に従って、移動する位置を決定する処理の一例を示すステップである。
ステップS1604では、処理レコードのアノテートを特定された移動できる位置に移動させる。
ステップS1604は、移動にかかる設定条件に従って特定された位置に、オブジェクトを移動するように制御する移動制御処理の一例を示すステップである。また、優先度の低いオブジェクトを決定された位置に移動するよう制御する移動制御処理の一例を示すステップとも言い換えることができる。
ステップS1605では、移動後のアノテート(処理レコードのアノテート)の座標点をCADアプリケーションから取得する。
ステップS1606では、移動後のアノテート(処理レコードのアノテート)の引き出し線の情報をCADアプリケーションから取得する。アノテートが移動されたため、ステップS1605とステップS1606で取得した情報を用いて、処理レコードに対応するアノテート情報記憶領域を更新する。そして、ステップS1602に処理を移し、移動させたアノテーション(処理レコードのアノテーション)と、次の比較レコードのアノテーションと重なるかを再度判定する。ステップS1602で比較レコードを取得して、S1603で矩形領域が重なるかを判定し、移動後のアノテーションが重ならない場合には、次の処理に移る。
ステップS1616は、ステップS1615で設定値(方向優先、寸法値領域拡大幅、最大移動距離の移動条件)を基に、移動できる地点がない場合の処理である。ステップS1616では、対象のレコード(オブジェクト)の表示色を変更する(出力制御)。具体的には、CADアプリケーションのAPIを用いて、対象のアノテートの表示色を赤に変更する。これにより、移動できたオブジェクト(青)と、移動できる地点がなく移動できなかったオブジェクト(赤)を識別させる。また、重なりがなく移動を要しないオブジェクト(黒)との識別状態となる。すなわち、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する処理(出力制御)の一例である。
ステップS1617では、移動できなかったアノテートを他のレイヤー(移動できないアノテート用のレイヤー)に移行する。他のレイヤーがない場合には、新規に生成して移行させるものとする。
本実施形態では、ステップS1616、ステップS1617の手順としたが、これに限ることはない。例えば、CADアプリケーションによっては、レイヤー自体に色設定でき、そのレイヤーのアノテートは設定された色で表示される場合がある。その際には、ステップS1616でアノテートに色設定を行わず、レイヤーに移行することで実現できる。
なお、レイヤーに移行することで、レイヤーの切り替えにより、移動できなかったアノテートを表示することができ、その後のユーザの手作業によるアノテートの移動を容易にすることが可能となる。
更に、移動できなかったアノテートをユーザの任意の操作により、所定の位置に移動した場合には、アノテートの色を移動後の色(例えば、ステップS409と同様の青色)にする。
ステップS1607では、比較レコードは処理レコードの直前のレコードかを判定する。なお、1回目の処理は、比較レコードは処理レコードの直前となるため、ステップS1609に処理を移し、引き出し線の重なり回避処理に移行する。すなわち処理レコードより優先度の高い比較レコードがあるか否かを判定する。優先度の高い比較レコードがある場合には、ステップS1608へ処理を移し、優先度の高い比較レコードがない場合にはステップS1610へ処理を移す。
ステップS1608では、次の比較レコード(優先度の高いアノテート)を取得して、ステップS1603へ処理を移し、矩形領域の重なりを判定する。
次に、すべてのレコードを対象に矩形領域と引き出し線との重なり判定を行うためステップS1609以降の処理を実行する。なお、いずれかのアノテートの引き出し線と重なっていた場合は回避対象として、処理レコードのアノテートを移動する処理となる。
ステップS1609では、1つ目のレコード(比較レコード)を取得する。例えば、アノテート情報記憶領域1430のレコードNo.1の情報を取得する。
ステップS1610では、処理レコードと比較レコードが同じレコードか否かを判定する。同じレコードの場合には、ステップS1612へ処理を移す。同じレコードでない場合には、ステップS1611へ処理を移す。
ステップS1611では、処理レコードの矩形領域と、比較レコードの引き出し線と重なるか否かを判定する。引き出し線と重なる場合には、ステップS1615へ処理を移す。引き出し線と重ならない場合には、ステップS1612へ処理を移す。
ステップS1611は、図面の内容を付加的に示すオブジェクトで表示する値の表示領域を用いて、他のオブジェクトの引き出し線と重なるか否かを判定する第2の重なり判定処理の一例を示すステップである。
矩形領域と引き出し線の重なりの詳細を図18を用いて説明する。図18は、矩形領域と引き出し線の重なりを示す概念図である。
図18の1800と1810の例は、矩形領域と引き出し線が重なる例を示している。具体的には、レコードの座標点XYである「1」「2」から一時的に算出する「3」「4」を用いた矩形の線分(「1」「4」、「4」「2」、「2」「3」、「3」「1」)と、異なるレコードの引き出し線XYである線分ab、cd、bdとの比較によって交点の有無を判定し、交点がある場合は重なるものとなる。
なお、ステップS1604のアノテートの移動の詳細については、後述の図16にて説明する。
ステップS1612では、最後の比較レコードか否かを判定する。最後の比較レコードの場合には、ステップS1614へ処理を移し、最後の比較レコードでない場合(他の比較レコードが存在する場合)には、ステップS1613へ処理を移す。
ステップS1613では、次の比較レコードをアノテート情報記憶領域から取得し、引き出し線との重なりがあるかを判定する処理を繰り返す。
ステップS1614では、未処理の処理レコードがあるか否かを判定する。未処理(重なり回避判定を行っていないアノテート)の処理レコードがある場合にはステップS1601へ処理を移し、次のレコードを取得して、重なり回避処理を繰り返す。未処理の処理レコードがない場合、すなわち最後の処理レコードである場合には、重なり回避処理を終了する。なお、ステップS1604により、アノテート情報記憶領域が更新された場合には、その移動した処理レコードが優先度の高い比較レコードと重なっていないかを再度判定してもよい。これは、例えば、後から寸法値領域拡大幅を適用する場合、矩形領域が重なる可能性があるためである。
なお、図16では、処理レコードと比較レコードを用いて、1つずつ比較をして図面上でアノテートを移動させるようにしたが、この処理手順に限定されるものではない。例えば、先に重なりがあるアノテートを特定しておき、重なりのあるアノテート同士の比較により移動させる。また、移動させたのちに、再度、先に重なりがあるアノテートを特定して、重なりのあるアノテート同士の比較により移動させることを繰り返してもよい。
なお、ステップS1603とステップ1611の処理をまとめて、オブジェクトの位置に基づき、オブジェクトの重なりを特定する処理と言い換えることが可能である。
ステップS1604の処理は、特定された重なりのあるオブジェクトであって、オブジェクトに係る複数の属性に基づき決定された優先度の低いオブジェクトを移動するよう制御する処理と言い換えることが可能である。また、ステップS1309により決定した優先度に従って、優先度の低いオブジェクトを移動するよう制御する処理と言い換えることが可能である。
ステップS1604におけるアノテートの移動について、図19を用いて説明する。図16はアノテートの移動処理の概略を示す図である。
なお、図16は重み付け設定例1と、図10Cで設定された方向優先(上→右→下→左)と、寸法値領域拡大幅(3mm)を用いてアノテートを移動した際の例である。
1600では、鉛直寸法の寸法値が「30」「100」のアノテートが重なっている状態であり、「100」の引き出し線と「30」の矩形領域が重なっている状態である。図14の1430を参照すると、「30」はレコードNo.1で、「100」はレコードNo.2であり、優先度の低い「100」をモデルから離れるように移動される。
より詳細には、まず、方向優先の設定から、「100」を上方向に移動することを試みるが、「100」を上方向に移動しても、引き出し線が「30」の矩形領域に重なるため、方向優先の次の方向である右方向に移動することを試みる。右に移動することで引き出し線も右に移動されるため、「30」の矩形領域に重ならない位置が決定できる。その決定された位置で、「100」の矩形領域を寸法値領域拡大幅(3mm)で拡大する。拡大した結果「30」の矩形領域と重ならない場合には、その位置が移動位置となる。拡大した結果「30」の矩形領域と重なる場合には、「30」の矩形領域と重ならない位置まで移動した位置が実際の移動位置となる。この時、元の位置から、移動位置の距離が最大移動距離内とする。これは、アノテートを移動しすぎることで図面の閲覧性が低下するためである。
なお、「30」の矩形領域に対しても寸法値領域拡大幅(3mm)で拡大して重なりを判定するようにしてもよい。
なお、本実施形態では、右(水平方向)に「100」の矩形領域が、「30」の引き出し線の座標の外にくるまで所定値分ずらす処理を繰り返すが、「30」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。1902の矢印は移動方向を示すものである。移動された結果が1901である。
1930では、半径寸法の寸法値が「φ30」と注記の値「注記:XXXXXXX」のアノテートが重なっている状態であり、「φ30」の矩形領域と「注記:XXXXXXX」の矩形領域が重なっている状態である。図14の1430を参照すると、「φ30」はレコードNo.4で、「注記:XXXXXXX」はレコードNo.7であり、優先度の低い「注記:XXXXXXX」をモデルから離れるように移動する。移動する距離は、「注記:XXXXXXX」の矩形領域が、「φ30」の矩形領域の座標の外にくるまでの距離である。また、「注記:XXXXXXX」の矩形領域の中心として、同心円上の所定の角度(例えば、優先度の低い判定領域側である左上45度)の方向に所定値分ずらす処理を繰り返す。なお、「φ30」の矩形領域の座標の外になる距離を先に算出して、その距離分・所定の角度方向にずらすようにしてもよい。1932の矢印は移動方向を示すものである。
1910では、水平寸法の寸法値が「78」「250」のアノテートが重なっている状態であり、「78」の矩形領域と「250」の矩形領域が重なっている状態である。図14の1430を参照すると、「78」はレコードNo.5で、「250」はレコードNo.6であり、優先度の低い「250」をモデルから離れるように移動する。移動は「250」のある領域「エリア008」内とする。そして、上方向に移動させた場合には、重なりを回避することができないため、次の右方向に移動させることを試みる。右に移動させた場合には、「78」の引き出し線と重ならない位置まで動かす必要があり最大移動距離を超えるため、移動することができない。次の下方向に移動させることを試みて、移動できるため「250」は下方向に移動して重ならない位置を決定する。その決定された位置で、「250」の矩形領域を寸法値領域拡大幅(3mm)で拡大し、「78」のアノテートとの一定の距離を保つ。なお、本実施形態では、下に「250」の矩形領域が、「78」の引き出し線の座標の外にくるまで鉛直方向に所定値分ずらす処理を繰り返す。「78」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。1912の矢印は移動方向を示すものである。なお、本実施形態では、同じ領域内で移動させるものとしたが、隣の領域で優先度の低い領域であれば、その領域にアノテートを移動させてもよい。
1920では、鉛直寸法の寸法値が「20」と水平寸法の寸法値が「250」のアノテートが重なっている状態であり、「250」の引き出し線と「20」の矩形領域が重なっている状態である。図14の1430を参照すると、「250」はレコードNo.6で、「20」はレコードNo.8であり、優先度の低い「20」をモデルから離れるように移動する。優先度の高い上方向への移動では引き出し線との回避ができないため、次に優先度の高い右方向に移動を試みる。移動できるため「20」は右方向に移動して重ならない位置を決定する。その決定された位置で、「20」の矩形領域を寸法値領域拡大幅(3mm)で拡大し、位置を調整し、「250」のアノテート(線分)と一定の距離を保つ。なお、本実施形態では、右方向に「20」の矩形領域が、「250」の引き出し線の座標の外にくるまで所定値分ずらす処理を繰り返す。なお、「250」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。1922の矢印は移動方向を示すものである。
上述した移動は一例であり、この移動処理に限定されるものではないことは言うまでもない。また、移動には、CADアプリケーションのAPIを用いて移動制御させ、図面上でアノテートの位置を変える処理を行うものとする。モデルの図面にアノテーションが重ならないようにするため、モデルの枠(図11の領域「エリア005」)の外向きに移動するように制御することが望ましいがこの限りでない。
次に、図20を用いて、重なり回避処理の他の例を説明する。図20は方向優先で、一番高い方向に動かせた場合の移動例を示すものである。なお、最大移動距離内で、他の領域にもアノテートを動かせる場合の例とする。鉛直寸法「20」の矩形領域と水平寸法の引き出し線が重なっており、鉛直寸法「20」を移動させる例で説明する。
2000は、右方向が一番優先度が高い場合の例で、移動前の状態である。2001の矢印は移動方向(右)を示すものである。鉛直寸法「20」の矩形領域と水平寸法の引き出し線が重なっているため、2002のように、重ならない移動できる位置にアノテートを移動する。
2010は、左方向が一番優先度が高い場合の例で、移動前の状態である。2011の矢印は移動方向(左)を示すものである。鉛直寸法「20」の矩形領域と水平寸法の引き出し線が重なっているため、2012のように、重ならない移動できる位置にアノテートを移動する。すなわち、この例は、エリア005からエリア008へ鉛直寸法「20」が移動する。
2020は、上方向が一番優先度が高い場合の例で、移動前の状態である。2021の矢印は移動方向(上)を示すものである。鉛直寸法「20」の矩形領域と水平寸法の引き出し線が重なっているため、2022のように、重ならない移動できる位置にアノテートを移動する。
2030は、下方向が一番優先度が高い場合の例で、移動前の状態である。2031の矢印は移動方向(下)を示すものである。鉛直寸法「20」の矩形領域と水平寸法の引き出し線が重なっているため、2032のように、重ならない移動できる位置にアノテートを移動する。
次に、図21を用いて、重なり回避処理の他の例を説明する。図21は寸法値領域拡大幅を適用した場合の移動例を示すものである。水平寸法「78」の矩形領域と水平寸法「250」の矩形領域が重なっており、水平寸法「250」を移動させる例で説明する。
図21は、寸法値領域拡大幅:0mmの例と、寸法値領域拡大幅:3mmの例である。
2100は、「78」と「250」の矩形が重なっており、寸法値領域拡大幅:0mm(矩形を拡大しない)の場合である。2101は、下方向に水平寸法「250」を移動した例である。寸法値領域拡大幅:0mmであるため、「78」「250」は近い状態で表示されている。
2102は、「78」と「250」の矩形が重なっており、寸法値領域拡大幅:3mm(矩形を拡大する)の場合である。また、2102は、「78」と「250」の外接する矩形を3mmで拡大した状態である。2103は、下方向に水平寸法「250」を移動した例である。寸法値領域拡大幅:3mmであるため、「78」「250」は一定距離離れた状態で表示されている。これにより、ユーザが所望する形(視認しやすい状態)で重なり回避時の表示を行うことができる。
以上説明したように、本実施形態によれば、設定に応じて、図面の内容を付加的に示すオブジェクトの重なりを所望する方法で回避することができる。また、容易に回避することができるため、重なりのチェックを効率化することができる。移動できなかったオブジェクト、移動したオブジェクトを識別表示させるため、より効率化につながる。
オブジェクトの表示する値の表示領域を用いて重なり判定することで、異なる種別のオブジェクトであっても容易に重なり回避を行うことが可能である。
なお、本実施形態では、同一種別のオブジェクトの重なりを回避することに加え、異なる種別のオブジェクト同士でも重なりを容易に回避することができる。
また、オブジェクトの位置する領域(判定領域)と、オブジェクトの種別又は/及びオブジェクトの内容(値)により、優先度を決定して移動することができ、ユーザが所望する箇所に移動させることができる。
更に、モデルの枠を特定して、その枠の外側に重なるオブジェクトを移動させることでより見栄えの良い図面を作成することができる。
CADの世界においては、まず3次元モデルを作成する。そして、特に日本の習慣では3次元モデルをそのまま用いずに、3次元モデルから2次元図面データを作成する。3次元モデルから2次元図面データを作成する機能は各CADアプリケーションには備わっているのが通常であり、3次元モデルと作成された2次元図面データは対応付いて管理される。2次元図面データを作成したのち、2次元図面データを用いてレビュー(関係者による詳細検討)がなされるが、レビューにより仕様変更がなされることがある。そのため仕様変更内容に基づいて、オペレーターが3次元モデル上でモデルの形状等の仕様を変更する。この場合、3次元モデルの形を変更することで先に作成された2次元図面データにも自動的に反映されるが、CADアプリケーションは形状等をアップデートするだけであり、付加されたアノテートの重なりまでチェックすることがなく、アノテートが重なるといった事態が発生する。このような形態より効果を得ることが可能な仕組みである。
本実施形態は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本実施形態は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本実施形態の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本実施形態のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本実施形態のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本実施形態のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。