|
前節で1要素選択について述べましたので、ここでは、枠内範囲要素選択について記述します。枠内範囲要素選択、と言っても、指定した枠内に完全に囲まれている要素を検索する事と、枠に引っ掛かっている要素も検索する事とでは、やり方が違ってきます。ここでは、前者について記述します。
枠に掛かる要素も検索したい場合には、クリッピングとほぼ同じ処理を行う必要があります(切断座標を算出する必要はありませんが)。仮に、線分の場合、開始点・終了点のどちらかが枠内に入っていれば検索OKとする、とするにしても、両方が枠外にあっても線分が枠内を横切っていれば、検索OKとせねばなりませんので、開始点・終了点のどちらか、という手法だけでは不十分となります。
また、ここでは作成しませんが(選択する最初にクリアしています)、CADによっては、SHIFTキーやCTRLキーなどを押しながら要素を選択すると、以前に選択したものに追加したり、選択解除したり、するものがありますし、[追加]のようなボタンを押させて、選択要素を追加するものもあります。最初に変数をクリアしなければ追加となりますが、既に入っている場合には二重で入らないように注意します。また、要素の順番が重要な場合には、間に差し込む処理や並び替え処理が必要になってきます。
次に、選択した要素を、どのように保持するか? ですが、ここでは、要素登録番号だけを保存する変数を用意し、要素番号を入れるだけにしています。が、用途によっては、要素データをそのまま別の変数にコピーしてしまうパターンもあります。
@線分
|
開始点・終了点両方の座標が枠内に入っている場合。
どちらかが外に出ている場合には、枠内に完全に囲まれていない状態になりますので、検索対象外とします。 |
A円
|
円の4つの1/4点(0°点、90°点、180°点、270°点)の座標が枠内に入っている場合。
いずれかが外に出ている場合には、枠内に完全に囲まれていない状態になりますので、検索対象外とします。 |
B円弧
|
円弧の開始角度点・終了角度点両方の座標、及び、その間にある1/4点(0°点、90°点、180°点、270°点)の座標が枠内に入っている場合。
いずれかが外に出ている場合には、枠内に完全に囲まれていない状態になりますので、検索対象外とします。 |
C点
| 点の配置点の座標が枠内に入っている場合。 |
D文字
| 文字の左下点、右下点、左上点、右上点、の座標が枠内に入っている場合。 |
今回の追加
・[枠内要素選択]のボタンを付けて、COM_PICK2手続きを追加し、Fmode=60 として実行します。Fmodeが100未満の場合、オフセット値を考慮しないようにしており、1要素選択を50としましたので、取りあえず、60 という数値にしています。
・枠内要素検索を行う関数 EntSelect2() を追加(FmMain)
検索した要素の要素番号を動的配列変数 Sel (Sel_N:数)に入れる事にします。
・枠内要素検索を行ったら、その要素番号一覧を表示する |
それではここまでのプログラムです。
【サンプルプログラムのソース】
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|