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

Join the forum, it's quick and easy

AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Io15011 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 2020-310 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Oiu15010 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 2020-211 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Oo-2-110 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 BPl3tjj

有個Lisp 問題請教 多組成是使用共同參數選擇不同結果

2 posters

向下

有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Empty 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果

發表 由 閃電俠 2021-08-16, 21:34

我想寫個多重判斷的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)
)

****************************
圖面如下
有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 00112


閃電俠 在 2021-08-19, 08:53 作了第 3 次修改
閃電俠
閃電俠
一般會員
一般會員

文章總數 : 22
年齡 : 38
來自 : 新竹
職業 : Package Design
愛好 : 玩電腦
個性 : 喜愛思考
使用年資 : N+5years
使用版本 : 初學
經驗值 : 274
威望值 : 2
注冊日期 : 2021-04-19
Other / Decline to state 摩羯座 狗

回頂端 向下

有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Empty 回復: 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果

發表 由 naruto018 2021-08-18, 17:01

LISP可以試試使用getkword來選擇要執行哪個

代碼:
(initget "A B")
(getkword "\n 選擇程式:[A/B]")
有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Ezsuzo11
naruto018
naruto018
中級會員
中級會員

文章總數 : 183
年齡 : 29
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 3083
威望值 : 461
注冊日期 : 2016-11-29
藍鵲726號
男 摩羯座 羊

Tiger&蘋果爸 and 閃電俠 like this post

回頂端 向下

有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Empty 回復: 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果

發表 由 閃電俠 2021-08-18, 22:14

感謝回復
我想要做的動作是先輸入共同參數後面要做不同的形態選擇產生不同的圖形
閃電俠
閃電俠
一般會員
一般會員

文章總數 : 22
年齡 : 38
來自 : 新竹
職業 : Package Design
愛好 : 玩電腦
個性 : 喜愛思考
使用年資 : N+5years
使用版本 : 初學
經驗值 : 274
威望值 : 2
注冊日期 : 2021-04-19
Other / Decline to state 摩羯座 狗

回頂端 向下

有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Empty 回復: 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果

發表 由 naruto018 2021-08-19, 11:20

使用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
PS:要複製代碼(code)可以用引用功能來複製
naruto018
naruto018
中級會員
中級會員

文章總數 : 183
年齡 : 29
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 3083
威望值 : 461
注冊日期 : 2016-11-29
藍鵲726號
男 摩羯座 羊

閃電俠 likes this post

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Uos15010 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 BPl3tjj 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Ziao1510 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Oo-2-110 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 Oooo-110 有個Lisp 問題請教 多組成是使用共同參數選擇不同結果 2020-211