当前位置: 首页 > news >正文

免费帮朋友做网站wordpress pdf 打印

免费帮朋友做网站,wordpress pdf 打印,响应式视频网站,上海环球金融中心简介Author#xff1a;赵志乾 Date#xff1a;2024-06-18 Declaration#xff1a;All Right Reserved#xff01;#xff01;#xff01; 0. 背景 直接使用Anylogic组件开发的模型无法动态改变运输网布局#xff1b;目前需求是要将运输网布局配置化#xff1b;运输网配置化…Author赵志乾 Date2024-06-18 DeclarationAll Right Reserved 0. 背景 直接使用Anylogic组件开发的模型无法动态改变运输网布局目前需求是要将运输网布局配置化运输网配置化的前提是将其标准化为仅包含辊道、自定义站点两种元素的网络之后依据配置文件动态构建运输网最后将自定义Agent逻辑关联到自定义站点实现流程串通本次示例仅包含运输网中的辊道和自定义站点的动态生成以及组装过程 1. 常用函数 函数功能ConveyorCustomStation()构造函数addVertex(double x, double y)添加点以构建2D图形注意点需要至少三个点且连起的图形不得自身有交叉通常会将CustomStation的图形隐藏而将其内部自定义逻辑封装成Agent用Agent的presentation替补CustomStation本身的图形addConnection(ConveyorPath conveyor, PathType type)将CustomStation与conveyor连接起来onEnter(T agent)根据需要定义子类覆写该方法当所运输物料进入CustomStation时会自动执行该方法 2. 数据结构定义 {points: [{code: , // 点编码name: , // 点名称x: 0.0, // 点坐标y: 0.0,z: 0.0}],conveyors: [{code: , // 辊道编码name: , // 辊道名称pointCodes: [] // 辊道从起点至终点所经历的位置点编码列表}],customStations: [{code: , // 自定义站点编码name: , // 自定义站点名称inConveyorCodes: [], // 传入站点的辊道outConveyorCodes: [] // 传出站点的辊道}] } 3. 代码实现 // ************************数据对象定义**************************** public class PointDefinition implements Serializable {private String code;private String name;private Double x;private Double y;private Double z;// setter、getter }public class ConveyorDefinition implements Serializable {private String code;private String name;// setter、getter }public class LayoutDefinition implements Serializable {private ListPointDefinition points;private ListConveyorDefinition conveyors;private ListCustomStationDefinition customStations;// setter、getter }public class CustomStationDefinition implements Serializable {private String code;private String name;private ListString inConveyorCodes;private ListString outConveyorCodes;// setter、getter }//******************************子类******************************* public class CustomStationT extends Agent extends ConveyorCustomStationT {// 持有站点定义便于onEnter中依据站点不同做不同处理CustomStationDefinition customStationDefinition;public CustomStation(CustomStationDefinition customStationDefinition) {super();this.customStationDefinition customStationDefinition;}public void onEnter(T agent ) {// 自定义逻辑} }//**************************动态生成过程****************************** // step1: 转map方便后续使用 MapString,PointDefinition codeToPointDefinitionMap layoutDefinition.getPoints().stream().collect(Collectors.toMap(PointDefinition::getCode, Function.identity(), (a,b)-b)); MapString,ConveyorDefinition codeToConveyorDefinitionMap layoutDefinition.getConveyors().stream().collect(Collectors.toMap(ConveyorDefinition::getCode, Function.identity(), (a,b)-b)); MapConveyorDefinition,ConveyorPath definitionToConveyorMap new HashMap();// step2: 定义网络对象 ConveyorNetwork conveyorNetwork new ConveyorNetwork(this,conveyorNetwork);// step3: 向网络添加conveyor for(ConveyorDefinition conveyorDefinition : layoutDefinition.getConveyors()){ConveyorPath conveyor new ConveyorPath();// 每个conveyor由若干段组成for(int index0; indexconveyorDefinition.getPointCodes().size()-1; index){PointDefinition startPoint codeToPointDefinitionMap.get(conveyorDefinition.getPointCodes().get(index));PointDefinition endPoint codeToPointDefinitionMap.get(conveyorDefinition.getPointCodes().get(index1));double startX scale.pixelsPerUnit(METER)*startPoint.getX();double startY scale.pixelsPerUnit(METER)*startPoint.getY();double startZ scale.pixelsPerUnit(METER)*startPoint.getZ();double endX scale.pixelsPerUnit(METER)*endPoint.getX();double endY scale.pixelsPerUnit(METER)*endPoint.getY();double endZ scale.pixelsPerUnit(METER)*endPoint.getZ();MarkupSegmentLine segment new MarkupSegmentLine(startX, startY, startZ, endX, endY, endZ);conveyor.addSegment(segment);}definitionToConveyorMap.put(conveyorDefinition, conveyor);conveyorNetwork.add(conveyor); }// step4: 自定义站点添加 for(CustomStationDefinition customStationDefinition : layoutDefinition.getCustomStations()){// step4.1: 站点创建CustomStationAgent customStation new CustomStation(customStationDefinition);ListPointDefinition points new ArrayList();// step4.2: 站点与辊道关联并绘制站点图形 for(String conveyorCode : customStationDefinition.getInConveyorCodes()){customStation.addConnection(definitionToConveyorMap.get(codeToConveyorDefinitionMap.get(conveyorCode)), PathEndType.END);ConveyorDefinition conveyorDefinition codeToConveyorDefinitionMap.get(conveyorCode);PointDefinition pointDefinition codeToPointDefinitionMap.get(conveyorDefinition.getPointCodes().get(conveyorDefinition.getPointCodes().size()-1));points.add(pointDefinition);customStation.addVertex(scale.pixelsPerUnit(METER)*pointDefinition.getX(), scale.pixelsPerUnit(METER)*pointDefinition.getY());}for(String conveyorCode : customStationDefinition.getOutConveyorCodes()){customStation.addConnection(definitionToConveyorMap.get(codeToConveyorDefinitionMap.get(conveyorCode)), PathEndType.BEGIN);ConveyorDefinition conveyorDefinition codeToConveyorDefinitionMap.get(conveyorCode);PointDefinition pointDefinition codeToPointDefinitionMap.get(conveyorDefinition.getPointCodes().get(0));points.add(pointDefinition);customStation.addVertex(scale.pixelsPerUnit(METER)*pointDefinition.getX(), scale.pixelsPerUnit(METER)*pointDefinition.getY());}// step4.3: 站点图形补充int conveyorNum customStationDefinition.getInConveyorCodes().size()customStationDefinition.getOutConveyorCodes().size();if(conveyorNum0){error(不允许无连接辊道的ConveyorCustomStation);}else if(conveyorNum1){// 已有一个点需要额外补充两个点customStation.addVertex(scale.pixelsPerUnit(METER)*(points.get(points.size()-1).getX()0.1), scale.pixelsPerUnit(METER)*(points.get(points.size()-1).getY()0.2));customStation.addVertex(scale.pixelsPerUnit(METER)*(points.get(points.size()-1).getX()0.1), scale.pixelsPerUnit(METER)*(points.get(points.size()-1).getY()0.4));}else if(conveyorNum2){// 已有一个点需要额外补充一个点借助两点的法线寻找第三点double x1 scale.pixelsPerUnit(METER)*points.get(0).getX();double y1 scale.pixelsPerUnit(METER)*points.get(0).getY();double x2 scale.pixelsPerUnit(METER)*points.get(points.size()-1).getX();double y2 scale.pixelsPerUnit(METER)*points.get(points.size()-1).getY();double kAB; if (x2 - x1 0) { kAB Double.POSITIVE_INFINITY;} else { kAB (y2 - y1) / (x2 - x1); } double kPerp; if (kAB Double.POSITIVE_INFINITY || kAB Double.NEGATIVE_INFINITY || kAB 0) { kPerp kAB 0 ? Double.POSITIVE_INFINITY : 0; } else { kPerp -1 / kAB; } double xC x1 0.5; double yC; if (kPerp Double.POSITIVE_INFINITY || kPerp Double.NEGATIVE_INFINITY) { yC y1; } else { yC y1 kPerp * (xC - x1); } customStation.addVertex(xC,yC);}conveyorNetwork.add(customStation); }// step5: 将生成的网络添加到演示中 Level customLevel new Level(this,customLevel,SHAPE_DRAW_2D3D,0); customLevel.add(conveyorNetwork); customLevel.initialize(); presentation.add(customLevel);
http://www.hkea.cn/news/14438944/

