在AutoCAD中自动生成明细表

  • 在AutoCAD中自动生成明细表已关闭评论
  • 26 views
  • A+
所属分类:AutoCAD

1. 建立明细表数据文件
首先,把明细表的数据信息,用文字编辑器按如下格式写入磁盘文件MXB.TXT中,作为明细表数据文件。
“1”“35.1”“气缸透盖”“1”“ZG35”“”“”“”
“2”“35.2”“气缸体”“1”“35”“”“”“”
“3”“35.3”“螺塞”“2”“A3F”“”“”“”
“4”“GB6170-86”“螺母M10”“12”“A3F”“”“”“”
“5”“35.4”“压盖”“1”“TH200”“”“”“”
……
然后用AutoLisp的READ-LINE函数提取有关数据信息,并把该数据信息赋给表格图块属性。
注意:各字符串要加双引号,空字符串引号“”不可省略,以便AutoLisp识别。
2.建立明细表格式图块
通常,一个明细表是由表头和表体两部分组成。表头是固定的,因此可以用AutoCAD命令生成一个固定的表头,并把它作为一个图块存入磁盘。
假设要得到明细表,则先做一个明细表表头。

表头实际上是一个图形文件,本文设定该文件名为MXB.DWG,然后用AutoCAD命令建立一个图块,设其文件名为MXB1.DWG,M1~M8均为属性名。

当用户向表中插入该块时,系统会向用户询问属性值,此时用AutoLisp程序将上面建立的明细表数据文件中的数据分别赋给各个属性。属性的定义是用AutoCAD命令ATTDEF完成的。
编制程序
首先,用AutoLisp的I/O函数READ-LINE读入数据文件MXB.TXT,再用字符串连接函数STRCAT给文件的每一行加上括号,此时数据类型为字符串(STR)。然后,再利用READ函数把字符串转换成一个表(LIST),以方便AutoLisp对表中的每一项进行各种操作。最后,用AutoLisp的COMMAND函数调用INSERT命令,先将图块MXB.DWG插入表中,再将MXB1.DWG插入表中,用NTH函数将前面AutoLisp读入的数据中各项信息分别赋给MXB1.DWG中的各个属性。
下面给出实现上述功能的程序清单:

  1. (defun C:mxb(/scmde p f1 bk a m1 m2 m3 m4 m5 m6 m7 m8 p1)  
  2. (setq scmde (getvar “cmdecho")) 
  3. (setvar “cmdecho" 0)  
  4. (setq p (getpoint “\n Please input a point:")) 
  5. (setq f1 (getstring “\n Please input file name:"))  
  6. (setq f (open f1 “r")) 
  7. (print “\n Please wait ...")  
  8. (setq bk “mxb") 
  9. (command “insert" bk p 1 1 0)  
  10. (setq bk “mxb1") 
  11. (setq p1 (list (car p) (+ (cadr p) 8))) 
  12. (while (setq a (read-line f )) 
  13. (setq a (strcat “(“a ")")) 
  14. (setq a (read a)) 
  15. (setq m1 (nth 0 a)) 
  16. (setq m1 (nth 0 a)) 
  17. (setq m2 (nth 1 a)) 
  18. (setq m3 (nth 2 a)) 
  19. (setq m4 (nth 3 a)) 
  20. (setq m5 (nth 4 a)) 
  21. (setq m6 (nth 5 a)) 
  22. (setq m7 (nth 6 a)) 
  23. (setq m8 (nth 7 a)) 
  24. (command “insert" bk p1 “" “" “" m1 m2 m3 m4 m5 m6 m7 m8) 
  25. (setq p1 (list (car p1) (+ 8 (cadr p1)))) 
  26. ) 
  27. (setvar “comdecho" scmde)  
  28. (close f)  
  29. (print)  
  30. )  

程序的安装与使用
1.安装程序
可以选择以下三种装载方式的任意一种:
?在AutoCAD环境下,将MXB.LSP拷贝至当前目录,再执行(LOAD“MXB”),即可装载MXB.LSP。
?先将MXB.LSP拷贝至\ACAD\SUPPORT子目录下,再在\ACAD\SUPPORT\ACAD.LSP中加入下面一条语句:
(AUTOLOAD “MXB”(“MXB”))
即可实现启动AutoCAD时自动装载该程序。
?先将MXB.LSP拷贝至\ACAD\SUPPORT子目录下,再在\ACAD\SUPPORT\子目录下的菜单文件ACAD.MNU中的合适位置处加上下面一条语句:
[生成明细表]^C^C(LOAD “C:/ACAD/SUPPORT/MXB.LSP")MXB
即可直接在菜单中操作生成明细表。
2.程序的使用
当用户装载该程序并运行之后,程序首先出现提示信息:
Please input a point:
用户给出一个定位点后,程序继续提示:
Please input file name:
再输入明细表数据文件名后,程序继续运行,并提示:
Please wait...
程序运行结束后就可以生成一个明细表。