AutoCAD三维函数曲线命令程序设计

2018-01-04 12:02毕英建丁玲玲韩世展曹程溪丁克会
电脑知识与技术 2018年29期
关键词:二次开发对话框

毕英建 丁玲玲 韩世展 曹程溪 丁克会

摘要:利用AutoCAD内嵌的Visual LISP语言进行三维函数曲线交互式对话框程序设计,帮助使用者绘制各种三维、二维公式函数曲线,可方便快速地分析函数参数对曲线形状的影响,扩充了AutoCAD的功能。

关键词:二次开发;函数曲线;对话框;Visual LISP语言

中图分类号:TH122 文献标识码:A 文章编号:1009-3044(2018)29-0226-03

Abstract: Using Visual LISP language embedded in AutoCAD for 3D function curve interactive dialog box programming, Help users draw various 3D and 2D formula function curves,It can analyze the influence of function parameters on curve shape conveniently and quickly. The function of AutoCAD is expanded.

Key words: secondary exploration; function curve; dialog box; Visual LISP language

1 背景

AutoCAD是一款发行较早,使用很广的绘图软件。Visual LISP是为加速AutoLISP程序开发而设计的软件开发工具,是一个完整的集成开发环境(IDE),包括文本编辑器、格式编排器、语法检查器、源代码调试器检验和监程管理系统、上下文相关帮助等,它增强并扩展了AutoLISP语言。Visual LISP兼容AutoLISP程序。在Visual LISP集成环境下可以便捷、高效地开发AutoLISP程序,可以经过编译得到运行效率高、代码紧凑、源代码受到保护的应用程序。

一些较为复杂的三维、二维函数曲线在数学函数图样分析和工程设计分析中会经常用到,机械行业用到的三维软件如UG,Pro/E等及工程领域用到的MATLAB等都有绘制三维函数曲线图形的功能,鉴于AutoCAD目前还不能实现这样的功能,因此笔者对AutoCAD二次开发,添加了三维函数曲线命令,可以在AutoCAD中绘制各种三维,二维函数曲线。

2 问题分析与程序原理

常用三维公式曲线表示形式有:笛卡尔坐标系方程、圆柱坐标系方程、球坐标系方程。在AutoCAD中都可以输入相应形式的坐标数据绘图。

笛卡尔坐标系即三维空间直角坐标系,其方程是形如[X=ft; Y=ft; Z=ft]所组成的参数方程组,t为自变量,X、Y、Z为因变量,因此直观的可以得到函数曲线上的点坐标。圆柱坐标系是基于圆柱体的空间坐标系,其方程形如[R=ft; θ=ft; Z=ft]所组成的参数方程组。球坐标系是基于球体的空间坐标系,其方程形如[R=ft ; θ=ft ; Φ=ft]。由于柱坐标方程和球坐标方程均可变换为笛卡尔坐标方程,因此在程序中最终会以笛卡尔坐标的形式获取函数曲线上点的坐标,这样方便程序的坐标数据处理。

使用者不需要将柱坐标和球坐标方程转换为笛卡尔坐标方程再输入表达式,程序本身自带换算功能,相比较于UG和Pro/E中只允许输入笛卡尔坐标方程来说,减少了用户的计算量,提高了绘图速度和便捷性。

程序绘制曲线的办法是采用Spline命令创建“真实”的样条曲线即NURBS曲线,等步距取点完成作图。与等误差法比较虽有其缺点,如相同的精度计算步数较多,但也有其优点,如程序编写简单,计算量小、对周期函数容易选择恰当的步距来保证图形的对称性、函数的取值范围不影响图形的平滑性和对称性。

程序的主要原理如下:

1)根据程序需要创建相应的对话框即DCL文件,对各个控件进行布局。

2)编辑运行程序的LISP主文件,调用对话框,响应用户输入,实现对函数曲线的预览和绘图。

3)程序中处理函数公式时不能用字符t、e作为参数字符,因为t是Lisp的保留字,e为数学专用字符。

4)预览提供主视、左视、俯视与西南轴侧四种方位,以供使用者在实际作图前有效參考并修改相关函数曲线的各类参数。

5)在每次响应预览、确定动作时,程序都要进行自检,判断使用者输入的参数、表达式等是否存在语法错误,计算的结果是否符合规定,能否进行完整的运算,如果存在错误则自行退出程序并给出相关错误类型的提示,以免造成程序崩溃、死循环等不可预见的情况。

6)预览对话框中采用线段作图,实际作图采用Spline命令对曲线进行拟合。

7)程序帮助是必不可少的,可用调用对话框的方式,将要显示的内容写在程序中,按下帮助按钮,显示帮助内容,提供在线帮助。

3 应用

程序在VLISP下编辑、检查、运行,当确认无误后可以将其保存在CAD的support目录下,文件名自定。用appload命令加载主程序文件即可以使用。如果每次打开CAD都有可能用到此命令则将其添加到“启动组”中,以便每次启动CAD时自动加载该程序。为加快CAD系统的启动,可以将命令添加到某菜单组中,方法是在 .mns或 .mnu文件下拉菜单中添加如下一行:

ID_Fun-curve [函数曲线(&F;)]^P(load "文件名")^P ^C^C_fa

重载菜单组,则当选中此菜单项才加载此程序,之后方可在命令行使用。对于较大的程序,这样做可以加速系统的启动,增大内存空间。

以下给出锥螺旋曲线、蝴蝶曲线图例。

(1)锥螺旋线的方程为[X=x*cos b*xY=x*sinb*c*xZ=a*x ] 采用笛卡尔坐标系,自变量[x]取值范围[0~360],步距为1,单位选角度。在X、Y、Z文本框中输入各自的表达式(见图2),选择某一方向视图,点击预览查看曲线,按绘图按钮拾取坐标点画图,见图3。

用此程序可方便地分析函数中参数的变化对曲线形状的影响,如此例中:参数a控制螺距大小,影响整个螺旋线的高度,参数b控制螺旋线的圈数,b=5即为5圈,参数c控制曲线生成不规则螺旋线,当a=2,c=2时,曲线变为图4形状。

参考文献:

[1] 郭秀娟. AutoCAD二次开发实用教程[M]. 北京: 机械工业出版社, 2014.

[2] 童秉枢. 机械CAD技术基础[M]. 北京: 清华大学出版社, 1996.

[3] 三维曲线方程大全-百度文库[EB/OL]. https://wenku.baidu.com/view/038719fbf705cc175527095f.html.

[4] 张岩, 吴水根. MATLAB优化算法[M]. 北京: 清华大学出版社, 2017.

[5] 詹建新. UG10.0造型设计、模具设计与数控编程实例精讲[M]. 北京: 清华大学出版社, 2017.

【通联编辑:谢媛媛】

猜你喜欢
二次开发对话框
浅谈基于Revit平台的二次开发
正常恢复虚拟机
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
基于Pro/E二次开发的推土铲参数化模块开发