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

如何在AnyLogic运行时绘制图形对象?矩形创建后不显示怎么办?

在AnyLogic运行时添加矩形不显示的问题解决与绘图方法

嘿,我来帮你搞定这个AnyLogic的图形显示问题!你已经创建了ShapeRectangle对象,但之所以看不到,核心原因是你没把它“挂”到画布的可视化容器里——AnyLogic不会自动识别游离的图形对象,必须显式把它添加到某个可视化载体上。

一、快速修复你的代码

假设你是在Main代理里写的代码,只需要在创建矩形后加一行,把它绑定到Main的可视化根容器:

// 你的原代码
ShapeRectangle a = new ShapeRectangle(SHAPE_DRAW_2D ,true, 10, 10, 2, 0, black, black, 20, 20, 5, 0.5, LINE_STYLE_SOLID);
// 关键新增:把矩形添加到当前代理的可视化树中
add(a);

要是你在其他Agent里创建,同样用add(a)就行——每个Agent都有自己的可视化容器,add()方法会把图形对象挂载进去,运行时就能看到啦。

二、AnyLogic运行时绘制图形的完整玩法

1. 通用流程:创建+挂载

所有运行时生成的图形(矩形、圆形、线条啥的)都得遵循这个逻辑:

  • 第一步:用构造函数创建图形对象,按需调整参数(比如位置、颜色、尺寸)
  • 第二步:调用add(图形对象)把它加到当前代理的容器,或者指定某个父组件(比如名为myPresentation的Presentation组件):
    // 把图形加到指定的Presentation里
    myPresentation.add(a);
    

2. 常用图形创建示例

给你几个常用的例子,方便参考:

  • 绘制圆形:
    ShapeCircle circle = new ShapeCircle(SHAPE_DRAW_2D, true, 50, 50, 0, 0, red, blue, 15, LINE_STYLE_DASHED);
    add(circle);
    
  • 添加动态文本标签:
    ShapeText text = new ShapeText(SHAPE_DRAW_2D, "这是运行时加的文本", 100, 100, 0, black, Font.PLAIN, 12, TEXT_ALIGNMENT_CENTER);
    add(text);
    

3. 动态调整图形属性

创建完图形后,还能随时改它的样子,比如移动位置、换颜色:

// 把矩形移到新坐标
a.setX(100);
a.setY(100);
// 换成绿色填充
a.setFillColor(green);
// 要是修改后没即时生效,就调用这个刷新
a.repaint();

4. 踩坑提醒

  • 别在还没初始化的代码块里调用add(),比如可以放在onStartup()事件、按钮点击事件里执行
  • 如果是3D场景,记得把SHAPE_DRAW_2D换成SHAPE_DRAW_3D,还要调整3D相关参数
  • 图形会跟着所在Agent的位置移动,要是想固定在全局画布,就把它加到Main代理里

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:38:10