Manifold Geometry // Многообразная Геометрия

Знакомство с Open CASCADE Technology (OCCT)

/ Просмотров: 3460

OCCT = Open CASCADE Technology = OpenCascade

Сегодня мы начинаем серию заметок о ядре геометрического моделирования OCCT (Open CASCADE Technology). Эта серия имеет начало, но не будет иметь выраженного конца, так как тема сия бездонна.

Все CAD-системы (SolidWorks, CATIA, КОМПАС-3D, etc.) базируются на некотором математическом фундаменте. Работая в них, инженер не задумывается о том, насколько вычислительно и алгоритмически сложна доступная ему геометрическая функциональность. Разработчики CAD-систем быстро поняли, что эта функциональность имеет самостоятельную ценность, даже не будучи привязанной ни к какому конкретному приложению.

CAD-система и ее геометрическое ядро

Геометрических ядер мало. Самыми популярными являются Parasolid, ACIS, а также SMLib. Есть и отечественные разработки, например, C3D (компания АСКОН) и RGK (российское геометрическое ядро). В один ряд с гигантами можно поставить и OpenCascade. В отличие от собратьев, OpenCascade — это свободно распространяемое ПО с открытым исходным кодом.

Open CASCADE Technology

Изначально библиотека OpenCascade вовсе не планировалась как открытый продукт. Она представляла собой математическое обеспечение CAD-системы EUCLID нового поколения. Это была вполне коммерческая система, вполне мирового уровня. Однако EUCLID-ова геометрия оказалась в сложном положении. Гиганту DS, поглотившему конкурента, она оказалась не нужна. Тогда и был сделан поистине королевский подарок всему инженерному сообществу: плод многолетнего труда многих математиков оказался в открытом доступе. Примерно так когда-то закончил свое существование браузер Netscape Navigator. Как Феникс, он возродился в проекте Mozilla и стал чрезвычайно успешным. Ждет ли успех OCCT?

Геометрическое моделирование — это не один алгоритм, и даже не комплекс алгоритмов. Это увлекательная инженерная дисциплина, находящаяся на рубеже вычислительной геометрии и смежных прикладных наук. Повсеместно ведется активная исследовательская работа, и каждая новая решенная задача порождает вереницу следующих. Но можно ли продуктивно развивать эту область, не имея доступа к фундаментальным результатам, полученным еще в семидесятые годы? Можно ли, например, разработать мощный и эффективный алгоритм вычитания двух тел (речь о булевой операции), не имея алгоритма пересечения поверхностей? Можно ли разработать алгоритм пересечения двух поверхностей, не имея структур данных для их представления и базовых алгоритмов? Можно ли иметь структуры данных и базовые алгоритмы, не имея фундаментальных сервисов, таких как управление памятью, чтение и запись геометрии в файл? Это вопросы отнюдь не надуманные, ведь всякий кто захочет заниматься наукой для САПР обнаружит себя абсолютно потерянным. Представьте, что вам нужно возвести небоскреб, а из инструментов у вас только лопата и карандаш. «Я видел дальше других только потому, что стоял на плечах гигантов» — так сказал Исаак Ньютон о своих открытиях. На чьих плечах может стоять ученый из провинциального университета, не имеющего никаких возможностей заполучить коммерческое ядро геометрического моделирования?

Это не реклама OCCT. По правде говоря, OCCT не нуждается в рекламе. Пока гиганты отрасли витают в «облаках», инженер из маленькой компании по проектированию судов подключает OpenCascade для моделирования корпуса судна. Другой оптимизирует форму изделия при помощи замкнутого цикла CFD-расчетов, эффективных, а часто и возможных только при наличии исходных кодов. Третий вычисляет траекторию режущего инструмента для фрезерного станка, опираясь на вычислительный комплекс OCCT. Эта библиотека принадлежит всем. Она не пускает пыль в глаза, но она требует обучения, и порог вхождения в нее неиллюзорно крут. Но она работает. И в науке, и в приложениях.

Известно, что «открытые исходники — это возможность включиться в игру любому желающему» (Л. Торвальдс). Начем играть.