[分享]不想開一張新圖.就載入一堆的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 ")")))))
)
一般都是在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
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
jackiehover likes this post
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
![讚啦!!](/users/3215/23/55/09/smiles/478326.gif)
謝謝您的分享~
我之前學到的方式為
(IF (NULL C:LISP指令名) (LOAD "LISP程式名"))
請問這二種方式的差異性是在哪裡,還是其實是一樣的結果~
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
(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檔內 再把原指令定義成比較短的指令名稱就可以..
以上希望對您有所幫助.!!
這一行的意思是 如果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- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
原來如此~
謝謝 shenhung大 如此精細的解說!
PS:提醒一下
..在gpg內 ..
這個您筆誤,是PGP檔
感恩~
謝謝 shenhung大 如此精細的解說!
PS:提醒一下
..在gpg內 ..
這個您筆誤,是PGP檔
感恩~
![害羞](/users/3215/23/55/09/smiles/84227.gif)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
謝謝蘋果爸更正.打太快了.
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
別這麼說~shenhung 寫到:謝謝蘋果爸更正.打太快了.
提醒你可以使用 EDIT 來編輯您的主題!
![嘻嘻](/users/3215/23/55/09/smiles/129370.gif)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
感謝分享呢~
想請教一下大大,我最近在開啟一些超級簡單圖檔的時候
會在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 授權的應用程式儲存。
想請教一下大大,我最近在開啟一些超級簡單圖檔的時候
會在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 授權的應用程式儲存。
prettycat- 中級會員
- 文章總數 : 101
年齡 : 53
來自 : 新竹
職業 : 工程繪圖 CAD2D & REVIT3D
愛好 : 騎單車,出遊
個性 : 多元化
使用年資 : 8
使用版本 : 2011
積分 : 6
經驗值 : 6050
威望值 : 96
注冊日期 : 2009-01-11
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
shenhung
最近有空檔開始測試了這個方式~
終於成功,真的是太棒了~
感恩...
▼回報:shenhung前輩,副程式這行您誤植多一個"右括弧",取消後即可正常載入~
(setq rtn (eval (read (strcat "(c:" lsp_cmd ")")))))
最近有空檔開始測試了這個方式~
終於成功,真的是太棒了~
感恩...
![親一個](/users/3215/23/55/09/smiles/8284.gif)
▼回報:shenhung前輩,副程式這行您誤植多一個"右括弧",取消後即可正常載入~
(setq rtn (eval (read (strcat "(c:" lsp_cmd ")")))))
![竊喜](/users/3215/23/55/09/smiles/91815.gif)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
蘋果爸.使用愉快~也謝謝你發現問題!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
我的無法執行成功耶,是版本問題嗎?還是我哪裡搞錯了?
我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。
我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- 一般會員
- 文章總數 : 74
年齡 : 41
來自 : 新北市
職業 : 電機技師事務所
愛好 : 新奇有趣的事物
個性 : 固執
使用年資 : 6
使用版本 : 2012
經驗值 : 4570
威望值 : 42
注冊日期 : 2013-05-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
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 ")"))))
)
;;快速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
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
原來如此,加上去後已經成功了,感謝~感謝~
程式超好用,給你一百萬個讚~~
程式超好用,給你一百萬個讚~~
awi- 一般會員
- 文章總數 : 74
年齡 : 41
來自 : 新北市
職業 : 電機技師事務所
愛好 : 新奇有趣的事物
個性 : 固執
使用年資 : 6
使用版本 : 2012
經驗值 : 4570
威望值 : 42
注冊日期 : 2013-05-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
shenhung用的方法是後令壓前令沒錯吧?
但剛剛我有試了,
(defun c:LINE()(qload "LINE.lsp" "LINE"))
結果沒辦法把原有的LINE指令撞掉,
這是為甚麼呢?@@?
但剛剛我有試了,
(defun c:LINE()(qload "LINE.lsp" "LINE"))
結果沒辦法把原有的LINE指令撞掉,
這是為甚麼呢?@@?
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5487
威望值 : 316
注冊日期 : 2013-04-18
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
QLOAD 是用來自動載入自定義的LISP,
不是拿來蓋掉原有AUTOCAD命令.!!
而LISP也很少以AUTOCAD指命名.如LINE CIRCLE ARC 來定義LISP命令.
通常會產生無法預料的錯誤.不建議這樣做.!!
而且.一般除非很特殊的狀況
否則是不會蓋掉AUTOCAD標準指命的.!!
不是拿來蓋掉原有AUTOCAD命令.!!
而LISP也很少以AUTOCAD指命名.如LINE CIRCLE ARC 來定義LISP命令.
通常會產生無法預料的錯誤.不建議這樣做.!!
而且.一般除非很特殊的狀況
否則是不會蓋掉AUTOCAD標準指命的.!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 7997
威望值 : 1185
注冊日期 : 2009-06-03
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
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 裏面即可.
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.[acaddoc.lsp,撞指令undefine,重新定義]
所以說是要撞指令的話,
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?
要嘛就是不用undefine自己撞自己,
要不然就是用undefine後再重新定義?
這樣說對嗎?@@?
RyanGuo- 初級會員
- 文章總數 : 206
年齡 : 41
來自 : 屏東
職業 : 機械繪圖
愛好 : 玩遊戲
個性 : 嗚嗚男
使用年資 : 1年多
使用版本 : 2011
積分 : 3
經驗值 : 5487
威望值 : 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
經驗值 : 5487
威望值 : 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是外加進去的嗎?放在哪個目錄?沒用過不知道怎麼操作,請不吝指教,謝謝
____________________________________________________________________________________
![微笑](/users/3215/23/55/09/smiles/286961.gif)
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6062
威望值 : 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
經驗值 : 5330
威望值 : 204
注冊日期 : 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也可以。
![認同](/users/3215/23/55/09/smiles/349794.gif)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的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
![[分享]不想開一張新圖.就載入一堆的lisp程式. 0122](https://i.servimg.com/u/f57/12/31/59/66/0122.png)
2.「acaddoc.lsp」中要記得加入「qload副程式」,然後依使用需求掛入程式,我大致分兩種「立即載入」、「用到才載入」:
![[分享]不想開一張新圖.就載入一堆的lisp程式. 0217](https://i.servimg.com/u/f57/12/31/59/66/0217.png)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
我會了,謝謝!!只是每次輸入指令都會出現這個:
![[分享]不想開一張新圖.就載入一堆的lisp程式. Upf0](https://2img.net/r/ihimizer/img31/9402/upf0.jpg)
![[分享]不想開一張新圖.就載入一堆的lisp程式. Upf0](https://2img.net/r/ihimizer/img31/9402/upf0.jpg)
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5330
威望值 : 204
注冊日期 : 2013-08-31
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
這是2014版本開始的「保護措施(新功能)」,請將你的程式路徑加入到「可信任位置」,以後就不會再顯示。蔣秉澔 寫到:我會了,謝謝!!只是每次輸入指令都會出現這個:
![[分享]不想開一張新圖.就載入一堆的lisp程式. 0312](https://i.servimg.com/u/f57/12/31/59/66/0312.png)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]不想開一張新圖.就載入一堆的lisp程式.
原來如此,嘿嘿,今天的經驗值又UPUP囉!!
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5330
威望值 : 204
注冊日期 : 2013-08-31
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共2頁)
這個論壇的權限:
您 無法 在這個版面回復文章