数据交换
1. 快速读取几何数据
很多情况下的应用不关心物体的颜色,此时可以采用StepIO/IgesIO实现快速的模型加载。
STEP
csharp
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "STEP (*.stp;*.step)|*.stp;*.step";
if (dialog.ShowDialog() != DialogResult.OK)
return;
var shape = ShapeIO.Open(dialog.FileName);
if (shape == null)
return;
mRenderView.ShowShape(shape, new Vector3(0.8f)); // 显示指定个灰白色
IGES
csharp
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "IGES (*.igs;*.iges)|*.igs;*.iges";
if (dialog.ShowDialog() != DialogResult.OK)
return;
var shape = ShapeIO.Open(dialog.FileName);
if (shape == null)
return;
// 转换成BREP格式
BrepIO.Save(shape, dialog.FileName + ".brep");
TIP
STEP/IGES文件的读取还是很慢。如果需要每次都加载同一个模型文件,可以使用BrepIO::Save成中间格式,加速模型读取。
2. 读取模型详细数据
获取模型的颜色、名称等信息相对上述方法效率稍有降低。
简单用法
使用CADReader得到每一个TopoShape
csharp
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "STEP (*.stp;*.step)|*.stp;*.step";
if (dialog.ShowDialog() != DialogResult.OK)
return;
CADReader doc = new CADReader();
doc.Open(dialog.FileName, (XdeNode xn, TopoShape shape, GTrsf trf, Vector3 color) =>
{
//
mRenderView.ShowShape(shape.Transformed(trf), color);
});
复杂用法
CADReader是对XdeDocument的封装,若需要更灵活的控制,可以直接使用XdeDocument API来自行解析。
csharp
CADReader doc = new CADReader();
doc.Open(dialog.FileName, (XdeNode xn, TopoShape shape, GTrsf trf, Vector3 color) =>
{
mRenderView.ShowShape( TransformTool.Transform(shape, trf), color);
});
3. 通用模型数据
通用的三维模型格式有obj、stl、3ds、glTF等,这类数据格式只包含了显示相关数据,不包含几何拓扑数据和参数化数据。 ARS提供了SceneIO可以读取此类格式。
csharp
OpenFileDialog dlg = new OpenFileDialog();
// 获取支持的文件格式列表
dlg.Filter = SceneIO.FormatFilters();
if (dlg.ShowDialog() != DialogResult.OK)
return;
var node = SceneIO.Load(dlg.FileName, mRenderView.GetMaterialManager());
if (node == null)
return;
mRenderView.ShowSceneNode(node);
mRenderView.ZoomAll();
4. DXF模型读取
DXF是比较通用的二维交换格式,ARS没有原始支持,但可以通过第三方的组件来实现与DXF数据互通。
在github上可以获取显示DXF的完整示例代码:anycad.rapid.dxf.viewer