利用二次开发技术在AutoCAD中实现快速绘制标题栏

2011-10-18 06:22莫玉梅甘文的
大众科技 2011年3期
关键词:肇庆二次开发绘图

莫玉梅 甘文的

(肇庆科技职业技术学院,广东 肇庆 526114)

利用二次开发技术在AutoCAD中实现快速绘制标题栏

莫玉梅 甘文的

(肇庆科技职业技术学院,广东 肇庆 526114)

文章介绍以二次开发技术为手段, 运用AutoLISP编程、Visaul LISP编程开发工具,在AutoCAD实现快速绘标题栏,使得AutoCAD软件更适用,使绘图更方便、更快捷、更高效更准确,提高绘图效率和准确性。

AutoCAD;AutoLISP;二次开发;标题栏

(一)前言

AutoCAD是目前微机上应用最为广泛的通用交互式计算机辅助绘图与设计软件之一。在工程设计各专业中,AutoCAD以其强大的图形支撑能力和开放的结构体系,无可争辩地成为 CAD市场的龙头。随着 CAD制图的普及,在 AutoCAD上开发出的各专业软件也越来越多,但由于这些软件大多不是具体为用户量身定做,具有一定的普及适用性;或者由于用户各人习惯原因,不适用;或者达不到用户要求的高效率。针对上述问题,各行业的工程师应该利用相关的开发技术,开发符合各自设计工作特殊需要的应用程序,还有利于提高工作效率。

AutoLISP语言是一种嵌在AutoCAD内部的LISP编程语言,既具有一般高级语言的基本结构和功能,包括赋值、打印、条件、循环 、文件等函数。又具备AutoCAD所特有的图形处理能力。利用AutoLISP语言编制的程序可以直接增加、修改和调用AutoCAD命令,在各种工程 CAD系统的开发中起着重要的作用。在 AutoCAD2000以后,通过 Visual LISP(VLISP)集成开发环境(Integrated Development Environment ,IDE)所提供的编辑器、凋试器以及其他工具,用户可方便地编写和修改AutoLISP源程序代码,调试、运行AutoLISP程序。

(二)二次开发目标

本文利用AutoLISP开发了在AutoCAD中实现快速绘绘制标题栏的目标。希望开发一个程序,产生一个新命令,该命令能自动快速产生一个符合企业标准的标题栏。标题栏能根据用户选择的所需的图长宽自动生成,还可以选择横装还是竖装、是否留装订边,同时根据打印选择的图纸型号设定合理的比例,使得打印效果符合标准又美观。标题栏上打印有所需的标准的文字,文字的样式等都设置为标准。例如:使用该能在10秒内完成如图1所示。

图1

(三)在AutoCAD中实现快速绘制标题栏的原理与实现

1.程序设计流程图,竖装、留边的情况,如图2所示:

图2

2.变量的设置,如图3所示:

图3

3.程序的编写

该程序的编写过程的难点是分别列出四种情况供选择,还分别对四种情况分别讨论,下面是上述功能的程序:

(defun C:de (/ ss ssdim ss0 listA listB listC dimV n )

(setq obl (getvar "blipmode")

ocm (getvar "cmdecho")

col (getvar "cecolor"))

(command "_.UNDO" "_GROUP")

(setvar "blipmode" 0) (setvar "cmdecho" 0)

(command "_.style" "mlts0" "Times.ttf" 01 0 "N" "N"

"_.style" "mlts" "romand.shx" 01 0 "N" "N" "N")

(command "_.linetype" "s" "center" ""

"_.linetype" "s" "hidden" ""

"_.linetype" "s" "continuous" "")

(setq listA (list "dimalt" "dimaltd" "dimalttd""dimalttz" "dimaltu" "dimaltz" "dimapost" "dimasz"

"dimaunit" "dimblk" "dimblk1" "dimblk2" "dimcen""dimclrd" "dimclre" "dimclrt" "dimdec" "dimdle"

"dimdli" "dimexe" "dimexo" "dimfit" "dimgap""dimjust" "dimlfac" "dimlim" "dimlunit" "dimpost""dimrnd"

"dimsah" "dimscale" "dimsd1" "dimsd2" "dimse1""dimse2" "dimsoxd" "dimtad" "dimtdec" "dimtfac"

"dimtih" "dimtix" "dimtm" "dimtofl" "dimtoh""dimtol" "dimtolj" "dimtp" "dimtsz" "dimtvp" "dimtxsty"

"dimtxt" "dimtzin" "dimunit" "dimupt" "dimzin""dimdsep"

)

listB (list 02 2 02 0 "" 0.18

1 "" "" "" 03 32 2 0

0.02 0.1 03 0.05 01 02 "" 0

0 50 0 0 0 0 0 02 1

0 0 01 0 01 0 0 0 "mlts"

0.25 02 0 8 ".")

k 0)

(setq ssdim (tblsearch "dimstyle" "mlts"))

;;;;;

(if (= ssdim nil)

(progn

(command "_.dimstyle" "s" "mlts")

(setq ssdim (tblsearch "dimstyle" "mlts"))

)

(command "_.dimstyle" "r" "mlts")

)

(setq ss (assoc2 ssdim)

ss (strcase (cdr ss)))

(if (= ss "MLTS")

(foreach dimV listA

(setvar (nth k listA) (nth k listB))

(setq k (1+ k))

))

(setvar "blipmode" obl) (setvar "cecolor" col)(setvar "cmdecho" ocm)

(command "_.UNDO" "_E")

(princ)

)

