| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.02.2005, 15:18 | #1 | |
нужен нормальный конвертер spline to polyline
Регистрация: 16.02.2005
Сообщений: 2
|
||
Просмотров: 16834
|
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Вообще не встречал такого чтобы сплайн заменялся отрезками и дугами, помоему сплайн не описывается дугами у него другие формулы вычисления. А еще по какому критерию отслеживать где заменить на дугу, а где на отрезок? Вот отрезками другое дело, и замена сплайна на набор отрезков (хорд) наиболее логичный ход и простой в решении. Есть возможность заменить сплайн полилинией с фиксированным шагом сегментов, а потом ручками заменять сегменты с отрезков на дуги, но это неблагодарная работа.
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Или как вариант (тоже весьма под вопросом выгода такого хода): поверху обрисовывать полилинией, с самого начала пользуясь опцией _Arc.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Кстати да, если не нужна уж такая точность и количествой сплайнов невелико, то самый простой способ! (Иногда стоит упрощать решение проблемы, дабы не зайти в тупик)
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,192
|
вот нашел http://www.autocad.ru/cgi-bin/f1/board.cgi?t=3723py
есть там лиспик (приведу тут) апроксимирующий сплайн дугами, если его чуть доработать - может не плохо получиться (к сожалению у меня времени нет сейчас может Fantomas за 5 минут прикинет - он может ). Но, насколько я понял, сплайн даже теоретически абсолютно точно представить прямыми и дугами нельзя. Код:
|
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,192
|
Цитата:
|
|||
|
||||
Регистрация: 15.07.2008
Сообщений: 195
|
А можно подробнее? А то при переводе из PDF в DWG всё сплайнами рисуется, что ужасно. Приведённый лисп так и не понял как вызывать. (SplineToPline) - не вызывает.
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
В 2011 Автокаде в команде _splinedit появилась опция "преобразовать в полилинию"
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 15.07.2008
Сообщений: 195
|
VVA, у меня 2008 автокад к сожалению. Да, и как запускать лисп #6? В моём понимании надо вводить (SplineToPline), но он ругается. И вообще я периодически встречаюсь с лиспами, которые не могу запустить, мол не знаю такой команды. Читал "Как использовать код на Лиспе читаем здесь" не раз, но таки не получалось иногда.
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Код:
ConvTo2d -Преобразование криволинейных объектов в 2D полилинии В 2011 Автокаде делается лучше. Поставь триал и используй лисп с #10
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Посмотри http://www.debalance.com/index.html
Одной из опций этой программы является то, что тебе нужно - конвертация различных типов примитивов в полилинии. |
|||
|
||||
Команда CurveToPline v 2.0.
Аппроксимация кривой (сплайна эллипса ..) полилинией с заданной точностью. Команду CurveToPline так же можно использовать для удаления лишних вершин в полилинии. Смотрите вложение. Последний раз редактировалось zaplev, 31.03.2011 в 22:33. Причина: Обновление файла вложения |
||||
|
||||
Как угадать какие параметры для конкретного сплайна применять?
Вот к примеру, мне надо, чтобы полилиния от сплайна не отличалась визуально на распечатанном чертеже, то есть, максимальное отклонение полилинии от сплайна не более, предположим, 0,05 мм (единицы чертежа миллиметры). Какие надо устанавливать значения DLEN и EPS? А привязку хорошо бы в самом коде отключать, даже если командными методами работаете!
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Цитата:
погрешность линейной аппроксимации с шагом DLEN, пренебрежительно мала. Если значение DLEN очень мало (например, DLEN = 0.01), то на конечный результат это повлияет мало, только увеличится время вычислений. А вот значение EPS существенно влияет на результат. Чем больше EPS тем грубей аппроксимация, зато меньше точек, и наоборот. Попробуйте менять DLEN и EPS примерно так: 1. не изменяя EPS = 0.05, изменяем DLEN = 1, 0.5, 0.05 2. не изменяя DLEN = 0.5, изменяем EPS = 0.5, 0.1, 0.05, 0.01 Сравните результат визуально и количество точек (length cn) = … EPS – это погрешность аппроксимации, то есть любое кратчайшее расстояние от сплайна до полилинии должно быть меньше EPS. Это легко проверите. Нарисуйте отрезок от сплайна до полилинии и посмотрите его длину. Отрезок должен быть перпендикулярный к сплайна и полилинии.. Длина этого отрезка должна быть меньше EPS. Последний раз редактировалось zaplev, 23.03.2011 в 16:00. |
||||
|
||||
Хорошо, с DLEN понятно - это длина отрезка, на которые изначально делится сплайн. А вот что такое EPS?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||