3D模型文件讀寫.Net SDK


 

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/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM