首頁 » 軟體教學 » 如何在 AutoCAD LT 中使用 AutoLISP

如何在 AutoCAD LT 中使用 AutoLISP

by hiholife
8 瀏覽

如何使用 AutoCAD LT 和 AutoLISP

AutoCAD LT 用戶在 AutoCAD LT 2024 發布後獲得了很多價值。AutoCAD LT 2024 首次包含 AutoLISP,進一步使組織能夠優化工作流程、強制執行 CAD 標準,並利用數千個現有的自動化功能,用於基於 AutoCAD 的程序。

這對 AutoCAD LT 社群來說是個好消息。不僅現有的 AutoCAD LT 使用者有一個新工具可以探索,而且它也讓整個 AutoCAD 使用者群體能夠利用 AutoLISP。而且你不必成為一名程式設計師才能做到這一點。

對於大多數現有的 AutoCAD LT 使用者來說,可以說他們對 AutoLISP 知之甚少。為什麼呢?因為你無法使用它,沒有人會學習一個他們無法使用的功能或編程語言。但也許有些人對 AutoLISP 能做什麼有一定程度的認識。對於這兩個群體來說,可能會有很多問題。現在你有了 AutoLISP,你可以用它做什麼?你可以去哪裡找代碼?一旦你有了代碼,你該怎麼處理它?

不用擔心!在這裡,我們將探討您現在擁有的內容,以及如何找到並使用您可以信任並幫助您日常任務的 AutoLISP 代碼。

AutoLISP 101

AutoLISP 是 Lisp 程式語言的一種方言。Lisp 於1958年開發,是仍在使用中第二古老的語言,僅次於 Fortran。AutoLISP 於1986 年被添加到 AutoCAD 版本 2.18 中,作為擴展其功能的介面。

不僅可以使用它來自動執行類似(但比腳本更強大的)任務,而且還可以以熟悉的方式與編輯器互動。AutoLISP 讓您可以指定點、選擇對象、在命令行輸入字母數字數據,或通過與其伴侶語言 DCL(對話框控制語言)創建的對話框提供輸入。

如何使用 AutoCAD LT 和 AutoLISP

快速入門使用 AutoLISP 的小貼士

AutoCAD和AutoCAD LT之間最重要的區別之一是AutoCAD LT用戶現在可以使用AutoLISP代碼。VLIDE代表Visual LISP集成開發環境,不包含在AutoCAD LT中。它被集成到完整的AutoCAD中,通常用於編寫和調試AutoLISP代碼。

無論是否有內建的LISP編輯器,AutoLISP對非程式設計師來說都很容易使用。其中一個原因是AutoCAD LT是其自己的運行時解釋器,可以直接在命令提示字元輸入一段AutoLISP代碼,它會為您運行該代碼。

這對你有什麼價值呢?嗯,AutoLISP可以進行數學運算。也許你會發現,使用一點程式碼比使用QuickCalc工具或甚至Windows計算機更快。對你來說,語法可能有點奇怪,因為運算符或函數是首位的,所以要加2和2,你會輸入(+ 2 2)。它將返回值4。請記住,AutoLISP語句總是返回一個值。這意味著你可以使用AutoLISP語句來回應AutoCAD提示。

假設AutoCAD LT要求輸入一個距離,而你需要先計算出數值。我們假設是Pi乘以12再除以2(因為,為什麼不呢?)。在距離提示處輸入(/ (* pi 12) 2)。AutoLISP將返回18.8496作為距離(取決於你的單位設置)。

如果您想在多領導線上將值作為字符串顯示,請在提示輸入文本時輸入 (rtos (/ (* pi 12) 2) 4 2)。該 rtos 函數將該值轉換為字符串,或者在這種情況下,為 1′ – 6 ¾”。

也許您有一組複雜的物件需要選擇,而且您知道在本次工作階段中需要多次選擇它們。當您有 AutoLISP 幫助時,這就不是問題了。只需輸入 (setq SS (ssget))。ssget 函數會提示您選擇物件,就像您習慣做的那樣。現在,繼續進行您的複雜選擇。

基本上,您輸入的代碼(setq)將把所選對象集分配給變量SS,AutoLISP將在繪圖保持打開的情況下記住它。這也為您提供了一個方便的機制來檢索它。因此,下次您需要這些對象時,在命令提示符處輸入!SS。就是這樣,您將擁有完全相同的選擇集。當你找到這些小寶藏時,複製並粘貼到一個文字文件中,讓它隨手可及。如果需要,輕微編輯一下文字,然後複製並粘貼!

關於 AutoLISP 代碼需要注意的一點是,始終使用純文本,絕不要使用任何格式化。記事本非常適合這個目的。只需遠離您喜歡的文字處理程序。

載入並執行 AutoLISP 代碼

好的,在命令提示字元中的程式碼片段很好,但您可能會使用您喜歡的搜尋引擎,在網路上找到完整的AutoLISP例程,這將更有幫助。這些通常會在一個擁有.lsp擴展名的單一檔案中,因此您需要知道如何載入它們以及如何運行它們。

注意:AutoCAD LT 也允許您加載和運行 .vlx 和 .fas 文件,這兩者都是編譯格式,因此您將無法打開和閱讀它們。

最簡單的是 APPLOAD 命令。您也可以在功能區的管理選項卡的應用程式面板上找到它的圖示。運行它將顯示載入/卸載應用程式對話框,您可以在其中導航到您的 AutoLISP 文件並點擊載入。相當簡單。但這樣做意味著您每次重新進入繪圖時都必須這樣做。最簡單的是 APPLOAD 命令。您也可以在功能區的管理選項卡的應用程式面板上找到它的圖示。運行它將顯示載入/卸載應用程式對話框,您可以在其中導航到您的 AutoLISP 文件並點擊載入。相當簡單。但這樣做意味著您每次重新進入繪圖時都必須這樣做。

您也可以使用 AutoLISP 本身來打開您的文件。只需輸入(load “filename.lsp”),就可以了。前提是文件在定義的搜索路徑中。如果不在,您將需要在文件名之前提供完整路徑。這需要一些 AutoLISP 知識,所以您可能不想使用這種方法。

這裡有另一個很棒的提示。您也可以將 AutoLISP 檔案拖放到 LT 會話中。它將被載入,您就可以開始使用了。但是,您知道該怎麼做嗎?您的 AutoLISP 檔案現在已經載入,但如何執行它呢?有時程式設計師會友善地包含提示,告訴您應該輸入什麼,所以請留意命令列歷史記錄。如果沒有的話,您將需要打開 AutoLISP 檔案(雙擊應該就可以了),並找到定義如何運行例程的那一行。在代碼中尋找以下內容:

