AnyCAD .Net/C++ SDK支援多種3D/2D檔案格式,比如BREP、STEP、IGES、STL、DXF、3DS、OBJ、FBX、SKP、IFC、DAE……等,根據使用場景提供不同的API。
AnyCAD .Net/C++ SDK支援多種3D/2D檔案格式,比如BREP、STEP、IGES、STL、DXF、3DS、OBJ、FBX、SKP、IFC、DAE……等,根據使用場景提供不同的API。
1. 幾何資料I/O
支援BREP、IGES、STEP、STL格式,其中BREP支援讀取和儲存字元串流。
1.1. 讀取檔案
支援讀取BREP、IGES、STEP和STL,結果儲存在TopoShape中。
STEP檔案讀取示例:
TopoShape shape = GlobalInstance.BrepTools.LoadFile(“d:\\anycad.stp”); |
注意:
l 如果需要查找TopoShape包含哪些體、面、邊、頂點等資訊,使GlobalInstance.TopoExplor的方法。
l 使用這種方式讀取STL比較慢,如果不對模型進行幾何操作,不建議使用。
1.2. 儲存檔案
支援儲存為BREP、IGES、STEP和STL。
TopoShapeGroup group = new TopoShapeGroup(); group.Add(shape); GlobalInstance.BrepTools.SaveFile(group, "d:\\anycad.brep"); |
2. 檔案流
僅在記憶體中進行操作,不占用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); |
3. 讀取STEP/IGES的顔色
如果要讀取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檔案
4. 讀取STL/3DS/OBJ等
這類模型隻能用于展示,不能進行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。
5. 參考資料
l StpViewer: https://github.com/anycad/StpViewer
l dxfViewer: https://github.com/anycad/dxfViewer
l SDK下載下傳:http://www.anycad.net/sdk/