|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
нужен нормальный конвертер spline to polyline
Регистрация: 16.02.2005
Сообщений: 2
|
||
Просмотров: 17364
|
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Вообще не встречал такого чтобы сплайн заменялся отрезками и дугами, помоему сплайн не описывается дугами у него другие формулы вычисления. А еще по какому критерию отслеживать где заменить на дугу, а где на отрезок? Вот отрезками другое дело, и замена сплайна на набор отрезков (хорд) наиболее логичный ход и простой в решении. Есть возможность заменить сплайн полилинией с фиксированным шагом сегментов, а потом ручками заменять сегменты с отрезков на дуги, но это неблагодарная работа.
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Или как вариант (тоже весьма под вопросом выгода такого хода): поверху обрисовывать полилинией, с самого начала пользуясь опцией _Arc.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Кстати да, если не нужна уж такая точность и количествой сплайнов невелико, то самый простой способ! (Иногда стоит упрощать решение проблемы, дабы не зайти в тупик)
![]()
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
вот нашел http://www.autocad.ru/cgi-bin/f1/board.cgi?t=3723py
есть там лиспик (приведу тут) апроксимирующий сплайн дугами, если его чуть доработать - может не плохо получиться (к сожалению у меня времени нет сейчас может Fantomas за 5 минут прикинет - он может ![]() Но, насколько я понял, сплайн даже теоретически абсолютно точно представить прямыми и дугами нельзя. Код:
|
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 15.07.2008
Сообщений: 195
|
А можно подробнее? А то при переводе из PDF в DWG всё сплайнами рисуется, что ужасно. Приведённый лисп так и не понял как вызывать. (SplineToPline) - не вызывает.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
В 2011 Автокаде в команде _splinedit появилась опция "преобразовать в полилинию"
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 15.07.2008
Сообщений: 195
|
VVA, у меня 2008 автокад к сожалению. Да, и как запускать лисп #6? В моём понимании надо вводить (SplineToPline), но он ругается. И вообще я периодически встречаюсь с лиспами, которые не могу запустить, мол не знаю такой команды. Читал "Как использовать код на Лиспе читаем здесь" не раз, но таки не получалось иногда.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Код:
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) |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Правый клик на сплайне и в контекстном меню выбрать Сплайн - Преобразовать в полилинию. Чем не устраивает?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик Регистрация: 14.08.2011
Екатеринбург
Сообщений: 58
![]() |
Преобразовать сплайн в полилинию - создается очень много точек, даже если выставлять точность - 0, вне зависимости от метода преобразовать линиями или дугами, плюс в некоторых местах возникают дуги которые очень сильно отстоят от начальной траектории.
FLATTEN из набора ExpressTools - создает меньше точек, в целом все выглядит хорошо, но после ее исполнения возникает много явно выступающих полукругов и бывают незамкнутые полилинии. В целом эти оба способа для решения задачи подходят, но в первом очень много точек, во втором слишком много руками доделывать. Задача стоит следующая: Получаем файл CorelDraw с геометрией в виде сплайнов, импортируем из Корела в .DXF или .DWG, далее в автокаде разбираем спалйны на полилинии из отрезков и дуг. Затем файл идет в Inventor, там уже готовится УП для ЧПУ. С импортированной геометрией в виде сплайнов ни Inventor(HSM) ни Solidworks(Solidcam) адекватно работать не хотят. Поиски парсера или лиспа или еще чего-нибудь внятного по корректному преобразованию сплайнов полилинии в виде отрезков и дуг ни к чему не привели((( |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,170
|
Сплайны были в исходном файле CorelDraw или получились при конвертации в DWG/DXF?
Просто я когда-то давно сталкивался с преобразованием CorelDraw в DWG/DXF, так даже то, что в Corel было нарисовано прямыми отрезками, экспортировались в сплайны с двумя точками ![]() PS еще одна догадка на кофейной гуще. Нормальный человек не будет все-все-все рисовать сплайнами, где-то будут хотя бы прямые отрезки (возможное исключение - рисование электронным пером). Но насколько я помню, Corel генерирует неуместное количество сплайнов после команды "Превратить в кривые". Несознательные граждане злоупотребляют этой командой, чтобы их "уникальные разработки" не попали в чужие руки в исходном, легко редактируемом виде. Может, надо попросить "неиспорченный" файл Corel? Последний раз редактировалось kp+, 18.06.2018 в 15:34. |
|||
![]() |
|
||||
Проектировщик Регистрация: 14.08.2011
Екатеринбург
Сообщений: 58
![]() |
Именно в Кореле все и нарисовано сплайнами. В большинстве случаев в кореле всегда рисуют сплайнами и потом возникает много проблем при подготовки файла для работы на станке.
Это все сводится к пляскам с бубнами с переводом в Adobeillustrator, потом в DWG/DXF, потом в ArtCam, тот в свою очередь имеет какой-то свой модуль по апроксимации, но тоже кривой. Если файл с дестяком небольших спланов из Корела, можно конвертнуть в DWG/DXF, затем выполнить ПОЛРЕД или FLATTEN, то при сложной геометрии это проблематично. Есть методы апроксиммации сплайнов(Кривых Безье), но реализованных под ACAD - не нашел. Вот как пример: http://www.mathnet.ru/links/40ea825c.../zvmmf4915.pdf ЗЫ: в приложении пример файла конвертированного из Корела |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,170
|
посмотрите тут: https://apps.autodesk.com/ACD/en/Det...en&os=Win32_64
Единственное, работает только с новыми версиями (с 2015), проверить не могу (у меня 2010). Последний раз редактировалось kp+, 18.06.2018 в 15:48. |
|||
![]() |
|
||||
Проектировщик Регистрация: 14.08.2011
Екатеринбург
Сообщений: 58
![]() |
Спасибо за ссылку, почему-то ее сам не нашел на автодесковском форуме.
Лисп от французов вроде как работает, но как-то странно. Задать малую величину отрезка не дает, а если задавать величину отрезка в моем примере 1мм, то выдает ошибку "; ошибка: неверный тип аргумента: numberp: nil", если же задавать бОльшие длины то "; ошибка: деление на нуль" То, под что получилось подогнать в приложении, но этот результат хуже штатного ПОЛРЕД или FLATTEN |
|||
![]() |
|
||||
тоже решил прибаловнуть)
|
||||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
Тема: Адаптация древних lisp-приложений под AutoCad 2016 От Александр Ривилис, установить LEGACYCODESEARCH = 1. http://forum.dwg.ru/showpost.php?p=1498096&postcount=33 |
|||
![]() |