求助帮忙分析修改标注文字的LISP程序漏洞
<P>由于工程加工精度的要求要改变,本人有几百张横料加工图要做以下修改,把标注为<BR>107的改为106<BR>38的改为39<BR>40的改为39.5<BR>50的改为49.5<BR>48的改为47.5<BR>58的改为57<BR>由于修改量太大,图纸太多,这么多尺寸改起来也容易漏。故做了个程序。<BR>DEFUN c:md()<BR> (vl-load-com)<BR> <BR>(setq MODDIM (ssget "x" '((0 . "dimension")))) </P><P>(setq count 0)<BR>(setq qty (sslength MODDIM))<BR> (repeat qty<BR> (setq ename (ssname MODDIM count))<BR> (setq objname (vlax-ename->vla-object ename))<BR> (setq txttest (vla-get-TextOverride objname))<BR> (setq meatest (vla-get-Measurement objname))<BR> (if (= meatest 107.0)<BR> (vla-put-textoverride objname 106)<BR> )<BR> (if (= txttest "107")<BR> (vla-put-textoverride objname 106)<BR> )<BR> (if (= meatest 38.0)<BR> (vla-put-textoverride objname 39)<BR> )<BR> (if (= txttest "38")<BR> (vla-put-textoverride objname 39)<BR> )<BR> (if (= meatest 40.0)<BR> (vla-put-textoverride objname 39.5)<BR> )<BR> (if (= txttest "40")<BR> (vla-put-textoverride objname 39.5)<BR> )<BR> (if (= meatest 50.0)<BR> (vla-put-textoverride objname 49.5)<BR> )<BR> (if (= txttest "50")<BR> (vla-put-textoverride objname 49.5)<BR> )<BR> (if (= meatest 48.0)<BR> (vla-put-textoverride objname 47.5)<BR> )<BR> (if (= txttest "48")<BR> (vla-put-textoverride objname 47.5)<BR> )<BR> (if (= meatest 58.0)<BR> (vla-put-textoverride objname 57)<BR> )<BR> (if (= txttest "58")<BR> (vla-put-textoverride objname 57)<BR> )<BR> (setq count (+ count 1))</P>
<P> )</P>
<P>) <BR>但此程序在我的加工图纸中不能正确运行。出现有的尺寸改了,有的尺寸就是改不了。不知为什么,小弟特来此找高手求救。望快快解答,不胜感激。附加工图和程序。大家帮我。</P>
;;批量处理就交给你做
(defun C:MD (/ COUNT LST MEATEST MODDIM OBJ TXTTEST WW)
(vl-load-com)
(if (setq MODDIM (ssget "x" '((0 . "dimension"))))
(progn
(setq COUNT 0)
(setq LST '(("107" . 106)
("38" . 39)
("40" . 39.5)
("50" . 49.5)
("48" . 47.5)
("58" . 57)
)
)
(repeat (sslength MODDIM)
(setq OBJ (vlax-ename->vla-object (ssname MODDIM COUNT)))
(setq TXTTEST (vla-get-textoverride OBJ))
(setq MEATEST (rtos (vla-get-measurement OBJ) 2 0))
(if (or (setq WW (assoc MEATEST LST))
(setq WW (assoc TXTTEST LST))
)
(vla-put-textoverride OBJ (cdr WW))
)
(setq COUNT (+ COUNT 1))
)
)
)
(princ)
)
<P>老师,太感谢你了,我不知道怎么表达我的谢谢,我本来是没有想到有这么快的。我太感谢论坛了,我决定捐款支持论坛,因为我感到论坛的速度有点太慢了。我的程序写的太小儿科了,向老师学习。</P> 龙龙仔 发表于 2006-5-10 17:05
大哥能把标注文字直接改成EQ吗?EQ是平分的意思我们专业经常用
页:
[1]