Тема: Собственная 3D полилиния

Всем привет.
Проблема следующая:
Нужно создать объект с поведением, как и в  AcDb3dPolyline
1. Главное требование - координаты вершин должны быть 3D
2. Дополнительные требования: нужны ф-и intersectWidth, getClosestPoint, getDistAtPoint и т.п.
3. Нужно переопределить: рисование + сохранение дополнительных данных + расширенное редактирование
Но OARX предупреждает:

Warning. Do not derive from this class. Attempting to do so will cause your application to halt AutoCAD

Почему обещаются такие катастрофические последствия?
Конечно, можно бы агрегировать AcDb3dPolyline в своем классе (например, порожденном от AcDbEntity) но тогда работа с объектом посредством окна свойств будет утеряна, да и имитировать поведение придется.
Есть еще AcGePolyline3d но его можно только агрегировать или каждый раз создавать по новому, кроме того ф-и intersectWidth у него попросту нет (потому что быть не может, GE все таки)
Что можете посоветовать в такой ситуации???

Re: Собственная 3D полилиния

AcDb3dPolyline - это сложный примитив. То есть в базе чертежа кроме основного примитива содержится еще примитивы вершин (AcDb3dPolylineVertex) и примитив конца последовательности вершин (AcDbSequenceEnd). IMHO в этом и заключается проблема.
Поэтому мне кажется, что для создания собственного примитива тебе придется создавать класс производный от AcDbEntity (или AcDbCurve) с полным функционалом. И написать реализацию intersectWith - это не самая сложная из задач, которые будут стоять перед тобой.
Класс AcGePolyline3d тебе не подходит вообще (!!!), т.к. он Represents a piecewise linear spline entity in 3D space., а это совершенно не то, что тебе нужно. И вообще в GE нет класса, который бы соответствовал AcDb3dPolyline. Ближе всего - массив отрезков (AcGeLineSeg3d) Кстати, они то как раз имеют метод intersectWith).
Но попотеть тебе придется прилично... Удачи!

Re: Собственная 3D полилиния

Hallo !
>> работа с объектом посредством окна свойств будет утеряна
это можно реализовать через СOM.
Если унаследуешь от AcDbEntity - потратишь время, но избавишь себя от ограничений и лишних багов, о которых мануал не зря оповещает.
Успехов !

Re: Собственная 3D полилиния

Хотелось бы создать новый объект "трубопровод" обладающий свойствами 3Д полилинии и солидов. Свойства 3Д полилинии нужны для удобного редактирования трубопровода. Свойства солида нужны для объемного отображения. Что то подобное видел в программе AVEVA PDMS, там при перемещении одного из отводов (поворотов трубы) может перемещаться все  объекты находящиеся на прямом участке трубы. Интересен момент перемещения одного отвода вокруг другого, т.е. аналогия вращения. В автокаде для данного перемещения нужно осуществить очень много операций

Re: Собственная 3D полилиния

> Will
Так что же мешает?

Re: Собственная 3D полилиния

Отсутствие познаний в данной области. Пока думаю с чего конкретно начинать и ищу подобные примеры. Ничего особенно утешительного пока что не нашел. Единственное что понял из форума - это то, что данную вещь лучше программировать в ObjectARX. Но насколько я понимаю, по этому направлению тяжелее всего найти и примеры и людей которые могут что-то посоветовать.
Вы можете посоветовать с чего лучше начать? Извините за столь неконкретный вопрос, просто хотелось бы знать, как допустим Вы представляете себе как и с чего лучше начать.

Re: Собственная 3D полилиния

Это можно сделать только на на ObjectARX. А с чего начать можно почитать здесь.