ADN Club > AutoLisp / VisualLISP и DCL
команда в цикле "_.dimaligned"
1958:
Возникла такая задача: назначить новый слой "Размер", указать на нужный стиль измерений в чертеже, назначить его текущим и произвести измерения. Лисп я набросал, а вот поместить команду "_.dimaligned" в цикл никак не получается. Ну и после завершения цикла необходимо вернуть старые значения: слой, размерный стиль. Кто может подсказать решение?
--- Код - Auto/Visual Lisp [Выбрать] ---(defun c:des (/) (vl-load-com) (setq oldlay (getvar "clayer") olddim (getvar "dimstyle") adoc (vla-get-activedocument (vlax-get-acad-object)) lay "Размер" newdim (cdr (assoc 3 (entget (car (entsel))))) i 0 ) (vla-put-activedimstyle adoc (vla-item (vla-get-dimstyles adoc) newdim)) (vla-add (vla-get-layers adoc) lay) (vla-put-color (vla-Item (vla-get-Layers adoc) lay) 5) (setvar "clayer" lay) (vl-cmdf "_.dimaligned") (princ))
Александр Ривилис:
1958,
Организуй цикл с проверкой активной команды при помощи (getvar "CMDNAMES") и пока она равна "DIMALIGNED" запускай команду (vl-cmdf "\\")
1958:
--- Цитата: Александр Ривилис от 24-06-2022, 19:32:19 ---Организуй цикл с проверкой активной команды при помощи (getvar "CMDNAMES") и пока она равна "DIMALIGNED" запускай команду (vl-cmdf "\\")
--- Конец цитаты ---
Так?
--- Код - Auto/Visual Lisp [Выбрать] ---(defun c:des (/) (vl-load-com) (setq oldlay (getvar "clayer") olddim (getvar "dimstyle") adoc (vla-get-activedocument (vlax-get-acad-object)) lay "Размер" newdim (cdr (assoc 3 (entget (car (entsel))))) ) (vla-put-activedimstyle adoc (vla-item (vla-get-dimstyles adoc) newdim)) (vla-add (vla-get-layers adoc) lay) (vla-put-color (vla-Item (vla-get-Layers adoc) lay) 5) (setvar "clayer" lay) (vl-cmdf "_.dimaligned") (while (= (getvar "CMDNAMES") "DIMALIGNED") (vl-cmdf "\\")) (princ))Видно, что-то не то я состряпал. Не работает.
Александр Ривилис:
Возможно вместо (vl-cmdf) следует использовать (command). Ну и включи cmdecho чтобы видеть сообщения в командной строке.
1958:
cmdecho включил. Заменил vl-cmdf на command. Цикл не работает. Вот сообщения в командной строке:
Команда: des
Выберите объект: _.dimaligned
Начало первой выносной линии или <выбрать объект>:
Начало второй выносной линии:
Создан неассоциативный размер.
Положение размерной линии или
[Мтекст/Текст/Угол]:
Размерный текст = 27.44
Команда:
Навигация
Перейти к полной версии