找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6991|回复: 10

[AutoCAD] 求助:属性块里的内容怎么读取出来?

[复制链接]

12

主题

31

回帖

555

积分

助理工程师

UID
535
威望
0
机械币
104
活力
7
发表于 2011-6-29 13:35:21 | 显示全部楼层 |阅读模式



一般我们在CAD标图时,都会用到属性块,现想修改属性块内的内容,就是图中的 属性栏中的---“A001",
现想知道怎么才能读取出来(想读取出来后,对其修改)
若是手动一个个修改,效率太低了。。。
[ 此帖被机构在2011-06-19 22:03重新编辑 ]

        

  




  
  
少说多做,多想多问![td][/tr]

18

主题

19

回帖

740

积分

副高工程师

UID
200
威望
0
机械币
148
活力
0
发表于 2011-6-29 13:35:28 | 显示全部楼层

(defun cs-get-atts (ref / ATTS X)
(if (and (= (type ref) 'VLA-OBJECT)
(= (strcase (vla-get-objectname ref)) "ACDBBLOCKREFERENCE")
(= (vla-get-HasAttributes ref) :vlax-true)
)
(progn
(setq atts (vla-GetAttributes ref))
(setq atts (vlax-safearray->list (vlax-variant-value atts)))
(setq atts (mapcar '(lambda (x)
(cons (vla-get-TagString x)
(vla-get-TextString x)
)
)
atts
)
)
)
)
)

1

主题

6

回帖

84

积分

机械操作工

UID
528
威望
0
机械币
28
活力
0
发表于 2011-6-29 13:35:37 | 显示全部楼层

你发一张图要有块A4带有A001属性,用lisp可能能求出。
        

  




  
  
gbg[td][/tr]

12

主题

31

回帖

555

积分

助理工程师

UID
535
威望
0
机械币
104
活力
7
 楼主| 发表于 2011-6-29 13:35:44 | 显示全部楼层

我简单的做的图框,看看这个是否可以,或给个思路什么的,谢谢!
        

  
  
少说多做,多想多问![td][/tr]

1

主题

6

回帖

84

积分

机械操作工

UID
528
威望
0
机械币
28
活力
0
发表于 2011-6-29 13:36:09 | 显示全部楼层

用下面的程序:
求属性关键在 (setq en (entnext) en1 (entnext en) een1 (entget en1) att (cdr (assoc 0 een1)))
如只有A0001就不要循环,程序中用有条件的循环。


(defun c:intatt ()
(setq an (entsel "去点要求属性的块:") en (entget (car an)) p1 (cdr (assoc 10 en)) i 1 ;块的插入点84.7705,74.108,0
na (cdr (assoc 2 en)) ;块名a4-001
x (cdr (assoc 41 en)) y (cdr (assoc 42 en)) z (cdr (assoc 43 en)) ;x y z比例 1 1 1
ang (cdr (assoc 50 en)))
(setq en (entnext) en1 (entnext en) een1 (entget en1) att(cdr (assoc 0 een1))) ;属性ATTRIB
(while (= att "ATTRIB")
(setq txt (cdr (assoc 1 een1)) ;属性A0001
pp1 (cdr (assoc 10 een1)) ;属性A0001的输入点145.54,78.0572,0
h (cdr (assoc 40 een1)) ;属性的字高 1.8
txtang (cdr (assoc 50 een1)) ) ;属性A0001的角度 0
(setq en1 (entnext en1) een1 (entget en1) att (cdr (assoc 0 een1)))
)
)
        

  
  
gbg[td][/tr]

12

主题

31

回帖

555

积分

助理工程师

UID
535
威望
0
机械币
104
活力
7
 楼主| 发表于 2011-6-29 13:36:30 | 显示全部楼层

如果图框里有很多带属性的块,他又怎么一个个去识别呢?
        

  
  
少说多做,多想多问![td][/tr]

3

主题

14

回帖

222

积分

机械工程师

UID
133
威望
0
机械币
74
活力
0
发表于 2011-6-29 13:36:47 | 显示全部楼层

如果你的CAD是完全安装的(包含了express tools工具)可以使用attout命令输出到文本,然后修改后通过命令attin输入到属性块里!

3

主题

14

回帖

222

积分

机械工程师

UID
133
威望
0
机械币
74
活力
0
发表于 2011-6-29 13:37:08 | 显示全部楼层

如果txt文件修改不方便可以先改扩展名为xls,用EXCEL修改保存再改回txt文件!

12

主题

31

回帖

555

积分

助理工程师

UID
535
威望
0
机械币
104
活力
7
 楼主| 发表于 2011-6-29 13:37:26 | 显示全部楼层

express里有一个批量修改属性内容一致的命令:gatte

我一直想他能批量修改一致,那我就能批量修改逐个,可是。。。
我的想法是将属性块内的内容读取在进行修改。。。
        

  
  
少说多做,多想多问![td][/tr]

8

主题

15

回帖

867

积分

助理工程师

UID
395
威望
0
机械币
171
活力
0
发表于 2012-5-7 13:36:41 | 显示全部楼层
好资料啊,加油。。  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|机械村 ( 渝ICP备17010994号-1|渝公网安备50022702001048号 )

GMT+8, 2024-11-25 06:37 , Processed in 0.017885 second(s), 3 queries , Gzip On, Redis On.

Powered by 机械村

Copyright © 2012- Jixiecun.com

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