AnyCAD .Net/C++ SDK支持多種3D/2D文件格式,比如BREP、STEP、IGES、STL、DXF、3DS、OBJ、FBX、SKP、IFC、DAE……等,根據使用場景提供不同的API。
支持BREP、IGES、STEP、STL格式,其中BREP支持讀取和保存字符串流。
支持讀取BREP、IGES、STEP和STL,結果保存在TopoShape中。
STEP文件讀取示例:
TopoShape shape = GlobalInstance.BrepTools.LoadFile(“d://anycad.stp”);
|
注意:
l 如果需要查找TopoShape包含哪些體、面、邊、頂點等信息,使GlobalInstance.TopoExplor的方法。
l 使用這種方式讀取STL比較慢,如果不對模型進行幾何操作,不建議使用。
支持保存為BREP、IGES、STEP和STL。
TopoShapeGroup group = new TopoShapeGroup(); group.Add(shape); GlobalInstance.BrepTools.SaveFile(group, "d://anycad.brep");
|
僅在內存中進行操作,不占用I/O。 支持BREP格式。
// Save to buffer TopoShape sphere = GlobalInstance.BrepTools.MakeSphere(Vector3.ZERO, 100); byte[] buffer = GlobalInstance.BrepTools.SaveBuffer(sphere);
// Load from buffer TopoShape newSphere = GlobalInstance.BrepTools.LoadBuffer(buffer);
|
如果要讀取STEP和IGES文件中的顏色信息,不能使用上面的API無法。需要結合使用TopoShapeReaderContext和AnyCAD.Exchange模塊中的IgesReader和StePReader。
代碼參考StpViewer項目: https://github.com/anycad/StpViewer
首先,從TopoShapeReaderContext繼承子類,如CADBrowser,重載其虛函數用于接收讀取到的幾何對象和顏色。
public override void OnSetFaceColor(ColorValue clr)用于保存當前物體的顏色。
然后,調用把TopoShapeReaderContext對象做為Read的參數傳入。
CADBrower browser = new CADBrower(this.treeViewStp, this.renderView); AnyCAD.Exchange.IgesReader reader = new AnyCAD.Exchange.IgesReader(); reader.Read(dlg.FileName, browser);
|
注意:使用同樣的方法也可以讀取DXF文件
這類模型只能用于展示,不能進行TopoShape層次的幾何操作;可以用MatrixBuilder對SceneNode進行矩陣變換。
代碼示例:
OpenFileDialog openDlg = new OpenFileDialog(); openDlg.Filter = "STL (*.stl)|*.stl|3ds (*.3ds)|*.3ds|obj (*.obj)|*.obj"; if (openDlg.ShowDialog() == DialogResult.OK) { SceneReader reader = new SceneReader(); GroupSceneNode node = reader.LoadFile(openDlg.FileName); if (node != null) { node.SetName(openDlg.SafeFileName); renderView.ShowSceneNode(node); renderView.RequestDraw(); } }
|
可以看到SceneReader.LoadFile返回的是GroupSceneNode,而GlobalInstance.BrepTools.LoadFile返回的是TopoShape。
l StpViewer: https://github.com/anycad/StpViewer
l dxfViewer: https://github.com/anycad/dxfViewer
l SDK下載:http://www.anycad.net/sdk/
新聞熱點
疑難解答