Тема: Lisp Объединение линий в одну полилинию?
Добрый вечер, поискал по форуму, нашел лисп который объединяет, если концы сходятся. Так вот возможно ли созадать лисп который ещё и удлиняет или обрезает при необходимости линии.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Autodesk → AutoCAD → Lisp Объединение линий в одну полилинию?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Добрый вечер, поискал по форуму, нашел лисп который объединяет, если концы сходятся. Так вот возможно ли созадать лисп который ещё и удлиняет или обрезает при необходимости линии.
Нашел что то похожее, но немного не то,
(defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects) (setq oldcmdecho (getvar "cmdecho")) (setq oldpeditaccept (getvar "PEDITACCEPT")) (setvar "cmdecho" 0) (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16")) (if A2k4 (setvar "PEDITACCEPT" 0)) (setq okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE"))) (princ "\nSelect object to join: ") (setq ss1 (ssget okObjects)) (setq fuzz (getdist "\nFuzz distance <0>: ")) (if (= fuzz nil) (setq fuzz 0)) (if (/= ss1 nil) (progn (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0)))))) (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects))) (if (member objType '("LINE" "ARC")) (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "") (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "") ) ) ) (setvar "cmdecho" oldcmdecho) (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept)) (princ) )
Хочется чтоб было не тупо соединение, а если надо обрезание и соединение.
Если я правильно понял то, после этого
Нашел что то похожее, но немного не то,
_overkill - получается одна полилиния :)
Эм.. _overkill это по моему удаление наслаивающихся друг на друга линий, завтра утром с картинками попробую объяснить что я ищу)
Нашел что то похожее, но немного не то,
Почему не то? Пробовал вводить допуск (Fuzz distance) побольше?
Попробуй заменить "_B" на "_E" в коде.
То есть вместо
... (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "") (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "") ...
должно быть:
... (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_E" fuzz "") (command "_.pedit" "_M" ss1 "" "_J" "_J" "_E" fuzz "") ...
Спасибо Большое!!!
То что надо :D
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Autodesk → AutoCAD → Lisp Объединение линий в одну полилинию?
Форум работает на PunBB, при поддержке Informer Technologies, Inc