my_autocad 发表于 2007-9-29 21:18:00

[求助]删除块的属性文字

<p>删除块的属性文字</p><p>在做总图时,常常要合建筑的一层平面,而一层平面需要整理,一层平面的门等,都是块,有属性文字,在不炸开块的情</p><p>况下,把属性文字去掉呢?LSP怎么写呢?</p>

chinabigapple 发表于 2019-11-15 21:02:42

谢谢,在你们的帖子帮忙下,写了程序

alin 发表于 2007-9-29 22:37:00

;;; CLear all attribute texts<br/>;;; By Alvin Lin 29/09/2007<br/>;;;<br/>(defun C:ClearATT (/ doc currsp blks atts)<br/>&nbsp; (setq doc (vla-get-activedocument (vlax-get-acad-object)))<br/>&nbsp; (if (= (vla-get-activespace doc) 1)<br/>&nbsp;&nbsp;&nbsp; (setq currsp (vla-get-modelspace doc))<br/>&nbsp;&nbsp;&nbsp; (setq currsp (vla-get-paperspace doc))<br/>&nbsp; )<br/>&nbsp; (vlax-for obj&nbsp;currsp<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(= (vla-get-objectName obj) "AcDbBlockReference")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (vla-get-hasattributes obj) :vlax-true)<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (setq&nbsp;atts (vlax-safearray-&gt;list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes obj))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (foreach att atts<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-textstring att "")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (vla-update att)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (vla-delete att)<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;if<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; if<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)<br/>

alin 发表于 2007-9-29 22:50:00

;;; CLear all attribute texts<br/>;;; By Alvin Lin 29/09/2007<br/>;;;<br/>(defun C:ClearATT (/ doc currsp blks atts)<br/>&nbsp; (setq doc (vla-get-activedocument (vlax-get-acad-object)))<br/>&nbsp; (if (= (vla-get-activespace doc) 1)<br/>&nbsp;&nbsp;&nbsp; (setq currsp (vla-get-modelspace doc))<br/>&nbsp;&nbsp;&nbsp; (setq currsp (vla-get-paperspace doc))<br/>&nbsp; )<br/>&nbsp; (vlax-for obj&nbsp;currsp<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(= (vla-get-objectName obj) "AcDbBlockReference")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (vla-get-hasattributes obj) :vlax-true)<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (setq&nbsp;atts (vlax-safearray-&gt;list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes obj))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (foreach att atts<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-textstring att "")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (vla-update att)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (vla-delete att)<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;if<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; if<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)<br/>

my_autocad 发表于 2007-9-30 13:04:00

程序试用了,非常不错,原想是框选的,现在是整个文件,恩,谢谢

无痕 发表于 2007-9-30 15:06:00

(defun c:xdelatt (/ FIL SS)
(princ "\n 删除块属性----------by lxx.2007.9")
(princ "\n 选择要删除属性的块<全部>:")
(if (not *cad)
    (setq *cad (vlax-get-acad-object))
)
;(x-CleanCSet)
(setq fil '((0 . "INSERT") (-4 . "&") (66 . 1)))
(or (setq ss (ssget fil))
      (setq ss (ssget "x" fil))
)
(vla-eval *cad
   "for each i in thisdrawing.activeselectionset : for each n in i.getattributes : n.delete :next n :next i"
)
)

ivde 发表于 2007-10-1 08:04:00

本帖最后由 作者 于 2007-10-1 8:05:11 编辑 <br /><br /> 1 有些属性在 Blockdef 中有对应的 Attdef,有些块在 Blockdef 是没有对应的 Attdef 的<br/><br/>2 删除 Blockref 的 Attrib 不一定解决下一个 Insert 的 Attrib 问题。<br/>

alin 发表于 2007-10-1 09:09:00

;;; CLear all attribute texts<br/>;;; By Alvin Lin 29/09/2007<br/>;;;<br/>(defun C:ClearATT (/ doc blks atts)<br/>&nbsp; (setq doc (vla-get-activedocument (vlax-get-acad-object)))<br/>&nbsp; (setq blks (vla-get-blocks doc))<br/>&nbsp; (vlax-for blk&nbsp;blks<br/>&nbsp;&nbsp;&nbsp; (vlax-for obj blk<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond ((= (vla-get-objectName obj) "AcDbBlockReference")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (vla-get-hasattributes obj) :vlax-true)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp; (setq atts (vlax-safearray-&gt;list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes obj))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (mapcar 'vla-delete atts)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;if<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= (vla-get-objectName obj) "AcDbAttributeDefinition")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-delete obj)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ); cond<br/>&nbsp;&nbsp;&nbsp; ); vlax-for<br/>&nbsp; ); vlax-for<br/>&nbsp; (princ)<br/>)

my_autocad 发表于 2007-10-2 11:13:00

本帖最后由 作者 于 2007-10-2 11:13:56 编辑 <br /><br /> 无痕发表于2007-9-30 15:06:00static/image/common/back.gif(defun c:xdelatt (/ FIL SS)&nbsp; (princ \"\n 删除块属性----------by lxx.2007.9\")&nbsp; (princ \"\n 选择要删除属性的块&lt;全部&gt;:\")&nbsp; (if (not *cad)&nbsp;&nbsp;&nbsp; (set

<p>恩,这个程序支持多选,但内容选多了,或全选,会出现如图示的错误提示</p>

my_autocad 发表于 2007-10-2 11:15:00

my_autocad 发表于 2007-10-2 11:17:00

alin发表于2007-10-1 9:09:00static/image/common/back.gif;;; CLear all attribute texts;;; By Alvin Lin 29/09/2007;;;(defun C:ClearATT (/ doc blks atts)&nbsp; (setq doc (vla-get-activedocument (vlax-get-acad-object)))&nbsp; (setq blks (v

<p>会出现以下错误,什么原因呢</p><p>命令: clearatt<br/>Automation 错误。 对象已被删除</p>
页: [1] 2
查看完整版本: [求助]删除块的属性文字