Author:赵志乾
Date:2024-06-19
Declaration:All Right Reserved!!!
1. 类图
2. 原理解析
2.1 核心函数
函数 | 功能 |
---|---|
ConveyorCustomStation() | 无参构造函数;该类另有两个有参构造函数,但已标注为废弃; |
void addVertex(double x, double y) | 为2D多边形添加坐标点; |
void onEnter(T agent) | 物料进入自定义站点时的回调函数; |
2.2 代码解析
由于Anylogic内核做过代码混淆,以下为二次加工后的逻辑;
//**********************核心字段************************************
// 自定义站点演示图形
private final Polygon2D polygon2D = new Polygon2D(this);
// 用于桥接图形化开发时自定义逻辑
private IConveyorCustomStationDescriptor<T> descriptor;
//**********************构造函数************************************
public ConveyorCustomStation() {
// 内核代码中的无参构造函数会创建IConveyorCustomStationDescriptor实现类的实例;其目的是满足Anylogic图形化开发自定义逻辑的需要;如需要动态生成ConveyorCustomStation,则建议直接定义ConveyorCustomStation的子类,然后覆写onEnter函数;
this.descriptor= (IConveyorCustomStationDescriptor)IMaterialLibraryDescriptorFactory.create(IConveyorCustomStationDescriptor.class);
}
//**********************简单函数*****************************************
// 为绘制自定义站点的2D演示,逐次添加顶点坐标;坐标单位为像素
public void addVertex(double x, double y) {
// 2D多边形添加顶点坐标;
this.polygon2D.addVertex(x, y);
}
// 演示内容实例化
void doInitialize() {
// 由所在Level的initialize函数触发;
super.doInitialize();
this.polygon2D.initialize();
}
// 物料到达站点时回调函数
public void onEnter(T agent) {
// 直接定义子类覆写即可,不建议使用descriptor做桥接
this.descriptor.onEnter(agent);
}
3. 应用场景
动态生成自定义站点时,定义该类的子类,并在子类中覆写onEnter函数,以便自定义物料到达站点时需要执行的逻辑;
标签:站点,onEnter,函数,自定义,void,建模,anylogic,ConveyorCustomStation From: https://blog.csdn.net/zhaoyaxuan001/article/details/139799790