¬аше окно в мир —јѕ–
 
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

16 августа 2018

ѕредставление 3D-моделей в DWG

јлександр —пиваков, математик-программист C3D Labs

јлександр —пиваков

—тать€ подготовлена к конференции разработчиков јль€нса по открытому проектированию (Open Design Alliance, ODA), котора€ пройдет 10-11 сент€бр€ в ѕраге. Ќа конференции компани€ C3D Labs, партнер ODA, проведет собственную сессию дл€ заказчиков и партнеров.

 огда мы говорим о 3D-модели в математическом смысле, то обычно имеем в виду граничное представление твЄрдых тел. “вЄрдых Ц в том смысле, что форму их можно считать посто€нной; материал, из которого они изготовлены, считаетс€ однородным.

ѕройдЄмс€ предельно кратко по граничному представлению в стиле јвраам родил »саака, »саак родил »акова. я буду вводить некие пон€ти€, не дава€ им строгих определений, ограничива€сь иллюстраци€ми. Ѕолее точное описание можно найти в специализированной литературе.

¬ граничном представлении тел предметом описани€ €вл€етс€ граница: некий объект, по свойствам очень похожий на поверхность. √раница тела представл€етс€ в виде набора граней.

C3D Teigha

√рань Ц фрагмент поверхности, ориентированный так, как надо, и св€занный с другими гран€ми строго определЄнным образом. —пособ св€зи заключаетс€ в следующем: граница каждой грани разбиваетс€ на рЄбра, и переход с одной грани на другую осуществл€етс€, как минимум, по одному из рЄбер. Ќа каждой грани рЄбра группируютс€ в замкнутые ориентированные цепочки, которые называютс€ циклами. –Єбра в циклах выстраиваютс€ таким образом, чтобы обеспечить правильное направление обхода грани: грань должна быть слева в случае внешнего цикла и справа в случае внутреннего. –Єбра, помимо того что соедин€ют две грани, соедин€ют две вершины: собственно, проход по цепочке ориентированных рЄбер от вершины к вершине и определ€ет цикл: какую бы его вершину мы ни вз€ли в качестве начала, в конце будет она же.
C3D Teigha

ќболочки, грани, циклы, рЄбра и вершины, иными словами, объекты, с помощью которых описываетс€ взаимное расположение элементов геометрии, называютс€ топологическими объектами.

¬р€д ли найдЄтс€ конструктор, который вручную станет описывать в €вном виде геометрию своего издели€, все взаимосв€зи между гран€ми и вершинами. “ем более он не об€зан знать об особенност€х хранени€ модели в файлах, с которыми работает —јѕ–.

Ќапример, в файлах DWG/DXF, работа с которыми есть хлеб Open Design Alliance (ODA), трЄхмерные данные хран€тс€ в разделе ModelSpace. «а хранение тел в граничном представлении отвечают объекты типа Db3dSolid. ¬ них содержитс€ описание объЄмных тел в формате SAT, что расшифровываетс€ как save as text; формат разработан дл€ обмена данными с геометрическим €дром ACIS компании Spatial.

—овременные —јѕ– предоставл€ют проектировщикам богатый набор инструментов, в основе которых лежит сравнительно небольшое число операций. »х правильна€ комбинаци€ позвол€ет формировать издели€ сложной формы.  оманды консоли или сложный графический интерфейс делает удобным обращение к функци€м модул€ —јѕ–, именуемого геометрическим €дром или моделером.

»менно тот небольшой набор операций, который моделер или платформа предоставл€ет разработчикам конечно-пользовательских приложений, и будет в фокусе внимани€.

—оздание 3D-моделей с помощью булевых операций в Teigha

 онструктор, проектиру€ изделие, не описывает его форму с €вным использованием того математического аппарата, который лежит в основе представлени€ моделей, записанных в файлах формата DWG. ¬ свою очередь, пользовательский интерфейс приложени€ в соответствии с логикой, заложенной разработчиками —јѕ–, обращаетс€ к функци€м моделера.

