为STEP文件添加JSON元数据:Eyeshot铸模热属性存储问询
如何在Eyeshot中导出带热属性元数据的STEP文件
针对你的需求,我可以分享几个在Eyeshot中实现将热属性作为元数据嵌入STEP文件的可行方案,都是基于Eyeshot原生API和STEP标准特性设计的:
方案一:利用Entity的Attributes/UserData存储属性,通过导出回调写入STEP
这是最直接且推荐的方案,它将热属性与对应的几何实体直接绑定,符合数据关联逻辑,无需额外创建虚拟实体。
步骤1:为几何实体关联热属性
不管是基础Brep图元还是STL导入的Mesh,都属于Eyeshot的Entity子类,你可以选择两种方式存储热属性:
方式A:使用Attributes字典(适合简单键值对)
// 示例:给铸模部件Brep添加热属性 var castMoldPart = new Brep(); // 直接添加键值对形式的热属性 castMoldPart.Attributes["ThermalConductivity"] = "45.2 W/mK"; castMoldPart.Attributes["SpecificHeatCapacity"] = "480 J/kg·K"; castMoldPart.Attributes["Density"] = "7850 kg/m³";
方式B:使用UserData存储结构化对象(适合复杂属性集合)
先定义一个结构化的热属性类:
public class ThermalProperties { public double Conductivity { get; set; } public double SpecificHeat { get; set; } public double Density { get; set; } public string MaterialType { get; set; } }
然后将实例关联到实体:
castMoldPart.UserData = new ThermalProperties { Conductivity = 45.2, SpecificHeat = 480, Density = 7850, MaterialType = "Carbon Steel" };
步骤2:配置STEP导出设置,添加自定义属性写入逻辑
Eyeshot的STEPExportSettings提供了回调机制,允许你在导出每个实体时,向对应的STEP实体添加自定义元数据。通过WriteEntityCallback委托即可实现:
var exportSettings = new STEPExportSettings(); // 绑定实体导出回调,处理属性写入 exportSettings.WriteEntityCallback = (sourceEntity, stepEntity) => { // 处理Attributes中的简单键值对属性 if (sourceEntity.Attributes.Count > 0) { foreach (var kvp in sourceEntity.Attributes) { // 向STEP实体添加自定义属性,前缀用于区分系统属性与用户属性 stepEntity.AddProperty($"UserDefined_{kvp.Key}", kvp.Value.ToString()); } } // 处理UserData中的结构化热属性 if (sourceEntity.UserData is ThermalProperties thermalProps) { stepEntity.AddProperty("ThermalConductivity", thermalProps.Conductivity.ToString("F2")); stepEntity.AddProperty("SpecificHeatCapacity", thermalProps.SpecificHeat.ToString("F0")); stepEntity.AddProperty("MaterialDensity", thermalProps.Density.ToString("F0")); stepEntity.AddProperty("MaterialType", thermalProps.MaterialType); } }; // 执行导出操作 yourEyeshotDesign.WriteSTEP("mold_assembly.stp", exportSettings);
方案二:创建独立自定义实体存储元数据(适合全局/批量属性)
如果你希望用独立的自定义实体集中存储热属性(比如每个部件对应一个元数据实体),可以创建一个隐藏的虚拟实体(比如极小的Point3D或空Brep),将热属性关联到这个实体后一起导出:
// 创建隐藏的虚拟元数据实体 var metaEntity = new Point3D(0, 0, 0); metaEntity.Visible = false; // 隐藏不影响场景视觉 metaEntity.UserData = new ThermalProperties { Conductivity = 38.5, MaterialType = "Aluminum Alloy" }; yourEyeshotDesign.Entities.Add(metaEntity); // 导出时的回调逻辑同方案一,只需在回调中判断实体类型即可
不过这种方式需要手动维护元数据实体与对应几何实体的关联关系,不如方案一直接高效。
关键注意事项
- STEP标准(AP203/AP214)原生支持用户自定义属性,这些属性会被存储在STEP文件的
PROPERTIES节中,大多数CAD软件和STEP解析器都能识别并读取这些属性。 - 若后续需要导入STEP文件恢复热属性,可以使用
ReadSTEP方法对应的ReadEntityCallback委托,反向解析STEP中的自定义属性并赋值回Eyeshot实体的Attributes/UserData。 - STL导入的Mesh实体完全适用上述方案,因为Mesh也是
Entity子类,拥有相同的属性存储机制。
内容的提问来源于stack exchange,提问作者Rob Perkins
相关产品推荐
相关产品推荐