(princ " ** de.LSP (V4.00) ** Date:2006.4.10

Product By:莫玉梅")

(princ " Company:肇庆科技职业技术学院 ")

(princ " Type-------------<de> to run this

program.")

(princ " 此程序用来创建文本样式")

(princ)

(四)程序的使用

1.命令行方式

(1)当回到AutoCAD环境下,用Load函数装载就可以执行了。执行时,如果程序中没有 defun函数,系统便边装入边运行;若有 defun定义的命令或函数,装载后只需在Command:(如果是中文AutoCAD,Command被汉化为了“命令:”)提示符下键入 defun函数定义的命令或或函数名即可运行相应的命令或函数。加载文件格式:

Command:(load“驱动器:\路径\文件名”)

(2)在AutoCAD命令窗口输入:“de”→“enter”→选择所要加载的文件→加载。

2.对话框方式

选择下拉菜单“工具(Tools)”→“AutoLISP”→“加载”。随后出现“加载和卸载应用程序”窗口,如图 5.1.2所示。在“加载和卸载应用程序”窗口中选择所要加载的程序文件名,再单击“加载”;或是双击该文件名。

3.自动加载

在AutoCAD工作目录下有一个ACAD.LISP文件,它是当AutoCAD启动、新建文件(new)、打开文件(open)时自动装载的AutoLISP程序。用户可以修改它;实现一定的目的。例如,用户想要在 AutoCAD启动时自动装入自己定义的函数或程序,则可以在 ACAD.LISP程序中加入(defun xxx ())程序段或(load “xxx”)函数。

在装入ACAD.LISP文件进若出现一条Visual LISP错误,剩余的文件就会被忽略而不装入,并提示出错。如果一个Load函数的调用是成功的,它就返回被加载的文件中最后的那个表达式的值。

(五)小结

本文介绍了用AutoLISP对AutoCAD进行二次开发,开发新命令,该命令实现快速绘绘制标题栏。在工程绘图与打印图纸的过程中,使得AutoCAD软件更适用,使得绘图更方便、更快捷、更高效更准确,从而提高绘图效率和准确性。

[1] 魏崇光,等.AutoCAD 二次开发[M].北京:机械工业出版,2001.

[2] 赵景亮.AutoCAD 2004 与 AutoLISP二次开发技术[M].北京:清华大学出版社,2004.

[3] 文福安,等.AutoCAD R14 教程[M].北京:人民邮电出版社,1998.

[4] 梁雪春,等.AutoLISP 实用教程[M].北京:人民邮电出版社,2001.

[5] 陈启发,等.人工智能——AutoLISP——认识与实践-CAD汉字谐和技术-CQF软件包揭秘[M].北京:中国电力出版社,2006.

TP311.52

A

1008-1151(2011)03-0031-02

2010-12-30

莫玉梅(1982-),女(壮族),广西南宁人,肇庆科技职业技术学院机械工程助教,广东工业大学在读硕士生,研究方向为软件二次开发。

猜你喜欢
肇庆二次开发绘图
来自河流的你
“禾下乘凉图”绘图人
大地回春—肇庆十八年林丰俗作品特展
肇庆学院封
基于指数模型的R = P(Y <X <Z)统计推断
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
垂涎三尺
西门子Easy Screen对倒棱机床界面二次开发
Surfer和ArcView结合在气象绘图中的应用