Vla-put-translateids

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(vla-put-translateids vla-object bool)


機能
deepClone または wblockClone 実行中に、含まれたすべてのオブジェクト ID の変換を指定する。


引数
  • vla-object … XRecordのVLAオブジェクト
  • bool … ブール型
  • :vlax-True : deepClone および wblockClone 実行中に、含まれた ID を変換する。
  • :vlax-False : deepClone および wblockClone 実行中に、含まれた ID を変換しない。


戻り値
nil


サンプル
(vl-load-com)
(defun c:Example_TranslateIDs()
    ;; XRecord を作成して TranslateIDs をトグルで変更するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; 他のXRECORDデータと区別するためユニークな識別子をつける
    (setq TYPE_STRING 1
          TAG_DICTIONARY_NAME "ObjectTrackerDictionary"
          TAG_XRECORD_NAME "ObjectTrackerXRecord")

    ;; ディクショナリの XRecord に接続
    (setq dictionaries (vla-get-Dictionaries doc))
    (setq TrackingDictionary (vl-catch-all-apply 'vla-Item (list dictionaries TAG_DICTIONARY_NAME)))

    (if (= (type TrackingDictionary) 'VLA-OBJECT)
        (setq TrackingXRecord (vla-GetObject TrackingDictionary TAG_XRECORD_NAME))
        (progn
            ;; Create the objects that hold this XRecordData
            (setq TrackingDictionary (vla-Add dictionaries TAG_DICTIONARY_NAME))
            (setq TrackingXRecord  (vla-AddXRecord TrackingDictionary TAG_XRECORD_NAME))
	       )
    )

    ;; 現在の XRecordData
    (vla-GetXRecordData TrackingXRecord 'temp-XRecordDataType 'temp-XRecordData)
    
    ;; 無かったら作成
    (setq ArraySize 0)
    (if (/= temp-XRecordDataType nil)
        (progn
	    (setq ArraySize (vlax-safearray-get-u-bound temp-XRecordDataType 1))
            (setq XRecordDataType (vlax-make-safearray vlax-vbInteger (cons 0 (1+ ArraySize))))
            (setq XRecordData (vlax-make-safearray vlax-vbVariant (cons 0 (1+ ArraySize))))

            (setq iCount 0)
            (while (>= ArraySize iCount)
                ;; エレメントのインフォメーションを取得
                (setq DataType (vlax-safearray-get-element temp-XRecordDataType iCount))
                (setq Data (vlax-variant-value (vlax-safearray-get-element temp-XRecordData iCount)))

                (vlax-safearray-put-element XRecordDataType iCount DataType)
                (vlax-safearray-put-element XRecordData iCount Data)
	      
                (setq iCount (1+ iCount))
            )
	       )
        (progn
            (setq XRecordDataType (vlax-make-safearray vlax-vbInteger '(0 . 0)))
            (setq XRecordData (vlax-make-safearray vlax-vbVariant '(0 . 0)))
	       )
    )
    
    ;; 現在の TranslateIDs値を取得
    (setq currXlate (vla-get-TranslateIDs TrackingXRecord))
    (alert (strcat "The current setting of the TranslateIDs is " (if (= currXlate :vlax-true) "True" "False")))
    
    ;; トグルで変更
    (vla-put-TranslateIDs TrackingXRecord (if (= currXlate :vlax-true) :vlax-false :vlax-true))
    (alert (strcat "The new setting for the TranslateIDs is " (if (= (vla-get-TranslateIDs TrackingXRecord) :vlax-true) "True" "False")))
    
    ;; 戻す
    (vla-put-TranslateIDs TrackingXRecord currXlate)
    (alert (strcat "TranslateIDs has been reset to " (if (= (vla-get-TranslateIDs TrackingXRecord) :vlax-true) "True" "False")))
)

関連事項