Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Федя от 22-02-2017, 14:34:00

Название: Polyline bulge
Отправлено: Федя от 22-02-2017, 14:34:00
 у ломаной Autodesk.AutoCAD.Geometry.Polyline если я не ошибаюсь, есть свойство GetBulgeAt(int n), где n - вершины ломаной включая начальную и конечную точку, для прямого участка Bulge=0, для криволинейного сегмента Bulge = tg(fi), fi - угол между направлением с текущей вершины на середину кривой и с текущей вершины на следующую. Вопрос в следующем, значение чего возвращает метод для последней вершины?
Название: Re: Polyline bulge
Отправлено: Дмитрий Загорулькин от 22-02-2017, 15:00:17
Если дальше продолжать строить полилинию, или замыкать - то будет браться это значение из последней вершины. Если полилиния незамкнута, то значение из последней вершины не используется.
Название: Re: Polyline bulge
Отправлено: Федя от 22-02-2017, 17:37:34
да оно и по смыслу не нужно, но если число есть, значит есть какой-то в нём смысл, лучше бы тогда исключение получить
Название: Re: Polyline bulge
Отправлено: Александр Ривилис от 22-02-2017, 19:57:12
да оно и по смыслу не нужно, но если число есть, значит есть какой-то в нём смысл, лучше бы тогда исключение получить
Зачем получать исключение? Во всех случаях, когда ты не видишь смысла должно возникать исключение?  :o
Допустим я меняю у полилинии свойство Closed на true. По твоей логике у последней вершины может быть только Bulge == 0.0. Вывод -  получить замкнутую по дуге полилинию в твоём варианте невозможно.
Название: Re: Polyline bulge
Отправлено: Александр Ривилис от 22-02-2017, 20:44:30
Федя
В своём вопросе ты сделал сразу несколько ошибок:
1. Нет в AutoCAD ломаных, а есть полилинии.
2. Нет класса Autodesk.AutoCAD.Geometry.Polyline, а есть класс Autodesk.AutoCAD.DatabaseServices.Polyline
3. GetBulgeAt(int n) не свойство, а метод
4. Bulge - это тангенс четверти ( 1/4 ) угла дугового сегмента.
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 17:11:42
не спорю, я не программист, всё по памяти, не очень хорошей.
И всё таки, если сегмента нет, есть число, угла нет
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 17:15:23
и хотел спросить что такое четверть дуги, это длина? или угол?
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 17:19:55
я заметил, что две одинаковые ломаные имеют разные числа, причём это значение сохраняется при перемещении и вращении примитива.
кстати я не писал что GetBulgeAt() свойство, Свойство Bulge есть у CircularArcSegmet после взятия методом GetArcSegment, да и каждое свойство это метод
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 17:40:45
то есть это число служит для того чтобы работало замыкание? Оно случайное? Я когда замыкаю дуговым сегментом ломаная действительно замыкается какой-то дугой. В любом случае спасибо, про замыкание я не подумал, потыкаю немножко.
Название: Re: Polyline bulge
Отправлено: Александр Ривилис от 24-02-2017, 17:57:08
и хотел спросить что такое четверть дуги, это длина? или угол?
Угол.
Название: Re: Polyline bulge
Отправлено: Дмитрий Загорулькин от 24-02-2017, 21:45:37
4. Bulge - это тангенс четверти ( 1/4 ) угла дугового сегмента.
Вы знаете, я тоже хотел об этом написать. Но, как оказалось, это:
Bulge = tg(fi), fi - угол между направлением с текущей вершины на середину кривой и с текущей вершины на следующую
геометрически - то же самое значение.  :)
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 22:47:41
кстати не нашёл русскоязычного определения этого понятия
Название: Re: Polyline bulge
Отправлено: Федя от 24-02-2017, 23:05:33
существует какая-либо документация по методам и свойствам polyline, так как некоторые методы не очевидны?
Например свойство ReferenceVector у объекта ArcSegment, может я с ним код свой могу упростить!
Название: Re: Polyline bulge
Отправлено: Александр Ривилис от 24-02-2017, 23:08:35
кстати не нашёл русскоязычного определения этого понятия
Ты про Bulge? По-русски это кривизна.
существует какая-либо документация по методам и свойствам polyline, так как некоторые методы не очевидны?
Например свойство ReferenceVector у объекта ArcSegment, может я с ним код свой могу упростить или сообщество!
1. Один вопрос - одна тема. Это правило форума.
2. Что за объект ArcSegment? Ты имеешь в виду CircularArc3d?
3. Всё существующая документация входит в состав ObjectARX SDK
Название: Re: Polyline bulge
Отправлено: Федя от 27-02-2017, 08:34:35
да  CircularArc3d
Термин кривизна, у нас не очень популяризован, хотя должно быть относится к элементарным, и по формулам - рассуждения, в наших, Российских учебниках избегают его употребление, может я куда-то не туда смотрю
Название: Re: Polyline bulge
Отправлено: Федя от 27-02-2017, 09:12:04
Autodesk ObjectARX SDK for AutoCAD это именно то что нужно