(57)【要約】【課題】  設定条件に応じて、図面の内容を付加的に示すオブジェクトの重なりを所望する方法で回避すること。【解決するための手段】  図面の内容を付加的に示すオブジェクトを表示する情報処理装置であって、前記オブジェクトの移動に用いる設定値を設定する設定手段と、前記オブジェクトの位置に基づき、オブジェクトの重なりを特定する特定手段と、前記設定手段により設定された設定値に従って、移動する位置を決定する位置決定手段と前記特定手段で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを前記位置決定手段で決定された位置に移動するよう制御する移動制御手段とを備える。【選択図】図３
2019106151.tif 000002
【特許請求の範囲】
【請求項１】
図面の内容を付加的に示すオブジェクトを表示する情報処理装置のプログラムであって、
前記情報処理装置を、
前記オブジェクトの移動に用いる設定値を設定する設定手段と、
前記オブジェクトの位置に基づき、オブジェクトの重なりを特定する特定手段と、
前記設定手段により設定された設定値に従って、移動する位置を決定する位置決定手段と
前記特定手段で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを前記位置決定手段で決定された位置に移動するよう制御する移動制御手段
として機能させるためのプログラム。
【請求項２】
前記設定値は、オブジェクトで表示する値間の距離を得るための値を含み、
前記位置決定手段は、前記オブジェクトで表示する値間の距離を得るための値を用いて、移動する位置を決定することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記設定値は、移動可能な距離を示す値を含み、
前記位置決定手段は、前記移動可能な距離を示す値を用いて、移動する位置を決定することを特徴とする請求項１又は請求項２に記載のプログラム。
【請求項４】
前記設定値は、移動する方向の優先度を示す値を含み、
前記位置決定手段は、前記移動する方向の優先度を示す値を用いて、移動する方向を決定して移動する位置を決定することを特徴とする請求項１乃至請求項３のいずれか１項に記載のプログラム。
【請求項５】
前記設定値は、前記オブジェクトに係るオブジェクト種別の優先度を示す値を含み、
前記オブジェクト種別の優先度を示す値を用いて、オブジェクトの優先度を決定するオブジェクト優先度決定手段を更に備え、
前記移動制御手段は、前記オブジェクト優先度決定手段で決定されたオブジェクトの優先度により優先度の低いオブジェクトを前記位置決定手段で決定された位置に移動するよう制御することを特徴とする請求項１乃至請求項４のいずれか1項に記載のプログラム。
【請求項６】
前記位置決定手段により移動する位置が決定できず、移動できなかったオブジェクトを他のオブジェクトと識別させるように出力する出力制御手段を更に備えることを特徴とする請求項１乃至請求項５のいずれか１項に記載のプログラム。
【請求項７】
前記出力制御手段は、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力することを特徴とする請求項６に記載のプログラム。
【請求項８】
前記出力制御手段は、異なる色情報を用いて、オブジェクトを識別可能に出力することを特徴とする請求項７に記載のプログラム。
【請求項９】
図面の内容を付加的に示すオブジェクトを表示する情報処理装置であって、
前記オブジェクトの移動に用いる設定値を設定する設定手段と、
前記オブジェクトの位置に基づき、オブジェクトの重なりを特定する特定手段と、
前記設定手段により設定された設定値に従って、移動する位置を決定する位置決定手段と
前記特定手段で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを前記位置決定手段で決定された位置に移動するよう制御する移動制御手段と
を備えることを特徴とする情報処理装置。
【請求項１０】
図面の内容を付加的に示すオブジェクトを表示する情報処理装置の処理方法であって、
前記オブジェクトの移動に用いる設定値を設定する設定ステップと、
前記オブジェクトの位置に基づき、オブジェクトの重なりを特定する特定ステップと、
前記設定ステップにより設定された設定値に従って、移動する位置を決定する位置決定ステップと
前記特定ステップで特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを前記位置決定ステップで決定された位置に移動するよう制御する移動制御ステップと
を含むことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ＣＡＤのオブジェクトの移動制御に関するプログラム、情報処理装置とその処理方法。
【背景技術】
【０００２】
従来から、ＣＡＤにおいて二次元の図面上で寸法が重ならないように制御する技術が開示されている（例えば、特許文献１）。
【０００３】
この技術は、図形の端線を基準線とし、基準線を開始線として、図形の端点を図形の外形線から識別し、寸法を作成する。また、寸法値を表す数字フォントのサイズに応じて寸法線の配置位置を調整している。特に同一の種別（水平寸法など）における調整を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１８５１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、図面においては、寸法線だけでなく、引き出し線を用いて図面に注記（アノテートともいう）を付すことが多くある。
【０００６】
この注記は、ユーザがコマンドやテンプレートを使って、引き出し線とテキストを付すことがある。例えば、テンプレート（穴と引き出し線とテキストを生成するコマンドをまとめたもの）を用いた場合、単純に図面上に配置されてしまうため、他の注記（アノテート）と重なりが発生してしまう。仮に、初めは重なっていない場合でも、ユーザが微調整をする際に、他の注記と重なりがでてきてしまうことが発生してしまうという問題があった。例えば、３次元モデルを変更した場合に対応する２次元図面上も更新がされ、アノテートに重なりができてしまうという問題があった
従って、最終的に重ならないようにユーザが手作業で修正する必要があり、修正に手間がかかるという問題があった。
【０００７】
そのため、重なりを回避すべくアノテートの重なりを判定して、一定の方向にアノテートを移動させて回避させることも考えられるが、図面を利用するユーザによっては、移動させることで通常利用している見え方（形態）と異なるため、適さないあるいは使い勝手の悪い図面となってしまうことがあった。
【０００８】
また、一定の方向（例えば、図面より外側）にアノテートを移動させる場合、重なるアノテートが増えると、アノテートが図面から離れていくため、図面サイズが大きくなるという問題もあり、適さないことがあった。
【０００９】
そこで、本発明の目的は、設定に応じて、図面の内容を付加的に示すオブジェクトの重なりを所望する方法で回避する仕組みを提供することである。
【課題を解決するための手段】
【００１０】
本発明の目的を達成するための図面の内容を付加的に示すオブジェクトを表示する情報処理装置であって、前記オブジェクトの移動に用いる設定値を設定する設定手段と、前記オブジェクトの位置に基づき、オブジェクトの重なりを特定する特定手段と、前記設定手段により設定された設定値に従って、移動する位置を決定する位置決定手段と前記特定手段で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを前記位置決定手段で決定された位置に移動するよう制御する移動制御手段とを備える。
【発明の効果】
【００１１】
本発明によれば、設定に応じて、図面の内容を付加的に示すオブジェクトの重なりを所望する方法で回避することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態におけるＣＡＤシステム１００の一例を示す構成図である。
【図２】情報処理装置１０１及びサーバ１０２のハードウェア構成の一例を示す構成図である。
【図３】情報処理装置１０１の機能構成の一例を示す構成図である。
【図４】重なり制御処理における全体の処理を示すフローチャートである。
【図５】アノテートの情報取得処理の詳細を示すフローチャートである。
【図６】アノテート１の情報を取得する際の概念を示す図である。
【図７】重なり制御プログラムが管理するメモリ上の記憶領域（アノテート情報記憶領域）の一例を示す図である。
【図８】すべてのアノテートの種別、座標値を記憶したアノテート情報記憶領域の一例を示す図である。
【図９】アノテートの重なり回避設定を示すフローチャートである。
【図１０Ａ】判定領域重み付け設定を示すイメージ図である。
【図１０Ｂ】アノテーション種別の重み付け設定を示すイメージ図である。
【図１０Ｃ】移動方向優先度設定を示すイメージ図である。
【図１１】領域を示すイメージ図である。
【図１２】重み付けの設定テーブルの一例を示す図である。
【図１３】アノテートの重み付け処理の詳細を示すフローチャートである。
【図１４】重み付け設定例１でのアノテート情報記憶領域の一例を示す図である。
【図１５】重み付け設定例２でのアノテート情報記憶領域の一例を示す図である。
【図１６】アノテートの重なり回避処理の詳細を示すフローチャートである。
【図１７】矩形領域同士の重なりを示す概念図である。
【図１８】矩形領域と引き出し線の重なりを示す概念図である。
【図１９】重み付け設定例１でのアノテートの移動処理の概略を示す図である。
【図２０】重なり回避処理の他の例（方向優先）の概略を示す図である。
【図２１】重なり回避処理の他の例（寸法値領域拡大幅を適用）の概略を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施の形態の一例について説明する。
【００１４】
図１は、本発明のＣＡＤシステム１００のシステム構成の一例を示す図である。本発明のＣＡＤシステム１００は、情報処理装置１０１、サーバ１０２が設置されており、それら装置はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク１０３を介して相互にデータ通信可能に接続されている。図１のネットワーク１０３上に接続される各種端末あるいはサーバの構成は一例であり、用途や目的に応じて様々な構成例があることは言うまでもない。
【００１５】
情報処理装置１０１は、オペレーティングシステム上でＣＡＤアプリケーションと重なり制御プログラムを実行する装置である。ＣＡＤアプリケーションと重なり制御プログラムは後述する図２のＲＯＭ２０２または外部メモリ２１１に記憶されており、ユーザからの指示に応じて、ＣＰＵ２０１がＲＡＭ２０３に読み出して各種動作を行う。すなわち、２次元図面（設計図）を表示するアプリケーションとオペレーティングシステムを有する情報処理装置の一例を示す。
【００１６】
オペレーティングシステムは、情報処理装置１０１を動作させるための基本的なアプリケーションである。オペレーティングシステム上でＣＡＤアプリケーションや重なり制御プログラム、その他各種プログラムを動作させることができる。
【００１７】
ＣＡＤアプリケーションは、ユーザからの操作に応じて、設計物の立体形状を示す３次元モデルの作成や構築、また３次元モデルに基づく２次元図面の作成を行う。
【００１８】
重なり制御プログラムは、表示された２次元図面に配置されている寸法や注記（アノテート）情報をＣＡＤアプリケーションから取得する。この取得には、重なり制御プログラムがＣＡＤアプリケーションのＡＰＩを実行して取得する。取得した寸法や注記（アノテート）情報と、ユーザにより重なりを回避するための優先度等の設定値（条件）をもとに、寸法や注記（アノテート）の移動する位置を決定し、ＣＡＤアプリケーションのＡＰＩを用いて、寸法や注記（アノテート）の重なりがなくなるように、寸法や注記（アノテート）を移動させる。
【００１９】
このように、重なり制御プログラムは、ＣＡＤアプリケーションに備えられた各種ＡＰＩを用いて指示を出力することが可能なプログラムである。重なり制御プログラムは、ＣＡＤアプリケーションのアドオン（アドイン）であることが望ましい。
【００２０】
サーバ１０２は、情報処理装置１０１で作成された各種データ（３次元モデルや２次元図面）を記憶管理する装置である。サーバ１０２にはファイル管理アプリケーションが動作している。
【００２１】
尚、情報処理装置１０１が、サーバ１０２の構成を含んでもよいし、サーバ１０２が情報処理装置１０１の構成を含んでもよい。また、本実施形態においては、情報処理装置１０１に各種データが記憶され、ユーザからの操作によって動作させる形態に基づいて説明を行う。
【００２２】
図２は、本発明の実施形態における各種端末のハードウェア構成を示す図である。
【００２３】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２４】
また、ＲＯＭ２０２あるいは外部メモリ２１１（記憶）には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  ＯｕｔｐｕｔＳｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）や、各サーバ或いは各ＰＣの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２５】
ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０３にロードして、プログラムを実行することで各種動作を実現するものである。
【００２６】
また、入力コントローラ（入力Ｃ）２０５は、キーボード２０９や不図示のマウス等のポインティングデバイスからの入力を制御する。
【００２７】
ビデオコントローラ（ＶＣ）２０６は、ＣＲＴディスプレイ（ＣＲＴ）２１０等の表示器への表示を制御する。表示器はＣＲＴだけでなく、液晶ディスプレイでも構わない。これらは必要に応じて管理者が使用するものである。
【００２８】
メモリコントローラ（ＭＣ）２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やフロッピーディスク（登録商標  ＦＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ２１１へのアクセスを制御する。
【００２９】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）２０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００３０】
尚、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ＣＲＴ２１０上での表示を可能としている。また、ＣＰＵ２０１は、ＣＲＴ２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００３１】
本発明の情報処理装置１０１が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０３にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ２１１に格納されている。
【００３２】
次に、情報処理装置１０１の機能部を示す機能構成図について、図３を用いて説明する。
【００３３】
情報処理装置１０１は、図面の内容を付加的に示すオブジェクトを表示する情報処理装置であり、重なり制御プログラム３１０により情報処理装置の各手段として機能させることができる。
【００３４】
設定部３１１は、オブジェクトの移動に用いる設定値を設定する機能部である。
【００３５】
特定部３１２は、オブジェクトの位置に基づき、オブジェクトの重なりを特定する機能部である。
【００３６】
位置決定部３１３は、設定部３１１により設定された設定値に従って、移動する位置を決定する機能部である。
【００３７】
移動制御部３１４は、特定部３１２で特定された重なりのあるオブジェクトであって、優先度の低いオブジェクトを位置決定部３１３で決定された位置に移動するよう制御する機能部である。
【００３８】
また、設定値は、オブジェクトで表示する値間の距離を得るための値を含み、位置決定部３１３は、オブジェクトで表示する値間の距離を得るための値を用いて、移動する位置を決定する機能部である。
【００３９】
また、設定値は、移動可能な距離を示す値を含み、位置決定部３１３は、移動可能な距離を示す値を用いて、移動する位置を決定する機能部である。
【００４０】
また、設定値は、移動する方向の優先度を示す値を含み、位置決定部３１３は、移動する方向の優先度を示す値を用いて、移動する方向を決定して移動する位置を決定する機能部である。
【００４１】
オブジェクト優先度決定部３１５は、設定値に含まれるオブジェクト種別の優先度を示す値を用いて、オブジェクトの優先度を決定する機能部である。
【００４２】
また、移動制御部３１４は、オブジェクト優先度決定部３１５で決定されたオブジェクトの優先度により優先度の低いオブジェクトを位置決定部３１３で決定された位置に移動するよう制御する機能部である。
【００４３】
出力制御部３１６は、位置決定部３１３により移動する位置が決定できず、移動できなかったオブジェクトを他のオブジェクトと識別させるように出力する機能部である。
【００４４】
また、出力制御部３１６は、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する機能部である。
【００４５】
また、出力制御部３１６は、異なる色情報を用いて、オブジェクトを識別可能に出力する機能部である。
【００４６】
次に、図４〜図２１を用いて、本実施形態における詳細な処理について説明する。
【００４７】
図４は、重なり制御処理における全体の処理を示すフローチャートである。
【００４８】
なお、各ステップの処理は、各装置のＣＰＵ２０１が実行する。
【００４９】
ステップＳ４００では、サーバ１０２又は、情報処理装置に格納されている２次元図面をＣＡＤアプリケーションが表示する。２次元図面は、３次元モデルから生成した三面図（正面図、上面図、側面図を含む図）を用いるものとする。この三面図は、正面図、上面図、側面図がそれぞれ別のビューで管理されているものとする。
【００５０】
ステップＳ４０１では、重なり制御プログラムを起動する。重なり制御プログラムを起動することで重なり回避処理が実行される。なお、重なり制御プログラムを起動し、ユーザからの所定の条件や実行ボタンの押下後に重なり回避処理が実行される構成であってもよいことは言うまでもない。
【００５１】
ステップＳ４０２では、重なり回避設定処理を実行する。重なり回避設定処理については、図９を用いて後述する。この重なり回避設定（条件設定）を用いて、アノテートの重なり回避が実行される。
【００５２】
ステップＳ４０３では、最初のビューを取得する。例えば、正面図のビュー情報（ビューの識別情報）を取得する。このビュー情報はＣＡＤアプリケーションのＡＰＩを用いて取得することが可能である。
【００５３】
ステップＳ４０４では、取得したビュー情報をもとにアノテート情報を取得する。アノテートとは図面上に付されている引き出し線、注記、注釈、寸法のオブジェクトである。アノテート情報の取得には、ＣＡＤアプリケーションのＡＰＩを用いて取得することが可能である。なお、ステップＳ４０４の処理については、図５を用いて後述する。
【００５４】
ステップＳ４０５では、ステップＳ４０４で取得したアノテート情報に対して、アノテートの位置や種別や値の情報を基に重み付けを実施する。ステップＳ４０５の処理については、図１３を用いて後述する。
【００５５】
ステップＳ４０６では、重なっているアノテートを特定して、アノテートの重み付けに従ってアノテートを移動させる（重なり回避処理）。ステップＳ４０６の処理については、図１６を用いて後述する。
【００５６】
ステップＳ４０７では、現在処理しているビューが最後のビューか否かを判定する。最後のビューである場合には、ステップＳ４０９へ処理を移す。最後のビューでない場合（他のビューがある場合）には、ステップＳ４０８へ処理を移す。
【００５７】
ステップＳ４０８では、処理していない次のビューを取得する。ビューの情報はステップＳ４０３と同様に取得することができる。
【００５８】
ステップＳ４０９では、移動したアノテートの識別表示を行う。具体的には、アノテート情報記憶領域を用いて、移動したレコードについて移動フラグを付し、この移動フラグのあるアノテートについて任意に設定した色「例えば青」で表示するように、ＣＡＤアプリケーションのＡＰＩを用いて実行し、図面上で変更箇所（移動されたアノテーション）がわかるように表示（出力制御）する。
【００５９】
これにより、移動できたオブジェクト（青）と、移動できる地点がなく移動できなかったオブジェクト（赤）を識別させることができる。また、重なりがなく移動を要しないオブジェクト（黒）との識別状態となる。すなわち、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する処理の一例である。
【００６０】
なお、ユーザの設定により、移動できなかったオブジェクトだけ識別表示する設定があった場合には、ステップＳ４０９の表示（出力制御）を行わないようにしてもよい。
【００６１】
ステップＳ４０９は、移動制御されたオブジェクトを識別表示する処理と言い換えることが可能である。
【００６２】
ステップＳ４１０では、重なり制御プログラムのダイアログで重なり回避処理の完了指示をするとステップＳ４０９で識別表示したアノテートを基の色（例えば、黒色）に戻すように制御する。識別表示ＯＦＦ（識別表示解除）して、最終の２次元図面を確定する。
【００６３】
ステップＳ４１０は、識別表示したオブジェクトの識別表示を解除する処理と言い換えることが可能である。
【００６４】
次にステップＳ４０２の処理を、図９のフローチャート、図１０Ａ、図１０Ｂ、図１０Ｃ、図１１、図１２の例を用いて説明する。図９は、アノテートの条件設定処理の詳細を示すフローチャートである。
【００６５】
ステップＳ９０１では、判定領域の重み設定の入力を受け付ける。具体的には、図１０Ａの重なり回避設定画面の判定領域重み設定画面（タブ）にて、図面上の領域ごとの優先度を設定する。１００１は図面が描画されている領域であり、優先度（重み付け値）が一番高い「１」が予め設定されている。１００１は、図１１のエリア００５であり、モデルを囲う外形線（矩形）の領域である。この判定領域重み設定画面（タブ）で１〜９の優先度（重み付け値）の入力を受け付ける。重み付けの例が１００２（例１）と１００３（例２）である。１が重み付けとして一番高く、９が重み付けとして一番低い。
【００６６】
なお、重なり回避設定画面は、既に設定された値をＨＤＤや外部ファイルから読み出すボタンや、設定された値をＨＤＤや外部ファイルに保存するボタンや、重なり回避を開始するボタンを備えるものとする。
【００６７】
ステップＳ９０２では、アノテート種別の重み設定の入力を受け付ける。具体的には、図１０Ｂの重なり回避設定画面の判定領域重み設定画面（タブ）にて、アノテートの種別を表示し、１０１１で重み付け（順位）を決定する。この順位によって重み付け値が決定されるものとする。この重み付け値は、オブジェクトに係るオブジェクト種別の優先度を示す値と言い換えることができ、このオブジェクト種別の優先度を示す値を用いて、オブジェクトの優先度が決定される。
【００６８】
なお、アノテートの種別は、現在表示している図面で用いられている種別を表示するようにしてもよいし、ＣＡＤアプリケーションが有する種別を表示してもよい。この判定領域重み設定画面（タブ）で順番の入力（入れ替え）を受け付ける。重み付けの例が１０１２（例１）と１０１３（例２）である。７０が重み付けとして一番高く、１０が重み付けとして一番低い。
【００６９】
ステップＳ９０３では、アノテートの回避方向優先度設定の入力を受け付ける。具体的には、図１０Ｃの重なり回避設定画面の移動方向優先度設定画面（タブ）にて、アノテートを移動させる際の優先度を設定する。１０２１〜１０２４で優先度順に数値を入力する。この移動方向優先度設定画面（タブ）で１〜４の優先度（重み付け値）の入力を受け付ける。重み付けの例が１０２５〜１０２８である。１が重み付けとして一番高く、４が重み付けとして一番低い。すなわち、１の方向を優先してアノテートを移動させる。１の方向に移動できない場合には、２の方向への移動を試みて、移動できない場合には、３，４と順に移動できるかを判定するものとする。この１〜４の優先度（重み付け値）は、移動する方向の優先度と言い換えることができる。この移動する方向の優先度を示す値を用いて、移動する方向を決定して移動する位置が決定される。
【００７０】
図１０Ａと図１０Ｂで設定して保存されたデータの例が、図１２の重み付けテーブル１２１０である。設定例ごとに保存されているデータイメージで、１００２と１０１２が１２１１、１００３と１０１３が１２１２に対応する。
【００７１】
図１０Ｃの例では、「１」の方向は「上方向」、「２」の方向は「右方向」、「３」の方向は「下方向」、「４」の方向は「左方向」である。
【００７２】
図１０Ａ〜図Ｃの設定は、オブジェクトの移動に用いる設定値を設定する処理の一例を示すものである。
【００７３】
ステップＳ９０４では、回避方向別の最大移動移動距離の入力を受け付ける。具体的には、図１０Ｃの重なり回避設定画面の移動方向優先度設定画面（タブ）にて、アノテートを移動させる際の最大移動距離を設定する。１０３１〜１０３４で、移動距離の数値を入力する。任意の数値を入力するようにしているが、プルダウンなどで一定の範囲の数値を入れさせるように制御してもよい。この移動方向優先度設定画面（タブ）での最大移動距離の例が１０３５〜１０３８である。
【００７４】
最大移動距離は、移動可能な距離を示す値とも言い換えることができる。すなわち、移動可能な距離を示す値を用いて、移動する位置が決定される。
【００７５】
ステップＳ９０５では、寸法値領域拡大幅の入力を受け付ける。具体的には、図１０Ｃの回避設定画面の移動方向優先度設定画面（タブ）にて、寸法値領域拡大幅の数値を設定する。１０４１で寸法値を囲う外形（矩形）を拡大する幅の入力を受け付ける。入力された値の例が１０４２である。
【００７６】
なお、本実施形では、拡大幅を設定するようにしたが、寸法値と他のアノテートの間隔を所定範囲確保するための値である間隔値（距離）を設定するようにしてもよい。この距離を満たすようにアノテートを移動させる。すなわち、オブジェクトで表示する値（寸法値）間の距離を得るための値とも言い換えることができる。よって、このオブジェクトで表示する値間の距離を得るための値を用いて、移動する位置が決定される。
【００７７】
次にステップＳ４０４の処理を、図５のフローチャート、図６、図７、図８の例を用いて説明する。図５は、アノテートの情報取得処理の詳細を示すフローチャートである。
【００７８】
ステップＳ５０１では、処理対象のビュー（図６の６０１）の最初の処理対象のアノテートを特定する情報（例えば、ターゲットとなるアノテートのハンドル）を取得する。アノテートを特定する情報はＣＡＤアプリケーションのＡＰＩを利用することで取得することができる。なお、本実施形態では、処理対象のアノテートを特定する情報を取得して、その後にＣＡＤアプリケーションのＡＰＩを用いて種別等を取得する構成としたが、アノテート情報を構造体として一括して取得する構成であってもよい。
【００７９】
図６の６０２を例にすると、アノテート１を取得する。図６はアノテート１の情報を取得する際の概念を示す図である。また、図７は、図６に対応する記憶領域を示す図である。
【００８０】
ステップＳ５０２では、取得したアノテートを特定する情報を用いて、処理対象のアノテートの種別を取得する。この種別の取得もＣＡＤアプリケーションのＡＰＩを用いて取得する。図６の６０２のアノテート１では「水平」の種別が取得される。この取得された種別を図７の重なり制御プログラムが管理するメモリ上の記憶領域（アノテート情報記憶領域）７０１に記憶する。種別を記憶した例が７０２である。不図示であるがアノテートの識別情報（アノテートＩＤ）なども合わせて管理されるものとする。
【００８１】
ステップＳ５０３では、取得したアノテートを特定する情報を用いて、アノテートのテキスト（値）の座標を取得する。この座標の取得もＣＡＤアプリケーションのＡＰＩを用いて取得する。具体的にはテキストを囲う矩形の左下と右上の座標値を取得し、記憶する。座標を記憶した例が７０３である。
【００８２】
ステップＳ５０４では、取得したアノテートを特定する情報を用いて、最初の処理対象の引き出し線を特定する情報（例えば、ターゲットとなる引き出し線のハンドル）を取得する。図６の６０４の引き出し線１が処理対象の引き出し線となる。引き出し線を特定する情報はＣＡＤアプリケーションのＡＰＩを利用することで取得することができる。アノテート１の場合、引き出し線が３つあるため、３つの引き出し線に対して処理が繰り返される。
【００８３】
なお、引き出し線についても、複数の引き出し線の情報をまとめた構造体で一括して取得する構成であってもよい。
【００８４】
ステップＳ５０５では、引き出し線を特定する情報を用いて、対象の引き出し線の始点と終点の座標を取得し、記憶する。記憶した例が７０４である。引き出し線の始点と終点の座標はＣＡＤアプリケーションのＡＰＩを利用することで取得することができる。
【００８５】
ステップＳ５０６では、最後の引き出し線か否かを判定する。最後の引き出し線の場合には、ステップＳ５０８へ処理を移す。最後の引き出し線でない場合（残りの引き出し線がある場合）には、ステップＳ５０７へ処理を移す。
【００８６】
ステップＳ５０７では、取得したアノテートを特定する情報を用いて、次の引き出し線の情報を取得し、ステップＳ５０５の処理を繰り返す。図６の６０５と６０６の引き出し線２と引き出し線３が処理対象の引き出し線となる。引き出し線の始点と終点の座標を繰り返し取得し、記憶した例が、図７の７０５と７０６である。７０６はすべての引き出し線の始点と終点の座標を記憶した場合の例である。
【００８７】
ステップＳ５０８では、最後のアノテートか否かを判定する。最後のアノテートの場合には、処理を終了する。最後のアノテートでない場合（他のアノテートがある場合）には、ステップＳ５０９に処理を移す。
【００８８】
ステップＳ５０９では、次のアノテートを特定する情報を取得し、各アノテートの種別、座標値を取得して、記憶する。すべてのアノテートの種別、座標値を記憶した例（アノテート情報記憶領域）が、図８の８０１である。また、８０１は、８０２の図面のアノテート（レコードＮｏ  １〜８）の情報が８０１に記憶されている例で、図５の処理の完了時の例である。
【００８９】
なお、各レコードは、ＣＡＤアプリケーションが管理しているアノテートの識別情報（アノテートＩＤ）と対応付いて管理されているものとする。
【００９０】
次にステップＳ４０５の処理を、図１３のフローチャート、図１４、図１５の例を用いて説明する。図１３は、アノテートの重み付け処理の詳細を示すフローチャートである。
【００９１】
ステップＳ１３０１では、対象のビューのモデルの表示領域を取得する。図１１の例を参照すると、「エリア５」の領域の座標が取得できる。座標は、ＣＡＤアプリケーションのＡＰＩを用いて取得することができる。本実施形態では、各ビューに対応する３次元モデルを保持する構成となっており、３次元モデルから高さ、幅、奥行きを特定することで現在表示している図面の領域（囲う枠）を特定することができる。なお、３次元モデルから特定せずに、処理対象のビューの２次元図面から直接領域を特定する構成であってもよい。
【００９２】
ステップＳ１３０２では、アノテートを移動させる際に用いる判定領域を設定する。具体的には、図１１を参照すると、ＣＡＤアプリケーションから「エリア５」の領域（モデルを囲う矩形領域）の四隅の座標が取得されるため、四隅から延長線を引いた９個の領域を座標領域として定義する。各領域の優先順位は、図１０Ａで設定した優先順位となる。設定例（１００２）では、「エリア５＞エリア４＞エリア６＞エリア８＞エリア２＞エリア１＞エリア３＞エリア７＞エリア９」。「エリア５」の優先度が一番高いのは、重なっているアノテートを移動させる際に、モデルに重ならないように移動することが望ましいためである。この優先順位は、後述のステップＳ１３０４で用いる。
【００９３】
以降は、各アノテートの優先度を決定するために、各要素の設定を行う処理である。ここで要素について説明する。図１２の１２００のように、第１要素は［領域の重み付け］。第２要素は［寸法種別の重み付け］、第３要素は［アノテートの値による重み付け］となる。また、第２要素の［寸法種別の重み付け］には、重み付けテーブル１２１０を用いて決定する。
【００９４】
ステップＳ１３０３では、記憶領域に記憶したアノテート（例えば、レコードＮｏ．１）の情報を取得する。
【００９５】
ステップＳ１３０４では、第１要素の設定を行う。具体的には、処理対象のアノテートの２点座標（寸法値の矩形領域の座標点１＆２）を用いて判定領域のどの領域に位置するかを決定する（図１１を参照）。そして、重み付けテーブル１２１０を用いて、処理対象のアノテートの位置する領域に対応する重み付けを決定する。「エリア５」の場合重み付け値「１」となる。
【００９６】
ステップＳ１３０４は、図面の位置を基に設定された領域を用いて、オブジェクトの位置する領域を決定する処理と言い換えることが可能である。
【００９７】
図１１は、各領域におけるアノテートの位置を示す図である。なお、図１１の１１０１の例のように、座標点が複数の領域にまたがっているケースにおいて、「エリア４」と「エリア５」にまたがる場合には優先度の高い「５」と設定する。１１０２の例のように座標点が複数の領域にまたがっているケースにおいて、領域の序列（優先度）に従って最も低い序列の領域を位置する領域（例えば、設定例１ではエリア９）として設定する。
【００９８】
なお、領域の設定は、これに限ることなく、重なっている領域面積がより広いほうを設定する領域として設定してもよい。
【００９９】
ステップＳ１３０５では、第２要素の設定を行う。具体的には、重み付けテーブル１２１０を用いて、処理対象のアノテートの種別に対応する重み付けを決定する。
【０１００】
ステップＳ１３０６では、第３要素の設定を行う。具体的には、アノテートの表示内容（寸法値等）に基づいて設定する。例えば、処理対象のアノテートが寸法だった場合、値に−１を乗算した値を設定する。また、処理対象のアノテートがテキスト（種別：注記）だった場合、そのテキスト文字数を設定する（例えば、図１４の１４２１の通り「注記：ＸＸＸＸＸＸＸ」は１０文字であるため１０が設定されている。）。
【０１０１】
なお、本実施形態においては、水平寸法や累進寸法は値の小さいアノテートが重い。直径寸法や角度寸法は値の大きいアノテートが重い。また、注記はテキスト文字数の多いアノテートが重く優先度が高いものとなる。
【０１０２】
また、第１の要素と第２の要素を用いて優先度を決定して移動することで一部は重なり回避することも可能であるが、第３の要素を用いて優先度を決定して重なり回避することでより容易に効率的に重なり回避することができる。
【０１０３】
すなわち、複数の属性による重み付けは、領域決定により決定した領域に係る情報と、オブジェクトの種別に係る情報に基づき決定される。そして、複数の属性による重み付けは、更にオブジェクトで表示する値に基づき決定される。
【０１０４】
ステップＳ１３０７では、最後のアノテートか否かを判定する。最後のアノテートの場合には、ステップＳ１３０９に処理を移す。最後のアノテートでない場合（他のアノテートがある場合）には、ステップＳ１３０８に処理を移す。
【０１０５】
ステップＳ１３０８では、記憶領域に記憶した次のアノテート（例えば、レコードＮｏ．２以降）の情報を取得して、重み付けの処理（要素設定）を繰り返す。
【０１０６】
すべてのアノテートの重み付けの処理（要素設定）が終了した際の例が、図１４の１４２０で、１４２２が重み付けした例である。なお、１２２０は重み付けによるソート前の例である。設定例２の重み付けによるソート前の例は、１５２０である。
【０１０７】
ステップＳ１３０９では、１４２２の重み付けの情報を用いてソートする。ソートした結果の例（ソート後の例）が図１４の１４３０である。本実施形態では、第１の要素、第２の要素、第３の要素の順にソートがされる。なお、設定例２のソートした結果の例は、図１５の１５３０である。
【０１０８】
ステップＳ１３０９は、複数の属性による重み付けに基づき、各オブジェクトの優先度を決定する処理と言い換えることが可能である。
【０１０９】
図１４は図１２の１２１１の設定例１に対応する重み付け結果である。また図１５は図１２の１２１２の設定例２に対応する重み付け結果である。
【０１１０】
次にステップＳ４０６の処理を、図１６のフローチャート、図１７、図１８、図１９の例を用いて説明する。図１６は、アノテートの重なり回避処理の詳細を示すフローチャートである。
【０１１１】
ステップＳ１６０１では、ソート後のアノテート情報記憶領域から２つ目のレコードの情報を取得する（処理レコードの情報取得）。１つ目のレコードは、一番優先度の高いレコード（アノテート）であるため移動しないことから２つ目のレコードから処理をスタートするものとする。また、２つ目のレコードが終了したら、３つ目のレコードを処理レコードとし、４つ目、５つ目と繰り返す。処理レコード以外のレコードが比較レコードの対象となる。
【０１１２】
ステップＳ１６０２では、比較対象となる１つ目のレコードの情報を取得する（比較レコードの情報取得）。
【０１１３】
ステップＳ１６０３では、上位の比較レコードである（優先度の高いアノテート）の矩形領域に、処理レコードの矩形領域（座標点１＆２）が重なるか否かを判定する。重なる場合には、処理レコードのアノテート（優先度の低いアノテート）を移動させるべく、ステップＳ１６１５へ処理を移す。重ならない場合には、ステップＳ１６０７へ処理を移す。
【０１１４】
なお、矩形領域に対して引き出し線が重なる場合については、ステップＳ１６１１で後述する。
【０１１５】
ステップＳ１６０３は、図面の内容を付加的に示すオブジェクトで表示する値の表示領域を用いて、他のオブジェクトの表示領域と重なるか否かを判定する第１の重なり判定処理の一例を示すステップである。
【０１１６】
矩形領域の重なりの詳細を、図１７を用いて説明する。図１７は、矩形領域同士の重なりを示す概念図である。
【０１１７】
図１７の１７００と１７１０の例は、矩形領域が重なる例を示している。具体的には、レコードの座標点ＸＹである「１」「２」と、異なるレコードの座標点ＸＹである「３」「４」の比較によって重なりを判定する。「Ｘ１≦Ｘ３≦Ｘ２、且つＹ１≦Ｙ３≦Ｙ２」もしくは「Ｘ１≦Ｘ４≦Ｘ２、且つＹ１≦Ｙ４≦Ｙ２」のいずれかを満たす場合は重なるものとなる。
【０１１８】
ステップＳ１６１５では、設定値（方向優先、寸法値領域拡大幅、最大移動距離の移動条件）を基に、移動できる地点があるかを判定する。ここでステップＳ１６１５の処理の具体的な例を示す。図１０Ｃの移動方向優先度設定例１を参照し、図１９の１９００のように、鉛直寸法「１００」を方向優先で優先度の高い「１」である上へ移動できるかを試みる。「１００」の寸法値を上に移動しても、寸法線が鉛直寸法「３０」にかかるため、上方向に移動できる地点はないと判定される。
【０１１９】
次に、鉛直寸法「１００」を方向優先で次に優先度の高い「２」である右へ移動できるかを試みる。寸法値領域拡大幅１４０２を参照し、その値、例えば「３ｍｍ」の幅を、寸法値の領域に加え、領域を拡大する（オフセットする）。
【０１２０】
そして、この拡大した領域を有する寸法値と寸法線（オブジェクト）を右に、他のアノテーションの領域と重なる位置を特定する。この位置があれば移動できる地点があると判定する。なお、元の位置からの距離が、最大移動距離１０３６を超える場合、移動できないと判定する。移動できないと判定された場合には、次の優先度の方向へ、寸法値領域拡大幅や最大移動距離を用いて移動を試みることを繰り返す。
【０１２１】
移動できる位置が特定できない場合には、ステップＳ１６１６へ処理を移す。移動できる位置が特定できない場合には、ステップＳ１６０４へ処理を移す。なお、寸法値領域拡大幅の適用は、移動前に行うように構成したが、移動するたびに寸法値領域拡大幅を適用して、重なるか否かを判定する手順であってもよい。また、まず、寸法値領域拡大幅は適用せず、アノテートを移動させて移動できる位置が特定できた場合に、寸法値領域拡大幅を適用して最終的な位置を決定する手順であってもよい。
【０１２２】
なお、寸法値領域拡大幅を最後に適用した結果、最大移動距離を超える場合には、移動できる位置が特定できない（位置がない）と判定するようにしてもよい。また、注記や半径を示すアノテーションは、方向優先度は用いず、同心円状の任意角度（４５度など）に移動を試みて、移動できる位置を特定する。  これにより、種別により見易い位置にアノテーションが移動され、よりユーザが所望する形での移動が可能となる。
【０１２３】
なお、ステップＳ１６１５は、設定された設定値に従って、移動する位置を決定する処理の一例を示すステップである。
【０１２４】
ステップＳ１６０４では、処理レコードのアノテートを特定された移動できる位置に移動させる。
【０１２５】
ステップＳ１６０４は、移動にかかる設定条件に従って特定された位置に、オブジェクトを移動するように制御する移動制御処理の一例を示すステップである。また、優先度の低いオブジェクトを決定された位置に移動するよう制御する移動制御処理の一例を示すステップとも言い換えることができる。
【０１２６】
ステップＳ１６０５では、移動後のアノテート（処理レコードのアノテート）の座標点をＣＡＤアプリケーションから取得する。
【０１２７】
ステップＳ１６０６では、移動後のアノテート（処理レコードのアノテート）の引き出し線の情報をＣＡＤアプリケーションから取得する。アノテートが移動されたため、ステップＳ１６０５とステップＳ１６０６で取得した情報を用いて、処理レコードに対応するアノテート情報記憶領域を更新する。そして、ステップＳ１６０２に処理を移し、移動させたアノテーション（処理レコードのアノテーション）と、次の比較レコードのアノテーションと重なるかを再度判定する。ステップＳ１６０２で比較レコードを取得して、Ｓ１６０３で矩形領域が重なるかを判定し、移動後のアノテーションが重ならない場合には、次の処理に移る。
【０１２８】
ステップＳ１６１６は、ステップＳ１６１５で設定値（方向優先、寸法値領域拡大幅、最大移動距離の移動条件）を基に、移動できる地点がない場合の処理である。ステップＳ１６１６では、対象のレコード（オブジェクト）の表示色を変更する（出力制御）。具体的には、ＣＡＤアプリケーションのＡＰＩを用いて、対象のアノテートの表示色を赤に変更する。これにより、移動できたオブジェクト（青）と、移動できる地点がなく移動できなかったオブジェクト（赤）を識別させる。また、重なりがなく移動を要しないオブジェクト（黒）との識別状態となる。すなわち、移動できたオブジェクトと移動できなかったオブジェクトと移動を要しないオブジェクトを識別可能に出力する処理（出力制御）の一例である。
【０１２９】
ステップＳ１６１７では、移動できなかったアノテートを他のレイヤー（移動できないアノテート用のレイヤー）に移行する。他のレイヤーがない場合には、新規に生成して移行させるものとする。
【０１３０】
本実施形態では、ステップＳ１６１６、ステップＳ１６１７の手順としたが、これに限ることはない。例えば、ＣＡＤアプリケーションによっては、レイヤー自体に色設定でき、そのレイヤーのアノテートは設定された色で表示される場合がある。その際には、ステップＳ１６１６でアノテートに色設定を行わず、レイヤーに移行することで実現できる。
【０１３１】
なお、レイヤーに移行することで、レイヤーの切り替えにより、移動できなかったアノテートを表示することができ、その後のユーザの手作業によるアノテートの移動を容易にすることが可能となる。
【０１３２】
更に、移動できなかったアノテートをユーザの任意の操作により、所定の位置に移動した場合には、アノテートの色を移動後の色（例えば、ステップＳ４０９と同様の青色）にする。
【０１３３】
ステップＳ１６０７では、比較レコードは処理レコードの直前のレコードかを判定する。なお、１回目の処理は、比較レコードは処理レコードの直前となるため、ステップＳ１６０９に処理を移し、引き出し線の重なり回避処理に移行する。すなわち処理レコードより優先度の高い比較レコードがあるか否かを判定する。優先度の高い比較レコードがある場合には、ステップＳ１６０８へ処理を移し、優先度の高い比較レコードがない場合にはステップＳ１６１０へ処理を移す。
【０１３４】
ステップＳ１６０８では、次の比較レコード（優先度の高いアノテート）を取得して、ステップＳ１６０３へ処理を移し、矩形領域の重なりを判定する。
【０１３５】
次に、すべてのレコードを対象に矩形領域と引き出し線との重なり判定を行うためステップＳ１６０９以降の処理を実行する。なお、いずれかのアノテートの引き出し線と重なっていた場合は回避対象として、処理レコードのアノテートを移動する処理となる。
【０１３６】
ステップＳ１６０９では、１つ目のレコード（比較レコード）を取得する。例えば、アノテート情報記憶領域１４３０のレコードＮｏ．１の情報を取得する。
【０１３７】
ステップＳ１６１０では、処理レコードと比較レコードが同じレコードか否かを判定する。同じレコードの場合には、ステップＳ１６１２へ処理を移す。同じレコードでない場合には、ステップＳ１６１１へ処理を移す。
【０１３８】
ステップＳ１６１１では、処理レコードの矩形領域と、比較レコードの引き出し線と重なるか否かを判定する。引き出し線と重なる場合には、ステップＳ１６１５へ処理を移す。引き出し線と重ならない場合には、ステップＳ１６１２へ処理を移す。
【０１３９】
ステップＳ１６１１は、図面の内容を付加的に示すオブジェクトで表示する値の表示領域を用いて、他のオブジェクトの引き出し線と重なるか否かを判定する第２の重なり判定処理の一例を示すステップである。
【０１４０】
矩形領域と引き出し線の重なりの詳細を図１８を用いて説明する。図１８は、矩形領域と引き出し線の重なりを示す概念図である。
【０１４１】
図１８の１８００と１８１０の例は、矩形領域と引き出し線が重なる例を示している。具体的には、レコードの座標点ＸＹである「１」「２」から一時的に算出する「３」「４」を用いた矩形の線分（「１」「４」、「４」「２」、「２」「３」、「３」「１」）と、異なるレコードの引き出し線ＸＹである線分ａｂ、ｃｄ、ｂｄとの比較によって交点の有無を判定し、交点がある場合は重なるものとなる。
【０１４２】
なお、ステップＳ１６０４のアノテートの移動の詳細については、後述の図１６にて説明する。
【０１４３】
ステップＳ１６１２では、最後の比較レコードか否かを判定する。最後の比較レコードの場合には、ステップＳ１６１４へ処理を移し、最後の比較レコードでない場合（他の比較レコードが存在する場合）には、ステップＳ１６１３へ処理を移す。
【０１４４】
ステップＳ１６１３では、次の比較レコードをアノテート情報記憶領域から取得し、引き出し線との重なりがあるかを判定する処理を繰り返す。
【０１４５】
ステップＳ１６１４では、未処理の処理レコードがあるか否かを判定する。未処理（重なり回避判定を行っていないアノテート）の処理レコードがある場合にはステップＳ１６０１へ処理を移し、次のレコードを取得して、重なり回避処理を繰り返す。未処理の処理レコードがない場合、すなわち最後の処理レコードである場合には、重なり回避処理を終了する。なお、ステップＳ１６０４により、アノテート情報記憶領域が更新された場合には、その移動した処理レコードが優先度の高い比較レコードと重なっていないかを再度判定してもよい。これは、例えば、後から寸法値領域拡大幅を適用する場合、矩形領域が重なる可能性があるためである。
【０１４６】
なお、図１６では、処理レコードと比較レコードを用いて、１つずつ比較をして図面上でアノテートを移動させるようにしたが、この処理手順に限定されるものではない。例えば、先に重なりがあるアノテートを特定しておき、重なりのあるアノテート同士の比較により移動させる。また、移動させたのちに、再度、先に重なりがあるアノテートを特定して、重なりのあるアノテート同士の比較により移動させることを繰り返してもよい。
【０１４７】
なお、ステップＳ１６０３とステップ１６１１の処理をまとめて、オブジェクトの位置に基づき、オブジェクトの重なりを特定する処理と言い換えることが可能である。
【０１４８】
ステップＳ１６０４の処理は、特定された重なりのあるオブジェクトであって、オブジェクトに係る複数の属性に基づき決定された優先度の低いオブジェクトを移動するよう制御する処理と言い換えることが可能である。また、ステップＳ１３０９により決定した優先度に従って、優先度の低いオブジェクトを移動するよう制御する処理と言い換えることが可能である。
【０１４９】
ステップＳ１６０４におけるアノテートの移動について、図１９を用いて説明する。図１６はアノテートの移動処理の概略を示す図である。
【０１５０】
なお、図１６は重み付け設定例１と、図１０Ｃで設定された方向優先（上→右→下→左）と、寸法値領域拡大幅（３ｍｍ）を用いてアノテートを移動した際の例である。
【０１５１】
１６００では、鉛直寸法の寸法値が「３０」「１００」のアノテートが重なっている状態であり、「１００」の引き出し線と「３０」の矩形領域が重なっている状態である。図１４の１４３０を参照すると、「３０」はレコードＮｏ．１で、「１００」はレコードＮｏ．２であり、優先度の低い「１００」をモデルから離れるように移動される。
【０１５２】
より詳細には、まず、方向優先の設定から、「１００」を上方向に移動することを試みるが、「１００」を上方向に移動しても、引き出し線が「３０」の矩形領域に重なるため、方向優先の次の方向である右方向に移動することを試みる。右に移動することで引き出し線も右に移動されるため、「３０」の矩形領域に重ならない位置が決定できる。その決定された位置で、「１００」の矩形領域を寸法値領域拡大幅（３ｍｍ）で拡大する。拡大した結果「３０」の矩形領域と重ならない場合には、その位置が移動位置となる。拡大した結果「３０」の矩形領域と重なる場合には、「３０」の矩形領域と重ならない位置まで移動した位置が実際の移動位置となる。この時、元の位置から、移動位置の距離が最大移動距離内とする。これは、アノテートを移動しすぎることで図面の閲覧性が低下するためである。
【０１５３】
なお、「３０」の矩形領域に対しても寸法値領域拡大幅（３ｍｍ）で拡大して重なりを判定するようにしてもよい。
【０１５４】
なお、本実施形態では、右（水平方向）に「１００」の矩形領域が、「３０」の引き出し線の座標の外にくるまで所定値分ずらす処理を繰り返すが、「３０」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。１９０２の矢印は移動方向を示すものである。移動された結果が１９０１である。
【０１５５】
１９３０では、半径寸法の寸法値が「φ３０」と注記の値「注記：ＸＸＸＸＸＸＸ」のアノテートが重なっている状態であり、「φ３０」の矩形領域と「注記：ＸＸＸＸＸＸＸ」の矩形領域が重なっている状態である。図１４の１４３０を参照すると、「φ３０」はレコードＮｏ．４で、「注記：ＸＸＸＸＸＸＸ」はレコードＮｏ．７であり、優先度の低い「注記：ＸＸＸＸＸＸＸ」をモデルから離れるように移動する。移動する距離は、「注記：ＸＸＸＸＸＸＸ」の矩形領域が、「φ３０」の矩形領域の座標の外にくるまでの距離である。また、「注記：ＸＸＸＸＸＸＸ」の矩形領域の中心として、同心円上の所定の角度（例えば、優先度の低い判定領域側である左上４５度）の方向に所定値分ずらす処理を繰り返す。なお、「φ３０」の矩形領域の座標の外になる距離を先に算出して、その距離分・所定の角度方向にずらすようにしてもよい。１９３２の矢印は移動方向を示すものである。
【０１５６】
１９１０では、水平寸法の寸法値が「７８」「２５０」のアノテートが重なっている状態であり、「７８」の矩形領域と「２５０」の矩形領域が重なっている状態である。図１４の１４３０を参照すると、「７８」はレコードＮｏ．５で、「２５０」はレコードＮｏ．６であり、優先度の低い「２５０」をモデルから離れるように移動する。移動は「２５０」のある領域「エリア００８」内とする。そして、上方向に移動させた場合には、重なりを回避することができないため、次の右方向に移動させることを試みる。右に移動させた場合には、「７８」の引き出し線と重ならない位置まで動かす必要があり最大移動距離を超えるため、移動することができない。次の下方向に移動させることを試みて、移動できるため「２５０」は下方向に移動して重ならない位置を決定する。その決定された位置で、「２５０」の矩形領域を寸法値領域拡大幅（３ｍｍ）で拡大し、「７８」のアノテートとの一定の距離を保つ。なお、本実施形態では、下に「２５０」の矩形領域が、「７８」の引き出し線の座標の外にくるまで鉛直方向に所定値分ずらす処理を繰り返す。「７８」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。１９１２の矢印は移動方向を示すものである。なお、本実施形態では、同じ領域内で移動させるものとしたが、隣の領域で優先度の低い領域であれば、その領域にアノテートを移動させてもよい。
【０１５７】
１９２０では、鉛直寸法の寸法値が「２０」と水平寸法の寸法値が「２５０」のアノテートが重なっている状態であり、「２５０」の引き出し線と「２０」の矩形領域が重なっている状態である。図１４の１４３０を参照すると、「２５０」はレコードＮｏ．６で、「２０」はレコードＮｏ．８であり、優先度の低い「２０」をモデルから離れるように移動する。優先度の高い上方向への移動では引き出し線との回避ができないため、次に優先度の高い右方向に移動を試みる。移動できるため「２０」は右方向に移動して重ならない位置を決定する。その決定された位置で、「２０」の矩形領域を寸法値領域拡大幅（３ｍｍ）で拡大し、位置を調整し、「２５０」のアノテート（線分）と一定の距離を保つ。なお、本実施形態では、右方向に「２０」の矩形領域が、「２５０」の引き出し線の座標の外にくるまで所定値分ずらす処理を繰り返す。なお、「２５０」の引き出し線の座標の外になる距離を先に算出して、その距離分ずらすようにしてもよい。１９２２の矢印は移動方向を示すものである。
【０１５８】
上述した移動は一例であり、この移動処理に限定されるものではないことは言うまでもない。また、移動には、ＣＡＤアプリケーションのＡＰＩを用いて移動制御させ、図面上でアノテートの位置を変える処理を行うものとする。モデルの図面にアノテーションが重ならないようにするため、モデルの枠（図１１の領域「エリア００５」）の外向きに移動するように制御することが望ましいがこの限りでない。
【０１５９】
次に、図２０を用いて、重なり回避処理の他の例を説明する。図２０は方向優先で、一番高い方向に動かせた場合の移動例を示すものである。なお、最大移動距離内で、他の領域にもアノテートを動かせる場合の例とする。鉛直寸法「２０」の矩形領域と水平寸法の引き出し線が重なっており、鉛直寸法「２０」を移動させる例で説明する。
【０１６０】
２０００は、右方向が一番優先度が高い場合の例で、移動前の状態である。２００１の矢印は移動方向（右）を示すものである。鉛直寸法「２０」の矩形領域と水平寸法の引き出し線が重なっているため、２００２のように、重ならない移動できる位置にアノテートを移動する。
【０１６１】
２０１０は、左方向が一番優先度が高い場合の例で、移動前の状態である。２０１１の矢印は移動方向（左）を示すものである。鉛直寸法「２０」の矩形領域と水平寸法の引き出し線が重なっているため、２０１２のように、重ならない移動できる位置にアノテートを移動する。すなわち、この例は、エリア００５からエリア００８へ鉛直寸法「２０」が移動する。
【０１６２】
２０２０は、上方向が一番優先度が高い場合の例で、移動前の状態である。２０２１の矢印は移動方向（上）を示すものである。鉛直寸法「２０」の矩形領域と水平寸法の引き出し線が重なっているため、２０２２のように、重ならない移動できる位置にアノテートを移動する。
【０１６３】
２０３０は、下方向が一番優先度が高い場合の例で、移動前の状態である。２０３１の矢印は移動方向（下）を示すものである。鉛直寸法「２０」の矩形領域と水平寸法の引き出し線が重なっているため、２０３２のように、重ならない移動できる位置にアノテートを移動する。
【０１６４】
次に、図２１を用いて、重なり回避処理の他の例を説明する。図２１は寸法値領域拡大幅を適用した場合の移動例を示すものである。水平寸法「７８」の矩形領域と水平寸法「２５０」の矩形領域が重なっており、水平寸法「２５０」を移動させる例で説明する。
【０１６５】
図２１は、寸法値領域拡大幅：０ｍｍの例と、寸法値領域拡大幅：３ｍｍの例である。
【０１６６】
２１００は、「７８」と「２５０」の矩形が重なっており、寸法値領域拡大幅：０ｍｍ（矩形を拡大しない）の場合である。２１０１は、下方向に水平寸法「２５０」を移動した例である。寸法値領域拡大幅：０ｍｍであるため、「７８」「２５０」は近い状態で表示されている。
【０１６７】
２１０２は、「７８」と「２５０」の矩形が重なっており、寸法値領域拡大幅：３ｍｍ（矩形を拡大する）の場合である。また、２１０２は、「７８」と「２５０」の外接する矩形を３ｍｍで拡大した状態である。２１０３は、下方向に水平寸法「２５０」を移動した例である。寸法値領域拡大幅：３ｍｍであるため、「７８」「２５０」は一定距離離れた状態で表示されている。これにより、ユーザが所望する形（視認しやすい状態）で重なり回避時の表示を行うことができる。
【０１６８】
以上説明したように、本実施形態によれば、設定に応じて、図面の内容を付加的に示すオブジェクトの重なりを所望する方法で回避することができる。また、容易に回避することができるため、重なりのチェックを効率化することができる。移動できなかったオブジェクト、移動したオブジェクトを識別表示させるため、より効率化につながる。
【０１６９】
オブジェクトの表示する値の表示領域を用いて重なり判定することで、異なる種別のオブジェクトであっても容易に重なり回避を行うことが可能である。
【０１７０】
なお、本実施形態では、同一種別のオブジェクトの重なりを回避することに加え、異なる種別のオブジェクト同士でも重なりを容易に回避することができる。
【０１７１】
また、オブジェクトの位置する領域（判定領域）と、オブジェクトの種別又は／及びオブジェクトの内容（値）により、優先度を決定して移動することができ、ユーザが所望する箇所に移動させることができる。
【０１７２】
更に、モデルの枠を特定して、その枠の外側に重なるオブジェクトを移動させることでより見栄えの良い図面を作成することができる。
【０１７３】
ＣＡＤの世界においては、まず３次元モデルを作成する。そして、特に日本の習慣では３次元モデルをそのまま用いずに、３次元モデルから２次元図面データを作成する。３次元モデルから２次元図面データを作成する機能は各ＣＡＤアプリケーションには備わっているのが通常であり、３次元モデルと作成された２次元図面データは対応付いて管理される。２次元図面データを作成したのち、２次元図面データを用いてレビュー（関係者による詳細検討）がなされるが、レビューにより仕様変更がなされることがある。そのため仕様変更内容に基づいて、オペレーターが３次元モデル上でモデルの形状等の仕様を変更する。この場合、３次元モデルの形を変更することで先に作成された２次元図面データにも自動的に反映されるが、ＣＡＤアプリケーションは形状等をアップデートするだけであり、付加されたアノテートの重なりまでチェックすることがなく、アノテートが重なるといった事態が発生する。このような形態より効果を得ることが可能な仕組みである。
【０１７４】
本実施形態は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１７５】
なお、本実施形態は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【０１７６】
したがって、本実施形態の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１７７】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１７８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１７９】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本実施形態のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１８０】
また、本実施形態のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１８１】
また、本実施形態のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１８２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１８３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０１８４】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１８５】
１００  ＣＡＤシステム
１０１  情報処理装置
１０２  サーバ
１０３  ネットワーク
２０１  ＣＰＵ
３００  ＣＡＤアプリケーション
３１０  重なり制御プログラム
【図１】
2019106151.tif 000003
【図２】
2019106151.tif 000004
【図３】
2019106151.tif 000005
【図４】
2019106151.tif 000006
【図５】
2019106151.tif 000007
【図６】
2019106151.tif 000008
【図７】
2019106151.tif 000009
【図８】
2019106151.tif 000010
【図９】
2019106151.tif 000011
【図１０Ａ】
2019106151.tif 000012
【図１０Ｂ】
2019106151.tif 000013
【図１０Ｃ】
2019106151.tif 000014
【図１１】
2019106151.tif 000015
【図１２】
2019106151.tif 000016
【図１３】
2019106151.tif 000017
【図１４】
2019106151.tif 000018
【図１５】
2019106151.tif 000019
【図１６】
2019106151.tif 000020
【図１７】
2019106151.tif 000021
【図１８】
2019106151.tif 000022
【図１９】
2019106151.tif 000023
【図２０】
2019106151.tif 000024
【図２１】
2019106151.tif 000025