java二维数组货柜,装箱布局三维可视化控件开发<sup>*</sup>

本文结合OpenGL和ActiveX技术,开发了一款面向装箱布局的三维可视化控件,用于解决物流配送中的三维装箱可视化问题。在Visual Studio环境下,通过接口获取货物配载信息,实现货物配载结果的三维显示。控件能根据用户视角选择性绘制集装箱箱壁,显示货物整体重心和集装箱几何中心,支持货物高亮显示和不同视角的观察,方便用户验证和调整装箱布局方案。
摘要由CSDN通过智能技术生成

杨淑德21 翟晓庆22 华顺刚21

(1 大连理工大学机械工程学院 2 山东理工大学机械工程学院)

摘 要: 结合 OpenGL和ActiveX技术,研究了三维装箱的可视化问题,在Visual Studio环境下,进行面向装箱布局的三维显示控件开发。通过接口方法获得货物配载信息,实现货物配载结果的可视化;为了观察集装箱内货物布局,根据用户观察方向与箱壁平面法线方向,判别集装箱箱壁平面是否绘制。以线框形式显示货物,便于查看整体重心和集装箱几何中心的位置,从而判断配载方案的稳定性。控件测试表明,该控件可以根据配载货物的特征信息和位置信息,实现货物配载整体效果显示、货物摆放方式和堆码层数显示、重心显示和货物高亮显示等功能,直观地展示装箱配载结果,便于用户调用、观察、验证和修改装箱布局方案。

关键词: ActiveX控件; 装箱布局; OpenGL; 可视化

1 引言

随着物流业的快速发展,物流技术的应用和研究受到越来越多的重视。产品的配送效率成为影响物流成本和竞争力的重要因素。集装箱配载优化布局作为物流配送过程中的一个关键性技术, 对提高

配送业务的自动化水平,提高配送业务的工作效率和规范业务流程等方面都有重要意义[1]。

国内外诸多学者对装箱布局问题开展了研究,提出了利用遗传算法、启发式算法和模拟退火算法等进行配载的解决方案[2-3]。通过配载算法对货物进行布局,快速地设计集装箱装箱方案,达到对集装箱空间和载重能力的更好利用。装箱布局结果的三维可视化可以直观的显示货物的放置情况,有利于设计人员验证配载结果的正确性,便于指导装箱工人完成装箱任务。与现有的多种配载算法相比,对装载结果的可视化研究较为欠缺。Bortfeldt[4]对启发式算法改进后没有给出直观的装箱效果图,没有提供细节的显示。Chien[5]结合三维裁剪提出配载算法并实现装载结果的显示,但是只绘制了集装箱和货物的轮廓,不容易区分外形尺寸相近的货物。郭贝贝[6]开发的装箱可视化系统可以显示货物给定角度的放置情况和某类货物的放置情况,无法全方位的观察货物的放置情况。桂思怡等[7]开发的立体装箱可视化系统虽然可以实现手动编辑,但是该系统是基于特定算法开发的。

基于此,本研究对图形绘制显示代码进行封装,开发装箱布局三维可视化控件,便于用户调用。用Visual Studio MFC 开发ActiveX控件,根据配载优化结果,利用图形应用程序接口OpenGL,根据视线方向选择性绘制集装箱箱壁,完成货物不同视角观察结果的绘制,显示整体重心和集装箱几何中心,高亮显示用户查询的某一托盘单元或货物。

2 OpenGL和ActiveX技术

OpenGL是独立于硬件设备、窗口系统和操作系统的开放式三维图形库,是图形硬件的软件接口。具有高度的可移植性和很快的渲染速度。在涉及图形图像显示及处理的应用程序开发中得到了广泛应用[8]。在三维实体建模、物体坐标变换以及纹理贴图等方面具有强大功能。

组件对象模型(COM)是关于如何建立组件以及如何通过组件构建应用程序的一个规范。在软件项目中,开发人员使用COM能快速地定制出新的应用程序,从而实现并行开发和真正意义上的软件复用。ActiveX是基于COM技术基础,实现对象链接与嵌入的技术集,包括ActiveX控件、ActiveX文档和ActiveX脚本。其中ActiveX控件是最基本和最重要的,程序员可以在Basic、C#、C++以及Java等程序中调用ActiveX控件进行应用程序或web页面开发。由于ActiveX控件结合了OLE功能而能在任何控件容器中正确工作,使其能够为各种不同的编程语言系统和开发工具所兼容。Visual C++提供了两种ActiveX控件的开发工具MFC和ATL。其中MFC封装了OLE复杂的接口的特性,包括窗口对象特性和方法、属性及事件等,无需深入了解COM对象原理和机制,开发过程中只需关注控件本身设计[9-10]。

3 装箱布局三维可视化控件接口

接口是控件与外部程序进行通信的协议。外部程序通过接口提供的属性和方法来传送消息给控件。控件的属性一般用于描述控件的外观。控件的方法是控件内部的实现函数,从控件对象的外部调用对象的方法完成特定功能[9]。本文在可视化控件内部编写接口实现函数,外部程序通过调用控件方法将配载结果数据传递到控件内部的。

装箱配载结果数据由集装箱和一定数量货物的特征信息、位置信息组成。结合装箱的实际情况,本文中认为长方体类货物为规则形状货物,其他形状货物均为不规则货物。体积大的规则货物可以直接装载,体积小较为零碎的规则货物可以利用托盘进行装载;不规则形状货物,用长方体纸箱或者木箱进行包装后装载。假设集装箱箱体、托盘和打包后的货物密度均匀,建立描述集装箱、托盘和货物信息的数据结构体。

本研究设计了若干结构体用于存放描述集装箱、托盘和货物的位置、外形和颜色的数据。用于描述集装箱的CONTAINER结构体中包括表示集装箱长宽高、集装箱角件长宽高、角件中心的XYZ坐标等数据成员;用于描述货物和托盘的CARGO结构体中包括表示货物(或者托盘)中心XYZ坐标、货物(或者托盘)长宽高和货物(或者托盘)颜色的数据成员;用于描述整体重心和集装箱几何中心的SPHERE结构体中包括表示球心XYZ坐标、球体半径和球体颜色的数据成员。

在Visual C++中,VARIANT 是一个支持跨语言访问的结构体[11]。该结构体包括v

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值