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

Класс MbItem объявлен в файле model_item.h.

Объект геометрической модели MbItem является наследником классов MbSpaceItem, MbTransactions и MbAttributeContainer. Геометрическое ядро C3D оперирует объектами геометрической модели, которые приведены на рис. 1:

../../../../_images/O.8.1.1.png

Рис. 1

Журнал построения MbTransactions содержит данные, необходимые для построения объекта и позволяет повторить построение объекта с отредактированными параметрами. Контейнер атрибутов MbAttrContainer наделяет объекты геометрической модели атрибутами. Таким образом, все объекты геометрической модели кроме своих специфических данных содержат следующие данные:

size_t m_countRegistrable – количество регистрирований объекта при записи и чтении,

ptrdiff_t useCount – количество использований объекта другими объектами,

std::vector< MbCreator * > transactions – упорядоченное множество строителей объекта,

std::multimap< int, MbAttribute * > attributes – множество атрибутов объекта.

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

MbSolid – твёрдое тело,

MbWireFrame – проволочный каркас,

MbPointFrame – точечный каркас,

MbMesh – полигональный объект,

MbInstance – вставка объекта геометрической модели,

MbAssembly – сборочная единица объектов геометрической модели,

MbAssistingItem – вспомогательный объект,

MbSpaceInstanсe – вставка трёхмерного объекта,

MbPlaneInstanсe – вставка множества двумерных объектов.

MbPolymesh – полигональный объект с топологией.

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

Метод

bool RebuildItem( MbeCopyMode sameShell, RPArray< MbSpaceItem > * items )

выполняет построение объекта заново по журналу построения. Этот метод вызывается после редактирования внутренних данных объекта.

Метод

MbItem * CreateMesh( MbeStepData data, bool wire, bool grid, MbRegDuplicate * iReg )

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

Метод

bool AddYourMesh( MbeStepData data, bool wire, bool grid, MbItem & mesh )

добавляет полигональную копию объекта в объект mesh.

Метод

bool NearestMesh( MbeSpaceType sType, MbeTopologyType tType, MbePlaneType pType, const MbAxis3D & axis, double maxDistance, double & t, double & dMin, MbItem & **find*, SimpleName & findName, MbRefItem & **element*, SimpleName & elementName, MbPath & path, MbMatrix3D & from )

выполняет поиск ближайшего полигонального объекта find, его элемента element, их имён findName и elementName, пути в структуре сборочной единицы path и матрицы преобразования в глобальную систему координат from.

Объекты геометрической модели перегружают такие методы трёхмерного объекта как:

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

void Move( const MbVector3D & v, MbRegTransform * iReg = NULL ),

void Rotate( const MbAxis3D & axis, double angle, MbRegTransform * iReg = NULL ),

void Transform( const MbMatrix3D & m, MbRegTransform * iReg = NULL ),

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

MbSpaceItem & Duplicate( MbRegDuplicate * iReg = NULL ),

bool IsSame( const MbSpaceItem & item ),

bool IsSimilar( const MbSpaceItem & item ),

bool SetEqual( const MbSpaceItem & item ),

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

MbeSpaceType IsA(),

MbeSpaceType Type(),

MbeSpaceType Family(),

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

MbProperty & CreateProperty( MbePrompt name ),

GetProperties( MbProperties & properties ),

SetProperties( MbProperties & properties ).