找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1522|回复: 6

[求助] [求助]:遍历块时要如何取得”ATTRIB”的表值

[复制链接]
发表于 2002-3-21 21:28:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
当块中含有属性时,在遍历块时只能取得”ATTDEF”的表值,请问在遍历块时要如何取得”ATTRIB”的表值。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8个

财富等级: 恭喜发财

发表于 2002-3-21 23:06:33 | 显示全部楼层
用entnext函数试试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-21 23:15:55 | 显示全部楼层
用下列程序在单层块中遍历块时取得的是”ATTDEF”的表值,在巢状块(多层块)中遍历块时却能得到”ATTRIB”的表值。
但要如何在遍历单层块时要取得”ATTRIB”的表值。


  1. (defun C:BLK_ENT (/ A BLK E)
  2.   (defun DIMLIST (E / BLK)
  3. ;;;(print (cdr (assoc 2 (entget E))))
  4.     (setq BLK (tblsearch "block" (cdr (assoc 2 (entget E)))))
  5.     (setq E (cdr (assoc -2 BLK)))
  6.     (while E
  7.       (if (or (= "INSERT" (cdr (assoc 0 (entget E))))
  8.               (= "DIMENSION" (cdr (assoc 0 (entget E))))
  9.           )
  10.         (DIMLIST E)
  11.         (print (entget E))
  12.       )
  13.       (setq E (entnext E))
  14.     )
  15.     (princ)
  16.   )
  17.   (setq A (entsel "\n请选图块: "))
  18.   (if (or (= "INSERT" (cdr (assoc 0 (entget (car A)))))
  19.           (= "DIMENSION" (cdr (assoc 0 (entget (car A)))))
  20.       )
  21.     (progn
  22.    ;;;(print (cdr (assoc 2 (entget (car A)))))
  23.       (setq BLK (tblsearch "block" (cdr (assoc 2 (entget (car A))))))
  24.       (setq E (cdr (assoc -2 BLK)))
  25.       (while E
  26.         (if (or        (= "INSERT" (cdr (assoc 0 (entget E))))
  27.                 (= "DIMENSION" (cdr (assoc 0 (entget E))))
  28.             )
  29.           (DIMLIST E)
  30.           (print (entget E))
  31.         )
  32.         (setq E (entnext E))
  33.       )
  34.     )
  35.   )
  36.   (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2002-3-22 06:51:35 | 显示全部楼层

here...


  1.   [FONT=courier new]
  2. (if (setq esl (entsel))
  3.   (progn
  4.     (setq en (car esl)
  5.           ob (vlax-ename->vla-object en)
  6.     )
  7.     (if (and
  8.           (= (vla-get-ObjectName ob) "AcDbBlockReference")
  9.           (= (vla-get-HasAttributes ob) :VLAX-TRUE)
  10.         )
  11.       (progn
  12.         (setq attrib-object-array (vlax-variant-value (vla-GetAttributes ob))
  13.               attrib-object-list (vlax-safearray->list attrib-object-array)
  14.               nLength (length attrib-object-list)
  15.         )
  16.         ;...
  17.         ;...    add your handles here 8-)
  18.         ;...
  19.       )
  20.     );end if
  21.     ;(vlax-release-object ob)
  22.   );end progn
  23. );end if
  24.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-22 22:28:23 | 显示全部楼层
谢谢了!!有效!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-3-24 12:21:51 | 显示全部楼层

  1. ;;;(getATT e "A")获得某个属性attname的属性值,没有attname则返回nil

  2. (defun getATT (e attname / ATT E1 EN EN1 RSLT)
  3.   (setq en(entget e) e1 e)
  4.   (if (and (= (dxf 0 en) "INSERT")
  5.            (= (dxf 66 en) 1))(progn
  6.     (setq e1 (entnext e1)att(strcase attname))
  7.     (while (and e1 (setq en1(entget e1))
  8.                 (= (dxf 0 en1) "ATTRIB"))
  9.       (if (= (strcase (dxf 2 en1)) att)
  10.         (setq rslt en1 e1 nil);;找到一个即退出
  11.         (setq e1 (entnext e1))
  12.       )
  13.     ) )
  14.     (setq rslt nil)
  15.   )rslt
  16. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-26 02:24:03 | 显示全部楼层
谢谢了!!
纯lisp程序就能在R14上执行了,很好很好!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-5 03:08 , Processed in 0.421266 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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