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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > POLYLINE скругление(кривизна)

POLYLINE скругление(кривизна)

Ответ
Поиск в этой теме
Непрочитано 27.01.2009, 19:30 #1
POLYLINE скругление(кривизна)
SANRIZE
 
Регистрация: 27.01.2009
Сообщений: 3

Пытаюсь поострить свою полилинию, и возникли затруднения. Ситуация такая при записи полилинии в файл dxf, КАД программа записует координаты вершин, там где начинается округление есть код 42 после него стоит непонятное число.
Почитал http://www.caduser.ru/docs/text_2935.html постарался построить не получилось
Вот как я делаю
angle = (4*atan(тут это число))*180.0f / 3.14 как можно построить скругление или дугу?

Последний раз редактировалось SANRIZE, 27.01.2009 в 20:30.
Просмотров: 6638
 
Непрочитано 27.01.2009, 23:45
#2
Кулик Алексей aka kpblc
Moderator

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


В 42-й группе хранится, по-моему, тангенс четверти центрального угла. А вопрос я что-то не понял. В чем трудность-то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2009, 19:17
#3
SANRIZE


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В 42-й группе хранится, по-моему, тангенс четверти центрального угла. А вопрос я что-то не понял. В чем трудность-то?
Я пытаюсь для диплома сделать одну маленькую программу на подобии AUTOCAD. Программа должна загружать файлы, хотя бы формата dxf. Вот не могу построить полилинию с скруглением. Я так понимаю это число позволяет найти радиус и центр скругления (дуги).
Как можно найди координаты цента скруглеия (дуги) и радиус?
SANRIZE вне форума  
 
Непрочитано 29.01.2009, 00:51
#4
Кулик Алексей aka kpblc
Moderator

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


А зачем находить центр и радиус? Это при построении полилинии делает само ядро AutoCAD'a, насколько я понимаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.01.2009, 02:33
2 | #5
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Как-то мне нужно было расчитывать центр и радиус (задача была в построении интерполированной ломанной траектории фрезы - только с прямолинейными сегметнами - по исходной полилинии). В общем, чтобы "на пальцах" понять,что содержится в 42 группе см, рисунок. Из точки A в точку B (это важно, не наоборот) идет сегмент полилинии, полилиния имеет определенный изгиб ( обозначенный Y), а в 42 группе храниться частное из X/Y. Причем, если б, сегмент шел сверху в низ (из B в A) или же изгиб был бы в левую сторону, то 42 группа имела бы отрицательное значение.

Преобразование на лиспе у меня выглядело так:
Код:
[Выделить все]
(defun bubltoarc (pt1 pt2 bubl / dst cnt r); переводит представление дуги из polyline в arc.
(setq 	dst (distance pt1 pt2)
	r	(+ (* (/ dst 2.0) bubl) (/ (- (* (/ dst 2.0) (/ dst 2.0))
		(* (/ (* dst bubl) 2.0) (/ (* dst bubl) 2.0))) (* dst bubl)))
	cnt	(polar
		(polar pt1 (angle pt1 pt2) (/ dst 2.0))
		(- (angle pt1 pt2) (/ pi 2.0))
		(- (* (/ dst 2.0) bubl) r))
);end of setq
(list cnt r (angle cnt pt1) (angle cnt pt2))
);end of bubltoarc
На входе задается (начальная точка, конечная, значение 42 группы); на выходе получаем список из (точки центра дуги (на рисунке обозначенный O), радиуса, начального угла дуги, конечного угла дуги). Так как в Autocad дуга всегда строиться против часовой стрелки (от начального к конечному углу), а полилиния может идти и в другом направлении - при разнонапраленных значениях функция возращает отрицательное значение радиуса - мне это было нужно для сохрания последовательности вершин при интерполяции полилинии с несколькими дуговыми сегментами.
Миниатюры
Нажмите на изображение для увеличения
Название: 42.jpg
Просмотров: 274
Размер:	7.4 Кб
ID:	15297  
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 29.01.2009, 08:33
#6
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


>SANRIZE
Посмотри эту тему
CB вне форума  
 
Автор темы   Непрочитано 30.01.2009, 18:18
#7
SANRIZE


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


Дима_ спасибо будем разбирать
SANRIZE вне форума  
 
Непрочитано 15.07.2010, 12:17
#8
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Цитата из хелпа по GetBulge в VBA (она же - группа 42):
The bulge is the tangent of 1/4 of the included angle for the arc between the selected vertex and the next vertex in the polyline's vertex list.
Проверил калькулятором - совпадает со значением группы 42 до 2-го знака.

Проверил Y/X из рисунка Дима_ - совпадает до 5-го знака со значением группы 42, более точных вычислений не делал.

Дима_, ты гений! Откуда узнал, что в группе 42 хранится именно отношение высоты дуги к половине ее ширины? (поправь, кстати - не X/Y, а Y/X)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 15.07.2010, 15:53
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Ax3 Посмотреть сообщение
Проверил Y/X из рисунка Дима_ - совпадает до 5-го знака со значением группы 42, более точных вычислений не делал.
Совпадет и дальше, т.к. отношение y/x есть тангенс угла, который в 4 раза меньше центрального угла дуги. Школьная геометрия
Дима_, респект!
Do$ вне форума  
 
Непрочитано 15.07.2010, 17:22
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Спасибо конечно, только разница в 1,5 года меня немного "недоумляет".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 15.07.2010, 22:11
#11
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Да, действительно
Пров. соотн. h;(w;2) и tg(α;4)_v1.00(c)Danilov_AS_2010.07.15.dwg
Я просто брал округленное значение угла, поэтому неточными получались результаты вычисления тангенса.
Цитата:
... разница в 1,5 года...
Дима_, последствия хороших дел настигают их автора не всегда сразу :-)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 16.07.2010, 00:32
1 | #12
VVA

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


Сайт Афралиспа был немного переделан. Актуальная ссылка на геометрию расчета кривизны Polyline Bulges (В Opere почему-то не виден текст)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.07.2010, 20:03
#13
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


>>VVA
Спасибо. Дельная ссылка
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 16.07.2010, 23:46
#14
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Чтобы текст в афралиспе был виден, его просто нужно выделить мышой или Crtl+A
alex8888 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > POLYLINE скругление(кривизна)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присоединение(join) polyline к spline bOP181 AutoCAD 6 19.05.2008 15:23
было LWPOLYLINE, стало POLYLINE, как вернуть? vosh Программирование 4 08.04.2008 15:42
как построить polyline spline? skalder AutoCAD 3 14.07.2007 18:56
AcadSelectionSet Polyline sergeytr Программирование 2 04.02.2007 13:49
Polyline and 2D Polyline zenon AutoCAD 4 31.01.2007 18:22