Vla-clear

提供:GizmoLabs - だいたい CAD LISP なサイト
2024年5月3日 (金) 15:51時点におけるGizmon (トーク | 投稿記録)による版
構文
(vla-clear vla-object)


機能
指定された選択セットのすべての項目をクリアする。


引数
  • vla-object … SelectionSet の VLA オブジェクト


戻り値
nil


memo

選択セットからクリアされた項目は図面内に残るが、選択セットとの関連はなくなる。
選択セットの項目のサブセットをクリアするには、RemoveItems メソッドを使用する。
このメソッドは、Delete メソッドとは異なり、図面からオブジェクトを除去しない。


サンプル
(vl-load-com)
(defun c:Example_Clear()
    ;; いくつかのオブジェクトで選択セットを作成してからクリアするサンプル。
    (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq modelSpace (vla-get-ModelSpace doc))
  
    ;; 新規選択セットの作成
    (setq ssetObj (vla-Add (vla-get-SelectionSets doc) "TEST_SELECTIONSET"))
    
    ;; 放射線を作成
    (setq basePoint (vlax-3d-point 3 3 0)
          secondPoint (vlax-3d-point 1 3 0))
    (setq rayObj (vla-AddRay modelSpace basePoint SecondPoint))
    
    ;; ポリラインを作成
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 5)))
    (vlax-safearray-fill points '(3 7 9 2 3 5))

    (setq plineObj (vla-AddLightWeightPolyline modelSpace points))
    (vla-put-Closed plineObj :vlax-true)

    ;; 線分を作成
    (setq startPoint (vlax-3d-point 0 0 0)
          endPoint (vlax-3d-point 2 2 0))
    (setq lineObj (vla-AddLine modelSpace startPoint endPoint))
    
    ;; 円を作成
    (setq centerPt (vlax-3d-point 20 30 0)
          radius 3)
    (setq circObj (vla-AddCircle modelSpace centerPt radius))

    ;; 楕円を作成
    (setq center (vlax-3d-point 5 5 0)
          majAxis (vlax-3d-point 10 20 0)
          radRatio 0.3)
    (setq ellObj (vla-AddEllipse modelSpace center majAxis radRatio))

    (vla-ZoomAll (vlax-get-acad-object))
    
    ;; モデル空間コレクションを反復して選択セットに追加
    (setq ssobjs (vlax-make-safearray vlax-vbObject (cons 0 (- (vla-get-Count modelSpace) 1))))
    (setq I 0)
    (while (>= (- (vla-get-Count modelSpace) 1) I)
        (vlax-safearray-put-element ssobjs I (vla-Item modelSpace I))
        (setq I (1+ I))
    )

    ;; 選択セットにオブジェクトの配列を追加。
    (vla-AddItems ssetObj ssobjs)

    ;; 選択セット内のすべてのオブジェクトを表示
    (if (> (vla-get-Count ssetObj) 0)
        (progn
	    (setq msg (strcat "選択セットに含まれている " (itoa (vla-get-Count ssetObj)) " のオブジェクトの型 : "))
            (vlax-for obj ssetObj
                (setq msg (strcat msg "\n" (vla-get-ObjectName obj)))
            )
            (alert msg)	  
        )
    )

    ;; 選択セットをクリア
    (vla-Clear ssetObj)
    (vla-Regen doc acActiveViewport)

    ;; List all the objects in the selection set
    (if (= (vla-get-Count ssetObj) 0)
        (alert "The selection set is empty.")
    )
)

関連事項