(defun C:commandNameHere …

大小寫不重要,所以不用擔心。你要找的是defun(用於在 AutoLISP 中定義函數的關鍵字)和 C:,這告訴AutoLISP 後面的單詞是命令名稱。這是你將在命令提示符處輸入以運行 AutoLISP 例程的內容。


AutoLISP 自動化

程式碼片段很棒,載入和執行程式碼也很方便。但還有更多!想像一下,每次打開文件時都能運行你想要的程式碼,這樣的功能會帶來什麼影響。

你可以分析你的圖層,確保它們符合你的標準,如果不符合,則修復它們。對所有的樣式也做同樣的處理。你可以檢查文件的名稱、文件夾或路徑,以確保符合繪圖類型或所屬學科的規範。這些都可以輕鬆通過在你喜歡的搜索引擎中輸入幾個搜索詞找到的代碼來完成。

你如何開始?每次打開圖紙時都會載入一個特殊的檔案。在完整的 AutoCAD 中,它被稱為 ACADDOC.lsp,但現在在LT中,它被稱為 ACADLTDOC.lsp。一開始它並不存在,所以你需要創建它(記得你的好朋友,記事本),並確保它在你的搜索路徑中的某個文件夾裡。它將像在載入/卸載應用程式對話框中的啟動套件一樣運作,但不僅僅是載入例程以便您可以存取它們,還可以運行命令。

通常,這也是您控制 LT 環境的地方。可能有一些系統變數或環境變數,您希望始終設置為您喜歡的方式。以下是公司可能添加到 ACADLTDOC.lsp 文件中的 AutoLISP 陳述的示例:

(setvar “FILEDIA” 1)

(setvar “CMDDIA” 1)

(setvar “ATTDIA” 1)

(setenv “ShowFullPathInTitle” “1”)

這些只是 AutoLISP 陳述,因此當檔案載入時,它們會自動執行,而不需要輸入命令名稱。這是標準化您設置的絕佳方式。

您也可以在其中放入縮短或小助手命令。只需確保您記住命令名稱(C:之後的部分)。再次強調,此代碼已載入並準備供您使用。這裡是一個具有類似命令別名的縮短名稱的命令示例。只需輸入 MP 即可運行MATCHPROP。

(defun c:mp () (command “_matchprop”) (princ))

或者它可能是某種幫助命令。以下代碼將使您選擇的物件圍繞您定義的點旋轉180°。

(defun C:flip () (command “_rotate” (car (entsel)) “” (getpoint) “180”) (princ))

探索視覺 Lisp

我們迄今為止談到的一切都涉及使用原始的 AutoLISP。但你可能會遇到一個廣泛使用的擴展。在查看代碼時,請留意文件頂部是否有以下語句:(vl-load-com)。這是你的線索,表明代碼可能使用了與 ActiveX 相關的功能。同時,請尋找以“vla-”或“vlax-”開頭的命令。

找到這個並不一定是壞事,因為您的新版和改進版 LT 支持它的使用。但取決於它試圖做什麼,它可能無法正常工作。例如,在 AutoLISP 中的 ActiveX 可以創建和修改 3D 物件,但由於 LT 不支持 3D,它將無法運作。對於約束、輪廓、外部應用程序等也是如此。

但在AutoLISP代碼中有一種類型的ActiveX,你可能會發現它很有用,而且應該適用於你。如果在你的繪圖會話的背景中有某種東西潛伏著,只等著特定的事情發生,那不是很酷嗎?

想像一下這種情況。在你的辦公室嚴禁爆炸尺寸,但它仍然發生了。如果有一段隱藏的程式碼,只有在尺寸上使用EXPLODE命令時才會執行某些操作,那該有多好呢?使用者嘗試這樣做,程式碼接管並阻止它。

這被稱為事件驅動程式設計,並且是使用反應器來實現的。這有點複雜,但你可以找到可運行的範例。反應器和當啟動時運行的函數(“回調函數”)也可以存在於 ACADLTDOC.lsp 中。

尋找 AutoLISP 和 Visual Lisp 代碼

你可能一開始不會從頭開始寫程式碼,但你會主要在線上找到它。哦,你(可能)最終會做幾乎每個AutoLISP程序員一開始做的事情。你會找到一些程式碼,試著閱讀它,做一些更改,然後看看它是否仍然有效。

這裡有一個小的 AutoLISP 函數,可以將所有文字樣式更改為使用 ROMANS。

(defun C:MakeRomans (/ rewind next name)

(setq rewind T)

(while (setq next (tblnext “STYLE” rewind))

(setq name (cdr (assoc 2 next)))

如果(不是(wcmatch名稱“|”))

(命令“-style” 名稱“羅馬” “” “” “” “” “” “”)

(setq rewind nil))

(princ))

對你來說,這可能看起來很陌生,但仔細看,你可能會認出其中一些東西。你知道 STYLE 命令,當然,ROMANS 是熟悉的。事實上,整行看起來很像你在腳本中寫的方式。也許你已經準備好看看如果改變一些東西會發生什麼。

也許你會嘗試的第一件事是更換不同的字體。你將羅馬字體改為 Arial。保存、加載、運行… 然後,哇!它奏效了!

回到網路上。這是你最初找到程式碼的方式。我可以幾乎完全保證的是,如果你對 AutoLISP 處理任務有一個好主意,你不是第一個這樣做的人。關於 AutoLISP 程序員的另一件事是,他們喜歡展示他們的工作。這也意味著他們喜歡互相幫助。這對你來說是一個很好的組合。

首先,您需要熟練地使用特定的關鍵字和措辭來精確找到您所需的內容。請確保包含完整的 AutoLISP 一詞(而不僅僅是Lisp)。我總是以 AutoCAD 為首。不要包括 LT。目前還沒有 LT AutoLISP 代碼存在!

使用描述您所需代碼功能的動詞,並使用AutoCAD語言。例如,使用Copy,而不是Duplicate。省略冠詞、形容詞和介詞。嘗試建立類似於此的搜索查詢:AutoCAD AutoLISP 匯出圖層表。

隨著時間的推移,你會找到對你有效和無效的方法。你也會開始看到結果中的模式。某些網站會經常出現。你也會對那些獲得最佳結果的網站有所感覺。當然,反之亦然。

你甚至可以嘗試一些最新的人工智慧技術。你肯定聽說過今年出現的AI聊天網站。只需向其中一個要求寫一些程式碼!但要小心,因為它可能會出現一些“新手”錯誤。科技變化和演進的速度如此之快,也許在你閱讀這篇文章時已經完善了。

學習更多資源

希望這一切讓你對更多知識感到好奇。而且有很多資源可以幫助你開始。

要找到幫助理解您的代碼含義的最佳地方,最好是參考 Autodesk 自己的 AutoLISP 開發人員指南。如果您準備好了,也許您想再深入一點。甚至還有一個入門教程可以幫助您上路。當然,還有 AutoLISP 論壇。Autodesk University 也提供線上課程。

隨著 AutoCAD LT 2024 的發布,您也可以查看 AutoLISP(AutoLISP)的新功能或更改,以及 AutoLISP 參考指南中功能參考的改進

嘗試在 AutoCAD LT 中使用 AutoLISP

有了在 AutoCAD LT 中使用 AutoLISP 的權限,您可以探索一個完整的自動化世界和節省時間的程式碼。如果您還不是 LT 訂閱用戶,您可以前往這裡下載免費的30天試用版。試著實驗一下,學習一下,不要害怕嘗試一下。

相關文章

發佈留言