Трёхмерный геометрический объект MbSpaceItem

Класс MbSpaceItem объявлен в файле space_item.h.

Класс MbSpaceItem является наследником классов MbRefItem, TapeBase и родительским классом для трёхмерных геометрических объектов.

К трёхмерным геометрическим объектам ядра C3D относятся: точка, кривые, поверхности, вспомогательные объекты и объекты геометрической модели:

../../../../_images/O.2.2.1.png

Наследниками класса MbSpaceItem являются следующие семейства трёхмерных геометрических объектов:

MbPoint3D – точка;

MbCurve3D – кривая;

MbSurface – поверхность;

MbLegend – вспомогательный геометрический объект;

MbItem – объект геометрической модели.

Основными методами трёхмерных геометрических объектов являются:

virtual void Move( const MbVector3D &     to,
                         MbRegTransform * iReg = nullptr );

virtual void Rotate( const MbAxis3D &       axis,
                           double           angle,
                           MbRegTransform * iReg = nullptr );

virtual void Transform( const MbMatrix3D &     matr,
                              MbRegTransform * iReg = nullptr );

обслуживающие преобразование геометрического объекта. При преобразовании используется регистратор MbRegTransform для предотвращения многократного преобразования вложенных объектов. Если объект содержит указатели или ссылки на другие объекты, то вложенные объекты так же трансформируются. Регистратор необходимо использовать, если надо последовательно преобразовать несколько взаимосвязанных объектов, связь которых обусловлена наличием в них указателей или ссылок на общие объекты. При преобразовании без регистратора можно получить многократное преобразование общих вложенных объектов.

Кроме того, все геометрические объекты имеют методы, обеспечивающие копирование, проверку на совпадение, проверку на возможность сделать совпадающими и делающие объекты совпадающими:

// Создать копию объекта с использованием регистратора
MbSpaceItem & Duplicate( MbRegDuplicate * iReg = nullptr );

// Определить, являются ли объекты равными
virtual bool IsSame( const MbSpaceItem & other,
                           double        accuracy = LENGTH_EPSILON );

// Определить, являются ли объекты подобными
virtual bool IsSimilar( const MbSpaceItem & item );

// Сделать объекты равными, если они подобны
virtual bool SetEqual( const MbSpaceItem & item );

При создании копии используется регистратор MbRegDuplicate для предотвращения многократного копирования вложенных объектов. Если объект содержит указатели или ссылки на другие объекты, то вложенные объекты так же копируются. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов, связь которых обусловлена наличием в них указателей или ссылок на общие объекты. При копировании без регистратора можно получить набор копий одного и того же вложенного объекта вместо одной его копии.

Для идентификации типа геометрические объекты снабжены методами

MbeSpaceType IsA();
MbeSpaceType Type();
MbeSpaceType Family();

возвращающими тип из перечисления трёхмерных геометрических объектов.

Методы

MbProperty & CreateProperty( MbePrompt name );

void GetProperties( MbProperties & properties );

void SetProperties( MbProperties & properties );

обеспечивают выдачу и редактирование внутренних данных геометрических объектов.

Метод GetProperties() добавляет к множеству properties данные объекта в виде наследников класса MbProperty.

Метод CalculateWire( double sag, MbMesh & mesh ) строит полигональную копию геометрического объекта, которая используется для визуализации.