Vla-get-key
- 構文
- (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 "ソース オブジェクトを消しました!")
)
関連事項