Vla-addxrecord
- 構文
- (vla-addxrecord vla-object Keyword)
- 機能
- ディクショナリに XRecord オブジェクトを作成する。
- 引数
-
- vla-object … Dictionary の VLAオブジェクト
- Keyword … ディクショナリ内の XRecord の名前。
- 戻り値
- 新しく作成される XRecord の vlaオブジェクト。
- サンプル
(vl-load-com) (defun c:Example_AddXRecord() ;; 新しいXRECORDを作成しXRECORDにデータを追加するサンプル。 ;; 複数回例を実行してデータが追加されているか参照。 (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; ユニークな識別子は、他のXRecordDataからこのXRecordDataを区別する。 (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))) ;; (= (vl-catch-all-error-message TrackingDictionary) "Automation Error. Key not found") (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) ;; 配列が存在しない場合は、まだ、その後1つ作成する。 (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) ;; Get information for this element (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))) ) ) ;; 新しいXRECORDデータを追加 ;; このサンプルでは、我々はXRECORDに現在の時刻を追加 (vlax-safearray-put-element XRecordDataType ArraySize TYPE_STRING) (setq cdate (rtos (vlax-variant-value (vla-GetVariable doc "CDATE")) 2 6)) (vlax-safearray-put-element XRecordData ArraySize (strcat (substr cdate 5 2) "/" (substr cdate 7 2) "/" (substr cdate 1 4) "-" (substr cdate 10 2) ":" (substr cdate 12 2) ":" (substr cdate 14))) (vla-SetXRecordData TrackingXRecord XRecordDataType XRecordData) ;; すべてXRecordDataエントリをリードバック (vla-GetXRecordData TrackingXRecord XRecordDataType XRecordData) (setq ArraySize (vlax-safearray-get-u-bound XRecordDataType 1)) ;; 取得し保存されXRecordDataを表示 (setq iCount 0 msg "") (while (>= ArraySize iCount) ;; 要素の情報を取得 (setq DataType (vlax-safearray-get-element XRecordDataType iCount)) (setq Data (vlax-variant-value (vlax-safearray-get-element XRecordData iCount))) (if (= DataType TYPE_STRING) (setq msg (strcat msg Data "\n")) ) (setq iCount (1+ iCount)) ) (alert (strcat "The data in the XRecord is: \n\n" msg)) )
関連事項