[分享]不想開一張新圖.就載入一堆的lisp程式.
+5
RyanGuo
awi
prettycat
Tiger&蘋果爸
shenhung
9 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共2頁)
[分享]不想開一張新圖.就載入一堆的lisp程式.
主題回顧 :
如果各位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 ")")))))
)
如果各位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- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8075
威望值 : 1188
注冊日期 : 2009-06-03
jackiehover likes this post
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.[acaddoc.lsp,撞指令undefine,重新定義]
所以說是要撞指令的話,
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5562
威望值 : 316
注冊日期 : 2013-04-18
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
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.
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
喔...天啊...
我不小心忘記我有在這問過問題了~"~
謝謝前輩pizg的回答;)
我想我之前太天真了,
以為自己總有一天可以寫出值得撞掉原有指令的程式,
現在看來真的是蠻蠢的@@a
我不小心忘記我有在這問過問題了~"~
謝謝前輩pizg的回答;)
我想我之前太天真了,
以為自己總有一天可以寫出值得撞掉原有指令的程式,
現在看來真的是蠻蠢的@@a
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5562
威望值 : 316
注冊日期 : 2013-04-18
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
蘋果爸你好
我習慣把自己的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是外加進去的嗎?放在哪個目錄?沒用過不知道怎麼操作,請不吝指教,謝謝
我習慣把自己的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- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6137
威望值 : 359
注冊日期 : 2011-06-16
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
小弟愚魯,還是有些看不懂,我的是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
假設,我有一個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
經驗值 : 5399
威望值 : 198
注冊日期 : 2013-08-31
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
你要再加入「副程式」到acad2014doc.lsp蔣秉澔 寫到:小弟愚魯,還是有些看不懂,我的是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
說明: https://www.autocad-tw.com/t9104-topic#106493
註:LISP語法寫到acad2014doc.lsp也可以。
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
1.可以自行新增「acaddoc.lsp」,並放置到支援路徑底下,我是放在「menu2014資料夾」,然後再把它移至最上層,這樣就會先讀到我設置的程式檔:djh1006 寫到:蘋果爸你好由此二個檔案就可以滿足開一個acad的檔案後,便可以以快速鍵方式操作,但缺點是每次開新檔或舊檔會載入一堆lsp程式,會卡一下子,這種狀況如何修改(不用acaddoc.lsp),或是一定要用acaddoc.lsp?acaddoc.lsp是外加進去的嗎?放在哪個目錄?沒用過不知道怎麼操作,請不吝指教,謝謝
- Spoiler(用來隱藏帖子內容):
我習慣把自己的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
2.「acaddoc.lsp」中要記得加入「qload副程式」,然後依使用需求掛入程式,我大致分兩種「立即載入」、「用到才載入」:
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
我會了,謝謝!!只是每次輸入指令都會出現這個:
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5399
威望值 : 198
注冊日期 : 2013-08-31
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
這是2014版本開始的「保護措施(新功能)」,請將你的程式路徑加入到「可信任位置」,以後就不會再顯示。蔣秉澔 寫到:我會了,謝謝!!只是每次輸入指令都會出現這個:
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
原來如此,嘿嘿,今天的經驗值又UPUP囉!!
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5399
威望值 : 198
注冊日期 : 2013-08-31
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
Tiger&蘋果爸 寫到:這是2014版本開始的「保護措施(新功能)」,請將你的程式路徑加入到「可信任位置」,以後就不會再顯示。蔣秉澔 寫到:我會了,謝謝!!只是每次輸入指令都會出現這個:
原來如此~
一開始只看重點,剛剛重新閱讀一遍
現在看到了
謝謝蘋爸~
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30445
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
也可以將他關閉喔!judyyai 寫到:Tiger&蘋果爸 寫到:這是2014版本開始的「保護措施(新功能)」,請將你的程式路徑加入到「可信任位置」,以後就不會再顯示。蔣秉澔 寫到:我會了,謝謝!!只是每次輸入指令都會出現這個:
原來如此~
一開始只看重點,剛剛重新閱讀一遍
現在看到了
謝謝蘋爸~
輸入 SECURELOAD系統變數 設置為 0 即可~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共2頁)
這個論壇的權限:
您 無法 在這個版面回復文章