如何使用 AutoCAD LT 和 AutoLISP:您的問題得到解答

AutoCAD LT 中的 AutoLISP

隨著 AutoCAD LT 2024 的發布,AutoCAD LT 客戶獲得了巨大的價值。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(對話框控制語言)創建的對話框提供輸入。

AutoLISP 和 AutoCAD LT 屏幕截圖

開始使用 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 3/4”。

也許您有一組複雜的對象需要選擇,並且您知道您需要在會話中多次選擇它們。當您身邊有 AutoLISP 時就沒問題。只需輸入(setq SS (ssget))。ssget 函數會提示您選擇對象,就像您習慣的那樣。現在繼續執行您的複雜選擇。

基本上,您輸入的代碼(setq)會將選定的對象集分配給變量 SS,AutoLISP 在繪圖保持打開狀態時會記住該變量。它還為您提供了一種簡單的檢索機制。因此,下次您需要這些對象時,請在命令提示符下輸入!SS 。就像這樣,您就有了完全相同的選擇集。當您找到這些小信息時,請將它們複製並粘貼到您易於訪問的文本文檔中。如果需要,只需編輯一些文本,然後復制並粘貼即可!

關於 AutoLISP 代碼需要注意的一件事。始終使用純文本,切勿使用任何格式化的內容。記事本非常適合此操作。遠離您最喜歡的文字處理程序。

加載並運行 AutoLISP 代碼

好的,命令提示符下的代碼片段很好,但您可能會使用您最喜歡的搜索引擎並在互聯網上找到成熟的 AutoLISP 例程,這會更有幫助。它們通常位於擴展名為 .lsp 的單個文件中,因此您需要知道如何加載它們以及如何使它們運行。

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

最簡單的是 APPLOAD 命令。您還可以在功能區“管理”選項卡的“應用程序”面板上找到其圖標。運行它將顯示“加載/卸載應用程序”對話框,您可以在其中導航到 AutoLISP 文件並單擊“加載”。挺容易。但這樣做意味著您每次重新輸入繪圖時都必須這樣做。默認情況下,AutoLISP 文件不會持久加載。在“加載/卸載應用程序”對話框的右下角有一個稱為“啟動套件”的東西。如果您將文件放在此處,則每當您打開工程圖時都會加載該文件。

啟動套件 AutoLISP

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

這是另一個很棒的提示。您還可以將 AutoLISP 文件拖放到 LT 會話中。它將加載,您就可以開始了。或者你會嗎?您的 AutoLISP 文件現已加載,但如何讓它運行呢?有時程序員很友好,會包含一個提示,告訴您要輸入什麼內容,因此請留意命令行歷史記錄。如果沒有,您必須打開 AutoLISP 文件(雙擊即可解決問題)並找到定義如何運行例程的行。在代碼中查找以下內容:

