明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5443|回复: 15

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

  [复制链接]
发表于 2007-9-29 21:18:00 | 显示全部楼层 |阅读模式

删除块的属性文字

在做总图时,常常要合建筑的一层平面,而一层平面需要整理,一层平面的门等,都是块,有属性文字,在不炸开块的情

况下,把属性文字去掉呢?LSP怎么写呢?

发表于 2019-11-15 21:02:42 | 显示全部楼层
谢谢,在你们的帖子帮忙下,写了程序
发表于 2007-9-29 22:37:00 | 显示全部楼层
;;; CLear all attribute texts
;;; By Alvin Lin 29/09/2007
;;;
(defun C:ClearATT (/ doc currsp blks atts)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (if (= (vla-get-activespace doc) 1)
    (setq currsp (vla-get-modelspace doc))
    (setq currsp (vla-get-paperspace doc))
  )
  (vlax-for obj currsp
    (if (= (vla-get-objectName obj) "AcDbBlockReference")
      (if (= (vla-get-hasattributes obj) :vlax-true)
 (progn
   (setq atts (vlax-safearray->list
         (vlax-variant-value (vla-getattributes obj))
       )
   )
   (foreach att atts
;;;     (vla-put-textstring att "")
;;;     (vla-update att)
     (vla-delete att)
   )
 )
      )     ;if
    )     ; if
  )
  (princ)
)
发表于 2007-9-29 22:50:00 | 显示全部楼层
;;; CLear all attribute texts
;;; By Alvin Lin 29/09/2007
;;;
(defun C:ClearATT (/ doc currsp blks atts)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (if (= (vla-get-activespace doc) 1)
    (setq currsp (vla-get-modelspace doc))
    (setq currsp (vla-get-paperspace doc))
  )
  (vlax-for obj currsp
    (if (= (vla-get-objectName obj) "AcDbBlockReference")
      (if (= (vla-get-hasattributes obj) :vlax-true)
 (progn
   (setq atts (vlax-safearray->list
         (vlax-variant-value (vla-getattributes obj))
       )
   )
   (foreach att atts
;;;     (vla-put-textstring att "")
;;;     (vla-update att)
     (vla-delete att)
   )
 )
      )     ;if
    )     ; if
  )
  (princ)
)
 楼主| 发表于 2007-9-30 13:04:00 | 显示全部楼层
程序试用了,非常不错,原想是框选的,现在是整个文件,恩,谢谢
发表于 2007-9-30 15:06:00 | 显示全部楼层
  1. (defun c:xdelatt (/ FIL SS)
  2.   (princ "\n 删除块属性----------by lxx.2007.9")
  3.   (princ "\n 选择要删除属性的块<全部>:")
  4.   (if (not *cad)
  5.     (setq *cad (vlax-get-acad-object))
  6.   )
  7.   ;(x-CleanCSet)
  8.   (setq fil '((0 . "INSERT") (-4 . "&") (66 . 1)))
  9.   (or (setq ss (ssget fil))
  10.       (setq ss (ssget "x" fil))
  11.   )
  12.   (vla-eval *cad
  13.      "for each i in thisdrawing.activeselectionset : for each n in i.getattributes : n.delete :next n :next i"
  14.   )
  15. )
发表于 2007-10-1 08:04:00 | 显示全部楼层
本帖最后由 作者 于 2007-10-1 8:05:11 编辑

1 有些属性在 Blockdef 中有对应的 Attdef,有些块在 Blockdef 是没有对应的 Attdef 的

2 删除 Blockref 的 Attrib 不一定解决下一个 Insert 的 Attrib 问题。
发表于 2007-10-1 09:09:00 | 显示全部楼层
;;; CLear all attribute texts
;;; By Alvin Lin 29/09/2007
;;;
(defun C:ClearATT (/ doc blks atts)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (setq blks (vla-get-blocks doc))
  (vlax-for blk blks
    (vlax-for obj blk
      (cond ((= (vla-get-objectName obj) "AcDbBlockReference")
      (if (= (vla-get-hasattributes obj) :vlax-true)
        (progn
   (setq atts (vlax-safearray->list
         (vlax-variant-value (vla-getattributes obj))
       )
   )
   (mapcar 'vla-delete atts)
        )
      ) ;if
     )
     ((= (vla-get-objectName obj) "AcDbAttributeDefinition")
      (vla-delete obj)
     )
      ); cond
    ); vlax-for
  ); vlax-for
  (princ)
)
 楼主| 发表于 2007-10-2 11:13:00 | 显示全部楼层
本帖最后由 作者 于 2007-10-2 11:13:56 编辑

无痕发表于2007-9-30 15:06:00(defun c:xdelatt (/ FIL SS)  (princ \"\n 删除块属性----------by lxx.2007.9\")  (princ \"\n 选择要删除属性的块<全部>:\")  (if (not *cad)    (set

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

 楼主| 发表于 2007-10-2 11:15:00 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-10-2 11:17:00 | 显示全部楼层
alin发表于2007-10-1 9:09:00;;; CLear all attribute texts;;; By Alvin Lin 29/09/2007;;;(defun C:ClearATT (/ doc blks atts)  (setq doc (vla-get-activedocument (vlax-get-acad-object)))  (setq blks (v

会出现以下错误,什么原因呢

命令: clearatt
Automation 错误。 对象已被删除

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-9 10:50 , Processed in 0.190612 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表