[討論]請問以下的LISP 應該如何修改單位呢??
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]請問以下的LISP 應該如何修改單位呢??
請問以下的LISP 應該如何修改單位呢??
[/c(defun C (/ acsp adoc ar axss hgt maxp minp obj p1 p2 pc ss txt)
(vl-load-com)
(setq adoc (vla-get-activedocument
(vlax-get-acad-object)
)
)
(if (and
(= (getvar "tilemode") 0)
(= (getvar "cvport") 1)
)
(setq acsp (vla-get-paperspace adoc))
(setq acsp (vla-get-modelspace adoc))
)
(vla-startundomark (vla-get-activedocument
(vlax-get-acad-object)))
(initget 7)
(setq hgt (getreal "\nEnter text height: "))
(prompt "\nSelect objects on screen to add area label")
(if (setq ss (ssget))
(progn
(setq axss (vla-get-activeselectionset adoc))
(vlax-for obj axss
(if (not
(vl-catch-all-error-p
(setq
ar (vl-catch-all-apply
(function (lambda()
(vlax-curve-getarea obj)))))))
(progn
(setq txt (strcat "面積=" (rtos ar 2 2)))
(vla-getboundingbox obj 'minp 'maxp)
(setq p1 (vlax-safearray->list minp)
p2 (vlax-safearray->list maxp)
pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) p1 p2)
)
(vlax-invoke acsp 'Addtext txt pc hgt)
)
)
)
)
)
(vla-endundomark (vla-get-activedocument
(vlax-get-acad-object)))
(princ)
)
(princ "\nType ALB to label objects with area text")
(princ)
[/c(defun C (/ acsp adoc ar axss hgt maxp minp obj p1 p2 pc ss txt)
(vl-load-com)
(setq adoc (vla-get-activedocument
(vlax-get-acad-object)
)
)
(if (and
(= (getvar "tilemode") 0)
(= (getvar "cvport") 1)
)
(setq acsp (vla-get-paperspace adoc))
(setq acsp (vla-get-modelspace adoc))
)
(vla-startundomark (vla-get-activedocument
(vlax-get-acad-object)))
(initget 7)
(setq hgt (getreal "\nEnter text height: "))
(prompt "\nSelect objects on screen to add area label")
(if (setq ss (ssget))
(progn
(setq axss (vla-get-activeselectionset adoc))
(vlax-for obj axss
(if (not
(vl-catch-all-error-p
(setq
ar (vl-catch-all-apply
(function (lambda()
(vlax-curve-getarea obj)))))))
(progn
(setq txt (strcat "面積=" (rtos ar 2 2)))
(vla-getboundingbox obj 'minp 'maxp)
(setq p1 (vlax-safearray->list minp)
p2 (vlax-safearray->list maxp)
pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) p1 p2)
)
(vlax-invoke acsp 'Addtext txt pc hgt)
)
)
)
)
)
(vla-endundomark (vla-get-activedocument
(vlax-get-acad-object)))
(princ)
)
(princ "\nType ALB to label objects with area text")
(princ)
Tiger&蘋果爸 在 2013-10-28, 22:06 作了第 1 次修改 (原因 : 此主題為討論類型)
hist- 一般會員
- 文章總數 : 16
年齡 : 36
來自 : taipei
職業 : 待業
愛好 : 研究
個性 : good
使用年資 : 新手初學
使用版本 : 2012
經驗值 : 4234
威望值 : 0
注冊日期 : 2013-07-10
az56789aa likes this post
回復: [討論]請問以下的LISP 應該如何修改單位呢??
更改這一列 (setq txt (strcat "面積=" (rtos (/ ar 10000) 2 2) "平方公尺"))
或改成 (setq txt (strcat "面積=" (rtos (* (/ ar 10000) 0.3025) 2 2) "坪")) 不同單位都可試試。
或改成 (setq txt (strcat "面積=" (rtos (* (/ ar 10000) 0.3025) 2 2) "坪")) 不同單位都可試試。
yu0678- 高級會員
- 文章總數 : 150
年齡 : 65
來自 : Taipei
職業 : 設計
愛好 : 設計
個性 : 無不良嗜好
使用年資 : 25
使用版本 : 2016
積分 : 10
經驗值 : 6041
威望值 : 634
注冊日期 : 2012-05-30
回復: [討論]請問以下的LISP 應該如何修改單位呢??
謝謝 yu0678 的指導 。 感恩
hist- 一般會員
- 文章總數 : 16
年齡 : 36
來自 : taipei
職業 : 待業
愛好 : 研究
個性 : good
使用年資 : 新手初學
使用版本 : 2012
經驗值 : 4234
威望值 : 0
注冊日期 : 2013-07-10
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章