Твёрдое тело MbSolid
Класс MbSolid объявлен в файле solid.h.
Твёрдое тело или просто тело MbSolid является наследником класса MbItem и описывается множеством граней MbFaceShell outer и типом связности multiState.
Тело представляет собой набор граней, стыкующихся друг с другом по рёбрам и описывающих поверхность моделируемого объекта. Тело может описывать одно или несколько связных множеств точек. Тип связности multiState сообщает о том, что тело описывает одно связное множество точек или что тело описывает несколько связных множеств точек и может быть разбито на несколько тел.
Множество граней тела outer в зависимости от наличия краевых рёбер может описывать два принципиально разных множества точек. Если множество граней не имеет края, то тело описывает множество точек, располагающихся на поверхности граней и с внутренней стороны от этих граней. Такое тело называется замкнутым и описывается замкнутой оболочкой. Замкнутое тело приведено на рис. 1:
Рис. 1
Если множество граней тела имеет край или края, то тело описывает множество точек, располагающихся на поверхности граней и только. Такое тело называется незамкнутым и описывается незамкнутой оболочкой. Незамкнутое тело приведено на рис. 2:
Рис. 2
В большинстве случаев замкнутое тело описывается одним связным множеством граней – одной оболочкой. Если у замкнутого тела есть внутренние полости, тело описывается несколькими связными наборами граней. На рис. 3 приведено замкнутое тело, которое описывается двумя замкнутыми оболочками, одной внешней, а другой внутренней, располагающейся внутри внешней оболочки.
Рис. 3
Чтобы увидеть полость тела, тело выполнено полупрозрачным.
Над телами можно выполнять различные операции – совокупность действий, которая приводит к образованию тела иной формы, например булевы операции. Результат вычитания двух замкнутых тел приведён на рис. 4:
Рис. 4
Результат операции над замкнутым и незамкнутым телом принципиально отличается, так как действия выполняются над разными множествами точек. Результат вычитания тела из незамкнутого тела приведён на рис. 5:
Рис. 5
Тело может быть многосвязным, то есть может состоять из нескольких отдельных частей. В этом случае multiState принимает значение ms_Multiple. Двусвязное тело, описываемое двумя замкнутыми оболочками, приведено на рис. 6.
Рис. 6
Такое тело может быть разделено на два односвязных замкнутых тела методом DetachParts(). Тело на рис. 6 выполнено полупрозрачным. Двусвязное тело, описываемое двумя незамкнутыми оболочками, приведено на рис. 7:
Рис. 7
Такое тело может быть разделено на два односвязных незамкнутых тела.
Тела создаются методами геометрического ядра C3D. Тела простой формы создаются по точкам, кривым и поверхностям. С помощью операций из тел простой формы можно получить более сложные тела. Редактировать исходные тела и создавать подобные тела можно путём изменения параметров журнала построения MbTransactions или путём непосредственной модификации элементов уже построенных тел. Незамкнутые тела используются в поверхностном моделировании. Незамкнутое тело позволяет сосредоточить усилия на сложных формах моделируемого объекта.