有個Lisp 問題請教 多組成是使用共同參數選擇不同結果
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
有個Lisp 問題請教 多組成是使用共同參數選擇不同結果
我想寫個多重判斷的LISP程式
我想整合幾個程式 舉例如下
程式A 插入點 提示輸入 3組數字 100 200 50 畫(依照自己定義的座標點) 底邊100 斜邊200 角度50度的三角形
程式B 插入點 提示輸入 3組數字 100 200 50 畫 (依照自己定義的座標點) 短邊100 長邊200 長方形 +R50度的圓
這兩個程式 前面3組數字我想要通用 我想要做個程式判斷跑A的繪圖 或跑B的繪圖
請教各位先進我該如何把兩個程式整合起來?謝謝各位!
感謝回復
我想把在一開始輸入相關數值後做判斷讓同一組數值可以依照我的喜好跑第一組或第二組的畫法
我寫的程式如下
****************
;Autolisp 程式註解用分號開始 記得頭尾有無括弧
(defun c:q1( / oldlayer oldsnap oldpick ) ;|程式開始-保存原有系統變數|;
(setq oldlayer (getvar "clayer")) ;目前圖層)
(setq oldsnap (getvar "osmode")) ;(儲存目前的抓點設定)
(setq oldpick (getvar "pickbox")) ;(儲存目前的選取框大小值)
(setq p1 (getpoint "Enter Left/Low Point:選擇起始點"))
(setq L1(getreal "輸入長:"));輸入實數
(setq W1 (getreal "輸入寬:"))
(setq R (getreal "輸入半徑:"))
(setq p2(list (+(car p1)L1) (cadr p1)))
(setq p3(list (car p2) (+(cadr p2)W1)))
(setq p4(list (car p1) (+(cadr p1)W1)))
(setq p5(list (car p2) (+(cadr p1)(/ W1 2))))
(setvar "OSMODE" 0)
(setvar "cmdecho" 0)
;第一組程式畫出方形+圓形
(command "LAYER" "M" "0" "");依照0圖層畫線
(command "line" p1 p2 p3 p4 "c");劃出長板四方
(command "_circle" p5 r "");以p2 p3 中心點為圓心劃出圓形
;第二組程式
(command "LAYER" "M" "1" "");依照1圖層畫線
(command "line" p1 p5 p4 "c");劃出三角形
(command "_circle" p5 r "");以p5 中心點為圓心劃出圓形
(setvar "clayer" oldlayer)
(setvar "osmode" oldsnap)
(setvar "pickbox" oldpick)
(command "(gc)" )
;|程式結束-恢復原有系統變數|;
(princ)
)
****************************
圖面如下
我想整合幾個程式 舉例如下
程式A 插入點 提示輸入 3組數字 100 200 50 畫(依照自己定義的座標點) 底邊100 斜邊200 角度50度的三角形
程式B 插入點 提示輸入 3組數字 100 200 50 畫 (依照自己定義的座標點) 短邊100 長邊200 長方形 +R50度的圓
這兩個程式 前面3組數字我想要通用 我想要做個程式判斷跑A的繪圖 或跑B的繪圖
請教各位先進我該如何把兩個程式整合起來?謝謝各位!
感謝回復
我想把在一開始輸入相關數值後做判斷讓同一組數值可以依照我的喜好跑第一組或第二組的畫法
我寫的程式如下
****************
;Autolisp 程式註解用分號開始 記得頭尾有無括弧
(defun c:q1( / oldlayer oldsnap oldpick ) ;|程式開始-保存原有系統變數|;
(setq oldlayer (getvar "clayer")) ;目前圖層)
(setq oldsnap (getvar "osmode")) ;(儲存目前的抓點設定)
(setq oldpick (getvar "pickbox")) ;(儲存目前的選取框大小值)
(setq p1 (getpoint "Enter Left/Low Point:選擇起始點"))
(setq L1(getreal "輸入長:"));輸入實數
(setq W1 (getreal "輸入寬:"))
(setq R (getreal "輸入半徑:"))
(setq p2(list (+(car p1)L1) (cadr p1)))
(setq p3(list (car p2) (+(cadr p2)W1)))
(setq p4(list (car p1) (+(cadr p1)W1)))
(setq p5(list (car p2) (+(cadr p1)(/ W1 2))))
(setvar "OSMODE" 0)
(setvar "cmdecho" 0)
;第一組程式畫出方形+圓形
(command "LAYER" "M" "0" "");依照0圖層畫線
(command "line" p1 p2 p3 p4 "c");劃出長板四方
(command "_circle" p5 r "");以p2 p3 中心點為圓心劃出圓形
;第二組程式
(command "LAYER" "M" "1" "");依照1圖層畫線
(command "line" p1 p5 p4 "c");劃出三角形
(command "_circle" p5 r "");以p5 中心點為圓心劃出圓形
(setvar "clayer" oldlayer)
(setvar "osmode" oldsnap)
(setvar "pickbox" oldpick)
(command "(gc)" )
;|程式結束-恢復原有系統變數|;
(princ)
)
****************************
圖面如下
閃電俠 在 2021-08-19, 08:53 作了第 3 次修改
閃電俠- 一般會員
- 文章總數 : 42
年齡 : 41
來自 : 新竹
職業 : Package Design
愛好 : 玩電腦
個性 : 喜愛思考
使用年資 : N+5years
使用版本 : 初學
經驗值 : 1533
威望值 : 20
注冊日期 : 2021-04-19
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4544
威望值 : 564
注冊日期 : 2016-11-29
Tiger&蘋果爸 and 閃電俠 like this post
回復: 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果
感謝回復
我想要做的動作是先輸入共同參數後面要做不同的形態選擇產生不同的圖形
我想要做的動作是先輸入共同參數後面要做不同的形態選擇產生不同的圖形
閃電俠- 一般會員
- 文章總數 : 42
年齡 : 41
來自 : 新竹
職業 : Package Design
愛好 : 玩電腦
個性 : 喜愛思考
使用年資 : N+5years
使用版本 : 初學
經驗值 : 1533
威望值 : 20
注冊日期 : 2021-04-19
回復: 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果
使用getkword來選擇要執行哪個程式
用cond來依據getkword結果執行哪個程式
用cond來依據getkword結果執行哪個程式
- 代碼:
(defun C:tt ( / SelSub )
;;;共同開頭程式碼
(initget "A B")
(setq SelSub (getkword "\n 選擇程式:[A/B]"))
(cond
((eq SelSub "A")
;執行程式A程式碼
(princ "執行程式A程式碼")
);_end_SubA
((eq SelSub "B")
;執行程式B程式碼
(princ "執行程式B程式碼")
);_end_SubB
);_end_cond
;;;共同結尾程式碼
(princ)
);_end_Sub
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4544
威望值 : 564
注冊日期 : 2016-11-29
閃電俠 likes this post
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章