ќдним из интерфейсов, который в платформе Teigha отвечает за 3D-моделирование, €вл€етс€ интерфейс OdDb3dSolid. Ќабор методов, с помощью которых осуществл€етс€ моделирование, можно разделить на две большие группы: булевы операции над телами, операции над топологическими элементами и методы создани€ тел.

Ѕулевы операции
Ѕулевы операции над телами Ц очень мощный инструмент моделировани€, нагл€дный, интуитивно пон€тный и применимый дл€ многих практических задач. ¬месте с тем соответствующий раздел API платформы Teigha €вл€етс€ наиболее лаконичным, он представлен всего одним методом:

OdResult OdDb3dSolid::booleanOper(OdDb::BoolOperType operation, OdDb3dSolid* solid);

ѕоследний аргумент операции определ€ет еЄ тип: объединение, пересечение или вычитание.

namespace OdDb
{
enum BoolOperType
{
kBoolUnite = 0,
kBoolIntersect = 1,
kBoolSubtract = 2
};
}

C3D Teigha

≈сли каким-то образом решЄн вопрос с тем, что может €вл€тьс€ аргументом булевых операций, дерево булевых операций €вл€етс€ самодостаточным дл€ описани€ формы тел.

Ќа этом принципе основан целый раздел моделировани€, который называетс€ конструктивной твердотельной геометрией (CSG). —уть этого подхода состоит в том, что листь€ми графа построени€ €вл€ютс€ элементарные тела: параллелепипеды, цилиндры, шары и другие.

C3D Teigha

—оздание операндов булевых операций
ƒл€ создани€ элементарных тел Teigha предоставл€ет исчерпывающий набор методов:

void createBox( double xLen, double yLen, double zLen );

void createFrustum( double height, double xRadius, double yRadius, double topXRadius );

void createSphere( double radius );

void createWedge( double xLen, double yLen, double zLen );

void createTorus( double majorRadius, double minorRadius );

¬се элементарные тела создаютс€ в глобальной системе координат. ѕозиционирование в пространстве тел, над которыми требуетс€ совершить булеву операцию, осуществл€етс€ с помощью операций параллельного переноса, поворота вокруг осей и масштабировани€. ѕараметры операций на практике представл€ютс€ в виде матрицы следующего вида: квадратна€ матрица поворота размера 3 как бы достраиваетс€ до матрицы размера 4: в дополнительных столбце и строке хран€тс€ вектор смещени€ и коэффициенты масштабировани€ вдоль осей координат.

locMatr = OdGeMatrix3d::rotation( OdaPI2, OdGeVector3d::kXAxis ) * OdGeMatrix3d::translation( OdGeVector3d::kXAxis * 100.0 );
///...
pSolid->transformBy(locMatr);

»ногда подход CSG трактуетс€ расширенно: под ним подразумеваетс€ моделирование тел с использованием булевых операций над классом тел, более широким, чем элементарные. ¬ число операндов операций, как правило, включаютс€ тела заметани€. “ело заметани€ строитс€ по двум кривым: заметаемый контур и траектори€ заметани€. —реди траекторий заметани€ особое место занимают отрезок и дуга окружности, по которым стро€тс€ тела выдавливани€ и вращени€ соответственно. ¬ Teigha дл€ создани€ тел заметани€ предусмотрены следующие методы:

OdResult extrude(const OdDbRegion* region, double height, double taper, bool isSolid = true);

OdResult revolve(const OdDbRegion* pRegion, const OdGePoint3d& axisPoint, const OdGeVector3d& axisDir, double angleOfRevolution);

OdResult extrudeAlongPath(const OdDbRegion* region, const OdDbCurve* path, double taperAngle = 0.0, bool isSolid = true);

я обращаю внимание на такую интересную особенность API, как наличие параметра конусности, который отвечает за плавное масштабирование заметаемого контура вдоль траектории выдавливани€.

C3D Teigha

C3D Teigha

C3D Teigha

≈сть и другие способы создани€ тел, но даже без их упоминани€, на мой взгл€д, видна мощь Ђрасширенногої CSG. Ёто впечатл€ющий инструмент дл€ создани€ тел сложной формы. Ѕолее того, формализм конструктивной геометрии может быть положен в основу хранени€ модели в том виде, в каком она создавалась конструктором. ¬ св€зи с этим может возникнуть вопрос о преимуществе граничного представлени€ перед конструктивным. ¬ этом случае будет уместно упом€нуть о таком важном аспекте 3D-моделировани€, как возможность модифицировать форму тела контролируемым образом.

