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

从Rhino/Grasshopper调用MDriven Eco类时创建EcoSpace报错“Model not Ecoified”

解决MDriven EcoSpace在Rhino/Grasshopper中实例化报错的问题

核心问题分析

“Model not Ecoified”报错本质是MDriven无法定位到已完成Ecoify处理的模型元数据,或是外部调用场景下的初始化流程不符合要求。

分步解决方案

1. 确认Eco包的Ecoify状态

  • 确保你的“EcoClasses”包已完成Ecoify构建:在MDriven Designer中右键包选择「Ecoify」,生成对应的EcoSpace类和元数据文件。
  • 检查输出目录是否生成了EcoClasses.mdrivenmodel文件,这是模型元数据的核心载体,必须与EcoClasses.dll一同被GH组件引用。

2. 修正EcoSpace初始化代码

外部应用(如GH)中实例化EcoSpace需显式指定元数据路径,不能直接使用默认构造函数,修改代码如下:

// 拼接元数据文件路径(确保文件与GH组件DLL同目录,或使用绝对路径)
var modelPath = Path.Combine(Assembly.GetExecutingAssembly().Location, "EcoClasses.mdrivenmodel");
// 用带元数据路径的构造函数实例化EcoSpace
EcoSpace ecoSpace = new EcoClassesEcoSpace(modelPath);
// 激活EcoSpace
ecoSpace.Active = true;

3. 检查GH组件的引用配置

  • 在GH组件项目中,确保引用以下MDriven核心DLL:
    • MDriven.Eco.dll
    • MDriven.Framework.dll
    • 你的EcoClasses.dll及对应的EcoClasses.mdrivenmodel文件
  • 设置EcoClasses.mdrivenmodel的属性:将「复制到输出目录」设为「始终复制」,确保文件能被GH正常加载。

4. 修正Eco对象创建代码

原代码存在变量名不匹配的错误,同时建议使用类型而非字符串类名提升安全性,修正后:

public EcoAppKernel CreateAppKernel()
{
    var objWrapper = ecoSpace.ObjectFactory.CreateNewObject(typeof(EcoAppKernel));
    return objWrapper.AsObject as EcoAppKernel;
}

// 调用创建逻辑
EcoAppKernel _kernel = CreateAppKernel();

5. 适配GH的沙箱环境限制

Rhino/Grasshopper的运行沙箱可能限制文件读取,需注意:

  • 将GH组件DLL和元数据文件放在Rhino可访问的目录(如默认插件目录),避免放在系统权限保护路径(如C:\Program Files)。
  • 测试阶段可先将所有文件放在桌面,验证功能正常后再迁移至正式目录。

内容的提问来源于stack exchange,提问作者RIL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:45:01