[已解決]數字加總要修正為其合固定為小數點3位
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]數字加總要修正為其合固定為小數點3位
下列為加總程式,請協助數字加總要修正為其合固定為小數點3位,謝謝。
(defun c:Sum()
(defun ylrtos(a);(a / l l1 b n)
(setq oluprec(getvar "luprec")) (setq l1 t l 1 b a n1 0)
(while l1 (setq b(* b l))
(if (= (fix b) b) (setq l1 nil) (setq l 10 n1(+ n1 1)) ) )
(if (> n1 8)(setq n1 8))
(setvar "luprec" n1)(setq a(rtos a))(setvar "luprec" oluprec)(setq a a) )
(defun dstr(a / l) (setq l(strlen a))
(while (> l 0) (if (= (substr a l 1) " ")(setq l(1- l) a(substr a 1 l))(setq l 0 a a)) ) )
(defun astr(a b) (setq l(- b (strlen a)))
(if (and(> l 0)(< l b))(repeat l (setq a(strcat a " ")))) a)
(apply '(lambda ();(/ p1 h sum yl n e m a zin ylrtos)
(prompt "選取要加總的 VA :")
(setq sum 0 yl(ssget) n(1- (sslength yl)))
(while (>= n 0)
(setq e(entget(ssname yl n)) m(cdr(assoc 0 e)) m1(cdr(assoc 1 e)))
(if (and(= m "TEXT")(or(= (type(read m1)) 'REAL)(= (type(read m1)) 'INT)))
(setq sum(+ sum (read m1))) )
(setq n(1- n)) )
(setq p1(entget(car(entsel "\n選取要改變的 VA 值: "))) sum(ylrtos sum))
(ENTMOD (SUBST (CONS 1 sum) (ASSOC 1 P1) P1))
(princ)
)'())
)
(defun c:Sum()
(defun ylrtos(a);(a / l l1 b n)
(setq oluprec(getvar "luprec")) (setq l1 t l 1 b a n1 0)
(while l1 (setq b(* b l))
(if (= (fix b) b) (setq l1 nil) (setq l 10 n1(+ n1 1)) ) )
(if (> n1 8)(setq n1 8))
(setvar "luprec" n1)(setq a(rtos a))(setvar "luprec" oluprec)(setq a a) )
(defun dstr(a / l) (setq l(strlen a))
(while (> l 0) (if (= (substr a l 1) " ")(setq l(1- l) a(substr a 1 l))(setq l 0 a a)) ) )
(defun astr(a b) (setq l(- b (strlen a)))
(if (and(> l 0)(< l b))(repeat l (setq a(strcat a " ")))) a)
(apply '(lambda ();(/ p1 h sum yl n e m a zin ylrtos)
(prompt "選取要加總的 VA :")
(setq sum 0 yl(ssget) n(1- (sslength yl)))
(while (>= n 0)
(setq e(entget(ssname yl n)) m(cdr(assoc 0 e)) m1(cdr(assoc 1 e)))
(if (and(= m "TEXT")(or(= (type(read m1)) 'REAL)(= (type(read m1)) 'INT)))
(setq sum(+ sum (read m1))) )
(setq n(1- n)) )
(setq p1(entget(car(entsel "\n選取要改變的 VA 值: "))) sum(ylrtos sum))
(ENTMOD (SUBST (CONS 1 sum) (ASSOC 1 P1) P1))
(princ)
)'())
)
chiwei- 一般會員
- 文章總數 : 16
年齡 : 55
來自 : 台中
職業 : 機電工程設計
愛好 : 學習新事物
個性 : 積極
使用年資 : 10
使用版本 : 2008
經驗值 : 5249
威望值 : 0
注冊日期 : 2010-10-04
回復: [已解決]數字加總要修正為其合固定為小數點3位
把ylrtos副程式裏面結尾零抑制取消,再把rots加個位數,應該就可以滿足你的需求。
…
(defun ylrtos (a) ;(a / l l1 b n)
;(setq oluprec (getvar "luprec"))
(setq dn (getvar "dimzin"))
(setvar "dimzin" 0)
…
…
;(setvar "luprec" n1)
(setq a (rtos a 2 3))
;(setvar "luprec" oluprec)
(setvar "dimzin" dn)
(setq a a)
)
…
…
(defun ylrtos (a) ;(a / l l1 b n)
;(setq oluprec (getvar "luprec"))
(setq dn (getvar "dimzin"))
(setvar "dimzin" 0)
…
…
;(setvar "luprec" n1)
(setq a (rtos a 2 3))
;(setvar "luprec" oluprec)
(setvar "dimzin" dn)
(setq a a)
)
…
Atsai- 中級會員
- 文章總數 : 167
年齡 : 49
來自 : 台中
職業 : 工程
愛好 : 看漫畫
個性 : 樂天
使用年資 : 10
使用版本 : 2010
AutoCAD基礎篇等級 : 10星級
積分 : 8
經驗值 : 5929
威望值 : 524
注冊日期 : 2012-04-06
回復: [已解決]數字加總要修正為其合固定為小數點3位
感謝,以解決問題,感恩。
chiwei- 一般會員
- 文章總數 : 16
年齡 : 55
來自 : 台中
職業 : 機電工程設計
愛好 : 學習新事物
個性 : 積極
使用年資 : 10
使用版本 : 2008
經驗值 : 5249
威望值 : 0
注冊日期 : 2010-10-04
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章