Ћокальные модификации 3D-моделей с помощью Teigha

ќписание тела с помощью конструктивной твердотельной геометрии (CSG) сопр€жено со значительными сложност€ми в тех случа€х, когда возникает необходимость модифицировать форму тела. ј необходимость подобного рода €вл€етс€ скорее правилом, чем исключением, поскольку проектирование изделий носит итеративный характер. —писок оснований дл€ доработки модели весьма обширен: это могут быть результаты каких-либо расчЄтов или же испытаний прототипа. ¬ ходе эксплуатации могут накопитьс€ замечани€ и пожелани€ по совершенствованию конструкции. ѕереход на более совершенную технологию изготовлени€ также может оказать вли€ние на форму заготовки. ¬ общем, возможность изменить форму тела должна быть заложена в функциональность моделера и конечно-пользовательского приложени€.

¬ контексте решени€ данной задачи слабым местом конструктивной геометрии оказываетс€ необходимость учитывать взаимозависимость всех характеристик всех исходных операндов булевых операций или, по крайней мере, их части. Ёто особа€ задача; есть коммерческие продукты дл€ еЄ решени€, которые называютс€ параметрическими €драми, но они, как правило, используютс€ дл€ решени€ других конструкторских задач.  роме того, не исключено, что нужно учитывать не только взаимосв€зь параметров исходных тел, но и сам их набор.

ќперации скруглени€, фаски, создани€ тонкостенного тела
ѕримером задачи, когда нужно согласованным образом мен€ть характеристики многих тел, €вл€етс€ операци€ скруглени€ углов параллелепипеда.
C3D Teigha

ќперацию скруглени€ можно назвать локальной в том смысле, что модификаци€ тела происходит вблизи указанных рЄбер.   локальным операци€м также можно отнести создание фаски и тонкостенного тела.

ќпераци€ фаски похожа на операцию скруглени€ с тем отличием, что поверхность между гран€ми, которые примыкают к рЄбрам, сопр€гаетс€ не по касательной, а под заданным углом.

C3D Teigha

ќпераци€ создани€ тонкостенного тела базируетс€ не на рЄбрах, а на грани. »з оболочки изымаетс€ грань, оставшиес€ смещаютс€ на заданное рассто€ние, а затем смещЄнные грани Ђподшиваютс€ї к тем, относительно которых они были смещены.
C3D Teigha

¬ Teigha дл€ осуществлени€ локальных модификаций предусмотрены следующие методы:

OdResult filletEdges( const OdArray& edgeSubentIds,
const OdGeDoubleArray& radius,
const OdGeDoubleArray& startSetback,
const OdGeDoubleArray& endSetback );

OdResult chamferEdges( const OdArray& edgeSubentIds,
const OdDbSubentId& baseFaceSubentId,
double baseDist,
double otherDist );

OdResult shellBody( const OdArray& faceSubentIds,
double offsetDistance );

Ёто неполный список операций геометрического моделировани€.

 ак в Teigha реализованы операции геометрического моделировани€

¬ самой платформе Teigha реализован только функционал создани€ элементарных тел. ¬се прочие операции реализованы Ђна сторонеї и подключаютс€ к платформе через модули-адаптеры.

Ќапомним, что моделирование как таковое не €вл€етс€ основной задачей платформы: она предназначена дл€ работы с файлом формата DWG. ¬ этом отношении роль модул€-адаптера такова: получить SAT-поток из файла и сформировать исходное тело, выполнить операцию с заданными параметрами и сформировать SAT-поток результата.

ƒо недавнего времени операции трЄхмерного моделировани€ в Teigha могли быть реализованы только с использованием геометрического €дра компании Spatial. ћодуль, который обеспечивает сопр€жение платформы Teigha с геометрическим €дром, поддерживаетс€ разработчиками платформы, но моделер ACIS необходимо приобретать каждой компании самосто€тельно.

