Vla-get-key

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年2月22日 (月) 00:01時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-key ''vla-object'' ) ; 機能 : CopyObjects オペレーション内のソース オブジェクトのオブジェクト ID。 ;...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-get-key vla-object )


機能
CopyObjects オペレーション内のソース オブジェクトのオブジェクト ID。


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


戻り値
元のオブジェクトのオブジェクト ID


  • MEMO:新しく作成されたクローン オブジェクトのオブジェクト ID は、Value プロパティを使用して取得する。


サンプル
(vl-load-com)
(defun c:Example_Key()
    ;; 2 つの円オブジェクトを作成し、CopyObjects メソッドを使用して、それらをコピーする。
    ;; キー プロパティを使用してソース オブジェクトのオブジェクト Id を返すサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; 円の定義
    (setq centerPoint (vlax-3d-point 0 0 0) 
          radius1 5
          radius2 7
          radius1Copy 1
          radius2Copy 2)
    
    ;; 円を2つ作成
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq circleObj1 (vla-AddCircle modelSpace centerPoint radius1))
    (setq circleObj2 (vla-AddCircle modelSpace centerPoint radius2))
    (vla-ZoomAll acadObj)
    
    ;; コピー
    (setq objCollection (vlax-make-safearray vlax-vbObject '(0 . 1)))
    (vlax-safearray-put-element objCollection 0 circleObj1)
    (vlax-safearray-put-element objCollection 1 circleObj2)
    
    ;; オブジェクトをコピーし、新しいオブジェクト (コピー) のコレクションを返す
    (setq retObjects (vlax-variant-value (vla-CopyObjects doc objCollection nil 'IDPairs)))
    
    ;; 新しくオブジェクトを作成し、コピーに新しいプロパティを適用
    (setq circleObj1Copy (vlax-safearray-get-element retObjects 0))
    (setq circleObj2Copy (vlax-safearray-get-element retObjects 1))
    
    (vla-put-Radius circleObj1Copy radius1Copy)
    (vla-put-Radius circleObj2Copy radius2Copy)
        
    (vla-ZoomAll acadObj)
    (vla-Regen doc acAllViewports)
    
    ;; コピーのために使用されるソース オブジェクトのオブジェクト Id を表示。
    (alert (strcat "最初のソースオブジェクト ID は: " (itoa (vla-get-Key (vlax-safearray-get-element IDPairs 0)))
                   "\n2つめのソースオブジェクト ID は : " (itoa (vla-get-Key (vlax-safearray-get-element IDPairs 1)))))

    ;; キーは、ユーザーが手動でソース オブジェクトを選択した場合に便利で、
    ;; ソース オブジェクトを参照する objectIDtoObject を使用できる。
    ;;
    ;; 取得した ID からソース オブジェクトを削除。
    (setq SourceObject (vla-ObjectIdToObject doc (vla-get-Key (vlax-safearray-get-element IDPairs 0))))
    (vla-Delete SourceObject)
    (setq SourceObject (vla-ObjectIdToObject doc (vla-get-Key (vlax-safearray-get-element IDPairs 1))))
    (vla-Delete SourceObject)
    
    (vla-Regen doc acAllViewports)
    
    (alert "ソース オブジェクトを消しました!")
)

関連事項