mentel
发表于 2012-9-13 13:00:32
本帖最后由 mentel 于 2012-9-13 13:05 编辑
不知道怎么下载
8661994
发表于 2012-9-14 03:27:42
天正文字无法刷 命令行提示:Automation 错误。未提供说明。
smartstar
发表于 2012-9-14 08:17:42
本帖最后由 smartstar 于 2012-9-14 08:22 编辑
楼主有几个可以改进的地方
1、增加对转角标注的处理,修改如下:
①选集改成:
(setq ss (ssget ":S" '((0 . "*TEXT,DIMENSION,TCH_DRAWINGNAME,TCH_ELEVATION,INSERT,ATTDEF,ATTRIB"))))
②点选选改成:
(if (= (caar (setq ss_data (ssnamex ss 0))) 1)
(progn ; 点选时
(setq ent (ssname ss 0))
(if (= "DIMENSION" (setq entype (cdr (assoc 0 (entget ent)))))
(setqen1 ent
ob (vlax-ename->vla-object en1)
)
(setq pt (trans (cadr (last (car ss_data))) 0 1)
en1 (car (nentselp pt))
en1_data (entget en1)
entype (cdr (assoc 0 en1_data))
ob (vlax-ename->vla-object en1)
)
)
(wenzishua entype ob source_text en1 ent)
(princ)
)
③wenzishua 函数 增加处理:
(if (= "DIMENSION" (cdr (assoc 0 (entget ent))))
(progn
(vla-put-Textoverride ob source_text)
(entupd en1)
(entupd ent)
)
)
2,楼主可以添加对多行位子和标注文字提取后字符串的处理(tsrdel '(\P \A1";") source_text)))
(defun tsrdel (lst w_tsr)
(foreach n lst
(while (vl-string-search n w_tsr)
(setq w_tsr (vl-string-subst "" n w_tsr))
)
)
w_tsr
)
3,可能ark-nentsel 函数代替nentsel函数
(defun ark-nentsel (msg)
(while
(progn
(setvar 'ERRNO 0)
(setq sel (nentsel msg))
(cond
((= 7 (getvar 'ERRNO))
(princ "\n没有选中,请重新尝试!")
)
((not sel)
nil
)
((listp sel)
(setq en_data (entget (car sel))
source_text (cdr (assoc 1 en_data))
)
(if (null source_text)
(princ "\n对象类型错误,请重新选择!")
)
)
)
)
)
sel
)
4,未能解决的问题:
把块中转角标注刷文字后,当炸开块后,标注会变回原来的数值。希望楼主能够解决。
以上是个人愚见,若有不对的地方,请楼主包涵和指教。谢谢楼主这么好的程序。
穿靴子的猫
发表于 2012-9-14 10:10:31
好好的东东。。。谢谢楼主分享。
云中孤鹰
发表于 2012-9-14 10:15:14
好东东,支持!
669423907
发表于 2012-9-14 10:23:22
在按下快捷键时,
添加一个选项:
1:右键确认,默认刷内容
2:按 N ,刷字高
.........
谢谢啊!
caibaobao
发表于 2012-9-14 14:29:17
先下来试试,并先谢谢楼主!
caibaobao
发表于 2012-9-14 14:30:32
先下来试试,并先谢谢楼主!
zhengchuan
发表于 2012-9-14 22:53:17
支持天正文字,这个不错
c735023723
发表于 2012-9-21 07:54:07
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14