关于块属性的提取
如何通过lisp编程实现对DWG内所有的块进行属性提取?在AUTOCAD中有块属性提取的命令(-eattext),但是需要用户一步一步的输入信息。如果这些需要输入的信息每次都是一样的的,不需要每次都重复输入,能否通过lisp实现这个属性提取的功能,将这些输入的信息也嵌套在lisp中,这样直接输入一个lisp命令就能把属性提取出来了。请问思路是什么?谢谢大家!
顶起来我们都想要 大侠些,有没有这种现成的求多个相同块中某个数值的和,插入到指定位置?求分享一个,感激不尽。 attext要比eattext简单一些 这个功能我正好需要,期待高手能解决这个问题 本帖最后由 Gu_xl 于 2012-10-27 20:48 编辑
(defun c:tt (/ d r ss n obj atts)
(while (setq d (tblnext "block" (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
(and r
(setq filename (getfiled "属性输出文件名" "" "csv" 1))
)
(if filename
(progn
(setq f (open filename "w"))
(foreach name r
(setq ss (ssget "x" (list '(0 . "insert")'(66 . 1) (cons 2 name))))
(if ss
(progn
(WRITE-LINE (strcat "序号,块名称,\"" name "\"") f)
(setq atts (append
(vlax-invoke (setq obj (vlax-ename->vla-object (ssname ss 0))) 'GetConstantAttributes)
(vlax-invoke obj 'GetAttributes)
)
)
(princ "属性名称," f)
(foreach att atts
(princ (vla-get-TagString att) f) (princ "," f)
)
(princ "\n" f)
(setq n -1)
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss (setq n (1+ n)))))
(setq atts (append
(vlax-invoke obj 'GetConstantAttributes)
(vlax-invoke obj 'GetAttributes)
)
)
(princ (1+ n) f) (princ "," f)
(foreach att atts
(princ (vla-get-TextString att) f) (princ "," f)
)
(princ "\n" f)
)
)
)
)
(close f)
)
)
) 高明,多谢了,再请问同一个属性的多个块能自动在excel中计数吗? 还请教个问题:见附件 湜1只鱼 发表于 2012-10-27 19:22 static/image/common/back.gif
还请教个问题:见附件
5楼代码已改! xiangkan!!!!!!!!!!!!!!!!!!!!!1 本帖最后由 zml84 于 2012-10-28 11:46 编辑 <br /><br />凑个热闹,<a href="http://zml84.blog.sohu.com/228919594.html" target="_blank">http://zml84.blog.sohu.com/228919594.html</a><br><br><pre style="line-height: 25.600000381469727px; color: rgb(0, 0, 0); font-size: 14.399999618530273px; "><font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;;=================================================================*</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;; 通用函数 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;;功能:属性块中属性文字的修改 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;;参数: EN -----包含属性的块的图元名称 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;; AttName -----属性名称 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;; int -----修改的组码编号 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;; Value -----修改为的值 *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;;返回:T表示修改成功;否则返回nil *</span></font>
<font face="Fixedsys" color="#990099" style="line-height: 25.600000381469727px; "><span style="line-height: 25.600000381469727px; background-color: rgb(204, 204, 204); ">;;;日期:zml84 于 2012-07-23 *</span></font>
<font face="Fixedsys" color="#FF0000" style="line-height: 25.600000381469727px; ">(</font><font face="Fixedsys" color="#0000FF" style="line-height: 25.600000381469727px; ">defun</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">ZL-INSERT-SETATT</font> <font face="Fixedsys" color="#FF0000" style="line-height: 25.600000381469727px; ">(</font><font face="Fixedsys" style="line-height: 25.600000381469727px; ">EN</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">ATTNAME</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">int</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">VALUE</font> <font face="Fixedsys" color="#0000FF" style="line-height: 25.600000381469727px; ">/</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">RETURN</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">E</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">TEST</font> <font face="Fixedsys" style="line-height: 25.600000381469727px; ">ENT</font><font face="Fixedsys" color="#FF0000" style="line-height: 25.600000381469727px; ">)</font></pre><pre style="line-height: 25.600000381469727px; color: rgb(0, 0, 0); font-size: 14.399999618530273px; "><font face="Fixedsys" color="#FF0000" style="line-height: 25.600000381469727px; ">...</font></pre><pre style="line-height: 25.600000381469727px; color: rgb(0, 0, 0); font-size: 14.399999618530273px; "><font face="Fixedsys" color="#FF0000" style="line-height: 25.600000381469727px; ">...</font></pre>