[分享]自動圖塊(H型鋼),POLAR函數運用
+121
安東尼
pigbloodcake
Panny
amy831217
arch260
herrozonia
bjackwang
kaods
mstact
ahorng
文-
ken000ken
diy6010
Allen5168
ws567309
tacoamos
ya198515
jz092896
linwhelming
糖糖的主人
Unique
kinyoliu
archarch
ken2205
ksonrj
JK_Nash
anais99
aero7258
leofucidin
wuwubaibai
JohnnyTsungChen
dawr
cantwocantwocan
alou0323
林先好
李泊彥
oopsyyyyy
yuting120
雨林林
rickyyang
keybo
cawang
payuer
car86
wgninpd
ianlcc
winterberry
SRCman
dd0916
jasmine0922
kfc5668
阿權
qaz6605
PUPU-CTO
amy610811
hanmitan
klarencee
denniskc
明月心
gn00713242
kingdot
hycsyh
kaihung
paulwan
eddieliu
jenglung15
airboyee
林冠維
sky_region
et1029et
minture
foschia
brucecad
kit92064
korea
學習小孩
qbbsd0073
rockao
meet_emily
koko789
lin6512_07
ayumi
haohao
yz05366
qq711222
johnnycad
kimtime
poiuyy
junbafa74
dlv2503
ching1791
jasminyouto
crihy
d4f58845
shiehung
jason0401
mysads
ling1027
許大熊
Moon Hun
ctest
designfax
liao
lolo0314
陳明田
sjy0917
anna6477
mikendung
linweilung
jenniferaptg
ericwatch
tan866
月蜻蜓
蜜柑喵喵
a9886349
天空的雲
leoneriol
DARDAR
aaaaaa1111
judyyai
Tiger&蘋果爸
125 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第6頁(共6頁)
[分享]自動圖塊(H型鋼),POLAR函數運用
主題回顧 :
這是多年前學LISP時,第一堂課學到的第一個「函數」POLAR,也是當初第一支程式,程式碼很單純簡單,在這裡與大家分享研討。
POLAR 可以用的地方很廣,如建立表格、畫門、畫窗等等,有興趣的朋友歡迎一起討論喔~
註:下載使用時,可以先建立自己需要的圖層,然後再使用該LISP來建立鋼梁圖塊!!
▼延伸閱讀文章:
[分享]一個學習lisp的地方
[討論]執行完繪圖指令後將物件放置預設的圖層
[討論]繪圖前儲存變數值於繪圖完成後復原的副程式
[分享]不想開一張新圖.就載入一堆的lisp程式.
這是多年前學LISP時,第一堂課學到的第一個「函數」POLAR,也是當初第一支程式,程式碼很單純簡單,在這裡與大家分享研討。
POLAR 可以用的地方很廣,如建立表格、畫門、畫窗等等,有興趣的朋友歡迎一起討論喔~
- 代碼:
(defun C:RHSTEEL ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOSMODE (GETVAR "OSMODE"))
(SETQ OLDLAYEAR (GETVAR "CLAYER"))
(SETQ BN (GETSTRING "\n輸入圖塊名稱:"));;;GETSTRING請輸入字串
(setq P1 (getpoint "\n指定圖塊插入點:")
H (GETREAL "\n輸入鋼梁深度(H):")
W (GETREAL "\n輸入鋼梁寬度(W):")
t1 (GETREAL "\n輸入腹板厚度(t1):")
t2 (GETREAL "\n輸入翼板厚度(t2):")
)
(setq P2 (polar P1 0 W)
P3 (POLAR p2 (* pi 0.5) t2)
P4 (POLAR p3 pi (- (* W 0.5)(* t1 0.5)))
P5 (POLAR p4 (* pi 0.5) (- (* H 1)(* t2 2)))
P6 (POLAR p5 0 (- (* W 0.5)(* t1 0.5)))
P7 (POLAR p6 (* pi 0.5) t2)
P8 (POLAR p7 PI W)
P9 (POLAR p8 (* pi 1.5) t2)
P10 (POLAR p9 0 (- (* W 0.5)(* t1 0.5)))
P11 (POLAR p10 (* pi 1.5) (- (* H 1)(* t2 2)))
P12 (POLAR p11 pi (- (* W 0.5)(* t1 0.5)))
A1 (POLAR P11 PI t1)
A2 (POLAR P11 (* PI 0.5) t2)
A3 (POLAR P10 PI t1)
A4 (POLAR P10 (* PI 1.5) t2)
A5 (POLAR P4 0 t1)
A6 (POLAR P4 (* PI 0.5) t2)
A7 (POLAR P5 0 t1)
A8 (POLAR P5 (* PI 1.5) t2)
)
(SETVAR "OSMODE" 0)
(command "LAYER" "M" "0" "" "Pline" P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 "c")
(SETVAR "CLAYER" OLDLAYEAR)
(command "ZOOM" P1 P7)
(command "FILLET" "R" "13" "FILLET" A1 A2 "FILLET" A3 A4 "FILLET" A5 A6 "FILLET" A7 A8 "FILLET" "R" "0")
(command "ZOOM" "P")
(COMMAND "-BLOCK" BN (INTERS P1 P7 P2 P8) "L" "")
(COMMAND "-INSERT" BN P1 "" "")
(SETVAR "OSMODE" OLDOSMODE)
(SETVAR "CLAYER" OLDLAYEAR)
(PRIN1)
)
👇使用ChatGPT加上中文註解
- 代碼:
(defun C:RHSTEEL ()
(SETVAR "CMDECHO" 0) ; 關閉命令提示
(SETQ OLDOSMODE (GETVAR "OSMODE")) ; 儲存舊的 OSMODE 設定
(SETQ OLDLAYEAR (GETVAR "CLAYER")) ; 儲存舊的圖層設定
(SETQ BN (GETSTRING "\n輸入圖塊名稱:")) ; 使用GETSTRING請求輸入字串
; 使用GETREAL請求輸入數值
(setq P1 (getpoint "\n指定圖塊插入點:")
H (GETREAL "\n輸入鋼梁深度(H):")
W (GETREAL "\n輸入鋼梁寬度(W):")
t1 (GETREAL "\n輸入腹板厚度(t1):")
t2 (GETREAL "\n輸入翼板厚度(t2):")
)
; 計算其他點的位置
(setq P2 (polar P1 0 W)
P3 (POLAR p2 (* pi 0.5) t2)
P4 (POLAR p3 pi (- (* W 0.5)(* t1 0.5)))
P5 (POLAR p4 (* pi 0.5) (- (* H 1)(* t2 2)))
P6 (POLAR p5 0 (- (* W 0.5)(* t1 0.5)))
P7 (POLAR p6 (* pi 0.5) t2)
P8 (POLAR p7 PI W)
P9 (POLAR p8 (* pi 1.5) t2)
P10 (POLAR p9 0 (- (* W 0.5)(* t1 0.5)))
P11 (POLAR p10 (* pi 1.5) (- (* H 1)(* t2 2)))
P12 (POLAR p11 pi (- (* W 0.5)(* t1 0.5)))
A1 (POLAR P11 PI t1)
A2 (POLAR P11 (* PI 0.5) t2)
A3 (POLAR P10 PI t1)
A4 (POLAR P10 (* PI 1.5) t2)
A5 (POLAR P4 0 t1)
A6 (POLAR P4 (* PI 0.5) t2)
A7 (POLAR P5 0 t1)
A8 (POLAR P5 (* PI 1.5) t2)
)
(SETVAR "OSMODE" 0) ; 設定 OSMODE 為 0,關閉物件捕捉模式
; 創建多段線圖形,表示鋼梁的形狀
(command "LAYER" "M" "0" "" "Pline" P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 "c")
; 還原舊的圖層設定
(SETVAR "CLAYER" OLDLAYEAR)
; 進行圖形縮放
(command "ZOOM" P1 P7)
; 使用圓角命令連接線段
(command "FILLET" "R" "13" "FILLET" A1 A2 "FILLET" A3 A4 "FILLET" A5 A6 "FILLET" A7 A8 "FILLET" "R" "0")
; 再次進行圖形縮放
(command "ZOOM" "P")
; 創建圖塊並插入
(COMMAND "-BLOCK" BN (INTERS P1 P7 P2 P8) "L" "")
(COMMAND "-INSERT" BN P1 "" "")
; 還原原始的 OSMODE 和圖層設定
(SETVAR "OSMODE" OLDOSMODE)
(SETVAR "CLAYER" OLDLAYEAR)
(PRIN1)
)
註:下載使用時,可以先建立自己需要的圖層,然後再使用該LISP來建立鋼梁圖塊!!
▼延伸閱讀文章:
[分享]一個學習lisp的地方
[討論]執行完繪圖指令後將物件放置預設的圖層
[討論]繪圖前儲存變數值於繪圖完成後復原的副程式
[分享]不想開一張新圖.就載入一堆的lisp程式.
Tiger&蘋果爸 在 2023-09-09, 23:07 作了第 7 次修改
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
a0982296986 and asdf6214 like this post
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
謝謝大大分享,等等來試用看看
arch260- 一般會員
- 文章總數 : 5
年齡 : 40
來自 : 新北市
職業 : 繪圖員
愛好 : 無
個性 : 無
使用年資 : 5
使用版本 : 2010
經驗值 : 923
威望值 : 0
注冊日期 : 2022-04-26
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
Tiger&蘋果爸 寫到:你可以自己試試加上去程式碼及修改程式碼😎herrozonia 寫到:如果可以新增r可以自己Key進去就太好了
👇1.在 t2 輸入翼板厚度 下面新增加一行
- 代碼:
t2 (GETREAL "\n輸入翼板厚度(t2):")
RR (GETREAL "\n圓角半徑(R):")
👇2.把原來的程式碼 "R" 13 改為 "R" RR
- 代碼:
(command "FILLET" "R" 13
(command "FILLET" "R" RR
成功了, 真的太好用了, 謝謝大大的分享
herrozonia- 一般會員
- 文章總數 : 8
年齡 : 31
來自 : 新北
職業 : 助理工程師
愛好 : 快速並且正確完成工作
個性 : 開朗
使用年資 : 新手初學
使用版本 : 2022
經驗值 : 723
威望值 : 0
注冊日期 : 2022-11-29
Tiger&蘋果爸 likes this post
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
超級感謝!!!!!!!
amy831217- 一般會員
- 文章總數 : 2
年齡 : 29
來自 : 台中市
職業 : 學生
愛好 : 建築
個性 : 和善
使用年資 : 2
使用版本 : 2016
經驗值 : 3063
威望值 : 6
注冊日期 : 2016-06-09
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
謝謝分享,初學~剛接觸鋼構,還在努力中
Panny- 一般會員
- 文章總數 : 9
年齡 : 40
來自 : 新北市
職業 : 待業
愛好 : 研究
個性 : 放空
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 566
威望值 : 0
注冊日期 : 2023-05-10
pigbloodcake- 一般會員
- 文章總數 : 62
年齡 : 42
來自 : 高雄市
職業 : 繪圖員
愛好 : 上網瀏覽手機相關訊息
個性 : 謹慎
使用年資 : 5
使用版本 : 2014
經驗值 : 2010
威望值 : 0
注冊日期 : 2020-02-10
安東尼- 一般會員
- 文章總數 : 25
年齡 : 50
來自 : 桃園
職業 : 待業
愛好 : 音樂
個性 : 誠實
使用年資 : 5年
使用版本 : 2022
經驗值 : 568
威望值 : 0
注冊日期 : 2023-07-23
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
感謝蘋果爸分享
d93xjp61212- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : 宜蘭
職業 : 機電
愛好 : 解決問題
個性 : 對工作固執,有時候懶惰所以一直再找方法
使用年資 : 10
使用版本 : 2022
經驗值 : 1020
威望值 : 0
注冊日期 : 2022-04-13
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
蘋果爸,想請教您,(command “Layer” “m” “0” 這段的做用
d93xjp61212- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : 宜蘭
職業 : 機電
愛好 : 解決問題
個性 : 對工作固執,有時候懶惰所以一直再找方法
使用年資 : 10
使用版本 : 2022
經驗值 : 1020
威望值 : 0
注冊日期 : 2022-04-13
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
就是設置目前層為0層d93xjp61212 寫到:蘋果爸,想請教您,(command “Layer” “m” “0” 這段的做用
- 代碼:
指令: -LAYER
目前的圖層: 「0」
輸入選項 [?/建立(M)/設定(S)/新建(N)/更名(R)/打開(ON)/關閉(OFF)/顏色(C)/線型(L)/線粗(LW)/透明度(TR)/材料(MAT)/出圖(P)/凍結(F)/解凍(T)/鎖住(LO)/解鎖(U)/狀態(A)/描述(D)/調和(E)/外部參考(X)]: M
輸入新圖層的名稱 (成為目前的圖層) <0>: 0
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
Tiger&蘋果爸 寫到:就是設置目前層為0層d93xjp61212 寫到:蘋果爸,想請教您,(command “Layer” “m” “0” 這段的做用
- 代碼:
指令: -LAYER
目前的圖層: 「0」
輸入選項 [?/建立(M)/設定(S)/新建(N)/更名(R)/打開(ON)/關閉(OFF)/顏色(C)/線型(L)/線粗(LW)/透明度(TR)/材料(MAT)/出圖(P)/凍結(F)/解凍(T)/鎖住(LO)/解鎖(U)/狀態(A)/描述(D)/調和(E)/外部參考(X)]: M
輸入新圖層的名稱 (成為目前的圖層) <0>: 0
感謝蘋果爸指導
在請問那語法內為什麼不用 -LAYER 那個-號呢
(SETVAR "CMDECHO" 0);;;關閉物件鎖點模式
(SETQ OLDOSMODE (GETVAR "OSMODE"));先將原物件鎖點模式直儲存
(SETQ OLDLAYEAR (GETVAR "CLAYER"))
(SETVAR "OSMODE" OLDOSMODE);還原物件鎖點
(SETVAR "CLAYER" OLDLAYEAR)
(PRIN1)
那裏面的這幾段呢? 分別為 2 3 4 41 42 43列(不知道我的:註解對嗎)
抱歉 我是初學者 研究著妳們分享出來的東西
d93xjp61212- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : 宜蘭
職業 : 機電
愛好 : 解決問題
個性 : 對工作固執,有時候懶惰所以一直再找方法
使用年資 : 10
使用版本 : 2022
經驗值 : 1020
威望值 : 0
注冊日期 : 2022-04-13
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
d93xjp61212 寫到:
感謝蘋果爸指導
在請問那語法內為什麼不用 -LAYER 那個-號呢
(SETVAR "CMDECHO" 0);;;關閉物件鎖點模式
(SETQ OLDOSMODE (GETVAR "OSMODE"));先將原物件鎖點模式直儲存
(SETQ OLDLAYEAR (GETVAR "CLAYER"))
(SETVAR "OSMODE" OLDOSMODE);還原物件鎖點
(SETVAR "CLAYER" OLDLAYEAR)
(PRIN1)
那裏面的這幾段呢? 分別為 2 3 4 41 42 43列(不知道我的:註解對嗎)
抱歉 我是初學者 研究著妳們分享出來的東西
👇使用ChatGPT加上中文註解
- 代碼:
(defun C:RHSTEEL ()
(SETVAR "CMDECHO" 0) ; 關閉命令提示
(SETQ OLDOSMODE (GETVAR "OSMODE")) ; 儲存舊的 OSMODE 設定
(SETQ OLDLAYEAR (GETVAR "CLAYER")) ; 儲存舊的圖層設定
(SETQ BN (GETSTRING "\n輸入圖塊名稱:")) ; 使用GETSTRING請求輸入字串
; 使用GETREAL請求輸入數值
(setq P1 (getpoint "\n指定圖塊插入點:")
H (GETREAL "\n輸入鋼梁深度(H):")
W (GETREAL "\n輸入鋼梁寬度(W):")
t1 (GETREAL "\n輸入腹板厚度(t1):")
t2 (GETREAL "\n輸入翼板厚度(t2):")
)
; 計算其他點的位置
(setq P2 (polar P1 0 W)
P3 (POLAR p2 (* pi 0.5) t2)
P4 (POLAR p3 pi (- (* W 0.5)(* t1 0.5)))
P5 (POLAR p4 (* pi 0.5) (- (* H 1)(* t2 2)))
P6 (POLAR p5 0 (- (* W 0.5)(* t1 0.5)))
P7 (POLAR p6 (* pi 0.5) t2)
P8 (POLAR p7 PI W)
P9 (POLAR p8 (* pi 1.5) t2)
P10 (POLAR p9 0 (- (* W 0.5)(* t1 0.5)))
P11 (POLAR p10 (* pi 1.5) (- (* H 1)(* t2 2)))
P12 (POLAR p11 pi (- (* W 0.5)(* t1 0.5)))
A1 (POLAR P11 PI t1)
A2 (POLAR P11 (* PI 0.5) t2)
A3 (POLAR P10 PI t1)
A4 (POLAR P10 (* PI 1.5) t2)
A5 (POLAR P4 0 t1)
A6 (POLAR P4 (* PI 0.5) t2)
A7 (POLAR P5 0 t1)
A8 (POLAR P5 (* PI 1.5) t2)
)
(SETVAR "OSMODE" 0) ; 設定 OSMODE 為 0,關閉物件捕捉模式
; 創建多段線圖形,表示鋼梁的形狀
(command "LAYER" "M" "0" "" "Pline" P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 "c")
; 還原舊的圖層設定
(SETVAR "CLAYER" OLDLAYEAR)
; 進行圖形縮放
(command "ZOOM" P1 P7)
; 使用圓角命令連接線段
(command "FILLET" "R" "13" "FILLET" A1 A2 "FILLET" A3 A4 "FILLET" A5 A6 "FILLET" A7 A8 "FILLET" "R" "0")
; 再次進行圖形縮放
(command "ZOOM" "P")
; 創建圖塊並插入
(COMMAND "-BLOCK" BN (INTERS P1 P7 P2 P8) "L" "")
(COMMAND "-INSERT" BN P1 "" "")
; 還原原始的 OSMODE 和圖層設定
(SETVAR "OSMODE" OLDOSMODE)
(SETVAR "CLAYER" OLDLAYEAR)
(PRIN1)
)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
感謝分享很棒的程式
usheraya- 專屬會員
- 文章總數 : 9
年齡 : 35
來自 : 台北市
職業 : 工程
愛好 : 運動
個性 : 開朗
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 2024
威望值 : 6
注冊日期 : 2019-05-17
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
謝謝蘋果爸分享
canon2993- 專屬會員
- 文章總數 : 25
年齡 : 41
來自 : 嘉義
職業 : 工
愛好 : 畫圖
個性 : 外向
使用年資 : 10
使用版本 : 2018
經驗值 : 2557
威望值 : 0
注冊日期 : 2018-02-01
回復: [分享]自動圖塊(H型鋼),POLAR函數運用
剛好需要用到H型鋼,研究研究,謝謝蘋果爸分享。
Tanya- 榮譽顧問
- 文章總數 : 384
年齡 : 49
來自 : 埔里鎮
職業 : 服務業
愛好 : 畫圖&音樂&大自然
個性 : 隨和
使用年資 : 2年
使用版本 : MAP 2011
積分 : 28
最佳解答 : 1
經驗值 : 7431
威望值 : 745
注冊日期 : 2010-03-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第6頁(共6頁)
這個論壇的權限:
您 無法 在這個版面回復文章