【问题标题】:How can i create Path space markup element in Anylogic via Code如何通过代码在 Anylogic 中创建路径空间标记元素
【发布时间】:2026-02-02 15:25:02
【问题描述】:

我完全是任何逻辑的菜鸟,现在我正在尝试通过代码制作简单的网络; (具有两个 pointNode 的网络,以及链接它们的路径) 遇到问题。

当我运行我的模型时,控制台显示“使用 initialize() 方法”,但我已经知道 在较低版本中不推荐使用初始化方法。 (我使用的是 8.5.1 版本)

如何通过代码创建路径

真的需要你的帮助

谢谢。

PointNode node1 = new PointNode();
node1.setPos(0, 0, 0);
node1.setDrawMode(SHAPE_DRAW_2D3D);
node1.setFillColor(black);
node1.setOwner(this);
node1.setRadius(10);
node1.setVisible(true);

presentation.add(node1);

PointNode node2 = new PointNode();
node2.setPos(100, 0, 0);
node2.setDrawMode(SHAPE_DRAW_2D3D);
node2.setFillColor(black);
node2.setOwner(this);
node2.setRadius(10);
node2.setVisible(true);

presentation.add(node2);

Path path1 = new Path();
path1.setBidirectional(true);
path1.setDrawingType(PATH_LINE);
path1.setDrawMode(SHAPE_DRAW_2D3D);
path1.setLineColor(black);
path1.setLineWidth(10);
path1.setOwner(this);
path1.setSource(node1);
path1.setTarget(node2);
path1.setVisible(true);
path1.toPath3D();
path1.initialize();

presentation.add(path1);

Network net1 = new Network(this,"aa");
net1.setDrawMode(SHAPE_DRAW_2D3D);
net1.setVisible(true);
net1.addAll(node1, node2, path1);

【问题讨论】:

    标签: java anylogic


    【解决方案1】:

    正如您已经指出的,AnyLogic 8.5 有一种新的方式来执行此操作。主要区别在于新的 level 系统,您也必须添加它。

    这是 AnyLogic 的官方示例,用于从 8.5 的代码创建节点路径网络:

    // create rectangular node
    rn = new RectangularNode();
    rn.setPos(300.0, 350.0, 0.0);
    rn.setSize(100.0, 90.0);
    rn.addAttractor(new Attractor(25.0, 25.0, 4.7));
    
    // create point node
    pn = new PointNode();
    pn.setRadius( 5 );
    pn.setLineColor( dodgerBlue );
    pn.setPos(50.0, 300.0);
    
    // create path between nodes
    Path path = new Path();
    path.setBidirectional(true);
    path.addSegment(new MarkupSegmentLine(50.0, 300.0, 0.0, 350.0, 300.0, 0.0));
    path.addSegment(new MarkupSegmentLine(350.0, 300.0, 0.0, 350.0, 350.0, 0.0));
    path.setTarget(rn);
    path.setSource(pn);
    
    // create network with path and nodes
    n = new Network(this, "myNetwork");
    n.addAll(rn, pn, path);
    
    // create level with the network and initialize the level
    Level level = new Level(this, "myLevel", SHAPE_DRAW_2D3D, 0);
    level.add(n);
    level.initialize(); // cannot be changed after initialization!
    
    return level;
    

    您也可以在示例模型中找到此内容,位于 Help/Example Models/Create Transporter Network By Code 下。

    【讨论】: