Расчленение окружностей и дуг на отрезки
есть необходимость преобразовать все окружности и дуги на четеже (около 1000шт) в отрезки.
чтото вроде команды взорвать которая взрывает дуги и окружности.
что получается вписанный многоугольник или описанный не столь важно. но желательно чтобы количество сегментов выбиралось (например 12)
может у кого есть готовый lisp. не смог найти.
я так понимаю с окружностями всё довльно просто — с дугами сложнее?
Просмотров: 9667
Регистрация: 11.05.2005
Сообщений: 6,991
Преобразовать дуги в полилинии (PL-JOIN), затем PL-NoArc с опцией количество сегментов N
Команда: PL-NoArc Выберите режим апроксимации дуговых сегментов [ количество сегментов N /длина сегмента L/предельное отклонение хорды S/длина хорды C/помощь H]:N |
__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 02.09.2009
Сообщений: 10
спасибо!
а как насчёт окружностей?
её нужно сперва как то преобразовать в полилинию?
или сперва в дугу, а потом в полилинию?
Регистрация: 11.05.2005
Сообщений: 6,991
shinyur,
1. C помощью
ConvTo2d -Преобразование криволинейных объектов в 2D полилинии |
можешь сразу преобразовать в полилинии, но без указания количесва сегментов.
2. Можно в дугу, затем в полилинию
3. Посмоти TotalPurge
Программа TotalPurge позволяет конвертировать примитивы AutoCAD в полилинии. Программа преобразует в полилинии следующие типы объектов: ACR, CIRCLE, LINE, SPLINE, ELLIPSE, POLYLINE. |
4. Тщательнее поискать в интернете (не только русскоязычном)
Например, если спросить у googl’a про circle into arc, то можно найти программы gile
;; A2PG (gile) ;; Convert arcs and circles in polygons (defun c:a2pg (/ ss n n_seg obj dist pt_lst nb) (prompt "\nSelect arcs and circles to be converted ." ) (if (not (setq ss (ssget '((0 . "ARC,CIRCLE"))))) (setq ss (ssget "_X" '((0 . "ARC,CIRCLE")))) ) (initget 7) (setq n_seg (getint "\nNumber of segments: ")) (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) n_seg ) norm (vlax-get obj 'Normal) pt_lst (list (vlax-curve-getEndPoint obj)) nb n_seg ) (repeat n_seg (setq pt_lst (cons (vlax-curve-getPointAtDist obj (* dist (setq nb (1- nb))) ) pt_lst ) ) ) (if (= (vla-get-ObjectName obj) "AcDbCircle") (setq pt_lst (reverse (cdr (reverse pt_lst)))) ) (setq elev (- (caddr (trans (car pt_lst) 0 norm)) (caddr (trans '(0 0) 0 norm)) ) pt_lst (apply 'append (mapcar '(lambda (pt) (setq pt (trans pt 0 norm)) (list (car pt) (cadr pt)) ) pt_lst ) ) ) (setq pline (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)) ) 'addLightWeightPolyline pt_lst ) ) (vlax-put pline 'Normal norm) (vla-put-elevation pline elev) (if (= (vla-get-ObjectName obj) "AcDbCircle") (vla-put-closed pline :vlax-true) ) (vla-delete obj) ) (princ) )
или FIXO (нужное выделили красным)
;;; acl.lsp ;;; 11/6/05 ;;; convert arcs and circles to line segments ;;; local defun ;; http://forums.augi.com/showthread.php?t=79610 (defun arctolines (acsp obj n / cnt d leng p pts s x y) (setq d (/ (setq leng (vla-get-arclength obj)) n) s d) (setq cnt 0) (while ((arctolines acsp obj 12); ) ) (vla-endundomark adoc) (princ) ) (princ "\n >> Start command with ACL") (princ)
Как нарисовать полилинию, круг, прямоугольник, дугу в АвтоКАДе
Сейчас вы узнаете еще о нескольких примитивных инструментах, типа Полилинии, Круга, Прямоугольника и Дуги.
Из прошлого видео вы уже знаете, как строится отрезок. Поэтому, начнем с полилинии. Она выполняет ту же функцию, что и отрезок, только с небольшим отличием. При выборе отрезка, выделяется только та часть, в которой мы указали начальную и конечную точки. В инструменте полилинии же, выделяются все отрезки, построенные без прерывания использования таковой.
Покажу наглядно. Выбираем отрезок и указываем начальную точку. Теперь указываем конечную. Но затем не отменяем дальнейшее использование отрезка, а продолжаем указывать конечные точки. Начальными точками для таких отрезков будут являться конечные точки прошлого отрезка. Закончим указывать конечные точки и попробуем выделить любой из отрезков. Как мы видим, выделился только один отрезок с начальной и конечной точками.
Теперь попробуем проделать тоже самое, но только с полилинией. Выбираем ее на панели. Указываем начальную точку и делаем несколько отрезков, как с инструментом отрезок. После окончания работы с полилинией, попробуем выбрать один из отрезков. И, как мы видим, выделился не отдельный отрезок, а вся нарисованная нами полилиния. Что интересно, при построении замкнутого объекта при помощи полилинии, можно узнать площадь получившейся фигуры. Для этого достаточно выбрать фигуру, нажать правую кнопку мыши и выбрать строку «Свойства». На вкладке «Геометрия» можно увидеть строку «Площадь», где мы и увидим нужную нам цифру.
Давайте перейдем к инструменту Круг. Примитивный инструмент, позволяющий начертить ровный круг. Работа с ним ничем не сложнее работы с отрезком или полилинией. Только здесь мы указываем не начальную и конечную точки, а центр круга и второй точкой задаем его радиус. Стоит заметить, что не диаметр, а именно радиус. Который мы также можем указать при помощи цифровой клавиатуры и нажатия кнопки Enter. К примеру, мы задали центр круга и хотим, чтобы его радиус составлял 500 миллиметров. Просто набираем 500 на клавиатуре и нажимаем Enter. И получаем необходимый радиус круга.
Теперь давайте рассмотрим инструмент под названием Дуга. У данного инструмента есть множество различных вариаций построения. Но давайте остановимся на простейшем. Он представляет из себя систему из указаний трех точек: начальной, дополнительной (чтобы указать, относительно какого места будет строиться кривая нашей дуги) и конечной. Но стоит заметить, что если вы решите замкнуть дугу, то круг у вас не получится, а дуга просто исчезнет, не оставив от себя и следа.
При выделении построенной дуги, вторая указанная вами точка уже не будет отображаться, так как она является дополнительной точкой лишь при построении дуги. Но нам отобразятся начальная точка, конечная, центр окружности дуги, а также центр окружности, если бы дуга была частью круга.
Ну и на последок, давайте рассмотрим инструмент Прямоугольник. Построение прямоугольника при помощи данного инструмента позволяет облегчить работу с последующим редактированием. Как? Давайте посмотрим. Выбираем инструмент. Указываем начальную точку. Указываем конечную. При этом, как вы можете увидеть, происходит построение вертикальных и горизонтальных параллельных отрезков, образующих прямоугольник. Выделим нашу фигуру. И теперь мы можем заметить, что центральные точки отрезков являются не квадратными, как на простом отрезке, а немного сплющенными. При наведении на такую точку нам выпадает меню из трех пунктов:
Растянуть, добавить вершину и преобразовать в дугу.
Функция «Растянуть» позволяет перетаскивать отрезок, при этом не теряя привязки с двумя остальными соседними отрезками.
Функция «Добавить вершину» позволяет разделить данный отрезок на две части и использовать данную точку, как конечную для уже двух отрезков. При этом, не разрывая целостности общей фигуры.
Ну и последняя функция – «Преобразовать в дугу» – позволяет превратить выбранный отрезок в дугу, с возможностью указать ее радиус.
Таким образом, из простого прямоугольника, построенного изначально, можно получить довольно интересную фигуру.
Преобразование линии или дуги AutoCAD в часть объекта трассы
Создается фиксированный объект трассы в виде линии по двум точкам или дуги по трем точкам на основе линии или дуги AutoCAD.
Новая часть объекта становится частью решенной геометрии трассы при выполнении одного из следующих двух условий:
- Перед преобразованием объект необходимо присоединить к несвязанной конечной точке другого решенного объекта в трассе.
- После преобразования объект можно присоединить к решенной геометрии трассы с помощью инструментов компоновки трассы.
Эта команда удобна в том случае, если к существующей трассе требуется добавить линию или дугу AutoCAD.
- Создайте трассу или найдите существующую трассу.
- Выберите трассу, щелкнув на ней мышью. Выберите вкладку «Трасса» панель «Редактирование» «Редактор геометрии» найти .
- Выберите на панели «Инструменты компоновки трассы» команду «Преобразовать линию и дугу Autocad» .
- Выберите объект AutoCAD.
- При необходимости поменяйте на противоположное направление части объекта трассы.
Прим.: Если преобразованный объект скрыт за исходным объектом AutoCAD, выделите его с помощью комбинации клавиш Shift + <пробел>. Наведите курсор на белый объект AutoCAD. Нажмите клавишу Shift и, удерживая ее нажатой, выделите часть объекта трассы с помощью клавиши пробела. Щелчком мыши выберите часть объекта трассы, затем отпустите клавишу Shift. Щелкните на части объекта трассы еще раз для выбора этой части объекта и продолжения работы с командой.пробел>
На уровень выше: Редактирование трассы
Понятия, связанные с данным
как сменить дуговые сегменты полилинии, на прямые отрезки с минимальной потерей сглаженности
доброго времени суток
Есть потребность сменить дуговые сегменты полилинии, на прямые отрезки. Есть какое готовое решение?
Спасибо
Выделяете полилинию, на концах сегментов и в середине появятся квадратики, наводите курсор мышки на квадратик середины сегмента, появится менюшка и в ней будет несколько пунктов один из них преобразовать дугу в линию. Остальные пункт сами почитаете.