[分享]一個能顯示面積及長度的LISP程式
+78
月泉白牙
kruppel
lin品
a0917783109
numwyoyo
安東尼
uw200000
wewe10704
PYT
qwe9956
FLY770112
糖糖的主人
mingsung
huang shih ching
kid530
ptero0226
aniy051802
kai_11
rain831787
銀翼
peggy731
tufe8887
flyat9t
s8828016
ryan0106
chunwel
ganlinlaw
handolu
HUANG CHIEN MING
f933021
wenfeng
liao
c1140c33
koko789
cantwocantwocan
月蜻蜓
tyhaola
老紅
Yulunwei
cyy0614
nicky1273
poiuyy
et1029et
lingo_st
jerry775
GRACE0724
ysl yang
老水牛
小香
lok
arhome
jhou0219
opk153
sandsand
sea0702
長陳
adslwang
以西杰
it930
虹
Andy.Lin
白金之星
Boss&倫
pizg
leoneriol
HEMOS
glassshoes2003
howard73
MAYA100
aaaaaa1111
adolescent77
W-E-I
DARDAR
meet_emily
judyyai
小青蛙
Tiger&蘋果爸
bruce79
82 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共4頁)
[分享]一個能顯示面積及長度的LISP程式
1.新增一個文字文件(.txt),貼上以下內容
3.開啟Autocad工具列中的「載入/卸載應用程式」對話方塊或者執行[appload]
4.選擇該文件位置後載入
5.在指令列key入"am"後,選擇你要的線或面方可使用(但不能選擇圖塊喔)
PS:這是一位建築師給我的LISP
ps:好東西與好朋友分享!!
蘋果爸補充:
每個CAD版本可能會有些差異,每個人使用方式也要討論及了解,才能知道問題在哪!
是否有開啟一張新圖來做測試,如果可以測試其他電腦的CAD版本。
我這裡使用2023版本操作沒有問題!
謝謝程式分享及說明~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
- 代碼:
(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 text1 (strcat "總面積為 : " (rtos totalarea 2 4) "平方公分")
text2 (strcat "總長度為 : " (rtos totlength 2 4) "公分")
)
(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
)
3.開啟Autocad工具列中的「載入/卸載應用程式」對話方塊或者執行[appload]
4.選擇該文件位置後載入
5.在指令列key入"am"後,選擇你要的線或面方可使用(但不能選擇圖塊喔)
PS:這是一位建築師給我的LISP
ps:好東西與好朋友分享!!
蘋果爸補充:
每個CAD版本可能會有些差異,每個人使用方式也要討論及了解,才能知道問題在哪!
是否有開啟一張新圖來做測試,如果可以測試其他電腦的CAD版本。
我這裡使用2023版本操作沒有問題!
謝謝程式分享及說明~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
- 附件
Tiger&蘋果爸 在 周五 3 6月 2022 - 21:41 作了第 7 次修改 (原因 : 加分囉~)
bruce79- 初級會員
- 文章總數 : 186
年齡 : 45
來自 : 南投
職業 : 工程師
愛好 : 運動
個性 : O型-樂觀
使用年資 : 5年
使用版本 : 2008
積分 : 3
經驗值 : 6517
威望值 : 117
未回應主題 : 1
注冊日期 : 2008-09-12
Tiger&蘋果爸, vike827, ben91016, mingsung, tck007, trelive, JohnnyTsungChen and like this post
回復: [分享]一個能顯示面積及長度的LISP程式
請問是您自己寫的嗎,如果不是請註明出處。
謝謝~
PS:這個程式只適合公分,其他單位要自己換算~
「教學」載入LISP應用程式 APPLOAD指令
https://www.autocad-tw.com/t111-topic
謝謝~
PS:這個程式只適合公分,其他單位要自己換算~
「教學」載入LISP應用程式 APPLOAD指令
https://www.autocad-tw.com/t111-topic
Tiger&蘋果爸 在 周二 17 五月 2022 - 17:54 作了第 1 次修改
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
rain831787, mandy2450, user65c1e673765d9 and dahe.hsu888 like this post
回復: [分享]一個能顯示面積及長度的LISP程式
Tiger&蘋果爸 寫到:請問是您自己寫的嗎,如果不是請註明出處。
謝謝~
PS:這個程式只適合公分,其他單位要自己換算~
「教學」載入LISP應用程式 APPLOAD指令
http://autocad.bestoforum.net/forum-f7/topic-t111.htm
PS:這是一位建築師給我的LISP謝謝
bruce79- 初級會員
- 文章總數 : 186
年齡 : 45
來自 : 南投
職業 : 工程師
愛好 : 運動
個性 : O型-樂觀
使用年資 : 5年
使用版本 : 2008
積分 : 3
經驗值 : 6517
威望值 : 117
未回應主題 : 1
注冊日期 : 2008-09-12
rain831787 and mandy2450 like this post
回復: [分享]一個能顯示面積及長度的LISP程式
OK~了解!!bruce79 寫到:Tiger&蘋果爸 寫到:請問是您自己寫的嗎,如果不是請註明出處。
謝謝~
PS:這個程式只適合公分,其他單位要自己換算~
「教學」載入LISP應用程式 APPLOAD指令
http://autocad.bestoforum.net/forum-f7/topic-t111.htm
PS:這是一位建築師給我的LISP謝謝
所以一般建築師事務所使用的單位為公分!
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
rain831787, mandy2450 and user65c1e673765d9 like this post
回復: [分享]一個能顯示面積及長度的LISP程式
謝謝程式分享
lsP看看
lsP看看
小青蛙- 初級會員
- 文章總數 : 23
年齡 : 56
來自 : 高雄市
職業 : 待業中
愛好 : 上山下海
個性 : 隨性
使用年資 : 斷斷續續
使用版本 : 2012
積分 : 2
經驗值 : 5587
威望值 : 12
注冊日期 : 2009-10-15
rain831787 and user65c1e673765d9 like this post
回復: [分享]一個能顯示面積及長度的LISP程式
Tiger&蘋果爸 寫到:
PS:這個程式只適合公分,其他單位要自己換算~
小小修改一下!就變成公釐mm
- 代碼:
(defun C:amm (/ 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 text1 (strcat "總面積為 : " (rtos totalarea 2 4) "平方公釐")
text2 (strcat "總長度為 : " (rtos totlength 2 4) "公釐(mm)")
)
(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
)
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30444
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
as920029as, Byron-Aloha and user65c1e673765d9 like this post
回復: [分享]一個能顯示面積及長度的LISP程式
謝謝JUDY熱心的修改!!judyyai 寫到:Tiger&蘋果爸 寫到:
PS:這個程式只適合公分,其他單位要自己換算~
小小修改一下!就變成公釐mm
- 代碼:
(defun C:amm (/ 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 text1 (strcat "總面積為 : " (rtos totalarea 2 4) "平方公釐")
text2 (strcat "總長度為 : " (rtos totlength 2 4) "公釐(mm)")
)
(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
)
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
oliviayunnnnnn likes this post
meet_emily- 高級會員
- 文章總數 : 125
年齡 : 54
來自 : 宜蘭
職業 : 學習
愛好 : 電影,音樂
個性 : 有點呆板,但不古板!有點天真,但不失真!有點強硬,但不強勢!
使用年資 : 6
使用版本 : 2010
積分 : 12
經驗值 : 6192
威望值 : 62
回帖精華 : 1
注冊日期 : 2008-10-12
回復: [分享]一個能顯示面積及長度的LISP程式
感謝分享.....
DARDAR- 高級會員
- 文章總數 : 337
年齡 : 66
來自 : 台北
職業 : 營造金屬
愛好 : AutoCAD
個性 : 隨和
使用年資 : 5年↑
使用版本 : 2012
積分 : 15
經驗值 : 6726
威望值 : 96
注冊日期 : 2008-05-13
回復: [分享]一個能顯示面積及長度的LISP程式
(if (vlax-property-available-p obj "area")
這判斷式我在vba尚未找到,先用On Error Resume Next替代
附上相對應vba碼
這判斷式我在vba尚未找到,先用On Error Resume Next替代
附上相對應vba碼
- 代碼:
Const pi As Double = 3.14159265358979
Sub ts() '計算面積,長度
Dim ss As AcadSelectionSet
On Error Resume Next
ThisDrawing.SelectionSets.Item("ss").Delete
On Error GoTo 0
Set ss = ThisDrawing.SelectionSets.Add("ss")
ss.SelectOnScreen
Dim totalarea As Double
Dim totlength As Double
For Each ent In ss
On Error Resume Next
If IsError(ent.Area) Then MsgBox "此物件不含面積,也不是多重線" _
Else: totalarea = ent.Area + totalarea
On Error GoTo 0
totlength = ent.Length + totlength
Next
totalarea = Format(totalarea, "##,##0.00")
totlength = Format(totlength, "##,##0.00")
text1 = "總面積為 : " & totalarea & " 平方公分"
text2 = "總長度為 : " & totlength & " 公分"
Dim insertp1 As Variant
Dim insertp2 As Variant
Dim Height As Double
insertp1 = ThisDrawing.Utility.GetPoint(, "選擇文字起點")
On Error Resume Next
Height = ThisDrawing.Utility.GetReal("請輸入文字高度:")
On Error GoTo 0
If Height = 0 Then Height = 80
insertp2 = ThisDrawing.Utility.PolarPoint(insertp1, 1.5 * pi, 1.5 * Height)
Set textobj1 = ThisDrawing.ModelSpace.AddText(text1, insertp1, Height)
Set textobj2 = ThisDrawing.ModelSpace.AddText(text2, insertp2, Height)
End Sub
小青蛙- 初級會員
- 文章總數 : 23
年齡 : 56
來自 : 高雄市
職業 : 待業中
愛好 : 上山下海
個性 : 隨性
使用年資 : 斷斷續續
使用版本 : 2012
積分 : 2
經驗值 : 5587
威望值 : 12
注冊日期 : 2009-10-15
W-E-I- 初級會員
- 文章總數 : 64
年齡 : 43
來自 : 台北
職業 : 工程
愛好 : autocad
個性 : 旅遊
使用年資 : 8年左右
使用版本 : 2011
積分 : 1
經驗值 : 5983
威望值 : 0
注冊日期 : 2008-09-26
回復: [分享]一個能顯示面積及長度的LISP程式
趕快來試試看 謝囉
adolescent77- 初級會員
- 文章總數 : 63
年齡 : 45
來自 : 高雄市
職業 : 工程師
愛好 : 電影
個性 : 孤僻
使用年資 : 白天
使用版本 : 2010
積分 : 1
經驗值 : 5704
威望值 : 17
注冊日期 : 2009-11-01
回復: [分享]一個能顯示面積及長度的LISP程式
工作上常要計算,謝謝哦.....
aaaaaa1111- 一般會員
- 文章總數 : 142
年齡 : 48
來自 : 台中
職業 : 行政
愛好 : 繪圖
個性 : 中性
使用年資 : 15年
使用版本 : 2008
經驗值 : 5868
威望值 : 0
注冊日期 : 2009-11-30
回復: [分享]一個能顯示面積及長度的LISP程式
室內設計耶可以用呢~~感謝您!!
MAYA100- 初級會員
- 文章總數 : 344
年齡 : 51
來自 : 台中
職業 : 裝修大抄手
愛好 : 琴棋書畫...都不通啦
個性 : 愛好和平
使用年資 : 6年多
使用版本 : 2006.2008
積分 : 9
經驗值 : 6551
威望值 : 139
注冊日期 : 2009-03-31
回復: [分享]一個能顯示面積及長度的LISP程式
面積計算,蠻多行業都是需要的,感謝分享
howard73- 初級會員
- 文章總數 : 66
年齡 : 41
來自 : 苗栗
職業 : 測量
愛好 : 繪圖
個性 : 隨和
使用年資 : 初學者
使用版本 : 2004
積分 : 2
最佳解答 : 1
經驗值 : 5981
威望值 : 15
注冊日期 : 2008-12-12
回復: [分享]一個能顯示面積及長度的LISP程式
目前工作急需使用
感謝無私的分享
感恩!!
感謝無私的分享
感恩!!
____________________________________________________________________________________
今天你不努力學習 明天你將無法前進
glassshoes2003- 初級會員
- 文章總數 : 151
年齡 : 39
來自 : 彰化縣
職業 : 自由業
愛好 : 電玩 電影 電視
個性 : 隨和
使用年資 : 0.5年
使用版本 : 2008
積分 : 3
經驗值 : 5927
威望值 : 12
注冊日期 : 2009-11-17
回復: [分享]一個能顯示面積及長度的LISP程式
不錯的分享,LISP是一個值得研究的內容,
正好看看內容來學習一些知識也是不著的!
感謝bruce79大大的分享,
同時也感謝Judyyai的貢獻!
正好看看內容來學習一些知識也是不著的!
感謝bruce79大大的分享,
同時也感謝Judyyai的貢獻!
HEMOS- 榮譽顧問
- 文章總數 : 896
年齡 : 51
來自 : 台北
職業 : 土木結構
愛好 : 攝影×音樂×電影
個性 : 和善
使用年資 : 20 years ↑
使用版本 : 老手待忘!
積分 : 27
最佳解答 : 3
經驗值 : 10329
威望值 : 1664
回帖精華 : 1
注冊日期 : 2009-02-23
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9199
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [分享]一個能顯示面積及長度的LISP程式
計算長度的LISP我有,面積LISP我想看看!
Boss&倫- 中級會員
- 文章總數 : 123
年齡 : 45
來自 : 台北
職業 : 機電
愛好 : 繪圖
個性 : 開朗
使用年資 : 6
使用版本 : AutoCAD2010
積分 : 5
經驗值 : 5840
威望值 : 55
注冊日期 : 2010-03-14
回復: [分享]一個能顯示面積及長度的LISP程式
自己不會寫
至少別人寫也要會用
謝謝大大.
至少別人寫也要會用
謝謝大大.
____________________________________________________________________________________
白金之星- 初級會員
- 文章總數 : 248
年齡 : 47
來自 : 台北
職業 : 工頭
愛好 : AutoCad
個性 : 樂觀
使用年資 : 7
使用版本 : 2008
積分 : 4
經驗值 : 6106
威望值 : 9
未回應主題 : 您有一筆未回應
注冊日期 : 2008-09-22
回復: [分享]一個能顯示面積及長度的LISP程式
我都是計算公尺,很少用到公分和公厘。
Andy.Lin- 初級會員
- 文章總數 : 103
年齡 : 52
來自 : Taipei
職業 : Engineer
愛好 : Play Game
個性 : Happy
使用年資 : 15 years
使用版本 : AUTOCAD 2000~2020
積分 : 3
經驗值 : 5780
威望值 : 135
注冊日期 : 2010-06-07
虹- 一般會員
- 文章總數 : 45
年齡 : 40
來自 : 新竹
職業 : 製造業
愛好 : 游泳
個性 : 隨和
使用年資 : 斷斷續續..學習中
使用版本 : 2010
經驗值 : 5406
威望值 : 0
注冊日期 : 2010-07-01
回覆[分享]一個能顯示面積及長度的LISP程式
謝謝您的分享~
正好有這個需要~謝謝
也學習到原來CAD也可以像是寫程式依樣~輸入指令
正好有這個需要~謝謝
也學習到原來CAD也可以像是寫程式依樣~輸入指令
it930- 初級會員
- 文章總數 : 51
年齡 : 40
來自 : 高雄
職業 : 設計
愛好 : ~看書~~運動~上網~
個性 : 隨和
使用年資 : 5年~
使用版本 : 2014
積分 : 2
經驗值 : 5764
威望值 : 9
注冊日期 : 2009-08-12
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共4頁)
這個論壇的權限:
您 無法 在這個版面回復文章