Как же все таки решается эта задача? Установил лисп. Отметил полилинию. Вызвал команду. Она в ответ :выбирите участок. Что это значит? Снова отмечаю -снова получаю "выбирите участок". Может кто разъяснит чайнику?
значит "отметить полилинию" после того ка вызвали команду и выбрали полилинию, нажми F2, как показано в анимации из моего предыдущего поста.
Disney Все делаю по-порядку, но в ответ:Выбирите участок <Выход>:; ошибка: no function definition: VLAX-ENAME->VLA-OBJECT Может 2008 автокад виноват. Анимацию не могу найти
Картинка- белый экран. Нажимаю- экран увеличивается, и ничего не происходит! (Добавление) Проверил новый вариант. Пришлось расширение поменять. Но ничего не изменилось. Открыл блокнотом- там половина строк забита словом "NUL"
походу у тебя инет медленный, прикладываю анимацию к этому сообщению расширение чего? не смотря на то, что в прикрепление написано dist_list.LSP, ворум для удобство всё архивирует, поэтому скачается архив dist_list.tar.gz, который не нужно переименовывать, а надо просто разархивировать, ну или вот тебе код программы, скопируй прям от сюда Код (Наведите курсор, чтобы раскрыть содержимое) Код (раскрыть) Код (свернуть) Код: (defun c:dist_list (/ polyline Koord first Text_size Text_style a b Geo_vibor get-vexs group-by-num Make_text) ;;; ;;;Geo_vibor ;;; (defun geo_vibor (zap tip err / flag name) (setq Flag2 t) (setvar "ERRNO" 0) (while Flag2 (cond ((and (setq name (car (entsel zap)) ) (wcmatch (cdr (assoc 0 (entget name))) tip) ) (setq Flag2 nil name name ) ) ((= (getvar "ERRNO") 52) (setq Flag2 nil) ) (t (princ (strcat err tip))) ) ) ) ;; written by Fatty T.O.H. ;; group list by number (defun group-by-num (lst num / ls ret) (if (= (rem (length lst) num) 0) (progn (setq ls nil) (repeat (/ (length lst) num) (repeat num (setq ls (cons (car lst) ls) lst (cdr lst) ) ) (setq ret (append ret (list (reverse ls))) ls nil ) ) ) ) ret ) ;;get polyline vertices (defun get-vexs (pline_obj / verts) (setq verts (vlax-get pline_obj 'Coordinates) verts (cond ((wcmatch (vlax-get pline_obj 'Objectname) "AcDb2dPolyline,AcDb3dPolyline" ) (group-by-num verts 3) ) ((eq (vlax-get pline_obj 'Objectname) "AcDbPolyline" ) (group-by-num verts 2) ) (T nil) ) ) ) (defun Make_text (pt str) (entmakex (list (cons 0 "TEXT") (cons 10 pt) (cons 40 Text_size) (cons 7 Text_style) (cons 1 str) ) ) ) (vl-load-com) (if (setq polyline (Geo_vibor "\nВыбирите участок <Выход>:" "*POLYLINE" "\nМимо или объект не " ) ) (progn (setq Koord (get-vexs (vlax-ename->vla-object polyline ) ) first (car Koord) Koord (cdr Koord) Text_size (getvar "TEXTSIZE") Text_style (getvar "TEXTSTYLE") b (/ Text_size 2.0) a 1 ) (Make_text (polar first 0.785398 b) (itoa a)) (foreach x Koord (princ (strcat "\n" (itoa a) "-" (itoa (setq a (1+ a))) " " (rtos (distance first (setq first x)) 2) ) ) (Make_text (polar first 0.785398 b) (itoa a)) ) ) ) (princ) ) на всякий случай Как использовать лисп
расширение чего? не смотря на то, что в прикрепление написано dist_list.LSP, ворум для удобство всё архивирует, поэтому скачается архив dist_list.tar.gz, который не нужно переименовывать, а надо просто разархивировать, ну или вот тебе код программы, скопируй прям от сюда Когда разархивировал файл лисп, у него осталось оасширение tar. Поэтому я и заменял на лисп. А внутри были кракозябры, но сейчас все получилось, помог код программы!Спасибо!
Здравствуйте, Disney! Этот лисп хорошо работает с полилинией без дуг, а если с дугами полилиния будет? У меня полилиния с дугами и необходимо сделать извлечение всех длин участков полилинии.
xdimonx, используй программы с сайта http://www.maestrogroup.com.ua/support/ GeomProps.zip или getdwgprops.zip не помню именно какую. Разархвируй zip и сбрось файл.apx просто перетаскиванием из проводника в autocad, только один раз, дальше программа будет загружаться автоматически. В палитре свойств будет отражаться общая площадь и длина полилиний, после их выбора. Если надо только длину дуг, расчлени полилинии и выбери необходимые тебе дуги, программа посчитает.
Уважаемый Disney! Можно ли отредактировать код из поста 30, чтобы в чертеж вставлялось бы не округленное значение длины всей полилинии, а сумма значений длин ее сегментов, округленных до первого знака после запятой?