[問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
若擔心程序衝突,可以將第一行改成這樣
(defun c:cclv(/ ocm osm oor laytb odde olderr tp1 atp oup ol odw oc tp2 at w h q1 pt0 pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 m2 sd rec1 p0 p0x p0y cp1 cp2 p1 p2 p3 p4 p5 p6 p7 p8 sp1 sp2 sp3 sp4 pcs1 pcs2 rec2 oc1 oc2);百葉
程序結束後會將括弧內函數清除,若覺得太多也可將副函式內不會用到的函數在副函式結束後先做清除
不確定是不是函數的問題,也有可能你的副函式有一樣名稱但內容不同就會在載入時被取代
----------------------------------------------------------------------------------------->
剛剛看了一下
應該是SS2副函式內容不同,所以用完第2個程序再執行第一個後會缺少函數,但你的函數都沒有清除,所以程序不會出現錯誤訊息,導致很難發現缺少函數
看起來應該是這樣
(defun c:cclv(/ ocm osm oor laytb odde olderr tp1 atp oup ol odw oc tp2 at w h q1 pt0 pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 m2 sd rec1 p0 p0x p0y cp1 cp2 p1 p2 p3 p4 p5 p6 p7 p8 sp1 sp2 sp3 sp4 pcs1 pcs2 rec2 oc1 oc2);百葉
程序結束後會將括弧內函數清除,若覺得太多也可將副函式內不會用到的函數在副函式結束後先做清除
不確定是不是函數的問題,也有可能你的副函式有一樣名稱但內容不同就會在載入時被取代
----------------------------------------------------------------------------------------->
剛剛看了一下
應該是SS2副函式內容不同,所以用完第2個程序再執行第一個後會缺少函數,但你的函數都沒有清除,所以程序不會出現錯誤訊息,導致很難發現缺少函數
看起來應該是這樣
masao_8- 初級會員
- 文章總數 : 72
年齡 : 31
來自 : 台中
職業 : 製圖
愛好 : 動漫
個性 : 內向
使用年資 : 4年
使用版本 : 2012
積分 : 1
經驗值 : 1397
威望值 : 126
注冊日期 : 2022-06-03
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
masao_8 寫到:若擔心程序衝突,可以將第一行改成這樣
(defun c:cclv(/ ocm osm oor laytb odde olderr tp1 atp oup ol odw oc tp2 at w h q1 pt0 pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 m2 sd rec1 p0 p0x p0y cp1 cp2 p1 p2 p3 p4 p5 p6 p7 p8 sp1 sp2 sp3 sp4 pcs1 pcs2 rec2 oc1 oc2);百葉
程序結束後會將括弧內函數清除,若覺得太多也可將副函式內不會用到的函數在副函式結束後先做清除
不確定是不是函數的問題,也有可能你的副函式有一樣名稱但內容不同就會在載入時被取代
----------------------------------------------------------------------------------------->
剛剛看了一下
應該是SS2副函式內容不同,所以用完第2個程序再執行第一個後會缺少函數,但你的函數都沒有清除,所以程序不會出現錯誤訊息,導致很難發現缺少函數
看起來應該是這樣
感謝大大的回覆,我剛才試了一下先把所有的涵數清除後再執行一次,其結果還是一樣
大大所說的涵數的問題,我當初第一個想到的就是p5及p6這二點是不是那有問題,查完之後才發到它計算出來的不是我所設定給它的值
我給的是固定值,可是它跑去不知道那生出來的數值。
附上為結行結果!
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
有試過將副函式名稱改不相同嗎? 正常若有清除,名稱也都不相同應該就不會有衝突了
masao_8- 初級會員
- 文章總數 : 72
年齡 : 31
來自 : 台中
職業 : 製圖
愛好 : 動漫
個性 : 內向
使用年資 : 4年
使用版本 : 2012
積分 : 1
經驗值 : 1397
威望值 : 126
注冊日期 : 2022-06-03
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
目前我試過清除函數不修改副程名稱、結果還是錯誤,尤其是在p5和p6這二點上masao_8 寫到:有試過將副函式名稱改不相同嗎? 正常若有清除,名稱也都不相同應該就不會有衝突了
如果二程式輪流操作二程式都會出錯。
但是我只要修改副程名稱(ss2改為ssx),不重覆名稱、不清除函數、一切都會回覆正常
但是程式重新執行,不應該要有重新執行結果的嗎?結果應該更新的才對,怎會有這問題?求解!
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
剛看了一下.. 這2條LISP 內都有相同名稱的副程式. SS1 SS2 SS3 ....但副程式內容不太一樣..
不同程式.都必須要有不同的名稱. 不然前後載入..後面的會蓋到前面載入的副程式.
另外改了名稱之後.最好重新開一張新圖做測試..重新載入LISP做測試.會比較準確.
不同程式.都必須要有不同的名稱. 不然前後載入..後面的會蓋到前面載入的副程式.
另外改了名稱之後.最好重新開一張新圖做測試..重新載入LISP做測試.會比較準確.
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
shenhung 寫到:剛看了一下.. 省....
有的,我現在就是先這樣處理就可以解決問題,
那麻是不是可以反過來把好幾個主程要共的副程單獨寫在另一個lisp上,
之後要調用副程式時直接調用此檔?
反正同名稱會相互提取那不如寫在同一檔裡,比如我上寫的ss1它只為服務畫格子而已!
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
可以,看您要分開或寫成相互切換的功能都可以,只是內容會很多要分類清楚,這樣需要修改或整理時比較不會漏掉
masao_8- 初級會員
- 文章總數 : 72
年齡 : 31
來自 : 台中
職業 : 製圖
愛好 : 動漫
個性 : 內向
使用年資 : 4年
使用版本 : 2012
積分 : 1
經驗值 : 1397
威望值 : 126
注冊日期 : 2022-06-03
區域變數,全域變數
看到程式碼..後請自己改一下
區域變數:只有在這(defun c:cckm () .....)區內可以使用
全域變數:(defun c:cckm () .....) 和 (defun chlay1 ()...)...等都可以使用
區域變數的寫法:(defun chlay1 (/ chklay) ...) ;就是在函數後()內加上 / chlay1
不同函數或程式如果使用同一個定義名稱在未重新定義時就會出現錯誤
還有你2支程式如果有使用同一個函數最好不要定義2次比如"(defun chlay1 (/ chklay) ...)
做一個 共用函數程式.lsp 這樣看起來也比較輕爽
ahorng- 初級會員
- 文章總數 : 37
年齡 : 54
來自 : 台中
職業 : 服務
愛好 : 腳踏車
個性 : 內向
使用年資 : 10
使用版本 : 2010
積分 : 1
經驗值 : 5454
威望值 : 27
注冊日期 : 2010-07-19
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
共用函數.LSP的載入方法很多.
1. 用自定義ACAD.LSP裡的特有s::startup 函數定義你要載入你的LSP. 我自已目前是用這種方法.但要確保ACAD.LSP是路徑上第一個被搜尋到的ACAD.LSP
(defun s::startup()(load "D:\\LSP\\UTILITY"))
2. 用APPLOAD 對話框裡.有個啟動套件..將你的共用函數.LSP加入套件內.他會一開圖就自動載入.(這應該比較適合你)
3. 如果是特定的公用函數..也可以在LISP內直接載入. 載入方法範例 (load "D:\\LSP\\UTILITY"))
4. ACAD的ACAD.CUIX MENU 會跟隨載入一個主檔名同名.副檔名為MNL的 LSP 想自動載入的LSP也可以在這裡面定義..
1. 用自定義ACAD.LSP裡的特有s::startup 函數定義你要載入你的LSP. 我自已目前是用這種方法.但要確保ACAD.LSP是路徑上第一個被搜尋到的ACAD.LSP
(defun s::startup()(load "D:\\LSP\\UTILITY"))
2. 用APPLOAD 對話框裡.有個啟動套件..將你的共用函數.LSP加入套件內.他會一開圖就自動載入.(這應該比較適合你)
3. 如果是特定的公用函數..也可以在LISP內直接載入. 載入方法範例 (load "D:\\LSP\\UTILITY"))
4. ACAD的ACAD.CUIX MENU 會跟隨載入一個主檔名同名.副檔名為MNL的 LSP 想自動載入的LSP也可以在這裡面定義..
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
回復: [問題]二個lisp我前後執行,是否會相互干擾,從而結果不同!
shenhung 寫到:共用函數.LSP的載入方法很多.
1. 用自定義ACAD.LSP裡的特有s::startup 函數定義你要載入你的LSP. 我自已目前是用這種方法.但要確保ACAD.LSP是路徑上第一個被搜尋到的ACAD.LSP
(defun s::startup()(load "D:\\LSP\\UTILITY"))
2. 用APPLOAD 對話框裡.有個啟動套件..將你的共用函數.LSP加入套件內.他會一開圖就自動載入.(這應該比較適合你)
3. 如果是特定的公用函數..也可以在LISP內直接載入. 載入方法範例 (load "D:\\LSP\\UTILITY"))
4. ACAD的ACAD.CUIX MENU 會跟隨載入一個主檔名同名.副檔名為MNL的 LSP 想自動載入的LSP也可以在這裡面定義..
- 代碼:
(defun c:ss1() (load "C:\\block\\lisp\\ccss"))
(defun c:chlay3() (load "C:\\block\\lisp\\ccss"))
(defun c:chlay4() (load "C:\\block\\lisp\\ccss"))
(defun c:styekk() (load "C:\\block\\lisp\\ccss"))
目前先改成這樣,至於第二點的APPLOAD裡的設定,不打算先設定,畢竟有時開CAD是不用這些LISP
也有可能直接用第三點的設法,要用到就直接在開頭寫入LOAD
第四點個人怕有風險,先不設定!
感謝先進的指導,讓我又多學了好幾個設定方式!
jock1626- 一般會員
- 文章總數 : 20
年齡 : 42
來自 : 桃園
職業 : 繪圖員
愛好 : 睡覺
個性 : 是個人吧
使用年資 : 5年
使用版本 : 2016
經驗值 : 1037
威望值 : 6
注冊日期 : 2022-05-19
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章