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程式. Aoe1-113[分享]不想開一張新圖.就載入一堆的lisp程式. Ioaoe110[分享]不想開一張新圖.就載入一堆的lisp程式. 2020-310[分享]不想開一張新圖.就載入一堆的lisp程式. Oiu15010[分享]不想開一張新圖.就載入一堆的lisp程式. 2020-211[分享]不想開一張新圖.就載入一堆的lisp程式. Ia15010[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao10[分享]不想開一張新圖.就載入一堆的lisp程式. Uos15010[分享]不想開一張新圖.就載入一堆的lisp程式. BPl3tjj[分享]不想開一張新圖.就載入一堆的lisp程式. Ziao1510
[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe15010[分享]不想開一張新圖.就載入一堆的lisp程式. Oo-2-110[分享]不想開一張新圖.就載入一堆的lisp程式. Zuoiy_10[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao11[分享]不想開一張新圖.就載入一堆的lisp程式. Iyb_1510[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe1-112[分享]不想開一張新圖.就載入一堆的lisp程式. Uos15011[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe2da10[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe2da11[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe10

[分享]不想開一張新圖.就載入一堆的lisp程式.

+5
RyanGuo
awi
prettycat
Tiger&蘋果爸
shenhung
9 posters

1頁(共2頁) 1, 2  下一步

向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2011-02-28, 20:47

如果各位user ,有自定規畫一些程式.
一般都是在acaddoc.lsp裡 加入(load "xxx")某某lisp 這一行.
如此.會一開新圖..lisp就會被自動載入..
等程式越來越多.一開新圖.就會被載入一堆的程式.
而佔掉一些記憶體資源


這邊有個簡單的方法.將一般(load "xxxx")
改成
 
(defun qload ()(lisp  指令名稱))<--lisp語法.qload為自定義副程式

這樣.就只有用到這個指令的時後.  lisp程式才會被載入.


一些範例qload 的範例

(defun c:dimh ()(qload "dimhv" "dimh"))
(defun c:dimv ()(qload "dimhv" "dimv"))
(defun c:tol  ()(qload "tol"   "tol"))

lisp 直接指定路徑也行

(defun c:dimh ()(qload "c:\\mylsp\\dimhv" "dimh"))
(defun c:dimv ()(qload "c:\\mylsp\\dimhv" "dimv"))
(defun c:tol  ()(qload "c:\\mylsp\\tol"   "tol"))


若您lsp.已經有固定的目錄.則會建議..直接在qload內..指定lsp目錄的路徑.載入速度會加快.

例如:
(defun qload(lsp_name lsp_cmd)
 (load (strcat "c:\\mylsp\\" lsp_name))
 (setq rtn (eval (read (strcat "(c:" lsp_cmd ")")))))
)

代碼:

;----------------副程式.--------------------------------------
;;快速load lsp並執行-
;;qload 副程式請放acaddoc.lsp  
;;
(defun qload(lsp_name lsp_cmd)
  (load lsp_name)
  (setq rtn (eval (read (strcat "(c:" lsp_cmd ")")))))
)

shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

jackiehover likes this post

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2011-03-01, 11:56

讚啦!! 這個新方式真不錯用!
謝謝您的分享~

我之前學到的方式為
(IF (NULL C:LISP指令名) (LOAD "LISP程式名"))

請問這二種方式的差異性是在哪裡,還是其實是一樣的結果~

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2011-03-01, 13:02

(IF (NULL C:LISP指令名) (LOAD "LISP程式名"))
這一行的意思是 如果LISP指令名未被定義 就載入 LISP程式.
但開新圖..指令名一定不存在.所以就直接載入LISP 程式..
這跟(LOAD "LISP程式名") 意思會一樣.



(defun C:指令名() (qload (lisp程式 指令名))<==上面第一篇這理寫錯..這邊更正..
如果有個程式 tol.lsp 指令名也叫 tol
那定義 (defun c:tol() (qload "tol" "tol"))
的意思是 第一次呼叫到tol 指令的時候.載入lisp程式 (這就達成有被呼叫指令.lisp程式才會被載入的目的)

而lisp 載入之後.(defun c:tol (qload "tol" "tol")) 這一行會被tol.lsp 覆蓋掉..

而qload 執行的指令.就變成是..載入lisp程式之後的c:tol 指令..

所以總體來說.與 (IF (NULL C:LISP指令名) (LOAD "LISP程式名"))寫法
是有差異的~

我在程式分享區..分享的程式.裡.
dimhv.lsp 程式名. 程式內有定義2個指令..dimh和dimv

寫法就是..
(defun c:dimh() (qload "dimhv" "dimh"))
(defun c:dimv() (qload "dimhv" "dimv"))

不論先呼叫到那一個指令.. dimh 或dimv
在程式載入之後.上面寫的那二行.就會被lisp 內的指令定義覆蓋掉...以此類推.~~

而之前 張老師分享的齒輪程式..

gears.vlx
指令:internalgear 內齒輪齒形
指令:gearracks 正齒輪_齒條

用qload 的定義寫法就是

(defun c:internagear () (qload "gears" "internalgear"))
(defun c:gearracks() (qload "gears" "gearracks"))

如果覺得指令太長..在PGP檔內 再把原指令定義成比較短的指令名稱就可以..

以上希望對您有所幫助.!!


shenhung 在 2011-03-02, 16:23 作了第 1 次修改
shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2011-03-02, 10:46

原來如此~
謝謝 shenhung大 如此精細的解說!

PS:提醒一下
..在gpg內 ..
這個您筆誤,是PGP檔

感恩~
害羞

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2011-03-02, 16:12

謝謝蘋果爸更正.打太快了.
shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2011-03-02, 16:21

shenhung 寫到:謝謝蘋果爸更正.打太快了.
別這麼說~
提醒你可以使用 EDIT 來編輯您的主題!
嘻嘻

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 prettycat 2011-03-10, 19:03

感謝分享呢~

想請教一下大大,我最近在開啟一些超級簡單圖檔的時候
會在AutoCAD 功能表公用程式已載入。這邊停留約5~10秒鐘, 不太正常, 想請教可能是哪邊有問題? 感謝您~

開啟檔案完整資訊如下:

在開啟 AutoCAD 2004/LT 2004 格式檔案。
正在重生模型。

AutoCAD Express Tools Copyright ?2002-2004 Autodesk, Inc.

AutoCAD 功能表公用程式已載入。
C:LL
C:COUNT loaded. Start command with COUNT.

Autodesk DWG。該檔案是可信任的 DWG,上一次由 Autodesk 應用程式或 Autodesk 授權的應用程式儲存。
avatar
prettycat
中級會員
中級會員

文章總數 : 101
年齡 : 53
來自 : 新竹
職業 : 工程繪圖 CAD2D & REVIT3D
愛好 : 騎單車,出遊
個性 : 多元化
使用年資 : 8
使用版本 : 2011
積分 : 6
經驗值 : 6142
威望值 : 96
注冊日期 : 2009-01-11
藍鵲16號
2011聚會勳章 女 巨蟹座 豬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2012-11-14, 14:29

shenhung
最近有空檔開始測試了這個方式~
終於成功,真的是太棒了~
感恩...
親一個

▼回報:shenhung前輩,副程式這行您誤植多一個"右括弧",取消後即可正常載入~
(setq rtn (eval (read (strcat "(c:" lsp_cmd ")")))))
竊喜

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2012-11-19, 12:27

蘋果爸.使用愉快~也謝謝你發現問題!


shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 awi 2013-06-20, 13:50

我的無法執行成功耶,是版本問題嗎?還是我哪裡搞錯了?
我acaddoc.lsp裡只有這一行
(defun c:ll()(qload "g:/ll" "ll")
acaddoc.lsp在支援檔路徑裡ll.lsp沒有再支援檔路徑
結果
error ====: no function definition: QLOAD
我用AutoCAD 2012

(defun c:ll()(load "g:/ll")) 用這行執行第一次會沒反應,第二次以後就OK。

(IF (NULL C:ll) (LOAD "g:/ll"))用這行就都OK。
awi
awi
一般會員
一般會員

文章總數 : 74
年齡 : 41
來自 : 新北市
職業 : 電機技師事務所
愛好 : 新奇有趣的事物
個性 : 固執
使用年資 : 6
使用版本 : 2012
經驗值 : 4662
威望值 : 42
注冊日期 : 2013-05-03
男 白羊座 豬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2013-06-20, 14:12

QLOAD 副程式. 要加入 ACADDOC.LSP 

;;快速load lsp並執行-
;;qload 副程式請放acaddoc.lsp  
;;
(defun qload(lsp_name lsp_cmd)
  (load lsp_name)
  (setq rtn (eval (read (strcat "(c:" lsp_cmd ")"))))
)
shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 awi 2013-06-20, 15:00

原來如此,加上去後已經成功了,感謝~感謝~
程式超好用,給你一百萬個讚~~

____________________________________________________________________________________
[分享]不想開一張新圖.就載入一堆的lisp程式. 078
[分享]不想開一張新圖.就載入一堆的lisp程式. Acad1810 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad2010 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1810
[分享]不想開一張新圖.就載入一堆的lisp程式. Acad1211 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1311 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1511
awi
awi
一般會員
一般會員

文章總數 : 74
年齡 : 41
來自 : 新北市
職業 : 電機技師事務所
愛好 : 新奇有趣的事物
個性 : 固執
使用年資 : 6
使用版本 : 2012
經驗值 : 4662
威望值 : 42
注冊日期 : 2013-05-03
男 白羊座 豬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 RyanGuo 2013-06-21, 15:38

shenhung用的方法是後令壓前令沒錯吧?
但剛剛我有試了,
(defun c:LINE()(qload "LINE.lsp" "LINE"))
結果沒辦法把原有的LINE指令撞掉,
這是為甚麼呢?@@?

____________________________________________________________________________________


[分享]不想開一張新圖.就載入一堆的lisp程式. Acad2010 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1810
[分享]不想開一張新圖.就載入一堆的lisp程式. Acad1211 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1311 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1511
RyanGuo
RyanGuo
初級會員
初級會員

文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5579
威望值 : 316
注冊日期 : 2013-04-18
男 射手座 狗

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 shenhung 2013-06-21, 21:13

QLOAD 是用來自動載入自定義的LISP,
不是拿來蓋掉原有AUTOCAD命令.!! 
而LISP也很少以AUTOCAD指命名.如LINE CIRCLE ARC 來定義LISP命令.
通常會產生無法預料的錯誤.不建議這樣做.!!

而且.一般除非很特殊的狀況
否則是不會蓋掉AUTOCAD標準指命的.!!
shenhung
shenhung
高級會員
高級會員

文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8092
威望值 : 1188
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 pizg 2013-06-22, 09:51

RyanGuo 寫到:shenhung用的方法是後令壓前令沒錯吧?
但剛剛我有試了,
(defun c:LINE()(qload "LINE.lsp" "LINE"))
結果沒辦法把原有的LINE指令撞掉,
這是為甚麼呢?@@?

在重新定義line指令之前必須先下達undefine指令,
Line.lsp檔案內容如下:

(command "undefine" "line")
(defun c:LINE() 
  (setq p1 (getpoint "\n第一點:"))
  (setq p2 (getPoint p1 "\n另一點:"))
  (command "_line" p1 p2 "")
)


然後把這一行:


(qload "LINE.lsp" "LINE")



放到 acaddoc.lsp 裏面即可.
pizg
pizg
高級會員
高級會員

文章總數 : 258
年齡 : 59
來自 : 桃園縣
職業 : 建築設計;程式設計
愛好 : 音樂;攝影;繪畫;棋奕;電子;機器人
個性 : 隨和
使用年資 : 30↑
使用版本 : 2015
積分 : 10
經驗值 : 6714
威望值 : 320
發帖精華 : 1
注冊日期 : 2010-04-16
串連貼紙成功 男 摩羯座 龍

https://pizgchen.blogspot.com/

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.[acaddoc.lsp,撞指令undefine,重新定義]

發表 由 RyanGuo 2013-06-24, 12:13

所以說是要撞指令的話,
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?

____________________________________________________________________________________


[分享]不想開一張新圖.就載入一堆的lisp程式. Acad2010 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1810
[分享]不想開一張新圖.就載入一堆的lisp程式. Acad1211 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1311 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1511
RyanGuo
RyanGuo
初級會員
初級會員

文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5579
威望值 : 316
注冊日期 : 2013-04-18
男 射手座 狗

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 pizg 2013-06-24, 17:08

RyanGuo 寫到:所以說是要撞指令的話,
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?

如果你定義一個與內建指令名稱一樣的LISP, 下例是「畫線(LINE)」指令,
(defun c:line()
  ....
)

而沒有解除內建定義的話, 如下
(command "undefine" "line")

那麼在指令行執行畫線, 如下

指令: LINE

AutoCAD會執行內建指令, 而不是你定義的LINE程式.
如果你想執行自己定義的LINE程式,
就要下達

(command "undefine" "line")


貼上原文供你參考, 如下:

 
 

Redefining AutoCAD Commands

Using AutoLISP, external commands, and the alias feature, you can define your own AutoCAD commands. You can use the UNDEFINE command to redefine a built-in AutoCAD command with a user-defined command of the same name. To restore the built-in definition of a command, use the REDEFINE command. The UNDEFINE command is in effect for the current editing session only.
You can always activate an undefined command by specifying its true name, which is the command name prefixed by a period. For example, if you undefine QUIT, you can still access the command by entering .quit at the AutoCAD Command prompt. This is also the syntax that should be used within the AutoLISP command function.
Consider the following example. Whenever you use the LINE command, you want AutoCAD to remind you about using the PLINE command. You can define the AutoLISP function C:LINE to substitute for the normalLINEcommand as follows:
_$ (defun C:LINE ( )
(_> (princ "Shouldn't you
be using PLINE?\n")

(_> (command ".LINE") (princ)
)

C:LINE
In this example, the function C:LINE is designed to issue its message and then to execute the normal LINE command (using its true name, .LINE). Before AutoCAD will use your new definition for the LINE command, you must undefine the built-in LINE command. Enter the following to undefine the built-in LINE command:
_$ (command "undefine" "line")
Now, if you enter line at the AutoCAD Command prompt, AutoCAD uses the C:LINE AutoLISP function:
Command: line
Shouldn't you be using PLINE?
.LINE Specify first point: Specify first point:
The previous code example assumes the CMDECHO system variable is set to 1 (On). If CMDECHO is set to 0 (Off), AutoCAD does not echo prompts during a command function call. The following code uses the CMDECHO system variable to prevent the LINE command prompt from repeating:
_$ (defun C:LINE ( / cmdsave
)

(_> (setq cmdsave (getvar
"cmdecho"))

(_> (setvar "cmdecho" 0)
(_> (princ "Shouldn't you
be using PLINE?\n")

(_> (command ".LINE")
(_> (setvar "cmdecho" cmdsave)
(_> (princ) )
C:LINE
Now if you enter line at the AutoCAD Command prompt, the following text is displayed:
Shouldn't you be using PLINE?
Specify first point:
You can use this feature in a drawing management system, for example. You can redefine the NEW, OPEN, and QUIT commands to write billing information to a log file before you terminate the editing session.
It is recommended that you protect your menus, scripts, and AutoLISP programs by using the period-prefixed forms of all commands. This ensures that your applications use the built-in command definitions rather than a redefined command.
See the Overview of File Organization topic in the AutoCAD Customization Guide for a description of the steps AutoCAD takes to evaluate command names.
pizg
pizg
高級會員
高級會員

文章總數 : 258
年齡 : 59
來自 : 桃園縣
職業 : 建築設計;程式設計
愛好 : 音樂;攝影;繪畫;棋奕;電子;機器人
個性 : 隨和
使用年資 : 30↑
使用版本 : 2015
積分 : 10
經驗值 : 6714
威望值 : 320
發帖精華 : 1
注冊日期 : 2010-04-16
串連貼紙成功 男 摩羯座 龍

https://pizgchen.blogspot.com/

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 RyanGuo 2013-09-12, 10:45

喔...天啊...
我不小心忘記我有在這問過問題了~"~

謝謝前輩pizg的回答;)

我想我之前太天真了,
以為自己總有一天可以寫出值得撞掉原有指令的程式,
現在看來真的是蠻蠢的@@a

____________________________________________________________________________________


[分享]不想開一張新圖.就載入一堆的lisp程式. Acad2010 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1810
[分享]不想開一張新圖.就載入一堆的lisp程式. Acad1211 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1311 [分享]不想開一張新圖.就載入一堆的lisp程式. Acad1511
RyanGuo
RyanGuo
初級會員
初級會員

文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5579
威望值 : 316
注冊日期 : 2013-04-18
男 射手座 狗

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 djh1006 2013-10-07, 18:10

蘋果爸你好

我習慣把自己的lsp的載入方式放在acad.mnl
^C^C^P(if (not c:DJH_001) (load "DJH_001"));DJH_001
^C^C^P(if (not c:DJH_002) (load "DJH_002"));DJH_002
^C^C^P(if (not c:DJH_003) (load "DJH_003"));DJH_003
.....以下類推,有幾個程式就加入幾行

再加上在acad.pgp新增快速鍵如下:
CD,            *DJH_001
C2,            *DJH_002
CTR,            *DJH_003

由此二個檔案就可以滿足開一個acad的檔案後,便可以以快速鍵方式操作,但缺點是每次開新檔或舊檔會載入一堆lsp程式,會卡一下子,這種狀況如何修改(不用acaddoc.lsp),或是一定要用acaddoc.lsp?acaddoc.lsp是外加進去的嗎?放在哪個目錄?沒用過不知道怎麼操作,請不吝指教,謝謝

____________________________________________________________________________________
微笑
djh1006
djh1006
中級會員
中級會員

文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6154
威望值 : 359
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 蔣秉澔 2013-12-13, 09:07

小弟愚魯,還是有些看不懂,我的是2014版,找不到acaddoc.lsp,只有acad2014doc.lsp,不知是否一樣?
假設,我有一個j.lsp是放在d槽→acad→lsptool,指令"j",該如何操作?
ps:我有試著在acad2014doc.lsp裡面加(defun c:j ()(qload "d:\\acad\\lsptool\\j" "j")),但好像沒用耶,出現
指令: J
; 錯誤: no function definition: QLOAD
蔣秉澔
蔣秉澔
初級會員
初級會員

文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5416
威望值 : 198
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2013-12-13, 11:02

蔣秉澔 寫到:小弟愚魯,還是有些看不懂,我的是2014版,找不到acaddoc.lsp,只有acad2014doc.lsp,不知是否一樣?
假設,我有一個j.lsp是放在d槽→acad→lsptool,指令"j",該如何操作?
ps:我有試著在acad2014doc.lsp裡面加(defun c:j ()(qload "d:\\acad\\lsptool\\j" "j")),但好像沒用耶,出現
指令: J
; 錯誤: no function definition: QLOAD
你要再加入「副程式」到acad2014doc.lsp
說明: https://www.autocad-tw.com/t9104-topic#106493

註:LISP語法寫到acad2014doc.lsp也可以。
 認同

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2013-12-13, 11:25

djh1006 寫到:蘋果爸你好
Spoiler(用來隱藏帖子內容):
由此二個檔案就可以滿足開一個acad的檔案後,便可以以快速鍵方式操作,但缺點是每次開新檔或舊檔會載入一堆lsp程式,會卡一下子,這種狀況如何修改(不用acaddoc.lsp),或是一定要用acaddoc.lsp?acaddoc.lsp是外加進去的嗎?放在哪個目錄?沒用過不知道怎麼操作,請不吝指教,謝謝
1.可以自行新增「acaddoc.lsp」,並放置到支援路徑底下,我是放在「menu2014資料夾」,然後再把它移至最上層,這樣就會先讀到我設置的程式檔:
[分享]不想開一張新圖.就載入一堆的lisp程式. 0122

2.「acaddoc.lsp」中要記得加入「qload副程式」,然後依使用需求掛入程式,我大致分兩種「立即載入」、「用到才載入」:
[分享]不想開一張新圖.就載入一堆的lisp程式. 0217

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 蔣秉澔 2013-12-13, 13:04

我會了,謝謝!!只是每次輸入指令都會出現這個:
[分享]不想開一張新圖.就載入一堆的lisp程式. Upf0


____________________________________________________________________________________
[分享]不想開一張新圖.就載入一堆的lisp程式. Ioaoe110 [分享]不想開一張新圖.就載入一堆的lisp程式. Zuoiy_10 [分享]不想開一張新圖.就載入一堆的lisp程式. 2020-211 [分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao11 [分享]不想開一張新圖.就載入一堆的lisp程式. Iyb_1510
[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao10 [分享]不想開一張新圖.就載入一堆的lisp程式. BPl3tjj.png [分享]不想開一張新圖.就載入一堆的lisp程式. Ziao1510 [分享]不想開一張新圖.就載入一堆的lisp程式. Oo-2-110 [分享]不想開一張新圖.就載入一堆的lisp程式. Oooa_110
蔣秉澔
蔣秉澔
初級會員
初級會員

文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5416
威望值 : 198
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 Tiger&蘋果爸 2013-12-13, 13:09

蔣秉澔 寫到:我會了,謝謝!!只是每次輸入指令都會出現這個:
這是2014版本開始的「保護措施(新功能)」,請將你的程式路徑加入到「可信任位置」,以後就不會再顯示。
[分享]不想開一張新圖.就載入一堆的lisp程式. 0312

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21400
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90475
威望值 : 17213
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

[分享]不想開一張新圖.就載入一堆的lisp程式. Empty 回復: [分享]不想開一張新圖.就載入一堆的lisp程式.

發表 由 蔣秉澔 2013-12-13, 15:08

原來如此,嘿嘿,今天的經驗值又UPUP囉!!

____________________________________________________________________________________
[分享]不想開一張新圖.就載入一堆的lisp程式. Ioaoe110 [分享]不想開一張新圖.就載入一堆的lisp程式. Zuoiy_10 [分享]不想開一張新圖.就載入一堆的lisp程式. 2020-211 [分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao11 [分享]不想開一張新圖.就載入一堆的lisp程式. Iyb_1510
[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao10 [分享]不想開一張新圖.就載入一堆的lisp程式. BPl3tjj.png [分享]不想開一張新圖.就載入一堆的lisp程式. Ziao1510 [分享]不想開一張新圖.就載入一堆的lisp程式. Oo-2-110 [分享]不想開一張新圖.就載入一堆的lisp程式. Oooa_110
蔣秉澔
蔣秉澔
初級會員
初級會員

文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5416
威望值 : 198
注冊日期 : 2013-08-31
顧問外掛程式 藍鵲661號
男 金牛座 蛇

回頂端 向下

1頁(共2頁) 1, 2  下一步

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe1-113[分享]不想開一張新圖.就載入一堆的lisp程式. Ioaoe110[分享]不想開一張新圖.就載入一堆的lisp程式. 2020-310[分享]不想開一張新圖.就載入一堆的lisp程式. Oiu15010[分享]不想開一張新圖.就載入一堆的lisp程式. 2020-211[分享]不想開一張新圖.就載入一堆的lisp程式. Ia15010[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao10[分享]不想開一張新圖.就載入一堆的lisp程式. Uos15010[分享]不想開一張新圖.就載入一堆的lisp程式. BPl3tjj[分享]不想開一張新圖.就載入一堆的lisp程式. Ziao1510
[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe15010[分享]不想開一張新圖.就載入一堆的lisp程式. Oo-2-110[分享]不想開一張新圖.就載入一堆的lisp程式. Zuoiy_10[分享]不想開一張新圖.就載入一堆的lisp程式. Aizyao11[分享]不想開一張新圖.就載入一堆的lisp程式. Iyb_1510[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe1-112[分享]不想開一張新圖.就載入一堆的lisp程式. Uos15011[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe2da10[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe2da11[分享]不想開一張新圖.就載入一堆的lisp程式. Aoe10