You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:17:19