Чтение файла шага с помощью Open Cascade - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно читать простые файлы шагов (токарные детали) с помощью 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;
}

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

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

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

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 голосов
/ 06 июля 2018

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

...