基于AUTOLISP语言自动排样程序设计
基于AUTOLISP语言自动排样程序设计
【摘 要】AutoLISP程序语言是AutoCAD的二次开发软件之一。它应用灵活,语法简单易学,具有强大的函数功能及绘图功能。用户通过Auto LISP程序的编写来强化AutoCAD原有命令或是处理参数式绘图,从而实现大幅度提高绘图效率的目的。基于AutoLISP程序语言编写的自动排样程序比较全面的展示了AutoLISP语言的特点。并且在钣金材料数控切割生产过程中发挥巨大作用,能够最大限度的提高材料利用率及工作效率。
【关键词】AutoLISP AutoCAD 二次开发 数控切割 自动排样 逻辑判断 阵列
1 AUTOLISP程序语言特点
AutoCAD应用于机械设计、土木建筑、地理地图、服装设计等各个行业。但往往在应对各行业相对独特的绘图需要时却力不从心。而Auto LISP就是一种用来扩展AutoCAD功能、定制AutoCAD和开发AutoCAD的程序语言。用户通过AutoCAD提供的程序应用界面,以AutoCAD为平台,利用AutoLISP语言发展特殊的应用程序,实现独有绘图功能。
相比其他程序语言,Auto LISP具有其鲜明的特点:
语法非常简单且风格独特;
功能函数强大,除一般性的功能函数外,还拥有控制配合AutoCAD的特殊函数,并可以直接调用执行所有AutoCAD的命令;
撰写的环境不挑剔,只要一般的窗口文本编辑软件都适用;
直译式程序,不用再作编译,即写即测,即测即用,马上可以在AutoCAD中响应效果。
钣金材料数控切割生产中的自动排样程序较为复杂,比较全面的展现了AutoLISP语言的特点。自动排样程序的设计是为了满足钣金材料的数控切割过程中能够最大限度的提高材料利用率及工作效率的需要。在自动排样程序中将相对规则的零件划分为圆形、三角形、平行四边形、梯形四类。它们排样程序设计的思路与方法大同小异,本文以三角形零件的自动排样为例,介绍其程序设计的思路与方法。
2 程序设计思路与方法
2.1排错主程序PAIYANG
为方便维护与除错,程序共建立了4个模块,分别为:排错PAIYANG主程序、数据处理DATA子程序、初始化判断PANDUAN子程序、阵列ARRAY子程序。
排错PAILIAO主程序中具有进行总程序的统筹、调用功能,另外还具有排错功能。在系统初始化之后,主程序立即进行数据计算及逻辑判断,看材料尺寸是否与零件相匹配。如果不符合排样的最基本要求则返回系统变量输入状态,重新输入变量进行排样,避免程序死循环。流程图见图1。
2.2数据处理子程序DATA
数据处理DATA子程序主要完成零件图形集的数据读取和预处理并输出,为进一步的排样工作做准备。图形预处理如图2所示。
2.3初始化判断子程序PANDUAN
程序采用单排法和旋转混合算法计算出各种排料结果,并进行方案比较。在只采用单排算法时,有两种排样结果,即:横向排样与纵向排样。在材料尺寸和零件尺寸相同的情况下,横向单排与纵向单排的排样总数可能相同也可能不同。程序的方案比较功能会在这种情况下自动的选择排样总数最大、材料利用率较大的一种排样形式进行排样。另外,在实际生产过程中,经常会遇到这样的情况,就是在进行完横向单排或纵向单排以后,材料一边的余量还较大,还可以通过零件图形编辑转换,在材料余量内进行再排样,显然排样结果会使材料利用率更大些。这就要求单排排样与旋转混合排样结合起来,达到最佳的排样结果,使材料利用率尽可能高。能够旋转组合排样是这一程序软件的主要优势之一,但也是该程序编制的主要难点之一。程序流程图见图3。
2.4阵列子程序ARRAY
本段程序采用正排和倒排分别阵列的方式来组成一个完整的排样图形。首先建立正排和倒排的基图,然后根据计算结果阵列正排图形,接着阵列倒排图形。接下来对余量进行排样。在进行完方案比较以后,将我们在前面作好的四种方向的基图进行选择,选择合适的基图,并按事先算出的基点插入图形。当然,如果算出的余量不足以再排样,那么这一步省略。然后进行余量排样,阵列选定的基图。流程图见图4。
从ARRAY子程序流程图中可以看出,这个程序断的逻辑判断多、程序执行的步骤多。但大体上四种排样过程大致相同,主要区别是主次嵌套。
ARRAY子程序主要进行排样的过程,这也是该系统的核心部分。程序思想:采用逐次If嵌套、逐次比较排样的方法。如果排样总数 amass1为四种状况下排样总数的最大值,则进行单排排样赋值准备工作。然后先进行单排,在单排之前先判断需阵列的列数和行数,如果两者至少有一项大于1则进行阵列,否则将不进行阵列。在进行完单排排样之后,判断余量是否可进行排样,如果可以再排样,则进行旋