Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменить значения атрибутов в зависимости от значения первого атрибута

Изменить значения атрибутов в зависимости от значения первого атрибута

Ответ
Поиск в этой теме
Непрочитано 18.04.2023, 22:27 #1
Изменить значения атрибутов в зависимости от значения первого атрибута
olga87
 
Регистрация: 28.05.2007
Сообщений: 208

Здравствуйте Уважаемые программисты!

Есть блок с 2-мя атрибутами. Если изменить с помощью "Редактора атрибутов блока" (по 2му клику по блоку) значение 1го атрибута, например, на 1, то значение 2го атрибута станет автоматически равным 2 (т.е. на 1 больше). Выполняется это кодом ниже.

Подскажите пожалуйста, как изменить код для, например, 10-ти атрибутов в блоке. Т.е. меняем значение только 1го атрибута, остальные атрибуты должны автоматически стать по значению на 1 больше последовательно, т.е. 1,2,3,4...10.

Заранее Спасибо!

Код:
[Выделить все]
(vl-load-com)

(defun c:BlockAttEdit_UnLoad ()
  (if *editor_reactor*
    (vlr-remove *editor_reactor*))
  (princ)
)

(defun BlockAttEdit_OnLoad ()

  (if *editor_reactor*
    (vlr-remove *editor_reactor*))

  (setq obj (vlax-ename->vla-object (car (entsel "\nВыберите блок: "))))
  (if (not editor_reactor)
    (setq editor_reactor (vlr-editor-reactor
	"editor"
	'((:vlr-commandended . commandended)))))
    (setq obj_reactor (vlr-object-reactor
	(list obj)
	"obj"
	'((:vlr-subobjmodified . subobjmodified))))

  (princ "\n *** Блок выбран ***")
  (princ)
)

(defun commandended (reactor params / atts att1 att2)
  (if modified_list
    (foreach blk  modified_list
      (setq atts
        (reverse (vlax-safearray->list
     (vlax-variant-value (vla-getattributes blk))))
     att1      (car atts)
     att2      (cadr atts)
	 )
	 (vla-put-textstring att1 (+ 1 (atoi (vla-get-textstring att2))))
    )
  )
  (setq modified_list nil)
)

(defun subobjmodified (owner reactor params)
  (if (and (not (wcmatch (getvar "cmdnames") "UNDO,U,REDO,OOPS"))
    (not (vl-position owner modified_list)))
    (setq modified_list (cons owner modified_list)))
)

(BlockAttEdit_OnLoad)
Просмотров: 590
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменить значения атрибутов в зависимости от значения первого атрибута

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP-функция для изменения значения атрибутов в блоке r7800m LISP 2 06.04.2016 13:16
Как изменить ширину рамки многострочного атрибута? Сет AutoCAD 7 09.09.2015 12:54
Отменить в атрибуте действие поля (field) с сохранением значения атрибута АлексЮстасу AutoCAD 2 22.08.2015 23:26
Присвоение атрибуту блока значения атрибута другого блока. shartal Программирование 4 14.11.2013 14:02
Перенос значения атрибутов из блока в блок wluk1958 Программирование 6 02.04.2012 22:09