0

我需要用 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;
}
4

2 回答 2

3

检查 FreeCad 源代码。他们使用 OpenCascade,可以导入 step 和 iges。它应该让你开始。https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Part/App/ImportStep.cpp中的函数 ImportStepParts(...)是您要搜索的。

于 2018-07-06T08:47:39.930 回答
0

使用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);

于 2018-09-03T11:59:00.903 回答