OpenCASCADE

From FreeCAD Documentation
This page is a translated version of the page OpenCASCADE and the translation is 100% complete.

Описание

OpenCASCADE Technology, сокращенно OCC или OCCT, представляет собой набор C++ библиотек, которые вместе составляют ядро профессиональной системы автоматизированного проектирования (САПР) для моделирования 2D и 3D объектов и построения специализированных инструментов для производства, моделирования или визуализации. OpenCascade - это "сердце" геометрических возможностей FreeCAD.

Геометрические классы OCCT в основном реализованы и доступны в FreeCAD через модуль Part , от которого зависит большинство других верстаков. Они также предоставляют внутренние функции для чтения и записи различных форматов файлов, таких как STEP и IGES, и для выполнения 2D-проекций, которые можно использовать для создания технических чертежей в TechDraw.

OpenCASCADE предоставляет базовые геометрические классы и функции построения геометрии для модуля Part, которые затем используются всеми рабочими местами в FreeCAD.

OpenCascade не следует путать с OpenSCAD, который представляет собой другой проект с открытым исходным кодом для создания 3D-моделей, и который доступен через верстак OpenSCAD.

OpenCascade является свободным программным обеспечением, на которое распространяются условия GNU Lesser General Public License (LGPL) версии 2.1 с дополнительными исключениями.

Установка

OpenCascade является основным компонентом FreeCAD, поэтому, если вы скачаете FreeCAD по одной из ссылок на странице загрузки, он будет установлен автоматический вместе с FreeCAD.

Однако, если вы хотите разрабатывать приложения, использующие OCCT, или хотите добавить свой C++ код в FreeCAD, вам потребуется установить файлы для разработки OCCT. В этом случае процедура объясняется при компиляции для каждой из основных систем: Linux, Windows и macOS.

Версия Community edition

В 2011 году была выпущена OpenCascade "community edition" (версия сообщества), сокращенно OCE, основанная на официальных исходниках OpenCascade (OCCT) версии 6.5. Теоретически версия сообщества OCE должна быть совместима с основной версией OCCT по большинству аспектов, но при этом она имеет некоторый дополнительный код, предоставленный сообществом.

Однако примерно в 2017 году разработка этого альтернативного дистрибутива была прекращена из-за и отставания от основной версии с точки зрения функциональности и исправлений ошибок. По этой причине, начиная с FreeCAD версии 0.17, FreeCAD компилируется исключительно с помощью OCCT, а OCE более не применяется.

В некоторых старых Linux дистрибутивах FreeCAD может быть скомпилирован под OCE 0.18, что эквивалентно OCCT 6.9.x, вызывая различные проблемы, которые уже были решены в основных выпусках OCCT 7.x. Если это так, попробуйте удалить OCE и вместо него установить OCCT. Если это невозможно, то лучше установите AppImage версию FreeCAD, чтобы получить современный FreeCAD с обновленной версией OCCT.

История появления OpenCascade

Первоначально исходный код геометрического ядра Cas.CADE был закрытым, но примерно в 2000 году, он стал открытым исходным кодом под своим нынешним названием. Вскоре после этого был запущен проект FreeCAD, причем самые старые файлы датированы январем 2001 года. Подробнее читайте в разделе История.

OpenCascade версии 6.6 и более ранних версий регулировался собственной "OCCT public license", что делало его не совсем "свободным программным обеспечением". Эта проблема была решена с выпуском OCCT 6.7 (2013), когда была принята LGPL2 лицензия.

Базовые геометрические понятия OCCT

В терминологии OpenCascade различимы геометрические примитивы и топологические формы. Геометрическим примитивом может быть точка, линия, окружность, плоскость и т. д. Или даже некоторые более сложные типы, такие как кривая B-сплайна или поверхность. Фигурой может быть вершина, ребро, wire каркас, грань, сплошное тело или соединение других фигур. Геометрические примитивы предназначены не для непосредственного отображения в 3D-сцене, а для использования в качестве геометрии построения фигур. Например, ребро может быть построено из отрезка или из части окружности.

Таким образом, геометрические примитивы представляют собой "бесформенные" строительные блоки, в то время как топологические формы - это реальные объекты, построенные на них.

Полный список всех примитивов и форм см. по ссылке документации OCC (альтернативная ссылка: sourcearchive.com ) там же вы можете выполнить поиск Geom_* (для геометрических примитивов) и TopoDS_* (для геометрических форм). Там вы также можете прочитать больше о различиях между ними. Пожалуйста, обратите внимание, что официальная документация OCC недоступна в Интернете (необходимо загрузить архив) и в основном она предназначена для программистов, а не для конечных пользователей. Но, надеюсь, вы найдете здесь достаточно информации, чтобы начать работу. Также смотрите Руководство пользователя по моделированию данных.

На очень высоком уровне топология определяет, из каких частей состоит объект, и логические взаимосвязи между ними. Фигура состоит из определенного набора граней. Грань ограничена определенным набором ребер. Две грани являются смежными, если они имеют общее ребро.

Сама по себе топология не сообщает вам размер, кривизну или трехмерное расположение любой из этих частей. Однако каждая часть топологии знает о своей базовой геометрии. Грань "знает", на какой поверхности оно лежит. Ребро "знает", на какой кривой оно лежит. Геометрия знает о кривизне и местоположении в пространстве. - Исходный код


Таким образом, топология определяет взаимосвязь между простыми геометрическими объектами, которые могут быть связаны друг с другом для представления сложных форм. - Руководство пользователя по моделированию данных

Note: только 3 типа топологических объектов имеют геометрические представления – вершина, ребро и грань (источник).

Геометрические типы на самом деле можно разделить на две основные группы: кривые и поверхности. Из кривых (отрезок, окружность, ...) можно напрямую построить ребро, из поверхностей (плоскость, цилиндр, ...) можно построить грань. Например, отрезок, как геометрический примитив не ограничен, т.к. он определяется вектором расположения (основы) и вектором направления, в то время как его представление формы будет ограничено начальной и конечной точками. И коробка - твердое тело - может быть создана шестью ограниченными плоскостями.

От ребра или грани, вы также можете вернутся к геометрическим примитивам из которых они состоят.

Таким образом, из форм вы можете построить очень сложные детали или , или наоборот, извлечь все субформы из созданой сложной формы.

Класс Part::TopoShape это видимый на экране геометрический объект. Изнутри практически все верстаки используют топологические формы TopoShapes для построения и отображения ребёр, граней и твёрдых тел.

Сопутствующая информация