论文(设计)运用DCL 语言开发基于AutoCAD 的粗糙度绘制器17245.doc
《论文(设计)运用DCL 语言开发基于AutoCAD 的粗糙度绘制器17245.doc》由会员分享,可在线阅读,更多相关《论文(设计)运用DCL 语言开发基于AutoCAD 的粗糙度绘制器17245.doc(7页珍藏版)》请在三一办公上搜索。
1、运用DCL语言开发基于AutoCAD的粗糙度绘制器黄立靖(福建林业职业技术学院信息工程系,南平 353000)摘要:利用AutoCAD内嵌的对话框控制语言DCL开发图形模式的对话框输入界面。简要介绍了DCL语言的特点、运行方式。以粗造度绘制器的开发为例,详细分析了DCL语言的开发过程。关键词:对话框控制语言;AutoCAD;粗糙度;可编程对话框 中图文类号:TP39计算机辅助设计软件AutoCAD,以其功能强大,使用方便,易于开发,而深受世界各国用户的青睐。但在零件图中标注表面粗糙度方面,却存在不尽人意之处。近几年,国内许多用户采用AutoLISP语言来开发粗糙度符号的各种标注方法,虽然解决了
2、粗糙度标注不便问题,但是单纯的AutoLISP程序只能在命令行根据系统的提示输入数据与系统交流,这种交流模式效率不高,生硬死板。如果使用对话框来标注粗糙度符号,用户就可以方便而直观地与AutoCAD实现数据交流。鉴于此,笔者用对话框控制语言(Dialog Control Language,简称DCL)来开发AutoCAD欠缺的粗糙度绘制器,这样比单纯采用AutoLISP语言进行开发更加灵活、交流效率更高。1、 DCL语言的特点与运行DCL语言结合了AutoLISP与DCL两种语法的功能,可以让用户半自动地架构出“图形模式”的对话框界面,即可编程对话框PDB,一个DCL文件的基本架构外观是:对话
3、框名称:dialoglabel:“对话框标题”; :框栏形式 label:“框栏标题”; (各种对话框基本控件的排行组合) /框栏定义至此结束 /对话框定义至此结束1DCL对话框的屏幕画面以框栏(Tile)为基本结构,将框栏按左右、上下或混合排行之后,就组成了对话框的主要外观。每个框栏内部可以容纳对话框的基本控件。DCL语法可以自动调整控件之间的相对位置,用户只需要将控件代码和各控件的排行模式代码按顺序写在DCL文件里即可,一般不用考虑控件的尺寸问题。系统会自动计算应有的对话框尺寸,并自动规划适当的空间来放置这些控件。DCL文件与AutoLISP程序一样,是单纯的ASCII格式的文本文件,可使
4、用VLISP或一般的文本编辑器(如:记事本等)来编辑和修改,用DCL语法撰写的对话框,其扩展名为.dcl。对话框程序的运行,按先后顺序可分为3步骤:第1步:在AutoLISP文件里调用DCL对话框程序。第2步:用户在对话框里输入数据。第3步:将用户输入的数据返回AutoLISP文件执行。1DCL文件本身并不能单独运作,必须在AutoLISP主程序里进行初始设定,然后由主程序调用DCL文件,才能显示在AutoCAD的作图屏幕上。用户输入数据后,单击程序设置的按钮,DCL文件再将取得的键值数据送回AutoLISP主程序执行,关闭对话框后,AutoLISP主程序还将继续执行后续的代码。2、 粗糙度绘
5、制器的开发在制造业中,进行零件设计时必须在零件图上标注各表面的表面粗糙度符号及其高度参数值,机械零件表面获得的方法一般可分为三种:去除表面材料的方法,指采用某一特定的机加工方法切除毛坯表面;用任何方法获得的表面,指对加工方法不作严格要求而得到的表面;不去除表面材料的方法,指对毛坯表面不作切除加工。对零件的每一表面而言,其粗糙度的标注只能有一种。因此,用DCL语言开发粗糙度绘制器,可用单选按钮来设计,用户可以方便地通过对话框标注出任一种粗糙度符号,粗糙度绘制器的DCL程序代码如下。c_ccd:dialoglabel = “粗糙度符号绘制器”;: textlabel = “选择标注类型,然后单击确
6、定”;: boxed_column: radio_buttonlabel = “去除表面材料的方法”;key = “g1”;value = 0;fixed_width = true;width = 5;alignment = centered;: radio_buttonlabel = “用任何方法获得的表面”; key = “g2”;value = 0; fixed_width = true; width = 5; 图1 粗糙度绘制器界面alignment = centered;: radio_buttonlabel = “不去除表面材料的方法”;key = “g3”;value = 1;f
7、ixed_width = true;width = 5;alignment = centered;ok_cancel;程序运行结果如图1。程序中三个单选按钮都有key(关键字)和value(值)这两个重要属性。关键字是应用程序用来引用控件的名字,其取值就对话框而言必须是唯一的。value属性规定了控件的初值,取0表示预设未被选中,取1表示预设被选中。程序编制完毕,将其保存为c_ccd.dcl的文件。调用粗糙度绘制器对话框的AutoLISP程序,应该包括处理用户选择动作的程序和根据不同取值调用不同粗糙度的子程序,具体编写如下。主程序代码2(defun c:load_ccd (/ dcl_id j
8、) (setq dcl_id (load_dialog “c_ccd .dcl”) (if (not (new_dialog “c_ccd” dcl_id)(exit) ) (action_tile “g1” “(setq ccd_type 1)”) ; 给变量ccd_type赋不同的数值 (action_tile “g2” “(setq ccd_type 2)”) (action_tile “g3” “(setq ccd_type 3)”) (start_dialog) (unload_dialog dcl_id) (princ) (cond ;利用条件函数调用不同绘制粗糙度的子程序(= c
9、cd_type 1) (draw 1)(= ccd_type 2) (draw 2)(= ccd_type 3) (draw 3) ) (command “text” ;书写粗糙度值,点pt3和变量f1、f2另外求取(list (+ (car pt3) 1.0) (+ (cadr pt3) 0.7 ) “ ” “ ” f1 “ ”) (command “text” (list (+ (car pt3) 1.0) (+ (cadr pt3) 3.8 ))“ ” “ ” f2 “ ”)主程序中,load_dialog函数可装入.dcl文件;new_dialog函数用来显示已装入的对话框序列值dcl
10、_id对应的DCL文件中的对话框c_ccd;start_dialog函数激活已显示的对话框,并把控制权交给对话框;unload_dialog函数卸载对话框,使DCL文件从内存中消除。action_tile函数是处理用户的动作的:当用户选择DCL对话框中的不同单选按钮时,就给变量ccd_type赋不同的数值1,2,3,然后根据变量ccd_type的不同取值,用条件函数cond调用不同的绘制粗糙度的子程序。绘制三种粗糙度符号的子程序代码如下。(defun draw1 ( ) ;第一种符号程序,各点位置及符号如图2(setq cp (getpoint “n 指定粗糙度符号的位置:”) (setq p
11、t1 (list (car cp) (- (cadr cp) 5)(setq pt2 (polar pt1 (/ pi 3) 17)(setq pt3 (polar pt1 (/ (* 2 pi) 3) 8)(setq pt4 (polar pt1 (/ pi 3) 8)(setq f1 (getstring “n指定粗糙度值或最大粗糙度值:”)(setq f2 (getstring “n指定最小粗糙度值:”)(command “line” pt4 pt3 pt1 pt2 “”)(defun draw2 ( ) ;第二种符号程序,各点位置同前,如图3(setq cp (getpoint “n
12、指定粗糙度符号的位置:”) (setq pt1 (list (car cp) (- (cadr cp) 5)(setq pt2 (polar pt1 (/ pi 3) 17)(setq pt3 (polar pt1 (/ (* 2 pi) 3) 8)(setq pt4 (polar pt1 (/ pi 3) 8)(setq f1 (getstring “n指定粗糙度值或最大粗糙度值:”)(setq f2 (getstring “n指定最小粗糙度值:”)(command “line” pt3 pt1 pt2 “”)(defun draw3 ( ) ;第三种符号程序,各点位置同前,如图4(setq
13、 cp (getpoint “n 指定粗糙度符号的位置:”) (setq pt1 (list (car cp) (- (cadr cp) 5)(setq pt2 (polar pt1 (/ pi 3) 17)(setq pt3 (polar pt1 (/ (* 2 pi) 3) 8)(setq pt4 (polar pt1 (/ pi 3) 8)(setq f1 (getstring “n指定粗糙度值或最大粗糙度值:”)(setq f2 (getstring “n指定最小粗糙度值:”)(command “line” pt3 pt1 pt2 “”)(command “circle” cp “D”
14、 5)图2 各点位置及第一种符号 图3 第二种符号 图4 第三种符号以上三个子程序中,采用两个交互性输入数据函数:getpoint和getstring 。getpoint函数提示用户输入粗糙度符号的位置,可以采用AutoCAD任何一种点的输入方式。getstring函数提示用户输入字符串,并返回该字符串,用于输入粗糙度数值。程序编写完成后,将主程序和三个子程序保存为load_ccd.lsp的文件。确保将c_ccd.dcl和load_ccd.lsp两个文件保存在AutoCAD安装目录下的support文件夹中,用(load “load_ccd”)装载load_ccd.lsp程序,还可将自定义函数
15、load_ccd写入AutoCAD中的Acad.lsp的文件中,以后直接调用load_ccd函数就如同执行AutoCAD原有的命令,即可调出粗糙度绘制器对话框,用户就可方便地在零件图中进行粗糙度的标注。3、 结束语将对话框控制语言DCL与AutoLISP的可编程对话框函数2相结合,用户可设计出形式多样,包罗万象的对话框应用程序。各专业的技术人员结合本专业或本单位的实际情况进行可编程对话框的设计,一定能大大提高绘图的速度和质量,DCL语言确实是二次开发AutoCAD的有效工具。参考文献1舒飞.AutoCAD2004二次开发标准教程M.上海:上海科学普及出版社,2004.待添加的隐藏文字内容22杨
16、素敏.AutoCAD2000定制与开发M.北京:人民邮电出版社,2000.Development Of Rough Draw IN AutoCAD By Using Dialog Control LanguageHUANG Li-jing(Fu Jian Forestry Vocational & Technical College , Nanping 353000 China )Abstract The dialogue boxes for graphical user interface can be developed by using Dialog Control Language i
17、n AutoCAD.The DCL is introduced in brief about feature and method of running. The development process of DCL is analysed in particular by using the example of development of rough draw.Key Words Dialog Control Language; AutoCAD; Rough ; Programmable Dialogue Boxes;作者简介黄立靖,男,1965年10出生,汉族,籍贯:福州,高级讲师,大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文设计运用DCL 语言开发基于AutoCAD 的粗糙度绘制器17245 论文 设计 运用 DCL 语言 开发 基于 AutoCAD 粗糙 绘制 17245
链接地址:https://www.31ppt.com/p-2884111.html