请问该怎么办啊?
<P>我做好的一幅图里,有很多这样的文字注记"S=12.6783" "S=135.3476"……</P><P>现在想将数字部分乘个0.0015,然后取三位小数,怎样能用lisp将他们全部改过来呢?</P>
<P>请各位帮帮忙!</P>
(DEFUN C:TEST ()
(IF (SETQ SS (SSGET '((0 . "TEXT") (1 . "S=*")))) (PROGN
(SETQ I -1)
(REPEAT (SSLENGTH SS)
(SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
TXT (SUBSTR (CDR (ASSOC 1 ENT)) 3))
(IF (<= "0" (SUBSTR TXT 1 1) "9") (PROGN
(SETQ TMP (STRCAT "S=" (RTOS (* (ATOF TXT) 0.0015) 2 3))
ENT (SUBST (ASSOC 1 ENT) (CONS 1 TMP) ENT))
(ENTMODE ENT)
))
)
))
(PRINC)
)
还有点问题啊,大虾,帮人帮到底啊!帮我再看看,万分感谢! 搞定了,万分感谢! <P>也可以这样写:</P>
<P>(defun c:test ()<BR> (setq selectionsets (vla-get-selectionsets<BR> (vla-get-activedocument (vlax-get-acad-object))<BR> )<BR> i (vla-get-count selectionsets)<BR> )<BR> (while (> i 0)<BR> (setq sset (vla-item selectionsets 0))<BR> (vla-delete sset)<BR> (setq i (- i 1))<BR> )<BR> (setq sset (vla-add selectionsets "sset")<BR> listcode (vlax-make-safearray vlax-vbinteger '(0 . 1))<BR> listvalue (vlax-make-safearray vlax-vbvariant '(0 . 1))<BR> )<BR> (vlax-safearray-put-element listcode 0 0)<BR> (vlax-safearray-put-element listcode 1 1)<BR> (vlax-safearray-put-element listvalue 0 "TEXT")<BR> (vlax-safearray-put-element listvalue 1 "s=*")<BR> (vla-select<BR> sset acSelectionSetAll nil nil listcode listvalue)<BR> (setq ssetcount (vla-get-count sset))<BR> (while (> ssetcount 0)<BR> (setq<BR> value (vla-get-textstring (vla-item sset (- ssetcount 1)))<BR> value (vl-string-left-trim "s=" value)<BR> value (* (atof value) 0.0015)<BR> value (strcat "s=" (rtos value 2 3))<BR> )<BR> (vla-put-textstring (vla-item sset (- ssetcount 1)) value)<BR> (vla-update (vla-item sset (- ssetcount 1)))<BR> (setq ssetcount (- ssetcount 1))<BR> )<BR>)</P>
页:
[1]