Чтение файла шага с помощью Open Cascade

Мне нужно читать простые файлы шагов (поворотные части) с C ++. Поэтому я стараюсь использовать Open Cascade. Я уже могу открыть свой файл шага и прочитать количество фигур в моем файле. Теперь мне нужно получить геометрические данные (длина, ширина, диаметры …), но я не знаю, как это работает, хотя я читаю всю документацию.
Есть ли кто-нибудь, кто уже работал с Open Cascade и может помочь мне с моей проблемой? Я был бы очень счастлив, большое спасибо !!

Это мой код с тех пор

#include <iostream>
#include <STEPControl_Reader.hxx>
#include <string>

using namespace std;int main() {

STEPControl_Reader reader;
IFSelect_ReturnStatus stat = reader.ReadFile("C:\\Users\\Kelevradesktop.Kelevra-desktop\\Desktop\\Studienarbeit\\steptest.step");
IFSelect_PrintCount mode = IFSelect_ListByItem;
reader.PrintCheckLoad(false, mode);

Standard_Integer NbRoots = reader.NbRootsForTransfer();                      //Transfer whole file
Standard_Integer num = reader.TransferRoots();

Standard_Integer NbTrans = reader.TransferRoots();
TopoDS_Shape result = reader.OneShape();
TopoDS_Shape shape = reader.Shape();cout << NbRoots << endl;
cout << NbTrans << endl;
cout << num << endl;

system("pause");

return 0;
}

0

Решение

Проверьте исходный код FreeCad. Они используют OpenCascade и могут импортировать step и iges. Это должно помочь вам начать. Функция ImportStepParts (…) в https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Part/App/ImportStep.cpp это то, что вы ищете.

1

Другие решения

использование TopExpExplorer класс для итерации по объектам (вершинам, ребрам, граням ..) фигуры. Итерирующий пример, который вы можете найти в этом руководство.

использование GProp_GProps учебный класс чтобы получить свойства формы. Пример:

GProp_GProps propertiesSystemFace;
BRepGProp::VolumeProperties(shape, propertiesSystemFace);
double shapeVolume = propertiesSystemFace.Mass();
gp_Pnt centerOfMass = propertiesSystemFace.CentreOfMass();

Также вы можете конвертировать TopoDS_Edge в кривая объект, чтобы получить некоторые другие параметры в соответствии с типом ребра:

BRepAdaptor_Curve adaptCrv = BRepAdaptor_Curve(edge);

0

По вопросам рекламы [email protected]