enixing 发表于 2007-9-10 18:39:00

怎么保留两位小数?跟其他函数合用后,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呢?

fly_902 发表于 2007-9-10 19:34:00

<p>rtos自动将小数后面的零省略了,没有什么好方法,需要自己写函数,操作字符串,拼一下就可以了</p>

sailorcwx 发表于 2007-9-10 19:40:00

<p>使用rtos之前确认dimzin变量设置为1</p>

zml84 发表于 2007-9-11 08:36:00

<h3>关于 RTOS 函数转换的消零问题:</h3><h3>http://zml84.blog.sohu.com/59075698.html</h3>

willsnow1982 发表于 2007-11-18 10:04:00

<p>3楼说法正确。</p><p>在程序开始设置系统变量DIMZIN值为0或1,则CAD不会省略小数点后面的零。</p><p>格式:</p><p>(command "dimzin" 0)</p>
页: [1]
查看完整版本: 怎么保留两位小数?跟其他函数合用后,rtos失效。。。