3D模型文件读写.Net SDK
2018-06-17 20:10:00来源:未知 阅读 ()
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/
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:多线程中变量的内存分配
- PHP7中I/O模型内核剖析详解 2019-10-08
- mysql如何批量执行sql文件 2019-09-23
- 保存数组配置到PHP文件,一行代码搞定 2019-09-17
- PHP大文件分片上传的实现方法,你会用嘛 2019-09-17
- 让你提高效率的 Linux 技巧 2019-09-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash