Апроксимированную полилинию преобразовать в один дуговой сегмент.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Апроксимированную полилинию преобразовать в один дуговой сегмент.

Апроксимированную полилинию преобразовать в один дуговой сегмент.

Ответ
Поиск в этой теме
Непрочитано 12.11.2014, 13:53 #1
Апроксимированную полилинию преобразовать в один дуговой сегмент.
shartal
 
Регистрация: 12.08.2009
Сообщений: 464

Возможно ли это? Речь идет именно о целой полилинии, а не об одном сегменте.
Просмотров: 4318
 
Непрочитано 12.11.2014, 14:20
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Руками?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2014, 14:21
#3
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,600


В какой песне? С каким радиусом? Кто и по какому принципу ее аппроксимировал? Где центр? Принадлежат ли все вершины полилинии одной окружности? И, наконец, что мешает нарисовать дугу по 3-м точкам (вершинам PL)?
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Автор темы   Непрочитано 12.11.2014, 15:00
#4
shartal


 
Регистрация: 12.08.2009
Сообщений: 464


Все сложнее. Есть длиннейшая полилиния с множеством прямолинейных сегментов. Визуально радиусы меняются, одной дугой не обойтись, их возможно десяток наберется. Руками стоить- бесконечно долго.
shartal вне форума  
 
Непрочитано 12.11.2014, 15:09
#5
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


"Упрощу" задачу. Цель - упростить длинную полилинию. Аппроксимировать дугами с отклонением, скажем, в 0.1мм от исходного контура. Практическая (для меня, например) польза - упростить сложный контур гравировки для модели на ЧПУ. Одна простая буква хитрого шрифта иначе может разбиться на несколько сотен отрезков. А на глаз вполне бы хватило 4...10 дуг.

PS Мне кажется, или тут где-то уже было про подобное? в G-tools нет такой функции?
__________________
Век живи, век учись - ...
Bull вне форума  
 
Автор темы   Непрочитано 12.11.2014, 15:56
#6
shartal


 
Регистрация: 12.08.2009
Сообщений: 464


В G-tools нет.
shartal вне форума  
 
Непрочитано 12.11.2014, 16:53
#7
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,600


Есть "прополка" полилиний в PL-Tools. Т.е. удаление лишних вершин, по значению допуска
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Непрочитано 12.11.2014, 17:08
#8
Dfds


 
Регистрация: 08.11.2014
Сообщений: 15


Файл в студию
__________________
Мы тут не элита, но и не чернь..
Dfds вне форума  
 
Непрочитано 12.11.2014, 17:19
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Bull, CaMoCAD, обратите внимание на то, в каком разделе задан вопрос. Я не зря спрашивал про метод выполнения...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.11.2014, 17:25
#10
shartal


 
Регистрация: 12.08.2009
Сообщений: 464


Собственно, все это ради того , чтоб образмерить эти загогулины.
Вложения
Тип файла: dwg
DWG 2010
Чертеж5.dwg (227.0 Кб, 1027 просмотров)
shartal вне форума  
 
Непрочитано 12.11.2014, 18:10
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Отсюда
Цитата:
ToolPac by Dotsoft has a conversion command "Segments to Arcs". It will convert a bunch of little lines (you select which ones you want) and it converts them into one arc.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 12.11.2014, 18:22
#12
shartal


 
Регистрация: 12.08.2009
Сообщений: 464


В моем случае toolpac половину сегментов просто удаляет, но остальные преобразовывает. Наверно единственный способ автоматизации. Спасибо.
shartal вне форума  
 
Непрочитано 12.11.2014, 19:28
#13
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Алгоритм могу предложить, но на реализацию временем пока не располагаю. Сработает он только если такая полилиния образована посредством какой-либо команды аппроксимации, например, из набора PL-Tools, то есть, так называемая "визуальная", аппроксимированная дуга отвечает двум условиям:
1) состоит из сегментов одинаковой длины,
2) угол между ними одинаков.
В приложенном файле почти так и есть. Видимо, некоторые ручки были "пошевелены" пользователем. Как программно можно обработать это "почти" - непонятно.
Так вот, в полилинии обрабатывается поочередно каждый сегмент, и для группы сегментов, удовлетворяющих указанным условиям, вычисляется центральная точка дуги, лежащая либо на перпендикуляре к середине сегмента, либо на вершине, в зависимости от четности количества сегментов. По трем точкам строится дуга....и так далее.
skkkk вне форума  
 
Непрочитано 12.11.2014, 22:51
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Могу так же предложить алгоритм. Придумал только что, поэтому при тщательном анализе могут быть и изъяны.
1. Для восстановления дуги должно быть не менее 3-х точек.
2. Если точек больше, берем первые 3 и восстанавливаем круг
3. Рассматривает 4-ю и каждую последующую точку на предмет принадлежности окружности (расстояние от центра круга до рассматриваемой точки равно радиусу в пределах указанного допуска)
3.1 Если точка принадлежит кругу, то возвращаемся в п.3
3.2 Если нет - восстанавливаем дугу по центру, начальной и конечной точке. Берем следующие 3 точки и возвращаемся в п.3
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 13.11.2014 в 22:12.
VVA вне форума  
 
Непрочитано 13.11.2014, 08:49
#15
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Bull, CaMoCAD, обратите внимание на то, в каком разделе задан вопрос.
Я посоветовал открыть тему в "программирование". Автор создал, но оттуда тему удалили.



А алгоритм удобно было бы сделать так (ресурсоемкий будет при большом количестве сегментов, но зато наилучший):
1. Указываем желаемое отклонение контура, начальную точку для преобразования и сторону, куда строить дугу.
2. Дуга по трем точкам - указанная, конец следующего за указанным сегмента и середина или вершина сегмента (зависит от четности анализируемых отрезков), лежащая на середине предыдущих двух точек. Результат записываем в память (как реально в программировании, надо подумать)
3. Анализ расстояния от дуги до вершин (возможно, и до середин отрезков), которые попадают в диапазон.
4. При удовлетворительном результате в качестве конечной точки берется конец следующего сегмента и анализ повторяется до превышения отклонения. Тогда предыдущий зафиксированный результат строится на экране.
5. Далее же первая точка дуги будет всегда лежать на конце предыдущей, и анализ повторяется.

Вполне допускаю, что работа по реализации алгоритма будет очень трудоемкой. Поэтому скажу, что эта писанина не в качестве "сделайте, пожалуйста", а "было бы идеально". А если ещё добавить условие, чтобы оставались реально длинные прямые участки (например, левые стороны букв "Р", "В" и подобные после разбивки их контура), то вообще
__________________
Век живи, век учись - ...

Последний раз редактировалось Bull, 13.11.2014 в 09:18.
Bull вне форума  
 
Непрочитано 13.11.2014, 19:57
#16
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Вот еще тема была: Как добавить в полилинию дуги
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Апроксимированную полилинию преобразовать в один дуговой сегмент.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли сплайн преобразовать в полилинию в AutoCAD2006? vn AutoCAD 28 06.11.2012 05:09
можно ли преобразовать сплайн в полилинию? Petrovichhh AutoCAD 14 19.10.2012 10:57
Как набор сочленненных дуг преобразовать в полилинию Kotsar AutoCAD 14 31.03.2009 22:02
А можно ли преобразовать линию в полилинию? VadimVG AutoCAD 4 23.08.2004 01:27