相关文章:

  • 网站设计的公司蒙特青岛制作网站
  • 阳江网站制作erp系统都有哪几家
  • 网站怎么做支付系统汕头seo优化
  • 景区网站建设方案北京广告设计招聘
  • 炫酷网站有哪些php网站开发实例教程 pdf
  • 衡水阿里巴巴网站建设网站开发vs2015是什么
  • 天津建设网站培训东莞网络推广服务平台
  • 网站开发动态成都住建局官网住建扬尘监测
  • 企业网站建设及推广产品网站推广方案
  • iis怎么部署网站中国民营企业500强
  • 南昌市有帮做网站的吗网络推广员压力大吗
  • 网站怎么做快捷方式网页策划案的范文
  • 建设部职业资格注册网站单位建设网站硬件
  • 网站建设需求填表一站式做网站系统
  • 目前最先进的网站建设技术达内教育学费价目表
  • 电商网站经营性备案如何做网站投放广告
  • 广州网站建设服务wordpress网店主题
  • 江阴公司做网站贴心网络推广方法
  • 大理做网站哪家好网站后台信息发布这样做
  • 在线网站流量查询wordpress安装要求
  • 品牌建设网站佛山网络推广seo
  • 漳州正规网站建设哪家便宜wordpress+重复插件
  • 网站开发技术联系方式wordpress主题页脚添加联系信息
  • 建好网站是不是每年都要交钱百度商务合作电话
  • 网站设计基本流程做网站需要的技术 规范
  • wordpress如何启用全站ssl做物流网站的公司吗
  • 网站上做地图手机上显示网站绝对布局
  • 网站广告代码怎么添加水贝做网站公司
  • 餐饮网站建设优化建站网站技术支持是什么
  • 长沙装修网站排名ps个人主页网页设计模板