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

自定义AGV_Transporter尺寸触发AnyLogic类型转换错误求助

解决AnyLogic自定义AGV运输机修改尺寸触发类型转换错误的问题

问题场景

创建自定义AGV_Transporter代理作为运输机时,修改长、宽、高尺寸会触发以下类型转换错误:

Event Loop Exception Error getting custom type in EO_INDEX_ARG for Transporter - Agent Type class com.anylogic.objectmodel.elements.ActiveObjectClass cannot be cast to class com.anylogic.objectmodel.elements.graphical.OMEmbeddedObject (com.anylogic.objectmodel.elements.ActiveObjectClass is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @e350b40; com.anylogic.objectmodel.elements.graphical.OMEmbeddedObject is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @1e0b4072)

使用AnyLogic 8 Professional 8.8.5版本,Linux Ubuntu 22.04和Windows 11系统均出现该问题;尝试通过TransporterFleet块设置尺寸无效果,只能使用标准尺寸。


错误原因

该错误的核心原因是:自定义的AGV_Transporter代理继承的是普通ActiveObject类,而AnyLogic的可视化尺寸设置功能仅支持基于OMEmbeddedObject的内置运输器类型(如默认Transporter),直接修改普通ActiveObject的尺寸会触发类型强制转换失败。


解决方案

方案一:基于内置Transporter创建自定义代理(推荐)

这是符合AnyLogic运输器设计规范的方式,可正常使用可视化尺寸设置:

  • 右键项目树 → 新建 → 代理 → 选择「从现有类型继承」
  • 在类型选择下拉框中找到com.anylogic.libraries.transportation.Transporter并选中
  • 命名为AGV_Transporter完成创建
  • 打开该代理的属性面板,即可正常修改长、宽、高参数,不会触发错误

方案二:通过代码手动设置尺寸(适配已创建的普通ActiveObject代理)

如果不想重新创建代理,可通过代码强制设置尺寸:

  1. 打开AGV_Transporter代理的「代码」标签页
  2. 在onStartup代码块中添加以下代码(替换为你的自定义尺寸值):
setWidth(1.2); // 自定义宽度
setHeight(0.8); // 自定义高度
setDepth(0.6); // 自定义深度
  1. 保存后运行模型,代理尺寸会自动生效(属性面板的尺寸设置仍不可用,以代码为准)

方案三:修复TransporterFleet的尺寸设置问题

之前通过TransporterFleet设置无效果,需配合正确的代理配置:

  • 确保TransporterFleet块中选择的代理是你自定义的AGV_Transporter
  • 若使用方案一创建的代理:直接在代理属性中设置尺寸,Fleet创建的所有运输器会自动继承该尺寸
  • 若使用方案二:代理的onStartup代码会在Fleet创建运输器时自动执行,尺寸会生效

内容的提问来源于stack exchange,提问作者Егор Елманов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:41:10