Vla-select

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年10月8日 (木) 23:09時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
選択セットの場合 : (vla-select vla-object Mode Point1 Point2 [ FilterType FilterData] )
表の場合 : (vla-select vla-object wpt wvwVec wvwxvec wxaper allowOutside resultRowIndex resultColumnIndex)


機能
オブジェクトを選択して選択セットに配置。または表のセルを選択。


引数
選択セットの場合
  • vla-object … 選択セットの VLA オブジェクト
  • Mode : AcSelect 列挙型
  • acSelectionSetWindow … Point1 と Point2 の矩形領域内を窓選択。
  • acSelectionSetCrossing … Point1 と Point2 の矩形領域内を交差選択。
  • acSelectionSetPrevious … 最新の選択セットが選択される。ペーパー空間とモデル空間とを切り替えて選択セットを使用する場合、このモードは無視される。
  • acSelectionSetLast … 現在表示されている画面で最後に作成したオブジェクトが選択される。
  • acSelectionSetAll … 全てのオブジェクトが選択される。
  • Point1 : Point1 を指定する 3D WCS 座標または座標の配列。
  • Point2 : バリアント型(3 要素の倍精度浮動小数点数型配列)
  • FilterType : 使用するフィルタのタイプを指定する DXF グループ コード。
  • FilterData : フィルタをオンにする値。


表の場合
  • object : Table のVLAオブジェクト。
  • wpt : 入力クリック点を指定する WCS の 3D 点。
  • wvwVec : ヒット テストの視線方向を指定する WCS の 3D ベクトル。
  • wvwxvec : ヒット テストの視線方位を指定する WCS の 3D ベクトル。
  • wxaper : ヒット テストのヒット点を中心とするターゲット ボックスの幅(将来使用するために予約)。倍精度浮動小数点数型
  • wyaper : ヒット テストのヒット点を中心とするターゲット ボックスの高さ(将来使用するために予約)。倍精度浮動小数点数型
  • allowOutside : ブール型
  • :vlax-true: 表の外側の点をクリックすると、セルが選択される。
  • :vlax-false: 表の外側の点をクリックしても、セルは選択されない。
  • resultRowIndex : 選択されたセルの行インデックス長整数型。
  • resultColumnIndex : 選択されたセルの列インデックス長整数型。


戻り値
なし


SelectionSet での注意点

このメソッドは、フィルタ機能をサポートしている。 選択モードのオプションについての詳細は、SelectByPolygon、SelectAtPoint、および SelectOnScreen メソッドを参照。


Table での注意点

この関数は、点、視線方向、向きを指定して表のセルを選択する。 選択されたセルの行インデックスおよび列インデックスは、resultRowIndex および resultColumnIndex で返される。


サンプル
(vl-load-com)
(defun c:Example_Select()
    ;; 交差選択と円をフィルタでの選択セットのサンプル
    (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))

    ;; 選択セットを作成
    (setq ssetObj (vla-Add (vla-get-SelectionSets doc) "SSET"))
    
    ;; (-3.6,0、-3.3)(28,17,0)との交差内にあるすべてのオブジェクトを選択セットに追加。
    (setq mode acSelectionSetCrossing
          corner1 (vlax-3d-point 28 17 0)
          corner2 (vlax-3d-point -3.3 -3.6 0))

    (vla-Select ssetObj mode corner1 corner2)
    (alert (strcat "図形選択: " (itoa (vla-get-Count ssetObj))))
    (vla-Clear ssetObj)
  
    ;; 現在の図面からフィルタリングすることにより(28,17,0)と(-3.3、-3.6,0)の
    ;; 交差内にある選択セットにすべての円を追加
    (setq gpCode (vlax-make-safearray vlax-vbInteger '(0 . 0)))
    (vlax-safearray-put-element gpCode 0 0)
    (setq dataValue (vlax-make-safearray vlax-vbVariant '(0 . 0)))
    (vlax-safearray-put-element dataValue 0 "Circle")
    
    (vla-Select ssetObj mode corner1 corner2 gpCode dataValue)
    (alert (strcat "図形選択 : " (itoa (vla-get-Count ssetObj))))

    (vla-Delete ssetObj)
)


関連事項