帮助更改LISP代码
有人可以帮我修改这个LISP代码,因为我是一个乞丐当谈到LISP。我在这个网站的一个论坛上发现了下面的LISP,这很好,唯一的问题是我一次只能选择一个属性。有没有办法改变这一点,选择一个窗口,而不是单独?(defun mydcl(zagl信息列表/fl ret dcl\u id)
(vl load com)
(如果(null-zagl)
(setq zagl“选择”)
) ;_ if结束
(setq fl(vl filename mktemp“mip”nil.dcl”))
(setq ret(open fl“w”))
(mapcar’(λ(x)(写入行x ret))
(列出“mip_消息:对话框{”
(strcat“标签=\”“zagl”\“;”)
“:list_box{”
“对齐=顶部;”
“宽度=51;”
(如果(>(长度信息列表)26)
“高度=26;”
(strcat“height=(itoa(+3(长度信息列表)))”;“”)
) ;_ if结束
“is\u tab\u stop=false;”
“key=\”info\“;}”
“ok\u cancel;}”
) ;_ 列表结束
) ;_ mapcar结束
(setq ret(close ret))
(if(setq dcl\U id(load\U dialog fl))
(if(新建对话框“mip\U msg”dcl\U id)
(程序
(start_list“info”)
(mapcar的add_list info list)
(end_列表)
(set_tile“info”“0”)
(setq ret(汽车信息列表))
(action\u tile“info”“(setq ret(nth(atoi$value)info list)))
(action\u tile“cancel”“(progn(setq ret nil)(done\u dialog 0)))
(action\u tile“accept”“(done\u对话框1)”)
(start_对话框)
) ;_ 程序结束
) ;_ if结束
) ;_ if结束
(unload\u对话框dcl\u id)
(vl文件删除fl)
ret公司
)
;;;=============================================== =================================
;;;作者:Michael Puckett。
;;;(setq all_layers(表格列表“LAYER”))
(defun表格列表(s/d r)
(while(setq d(tblnext s(null d)))
(setq r(cons(cdr(assoc 2 d))r))
)
)
(defun C:CHATTLAY(/*error*lay att ed blk blkdef doc)
(vl load com)
(setq doc(vla get activedocument(vlax get acad object)))
(if(setq lay(mydcl“Select layer”(acad\U strlsort(tablelist“layer”))))
(程序
(while(setq att(nentselp“\n选择属性:”))
(如果(=(cdr(assoc 0(setq ed(entget(setq att(car att)20460;俬)俬))“ATTRIB”)
(程序
(setq att(vlax ename->vla对象att))
(setq blk(vla objectidtoobject doc(vla get ownerid att)))
(setq blkdef(vla item(vla get blocks doc)(vla get name blk)))
(itm blkdef的vlax
(if(and(=(vla get objectname itm)“AcDbAttributeDefinition”)
(=(strcase(vla get tagstring itm))(strcase(vla get tagstring att)))
(程序
(vla put layer itm lay)
(vla put layer att lay)
)
)
)
(vla更新blk)
)
)
)
)
)
(普林斯)
)
(princ“\n键入CHATTLAY以运行”)
页:
[1]