保标招标|建筑工程中如何在AutoCAD中自动生成明细表?

在AutoCAD中自动生成明细表
建立明细表数据文件
首先 , 把明细表的数据信息 , 用文字编辑器按如下格式写入磁盘文件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识别 。
建立明细表格式图块通常 , 一个明细表是由表头和表体两部分组成 。 表头是固定的 , 因此可以用AutoCAD命令生成一个固定的表头 , 并把它作为一个图块存入磁盘 。 假设要得到明细表 , 则先做一个明细表表头 。 表头实际上是一个图形文件 , 本文设定该文件名为MXB.DWG , 然后用AutoCAD命令建立一个图块 , 设其文件名为MXB1.DWG , M1~M8均为属性名 。 当用户向表中插入该块时 , 系统会向用户询问属性值 , 此时用AutoLisp程序将上面建立的明细表数据文件中的数据分别赋给各个属性 。 属性的定义是用AutoCAD命令ATTDEF完成的 。
保标招标|建筑工程中如何在AutoCAD中自动生成明细表?
文章图片
【保标招标|建筑工程中如何在AutoCAD中自动生成明细表?】编制程序首先 , 用AutoLisp的I/O函数READ-LINE读入数据文件MXB.TXT , 再用字符串连接函数STRCAT给文件的每一行加上括号 , 此时数据类型为字符串(STR) 。 然后 , 再利用READ函数把字符串转换成一个表(LIST) , 以方便AutoLisp对表中的每一项进行各种操作 。 最后 , 用AutoLisp的COMMAND函数调用INSERT命令 , 先将图块MXB.DWG插入表中 , 再将MXB1.DWG插入表中 , 用NTH函数将前面AutoLisp读入的数据中各项信息分别赋给MXB1.DWG中的各个属性 。
下面给出实现上述功能的程序清单:(defunC:mxb(/scmdepf1bkam1m2m3m4m5m6m7m8p1)(setqscmde(getvar“cmdecho''))(setvar“cmdecho''0)(setqp(getpoint“nPleaseinputapoint:''))(setqf1(getstring“nPleaseinputfilename:''))(setqf(openf1“r''))(print“nPleasewait...'')(setqbk“mxb'')(command“insert''bkp110)(setqbk“mxb1'')(setqp1(list(carp)(+(cadrp)8)))(while(setqa(read-linef))(setqa(strcat“(“a'')''))(setqa(reada))(setqm1(nth0a))(setqm1(nth0a))(setqm2(nth1a))(setqm3(nth2a))(setqm4(nth3a))(setqm5(nth4a))(setqm6(nth5a))(setqm7(nth6a))(setqm8(nth7a))(command“insert''bkp1“''“''“''m1m2m3m4m5m6m7m8)(setqp1(list(carp1)(+8(cadrp1)))))(setvar“comdecho''scmde)(closef)(print))
程序的安装与使用1.安装程序可以选择以下三种装载方式的任意一种:?在AutoCAD环境下 , 将MXB.LSP拷贝至当前目录 , 再执行(LOAD“MXB”) , 即可装载MXB.LSP 。 ?先将MXB.LSP拷贝至ACADSUPPORT子目录下 , 再在ACADSUPPORTACAD.LSP中加入下面一条语句:(AUTOLOAD“MXB”(“MXB”))即可实现启动AutoCAD时自动装载该程序 。 ?先将MXB.LSP拷贝至ACADSUPPORT子目录下 , 再在ACADSUPPORT子目录下的菜单文件ACAD.MNU中的合适位置处加上下面一条语句:[生成明细表]^C^C(LOAD“C:/ACAD/SUPPORT/MXB.LSP'')MXB即可直接在菜单中操作生成明细表 。
2.程序的使用当用户装载该程序并运行之后 , 程序首先出现提示信息:Pleaseinputapoint:用户给出一个定位点后 , 程序继续提示:Pleaseinputfilename:再输入明细表数据文件名后 , 程序继续运行 , 并提示:Pleasewait...程序运行结束后就可以生成一个明细表 。