Какова цель вызовов BRepLib :: BuildCurves3d в учебном руководстве по OpenCASCADE? - PullRequest
1 голос
/ 28 января 2020

Как новичок OpenCASCADE ie, я читаю учебное пособие по OpenCASCADE:

https://www.opencascade.com/doc/occt-7.4.0/overview/html/occt__tutorial.html

Есть два любопытных вызова:

BRepLib::BuildCurves3d(threadingWire1);
BRepLib::BuildCurves3d(threadingWire2);

Учебное пособие объясняет необходимость этих двух вызовов следующим образом:

Помните, что эти провода были построены из поверхности и двухмерных кривых. Что касается этих проводов, то отсутствует один важный элемент данных: информация о трехмерных кривых отсутствует. К счастью, вам не нужно вычислять это самостоятельно, что может быть трудной задачей, поскольку математика может быть довольно сложной. Когда форма содержит всю необходимую информацию, кроме 3D-кривых, технология Open CASCADE предоставляет инструмент для их автоматического построения. В пакете инструментов BRepLib вы можете использовать метод BuildCurves3d для вычисления трехмерных кривых для всех краев фигуры.

, который я не нашел полностью ясным.

Представьте, что я построил некоторый TopoDS_Shape объект.

Как я вообще могу определить, необходим ли BRepLib::BuildCurves3d вызов или нет?

1 Ответ

0 голосов
/ 04 февраля 2020

С помощью этого кода вы можете получить 3D-кривую кромки (взять из BRepExtrema_DistanceSS.cxx):

Standard_Real aFirst, aLast;
Handle(Geom_Curve) pCurv = BRep_Tool::Curve(E, aFirst, aLast);

Если вы не создали 3D-кривые, pCurv будет нулевым маркером. Его использование приведет к ошибкам сегментации.

Я был взволнован тем, где фактически используются трехмерные кривые. Поэтому я попробовал несколько алгоритмов. Это алгоритмы, которые я пробовал, когда используются 3D-кривые , а не :

  • Визуализация
  • Экспорт в BREP
  • Экспорт в STEP
  • Измерение длины
  • Проверка, является ли провод замкнутым или упорядоченным

Единственный алгоритм, который я нашел, где используются трехмерные кривые, это вычисления экстремумов / расстояний с BRepExtrema_DistShapeShape. Вы не сможете использовать этот класс, если не создали 3D-кривые.

...