利用lisp进行AutoCAD二次开发(环境说明、文件读取、以及表格创建与写值)

今天的这个例子是lisp计算机语言编程,说到这门计算机语言还是大学的时候接触的,不过那时候都是停留在了解的层面上,后面编写AutoCAD二次开发程序几乎是用的是C#。所以对lisp不熟,就别提关于lisp在AutoCAD方面的接口。而今天所以又捡起这么计算机语言,是出于两方面原因,首先在AutoCAD明经测绘GIS板块中有相当一部分代码是lisp编写的,这部分代码非常实用于测绘GIS日常生产。另外一个方面是,在AutoCAD论坛中,autoLisp版块非常活跃,这里常常汇聚着一些业界的大牛,在这里开源了相当一部分代码。可以说,是一部分相当不错的资料。

使用lisp开发AutoCAD程序开发环境为AutoCAD自带的编辑器。具体界面如下图所示。

代码只要写在空白处,保存为.lsp后缀文件即可。下面来说一下,常用的调试键,F8为单步调试,为嵌套的方式,会层层的深入。而如果想一个一个表达式调试,只要shift+F8即可。而下面截图中按钮是对代码的执行,代码的检查,由于lisp以非常繁琐的链表方式,即括号的方式编写,所以使用这几个功能对代码的检查是十分有必要的。

类似于C#,JAVA计算机语言,我们在调试的时候需要对我们的变量值进行查看,在AutoCAD中可以使用如下图的监视窗口。在窗口中输入变量的值,可以查看程序运行中,变量值的变化。

而我们在开发中,往往需要对代码进行类似C#一样,将AutoCAD添加到进程中调试,在AutoCAD自带的编辑器中,我们只要使用激活AutoCAD即可。具体如下图所示。

好了,关于编写AutoCAD开发的lisp程序方面的环境,以及常用的快捷键就说明完,当然了,更多的相关的知识,大家可以查看网络的相关资料,这里就不做详细的说明。

今天的这个例子是利用AutoCAD对象,利用反射调用函数打开文件窗口,读取文件。然后读文件该目录下的dwg后缀的文件。再由AutoCAD里面创建表格,将文件名填写到表格里面,整个程序就作完工作。在这里例子,我们将会学到AutoCAD对象的链接,模型空间中添加表格,表格单元格的填写。就lisp语法而言,有对象的反射调用,循环的使用。可以说是学习AutoCAD在lisp开发不错的例子。具体的实现代码如下图所示。

(defun c:GET_FILES ( / sh folder folderobject result)
(vl-load-com)
(command "cmdecho" 0)
(setq sh (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ))
(setq folder (vlax-invoke-method sh 'BrowseForFolder 0 "" 0 ))
(vlax-release-object sh)
(setq folderobject (vlax-get-property folder 'Self))
(setq result (vlax-get-property FolderObject 'Path))
(setq Files_Folder (vl-directory-files result "*.dwg"))

(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(setq pt (vlax-3d-point 0 0 0))
(setq modelSpace (vla-get-ModelSpace doc))
(setq MyTable (vla-Addtable modelSpace pt (+ (length Files_Folder) 2) 2 10 100))
(vla-ZoomExtents acadObj)
(vla-setText MyTable 0 0 "图形文件列表")
(vla-setText MyTable 1 0 "序号")
(vla-setText MyTable 1 1 "文件名")

(if (/= (length Files_Folder) 0)
(repeat (setq N (length Files_Folder))
 (setq e (nth (setq N (- N 1)) Files_Folder))
 (setq fsl (strlen e))
 (Setq Fsl (- fsl 4))
 (setq Fname (substr e 1 fsl))
 (vla-setText MyTable (+ N 2) 0 (+ N 1))
 (vla-setText MyTable (+ N 2) 1 Fname)
)
(princ "\n无 *.DWG 后缀的文件")
) 

(command "cmdecho" 1)
(princ)
)

下面来看一下录制的gif效果。

 


                                                                                更多内容,请关注公众号

                                                                         

注意不是书籍,是随书源代码 《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》重点讲解autolisp、dcl、visual lisp三合一的autocad二次程序开发技术。《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》分为4篇,共35章。第1篇(第1~10章)为autollsp程序设计基础篇,主要介绍了autollsp的基本结构、语法、功能函数、对象属性、循环、判断式、子程序、选择集、符号表、读文件以及写文件等autolisp程序设计的相关知识与技巧。第2篇(第11章)为62个精选实用autolisp程序设计范例,通过精讲62个autolisp程序设计范例,让读者将autolisp知识融会贯通。第3篇(第12~21章)为autolisp与dcl对话框整合应用,主要介绍了dcl的基础知识、dcl对象属性的定义速查、autolisp掌控dcl的关键技巧;还介绍了编辑框、按钮和文字、切换开关、单选按钮、列表框、下拉菜单、图像,图像按钮及滑动条的设计技巧;另外介绍了新手常犯错误分析及应对技巧。第4篇(第22~35章)为visuallisp程序设计应用与整合,主要介绍visual lisp的基本环境、重要函数和程序调试;还介绍了autocad activex对象控制以及visual lisp在e2d、3d、文字编辑、图层管理、块与属性管理、options选项控制、excel及word中的应用;最后介绍了visual lisp应用程序的创建与维护。   《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》语言风趣生动,内容全面,是一本不可多得的完全学习指南。它可以帮助读者扎扎实实学好autolisp+dcl+visual lisp程序设计,迅速提升读者的设计效率及绘图品质。《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》非常适合autocad的初、中、高级读者使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yGIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值