回复:(无痕)重发支持r14的标注固定硬改法[co...
无痕发表于2004-3-19 23:46:00static/image/common/back.gif重发支持r14的标注固定硬改法;;(getdimtext dimentity) = 取出标注的文本!
;;支持所有标注类型.(defun c:dmvl (/ ss n dm dml) (pr...
<FONT style="BACKGROUND-COLOR: #f3f3f3">我进行了测试,发现程序中e缺少原始对象,应当在<BR>(while roop <BR> (setq e (entnext e)<BR>.........)<BR>前加一句(setq e dimblk)语句定义,否则执行时会出现e值为nil的错误。<BR>还有当尺寸值为空格时,程序将出错,故应当加一段补丁语句。<BR>总的来讲,程序已是相当不错了。</FONT><BR>以下是调整后程序:
;;(getdimtext dimentity) = 取出标注的文本!<BR>;;取标注文本. <BR>(defun getdimtext (ent / dimblk roop e el tig)<BR> (setq dimblk (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget ent))))))<BR> roop T)<BR> (setq e dimblk)<BR> (setq pp 0 tig 1) <BR> (while roop<BR> (setq e (entnext e))<BR> (if (not (= e nil))<BR> (progn<BR> (setq el(entget e))<BR> (setq dt (assoc 1 el))<BR> (if (member '(100 . "AcDbMText") el);(member '(0 . "MTEXT") el)<BR> (setq roop nil)<BR> )<BR> ) <BR> (setq tig 0 roop nil)<BR> )<BR> )<BR> (if (= tig 1)<BR> (cdr (assoc 1 el));"<A href="file://A1/" target="_blank" >\\A1</A>; "<BR> ' " " <BR> ) <BR>)<BR>;;支持所有标注类型.<BR>(defun c:cdimtot (/ ss n dm dml)<BR> (princ "\ndmvl = 块定义修改法-固定标注文字! ------by 无痕.2004.3<BR> \n选择要固定文字的标注:")<BR> (setq ss (ssget '((0 . "DIMENSION"))))<BR> (repeat (setq n (sslength ss))<BR> (setq dm (ssname ss (setq n (1- n)))<BR> dml(entget dm)<BR> dml(subst (cons 1 (getdimtext dm))(assoc 1 dml) dml)<BR> )<BR> (entmod dml)<BR> )<BR> (princ (strcat "\n共处理" (itoa (sslength ss)) "个标注:"))<BR> (princ)<BR>)
谢谢wyj_007 朋友帮找bug。重贴一次程序;; dmvl = 块定义修改法-固定标注文字! v1.1-----by无痕.2004.3
;; 支持所有标注类型.
;;(getdimtext dimentity) = 取出标注的文本!
(defun c:dmvl (/ ss n dm dml)
(princ "\n选择要固定文字的标注:")
(setq ss (ssget '((0 . "DIMENSION"))))
(repeat (setq n (sslength ss))
(setq dm (ssname ss (setq n (1- n)))
dml(entget dm)
dml(subst (cons 1 (getdimtext dm))(assoc 1 dml) dml))
(entmod dml)
)(princ (strcat "\n共处理" (itoa (sslength ss)) "个标注:"))
(princ)
)
;;取标注文本.
(defun getdimtext (dm / e el)
(setq e (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget dm)))))))
(while (and (setq e (entnext e))
(not (member '(100 . "AcDbMText") (setq el (entget e)))))
)
(if e (cdr (assoc 1 el)) " ")
) xie xie 无痕大侠,你的程序很简洁,不过对于这样的标注不行。。。 dwg上传不了,只能给各图片了
请上传dwg文件 无法上传DWG我发到你的邮箱中了 你用zip或rar压缩dwg文件上传就可以了
我的email有时候是乱写的,可能收不到哦,:P 好,学到了不少 怎么固定这个