「Vla-selectbypolygon」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成:「{{AutoLISP}} ; 構文 : (vla-selectbypolygon ''vla-object'' ''mode'' ''PointsList'' [ ''FilterType'' ''FilterData'' ]) ; 機能 : フェンス内の図形を選択し...」)
 
 
24行目: 24行目:




=== 選択モード ===
==== 選択モード ====
各選択モードの内容。
各選択モードの内容。
* Fence(フェンス) : 選択フェンスと交差するすべてのオブジェクトが選択される。フェンスは Points 1 内の座標によって定義される。
* Fence(フェンス) : 選択フェンスと交差するすべてのオブジェクトが選択される。フェンスは Points 1 内の座標によって定義される。

2015年10月17日 (土) 20:16時点における最新版

構文
(vla-selectbypolygon vla-object mode PointsList [ FilterType FilterData ])


機能
フェンス内の図形を選択し、それらを選択セットに追加する。


引数
選択セットの場合
  • vla-object … SelectionSet の VLA オブジェクト
  • Mode … AcSelect 列挙型
  • acSelectionSetFence : フェンス
  • acSelectionSetWindowPolygon : ポリゴン窓
  • acSelectionSetCrossingPolygon : ポリゴン交差
  • PointsList … 選択フェンスを指定する 3D WCS 座標の点リスト。
  • FilterType … 使用するフィルタのタイプを指定する DXF グループ コード。
  • FilterData … フィルタをオンにする値。


戻り値
なし


選択モード

各選択モードの内容。

  • Fence(フェンス) : 選択フェンスと交差するすべてのオブジェクトが選択される。フェンスは Points 1 内の座標によって定義される。
  • WindowPolygon(ポリゴン窓) : PointsList によって定義されたポリゴン内のオブジェクトを選択する。
  • CrossingPolygon(ポリゴン交差) : ポリゴンによって定義される領域内のオブジェクト、およびその領域と交差するオブジェクトを選択する。ポリゴンの座標を定義するには Points 1 を使用する。CAD はポリゴンの最後のベクトルを閉じる。ポリゴン定義自身が交差してはならない。


  • 注意 : このメソッドは、フィルタ機能をサポートしている。CAD の既定のオブジェクト選択用プロンプト文字列が、自動的に使用される。

選択モードのオプションについての詳細は、vla-selectvla-selectbypolygon、および vla-selectatpoint メソッドを参照。

  • Windows 以外の環境とか、VL関数使えない互換CAD では、ssgetentsel とか VLA 関数ではない図形選択関数を使用するしかない。


サンプル
(vl-load-com)
(defun c:Example_SelectByPolygon()
    ;; ポリゴン選択して表示するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    (setq ssetObj (vla-Add (vla-get-SelectionSets doc) "TEST_SSET2"))
     
    ;; 選択セットとフェンスを定義
    (setq mode acSelectionSetFence)
    (setq pointsArray (vlax-make-safearray vlax-vbDouble '(0 . 11)))
    (vlax-safearray-fill 
        pointsArray 
        '(28.2 17.2 0   -5 13 0
          -3.3 -3.6 0   28 -3 0 )
    )

    ;; 選択
    (vla-SelectByPolygon ssetObj mode pointsArray)

    (alert (strcat "選択図形 : " (itoa (vla-get-Count ssetObj))))
    (vla-Clear ssetObj)

    ;; 円を作図して追加
    (setq gpCode (vlax-make-safearray vlax-vbInteger '(0 . 1)))
    (vlax-safearray-put-element gpCode 0 0)
    (vlax-safearray-put-element gpCode 1 10)

    (setq pnt (vlax-3d-point 3 6 0))

    (setq dataValue (vlax-make-safearray vlax-vbVariant '(0 . 1)))
    (vlax-safearray-put-element dataValue 0 "Circle")
    (vlax-safearray-put-element dataValue 1 pnt)
    
    (vla-SelectByPolygon ssetObj mode pointsArray gpCode dataValue)
    (alert (strcat "選択図形 : " (itoa (vla-get-Count ssetObj))))

    (vla-Delete ssetObj)
)

関連事項