Вариант, представленный выше, не позволяет использовать контекстное меню команды pline. Возможно это связано с печатью результата в ком. строку. На моем Acad2004 переключаться от построения прямолинейных сегментов на построение дуговых программа не позволяет.
Предлагаю свой вариант с печатью в левый угол статусной строки. Плюс сделана элементарная защита от нажатия esc и еще кое от чего.
(defun c:cb ()
(vl-catch-all-apply
(function
(lambda ()
(setvar 'modemacro "")
(command "_.pline" pause)
(while (= (getvar 'cmdactive) 1)
(vl-catch-all-apply
(function
(lambda ( / leng)
(command pause)
(setq leng (vlax-get-property (vlax-ename->vla-object (entlast)) 'length))
(setvar 'modemacro (strcat "Длина кабеля: "(rtos leng 2 0) " мм "))
)
)
)
); end while.
)
)
)
(setvar 'modemacro ""); закомментируй эту строчку, если нужно сохранять вычисленную длину после завершения команды.
(princ)
)
; Запуск: в командной строке набрать cb и нажать enter.
Вот так вот. А вы говорите "деньги платить".