AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]LISP 面積 小數點

上一篇主題 下一篇主題 向下

[討論]LISP 面積 小數點

發表 由 k48594859 于 2014-02-18, 11:17

小弟要算面積和周長遇到一些問題,就是之前在網路找到一個計算面積的LISP,
只會計算出圖上的單位,我做了小小的修改直接算出平方公尺和公尺(下紅色部分),
可是只有算出小數第一位,我要能算出第二位後面四捨五入請問哪位大大可以幫我

(defun C:am (/ ss l i totalarea ename obj entarea)
  (if (setq ss (ssget))
(progn
 (vl-load-com)
 (setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-

object))))
 (setq l (sslength ss) i 0 totalarea 0 totlength 0)
 (repeat l
(setq ename (ssname ss i))
(setq obj (vlax-ename->vla-object ename))
 (if (vlax-property-available-p obj "area")
 (setq totalarea (+ (vlax-get-property obj 'area) totalarea))
)
 (if (= (cdr (assoc 0 (entget ename))) "MLINE")
(setq totlength (+ totlength (ml-length ename)))
(setq totlength (+ totlength (vlax-curve-getdistatparam ename (vlax-curve-getendparam

ename))))
 )
(setq i (1+ i))
 )

(setq  totalarea (/ totalarea 100 100)   ; "M2"
 text1 (strcat "面積 : " (rtos totalarea 2 1) "M2")
      totlength (/ totlength 100 )   ; "M"
text2 (strcat "周長 : " (rtos totlength 2 1) "M")
 )

 (if (setq insertpt (getpoint "\n請輸入文字插入點: "))
(if (setq height (GETREAL "\n請輸入文字高度:"))
(setq insertp1 (vlax-3d-point insertpt)
  insertp2 (vlax-3d-point (polar insertpt (* 1.5 Pi) (* 1.5 height)))
textobj1 (vla-addtext modelspace text1 insertp1 height)
  textobj2 (vla-addtext modelspace text2 insertp2 height)
)
 )
 )
)
  )
)
(defun ml-length (ename / j d ptlist)
  (foreach n (entget ename)
(if (= (car n) 11)
 (setq ptlist (cons (cdr n) ptlist))
)
  )
  (reverse ptlist)
  (setq j 0 d 0)
  (repeat (1- (length ptlist))
(setq d (+ d (distance (nth j ptlist) (nth (1+ j) ptlist))))
(setq j (1+ j))
  )
  d
)
lisp附件下載: https://app.box.com/s/e0vst9piujkanxs871gd
avatar
k48594859
一般會員
一般會員

文章總數 : 7
年齡 : 26
來自 : 桃園
職業 : 待業
愛好 : 戲劇
個性 : 隨和
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1430
威望值 : -3
注冊日期 : 2014-02-17
男 雙魚座 羊

回頂端 向下

回復: [討論]LISP 面積 小數點

發表 由 shenhung 于 2014-02-18, 23:48

rtos 後面的 1改為2
(rtos totalarea 2 2) <--- (rtos 數值 數值格式 精度)
(rtos totlength 2 2) <--- (rtos 數值 數值格式 精度)
第一個數值格式2代表10進位. 接續後面2為數值精度.
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 5060
威望值 : 913
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [討論]LISP 面積 小數點

發表 由 Tiger&蘋果爸 于 2014-02-19, 03:07


____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17320
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65290
威望值 : 12862
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章