Vla-get-value

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年10月31日 (土) 14:47時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-value ''vla-object'' '''' '''' '''') ; 機能 : 新しく作成されるクローン オブジェクトのプロパティの現在の...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-get-value vla-object ' ' ')


機能
新しく作成されるクローン オブジェクトのプロパティの現在の値、またはオブジェクト ID を取得する。


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


戻り値
バリアント型(DynamicBlockReferenceProperty)、Long_PTR (IDPair)
  • DynamicBlockReferenceProperty: プロパティの現在の値。
  • IDPair: CopyObjects オペレーション内の新しく作成されたクローン オブジェクトのオブジェクト ID。


  • 注意 :
  • DynamicBlockReferenceProperty: 指定されたプロパティの値を設定できない場合、エラーは返されない。たとえば、プロパティに有効な値のリストや上限下限範囲が設定されており、かつ指定された値がリストに存在しなかったり範囲外であっても、エラーは返されない。
  • IDPair: コピー元オブジェクトのオブジェクト ID は Key プロパティを使用して取得する。


サンプル
(vl-load-com)
(defun c:Example_Value()
    ;; 2つの円をコピーメソッドを使って作成し、
    ;; It then returns the object IDs
    ;; of the new objects using the Value property and uses the
    ;; object IDs to remove the new (target) objects
    (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)
    
    ;; Add two circles to the drawing
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq circleObj1 (vla-AddCircle modelSpace centerPoint radius1))
    (setq circleObj2 (vla-AddCircle modelSpace centerPoint radius2))
    (vla-ZoomAll acadObj)
    
    ;; オブジェクトコピー
    ;;
    ;; まず CopyObjectsと互換性のある形式にコピーするオブジェクトを置く。
    (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 "最初のターゲットの object ID は: " (itoa (vla-get-Value (vlax-safearray-get-element IDPairs 0)))
                   "\n次のターゲットの object ID は: " (itoa (vla-get-Value (vlax-safearray-get-element IDPairs 1)))))

    ;; このキーは、ユーザが手動でソースオブジェクトを選択した場合に有用な
    ;; ソース・オブジェクトを参照するためにobjectIDtoObjectと共に使用することができる。
    ;;
    ;; ここでは、取得したIDからソースオブジェクトを削除
    (setq TargetObject (vla-ObjectIdToObject doc (vla-get-Value (vlax-safearray-get-element IDPairs 0))))
    (vla-Delete TargetObject)
    (setq TargetObject (vla-ObjectIdToObject doc (vla-get-Value (vlax-safearray-get-element IDPairs 1))))
    (vla-Delete TargetObject)
    
    (vla-Regen doc acAllViewports)
    
    (alert "ターゲット・オブジェクトが削除されています!")
)

関連事項