wyj_007 发表于 2004-3-22 11:25:00

回复:(无痕)重发支持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>)


无痕 发表于 2004-3-22 13:54:00

谢谢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)) " ")
)

bbo 发表于 2004-10-10 11:58:00

xie xie

SWAYWOOD 发表于 2004-12-1 13:19:00

无痕大侠,你的程序很简洁,不过对于这样的标注不行。。。

SWAYWOOD 发表于 2004-12-1 13:37:00

dwg上传不了,只能给各图片了


       

无痕 发表于 2004-12-1 19:49:00

请上传dwg文件

SWAYWOOD 发表于 2004-12-2 12:47:00

无法上传DWG我发到你的邮箱中了

无痕 发表于 2004-12-5 15:02:00

你用zip或rar压缩dwg文件上传就可以了


我的email有时候是乱写的,可能收不到哦,:P

li809 发表于 2005-2-22 22:44:00

好,学到了不少

SWAYWOOD 发表于 2005-5-25 13:11:00

怎么固定这个


       

页: 1 [2] 3
查看完整版本: [原创]锁定dim标注数值(支持公差等格式)