Двумерный геометрический объект MbPlaneItem

Класс MbPlaneItem объявлен в файле plane_item.h.

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

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

../../../../_images/O.2.4.1.png

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

MbCurve – двумерная кривая;

MbMultiline – мультилиния;

MbRegion – регион.

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

virtual void Move( const MbVector &       to,
                         MbRegTransform * iReg       = nullptr,
                   const MbSurface *      newSurface = nullptr );

virtual void Rotate( const MbCartPoint &     pnt,
                     const MbDirection &     angle,
                           MbRegTransform *  iReg       = nullptr,
                     const MbSurface *       newSurface = nullptr ) = 0;

virtual void Transform( const MbMatrix &       matr,
                              MbRegTransform * iReg       = nullptr,
                        const MbSurface *      newSurface = nullptr );

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

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

MbPlaneItem & Duplicate( MbRegDuplicate * iReg = nullptr );

bool IsSame( const MbPlaneItem & item,
                   double        accuracy = LENGTH_EPSILON );

bool IsSimilar( const MbPlaneItem & item );

bool SetEqual( const MbPlaneItem & item );

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

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

MbePlaneType IsA();

MbePlaneType Type();

MbePlaneType Family();

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

Методы

MbProperty & CreateProperty( MbePrompt name );

void GetProperties( MbProperties & properties );

void SetProperties( MbProperties & properties );

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