¬ насто€щее врем€ альтернативным решением €вл€етс€ использование св€зки моделера C3D Modeler и модул€ обмена C3D Converter. Ќапомним, что формат SAT не €вл€етс€ Ђроднымї дл€ геометрического €дра C3D, в отличие от ACIS. Ётим и обусловлена необходимость использовани€ конвертера. ѕроцесс преобразовани€ исходных данных и результатов моделировани€ скрыт от пользовател€ платформы Teigha: дл€ того чтобы нетривиальные операции моделировани€ были доступны, к приложению достаточно подключить модуль C3D Modeler дл€ Teigha. Ќеобходимые библиотеки C3D Toolkit также могут быть загружены с сервера Open Design Alliance, а запрос лицензионного ключа осуществл€етс€ в один клик в личном кабинете. ѕроста€ процедура получени€ доступа к функционалу трЄхмерного моделировани€ при использовании Teigha рассматриваетс€ командой C3D как преимущество перед €дром ACIS.

ѕрактические примеры

ќсновной идеей дл€ выбора практических примеров €вл€етс€ возможность воспроизвести историю построени€ модели, спроектированной в какой-либо из —јѕ–. —ложностей было две.

ѕерва€ Ц найти модель достаточно старую, при построении которой не примен€лись бы операции, которых нет в API Teigha. Ќу, или хот€ бы чтобы таких операций было минимальное число. Ћогично ожидать, что разработчики —јѕ–, выпуска€ новую версию своего продукта, будут прикладывать демонстрационные примеры, которые содержат примеры реализации новой функциональности, новых операций. Ќаиболее €ркий пример, с которым мы столкнулись при подготовке примеров, Ц операци€ выдавливани€ до объекта.

¬тора€ сложность уже чисто техническа€: как организовать процесс построени€ так, чтобы получить красивую иллюстрацию Ђбыло Ч сталої дл€ каждой операции. ќсновное противоречие, которое здесь приходитс€ преодолевать, заключаетс€ в том, что ориентаци€ модели и еЄ масштаб не €вл€ютс€ стандартными и должны совпадать до и после каждой операции. ¬ то же врем€ селектирование операндов булевых операций или, например, рЄбер, требует изменени€ масштаба или вращени€ модели.  стати, не исключено, что эта сложность преувеличена и возникла только из-за неполного знани€ возможностей тестового приложени€ платформы Teigha.

 ак бы то ни было, истори€ построени€ моделей была воплощена в двух демонстрационно-тестовых примерах.

C3D Teigha

 роме операции непосредственно моделировани€, дл€ построени€ моделей был реализован функционал перебора топологических объектов, а также получени€ геометрии с них. ¬ дальнейшем по мере развити€ системы тестировани€ и практического применени€ этот функционал был усовершенствован.
ќ платформе TeighaЃ
ѕлатформа TeighaЃ предоставл€ет разработчикам программного обеспечени€ инструментарий дл€ создани€ различных инженерных приложений, включа€ полноценные CAD-системы, программы дл€ автоматизации и визуализации общего назначени€, а также решени€ по управлению доступом к пользовательским данным и их редактированию.

TeighaЃ поддерживает работу с файлами .dwg, .dgn, .prc, .rvt, .rfa и .pdf на уровне программного обеспечени€, а также обеспечивает импорт и экспорт данных из многих других форматов. –ешение доступно дл€ использовани€ на всех основных настольных, серверных и мобильных платформах. ѕоддерживаютс€ €зыки программировани€: C++, .NET и Java.

–азработку TeighaЃ ведет јль€нс по открытому проектированию / Open Design Alliance.

TeighaЃ €вл€етс€ торговой маркой Open Design Alliance. ¬се другие торговые марки €вл€ютс€ собственностью их правообладателей.


„итайте также:


¬акансии:

јктуальное обсуждение

RSS-лента комментариев

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: “€желые —јѕ–ы идут на рекорд
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

–оссийский федеральный €дерный центр готов перевести на —јѕ– EPLAN [...] — јлександр ¬ахрамеев, ¬алентина ќленич (15 сент€бр€ 2018)
isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2018 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.