Vla-removeitems

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


機能
指定されたグループに 1 つ以上の図形を追加する。


引数
  • vla-object … Group、SelectionSet の VLAオブジェクト
  • Objects … 除去されるオブジェクトの配列。


戻り値
nil


MEMO
  • グループや選択セットから除去された項目は図面内に残るが、グループや選択セットとの関連はなくなる。これは Clear メソッドによく似ていますが、RemoveItems メソッドでは選択セットのオブジェクトすべてを除去するのではなく、除去する項目をユーザが指定することができる。
  • このメソッドは、Delete メソッドや Erase メソッドとは異なり、図面からオブジェクトを除去しない。


サンプル
(vl-load-com)
(defun c:Example_RemoveItems()
    ;; いくつかのオブジェクトを作成して、選択セットにオブジェクトを追加してから
    ;; 2 つのオブジェクトの選択セットから除外するサンプル。

    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    (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 acadObj)
    
    ;; モデル領域のコレクションを反復処理。
    ;; 選択セットに追加するオブジェクトの配列に見つかったオブジェクトを収集する。
    (setq ssobjs (vlax-make-safearray vlax-vbObject (cons 0 (- (vla-get-Count modelSpace) 1))))

    (setq cnt 0)
    (vlax-for each-item modelSpace
        (vlax-safearray-put-element ssobjs cnt each-item)
        (setq cnt (1+ cnt))
    )
    
    ;; 選択セットに追加
    (vla-AddItems ssetObj ssobjs)
  
    ;; 選択セットのオブジェクトを一覧表示
    (setq I 0)
    (if (= (vla-get-Count ssetObj) 0)
        (alert "The selection set is empty")
        (while (>= (1- (vla-get-Count ssetObj)) I)
            (alert (strcat "選択セットに含まれる図形 : " (vla-get-ObjectName (vla-Item ssetObj I))))

            (setq I (1+ I))
        )
    )
    
    ;; 2 つのオブジェクトの選択セットから削除。
    (setq removeObjects (vlax-make-safearray vlax-vbObject '(0 . 1)))
    (vlax-safearray-put-element removeObjects 0 ellObj)
    (vlax-safearray-put-element removeObjects 1 circObj)

    (vla-RemoveItems ssetObj removeObjects)
    (alert "楕円と円を選択セットから除外")

    ;; 選択セットの図形を一覧表示
    (setq I 0)
    (if (= (vla-get-Count ssetObj) 0)
        (alert "The selection set is empty")
        (while (>= (1- (vla-get-Count ssetObj)) I)
            (alert (strcat "選択セットに含まれる図形 : " (vla-get-ObjectName (vla-Item ssetObj I))))

            (setq I (1+ I))
        )
    )

    (vla-Delete ssetObj)
)

関連事項