[討論]AUTOLISP函數defun-q-list-set的應用,附明經通道的說明網頁
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]AUTOLISP函數defun-q-list-set的應用,附明經通道的說明網頁
資料來源:明經通道
http://www.mjtd.com/function/info-126-523.html
在我看來這可以用來拼接用defun-q定義的副程式.
但應該是沒有需要這樣大費周章拼接副程式吧?
與其這樣用不如直接在程式中逐一執行副程式不是嗎?@@?
[似乎想到用法]
多選一的用法,舉例來說
像是用在將副程式所需要的參數全部壓在一個list的情況,
在副程式開頭的時候就需要把list逐層解開定義,
這樣的話上例的部分就變得像是
在編寫上如果遇到需要變動list架構時,
也只需要重新編寫一次就可以了.
基本的用法應該就是這樣吧@@a
http://www.mjtd.com/function/info-126-523.html
在我看來這可以用來拼接用defun-q定義的副程式.
- 代碼:
;;;待拼接的副程式A1
(defun-q A1
(/ X)
(IF (null X)
(SETQ X 0)
(SETQ X (1+ X))
)
(PRINT X)
)
;;;待拼接的副程式A2
(defun-q A2
(/ X)
(IF (null X)
(SETQ X 0)
(SETQ X (1+ X))
)
(PRINT X)
)
;;;待拼接的副程式A3
(defun-q A3
(/ X)
(IF (null X)
(SETQ X 0)
(SETQ X (1+ X))
)
(PRINT X)
)
;;;將A1、A2、A3拼接起來
(defun-q-list-set
'A
(append (defun-q-list-ref 'A1)
(cdr (defun-q-list-ref 'A2))
(cdr (defun-q-list-ref 'A3))
)
)
但應該是沒有需要這樣大費周章拼接副程式吧?
與其這樣用不如直接在程式中逐一執行副程式不是嗎?@@?
[似乎想到用法]
多選一的用法,舉例來說
- 代碼:
(defun 發動 (xxx / yyy 機器 引擎 機車零件 汽車零件)
;;;待拼接的副程式引擎
(defun-q 引擎
(/ X)
.
.
.
)
;;;待拼接的副程式機車零件
(defun-q 機車零件
(/ X)
.
.
.
)
;;;待拼接的副程式汽車零件
(defun-q 汽車零件
(/ X)
.
.
.
)
;;;依照需求組裝
(cond
((eq xxx "摩托車")
(defun-q-list-set
'機器
(append (defun-q-list-ref '引擎)
(cdr (defun-q-list-ref '機車零件))
)
)
) ;_end cond 1
((eq xxx "汽車")
(defun-q-list-set
'機器
(append (defun-q-list-ref '引擎)
(cdr (defun-q-list-ref '汽車零件))
)
)
) ;_end cond 2
) ;_end cond
;;;發動機器
(setq yyy (機器))
)
- 代碼:
(defun 發動 (/ yyy zzz 機車 汽車 引擎 機車零件 汽車零件)
;;;待拼接的副程式引擎
(defun-q 引擎
(/ x)
.
.
.
)
;;;待拼接的副程式機車零件
(defun-q 機車零件
(/ x)
.
.
.
)
;;;待拼接的副程式汽車零件
(defun-q 汽車零件
(/ x)
.
.
.
)
;;;都組裝
(defun-q-list-set
'機車
(append (defun-q-list-ref '引擎)
(cdr (defun-q-list-ref '機車零件))
)
)
(defun-q-list-set
'汽車
(append (defun-q-list-ref '引擎)
(cdr (defun-q-list-ref '汽車零件))
)
)
;;;發動機器
(setq yyy (機車))
(setq zzz (汽車))
) ;_last
像是用在將副程式所需要的參數全部壓在一個list的情況,
在副程式開頭的時候就需要把list逐層解開定義,
這樣的話上例的部分就變得像是
- 代碼:
;;;x=(x1 (xx1 xx2))
(defun-q 引擎
(x / x1 xx1 xx2)
(setq x1 (car x)
xx1 (car (cadr x))
xx2 (cadr (cadr x))
)
)
;;;為了測試沒裝上引擎時機車零件是否完整,先給它暫用的
;;;需求x1 xx1 xx2
(defun-q 機車零件
(x1 xx1 xx2)
.
.
.
)
在編寫上如果遇到需要變動list架構時,
也只需要重新編寫一次就可以了.
基本的用法應該就是這樣吧@@a
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5518
威望值 : 316
注冊日期 : 2013-04-18
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章