Объект геометрической модели MbItem
Класс MbItem объявлен в файле model_item.h.
Объект геометрической модели MbItem является наследником классов MbSpaceItem, MbTransactions и MbAttributeContainer. Геометрическое ядро C3D оперирует объектами геометрической модели, которые приведены на рис. 1:
Рис. 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 ).