怎么保留两位小数?跟其他函数合用后,rtos失效。。。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;套内;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(prompt "\n\r 加载套内面积标注程序。")
(defun c:tn(/ pt pt1 en aa)
(cmdla0)
(setq pt (getpoint "\n 选取封闭域内一点: "))
(while pt
(setq pt1 pt)
(mkla"封闭域辅助线"8)
(command "-BOUNDARY" "a" "o" "p" "" pt "")
(setq en (entlast))
(if (/= en nil)
(progn
(command "area" "o" en)
(setq aa (getvar "area"))
(redraw en 1)
)
)
(mkla"LASTR"4)
(command "-style" "面积标注" "txt.shx,hztxt.shx" "" "0.65" "" "" "" "")
(command"text""mc" pt1 0.5 "0"( STRCAT "(" (rtos (* aa 1)2 2) ")" ));;;输出面积
(setq pt (getpoint "\n选取封闭域内一点: "))
)
(cmdla1)
)
;;; 保存原有系统变量,设置程序运行时的系统变量
(Defun cmdla0 ()
(Setq cc(Getvar "Cmdecho")
oo(Getvar "Orthomode")
ooe (Getvar "Osmode")
la(Getvar "Clayer")
)
(Setvar "Cmdecho" 0)
(Setvar "Regenmode" 0)
)
;;; 建图层: (mala "层名" 颜色号)
(Defun MKLA (a b)
(If (= (Tblsearch "layer" a) nil)
(Command "layer" "m" a "c" b a "")
(Command "layer" "t" a "s" a "c" b a "")
)
)
;;; 恢复原有系统变量
(Defun cmdla1 ()
(Setvar "Cmdecho" cc)
(Setvar "Orthomode" oo)
(Setvar "Osmode" ooe)
(Setvar "Clayer" LA)
(setvar "regenmode" 1)
(Terpri)
(Princ)
)
在这段程序中,先利用了bo建立多样线,然后读取其面积,并且标注,发现了一个问题,如果面积那么巧是整数,例如100,那么,只能标注为100,而不会补全为100.00,请问有什么方法可以补全为100.00呢? <p>rtos自动将小数后面的零省略了,没有什么好方法,需要自己写函数,操作字符串,拼一下就可以了</p> <p>使用rtos之前确认dimzin变量设置为1</p> <h3>关于 RTOS 函数转换的消零问题:</h3><h3>http://zml84.blog.sohu.com/59075698.html</h3> <p>3楼说法正确。</p><p>在程序开始设置系统变量DIMZIN值为0或1,则CAD不会省略小数点后面的零。</p><p>格式:</p><p>(command "dimzin" 0)</p>
页:
[1]