Копировать содержимое атрибута из одного блока в другой с сохранением "поля"
Здравствуйте,
есть блок с разными атрибутами, в одном из которых "поле", например, имя текущего файла, либо в содержимом атрибута может быть "какой-то текст + поле".
Подскажите пожалуйста как кодом lisp скопировать содержимое такого атрибута в другой атрибут, сохранив поле (*id объекта должно поменяться на новый целевой блок)?
Код ниже позволяет скопировать содержимое всех атрибутов с одного блока в другой с полем, но проблема в том, что ObjectId передается с исходного блока, а нужно чтобы это был id целевого блока (*в который копируем).
(defun C:MTB2 (/ ename enam data ss)
(while (not
(progn
(prompt "\nSelect Source Block:")
(setq ename (ssget "_:S:E" '((0 . "INSERT") (66 . 1))))
)
)
(princ "\nInvalid or null selection")
)
(cond
((and
(setq enam (ssname ename 0))
(setq data (FieldsVal enam t nil));<-- Get Mode & Fields mode
(prompt "\n<<<Select blocks to process>>>")
(setq ss (ssget ":L" '((0 . "INSERT") (66 . 1))))
(repeat (setq i (sslength ss))
(_FieldsVal (ssname ss (setq i (1- i))) nil data);<-- Set Mode
)
)
)
)
(vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))
acActiveViewport
)
(princ)
)
;;; Subfunction to Attribute Set/Get Fields/TEXT ;;;
;;; blk = The attribute block ;;;
;;; mode = T for Field Values ;;;
;;; = nil for String Values ;;;
;;; lst = If supplied, function in Set Mode ;;;
;;; = nil for Get Mode ;;;
(defun _FieldsVal (blk mode lst / m f)
(setq f (if mode
(lambda (e)
(strcat "%<\AcObjProp Object(%<\_ObjId "
(itoa (vla-get-ObjectId e))
">%).TextString>%")
)
(lambda (e) (vla-get-textstring e))
)
)
(mapcar '(lambda (at)
(if lst
(if (setq m (assoc (vla-get-tagstring at) lst))
(vla-put-textstring at (cadr m))
)
(list (vla-get-tagstring at) (f at))
)
)
(vlax-invoke (vlax-ename->vla-object blk) 'Getattributes)
)
)
;;; End of _FieldsVal ;;;
(vl-load-com)
Ответы
-
Сделала с заменой ObjId
0
Разделы
- Все разделы
- 64 Общие вопросы
- 57 Работа nanoCAD в ОС Linux
- 437 Платформа nanoCAD
- 20 nanoCAD GeoniCS
- 88 nanoCAD BIM Строительство
- 42 nanoCAD Механика PRO
- 63 nanoCAD BIM Электро
- 11 nanoCAD BIM Вентиляция
- 13 nanoCAD BIM ВК
- 3 nanoCAD BIM Отопление
- 8 nanoCAD BIM СКС
- 57 nanoCAD BIM ОПС
- 3 nanoCAD Стройплощадка
- 4 nanoCAD Металлоконструкции
- 2 nanoCAD Конструкции PS
- 7 TDMS Фарватер
- 1 Облака точек
- nanoCAD GeoSeries
- NSR Specification
- Учебным заведениям и учащимся
- 8 nano360