(defun C:命令名稱這裡…

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

AutoLISP 實現自動化

代碼片段很棒,加載和運行代碼也很棒。但還有更多!每次打開文件時都能夠運行您想要的代碼怎麼樣?想想這些影響。

您可以分析圖層以確保它們符合您的標準,如果不符合則修復它們。對你的所有風格都做同樣的事情。您可以檢查文件的名稱、文件夾或路徑,以確保根據其所屬的繪圖類型或規則符合要求。這一切都可以通過在互聯網上找到的代碼輕鬆完成,只需在您最喜歡的搜索引擎中輸入一些搜索詞即可。

你是如何開始的?每次打開圖形時都會加載一個特殊文件。在完整的 AutoCAD 中,它稱為 ACADDOC.lsp,但現在在 LT 中,它稱為 ACADLTDOC.lsp。它一開始並不存在,因此您必須創建它(記住您的朋友,記事本)並確保它位於您的搜索路徑中的文件夾中。它將像“加載/卸載應用程序”對話框中的啟動套件一樣工作,但您不僅可以加載例程以便可以訪問它們,還可以運行命令。

通常,這也是您控制 LT 環境的地方。您可能希望確保某些系統變量或環境變量始終按照您的喜好進行設置。以下是公司可能添加到 ACADLTDOC.lsp 文件中的 AutoLISP 語句示例:

(設置變量“FILEDIA”1)

(設置變量“CMDDIA”1)

(設置變量“ATTDIA”1)

(setenv“ShowFullPathInTitle”“1”)

它們只是 AutoLISP 語句,因此當文件加載時,它們會自動執行,無需輸入命令名稱。這是標準化您的設置的好方法。

您還可以在其中放置縮短的或小的幫助命令。只要確保您記住命令名稱(C: 之後的部分)即可。同樣,此代碼將加載並可供您使用。下面是一個具有類似於命令別名的縮寫名稱的命令示例。只需輸入 MP 即可運行 MATCHPROP。

(defun c:mp () (命令“_matchprop”) (princ))

或者它可能是某種輔助命令。以下代碼將圍繞您定義的點將選定的對象翻轉 180°。

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

探索 Visual 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 (/倒帶下一個名字)

(setq 倒回 T)

(而(setq next(tblnext“STYLE”倒帶))

(setq 名稱 (cdr (assoc 2 next)))

(if (not (wcmatch 名稱“*|*”))

(命令“-style”名稱“romans”“”“”“”“”“”“”))

(setq 倒回零))

(原))

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

也許您首先嘗試的是不同的字體。您將 ROMANS 更改為 ARIAL。保存、加載、運行……瞧!有用!

回到互聯網。這就是您最初找到代碼的方式。我幾乎可以完全向您保證的一件事是,如果您對 AutoLISP 處理的任務有一個好主意,那麼您不是第一個這樣做的人。AutoLISP 程序員的另一件事是——他們喜歡炫耀自己的工作。這也意味著他們喜歡互相幫助。這對你來說是一個很好的組合。

首先,您需要熟練使用特定的關鍵字和措辭來準確找到您需要的內容。確保包含 AutoLISP 的整個單詞(而不僅僅是 Lisp)。我也始終以 AutoCAD 為主導。不包括 LT。目前還沒有 LT AutoLISP 代碼!

使用一個或多個動詞來描述您所需的代碼將執行的操作,並使用 AutoCAD 語言。例如,說“複製”,而不是“複製”。省略冠詞形容詞和介詞。嘗試構建與此類似的搜索查詢:AutoCAD AutoLISP 導出圖層表

隨著時間的推移,你會發現什麼對你有效,什麼不適合你。您還將開始在結果中看到某種模式。某些網站會經常出現。您還將感受到哪些效果最好。當然,反之亦然。

您甚至可以嘗試一些最新的人工智能。毫無疑問,你聽說過今年出現的人工智能聊天網站。只需要求其中一位為您編寫一些代碼即可!但請謹慎行事,因為它提供的結果存在一些“新手”錯誤。隨著技術的快速變化和發展,當您閱讀本文時,它可能已經完善。

了解更多信息的資源

希望所有這些都能激起您想要了解更多信息的好奇心。並且有很多資源可供入門。

尋求幫助以了解代碼含義的最佳位置是 Autodesk 自己的AutoLISP 開發人員指南。如果您準備好走那麼遠,也許您想走得更遠一點。甚至還有入門教程來幫助您。當然,還有AutoLISP 論壇。Autodesk 大學也提供在線課程。

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

嘗試一下 AutoCAD LT 中的 AutoLISP

通過在 AutoCAD LT 中訪問 AutoLISP,您可以探索自動化和節省時間的代碼的整個世界。如果您還不是 LT 訂閱者,可以前往此處下載30 天免費試用版。嘗試一點,學習一點,不要害怕嘗試。

消息來源  https://www.autodesk.com/blogs/autocad/autocad-lt-2024-autolisp/?redirected=1