自學編寫CAD的Lisp程序
CAD怎麼自己編lisp程式
做了隱藏和顯示兩個指令.
我寫的簡單,功能不太全.你看著用吧
複製下列程式碼,建立acad.lsp.放在在CAD安裝目錄第一層資料夾下,可自動載入啊:
;在命令列輸入該指令hidsel,然後選擇圖元,結果沒選的被改到隱藏層
(defun C:hidsel(/ all;所有圖元
xs;非隱藏圖元
yc;隱藏圖元
n nam dat)
(setvar "CMDECHO" 0);關閉指令回顯
(command "_layer" "n" "暫時隱藏圖層" "")(command "_layer" "off" "暫時隱藏圖層" "")
##(setvar "CMDECHO" 1)(setq all (ssget "x"));選擇所有
(setq xs (ssget));選擇非隱藏圖元
(setq n -1 yc all);運算隱藏圖元#(repeat (sslength xs)
(setq n ( n 1))
(setq nam (ssname xs n));傳回第N個圖元的名稱
(setq yc (ssdel nam yc))
)
(setq N -1);隱藏
(repeat (sslength yc)
(setq N ( n 1))
(setq nam (ssname yc n));傳回第N個圖元的名稱
(setq dat (entget nam));DAT儲存第N個圖元資料
(entmod (subst (cons 8 "暫時隱藏圖層") (Assoc 8 dat) dat));將yc集合隱藏#)
(setq all nil xs nil yc nil n nil nam nil dat nil);清除資料佔用記憶體
(princ)
)
;顯示所有圖元
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x"));選擇所有
(setq N -1);隱藏
(repeat (sslength all)
(setq N ( n 1))
(setq nam (ssname all n));傳回第N個圖元的名稱
(setq dat (entget nam));DAT儲存第N個圖元資料
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat));將yc集合隱藏
)
(setvar "CMDECHO" 0)
(COMMAND "PURGE" "LA" "暫時隱藏圖層" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil);清除資料佔用記憶體
(princ)
)
CAD裡面的lisp有什麼作用啊怎麼用要具體的能讓我明白加分
lisp本身就是cad所屬的開發程序,他提供一些簡單的函數計算,剩下的就全是針對autocad的繪圖功能了。 lisp程式類似與資料庫中的預存過程,可以批量的處理繪製cad圖形。
學習lisp是很簡單的,只要掌握了幾個主要命令的使用就行,就是對語句格式要很研,本身lisp的函數相當多,不必去記。
載入LISP
1. 可以使用APPLOAD指令,然後去找到要載入的LISP文件,載入即可。
2. 可以自己從檔案總管把LISP檔案拖曳到ACAD的圖形窗口,也可以載入
3. 在命令列後使用,(load "c:\\temp\\xxx.lsp")也可以載入,路徑名請輸入實際的路徑。
另:對於一個LSP程序,(defun 後面的既是命令或函數,一般程序應該有提示,若沒有,標誌符c:後面的單字是可以在ACAD下使用的命令,既可以在COMMAND:後面直接輸入,即可執行。
有幾個CAD中的LISP語言怎麼程式設計
AutoLISP語言是在普通的LISP語言基礎上,又擴充了許多適用於CAD應用的功能而形成的一種程式設計語言。它是一種解釋性值語言,速度較慢,難以保密,可用任何文字編輯軟體編輯,以純文字的格式儲存。例如:
(setq i 1);就是程式碼i值是1
(command "CIRCLE" '(0 0) 100);指令在座標原點繪製半徑100的圓。
AutoLISP語言中的一切成分都是以函數形式給出的,它沒有語句概念或其他語法結構。執行AutoLISP程式就是執行一些函數,再呼叫其它函數。例如:
(setq pt1 (getpoint "\n請選擇圓心插入點"))
(command "CIRCLE" pt1 100);指令這個插入點繪製圓,半徑為100
AutoLISP把資料和程序統一表達為表格結構,故可把程式當作資料來處理,也可把資料當作程式來執行。
例如:一條直線,起點座標'(0 0),端點座標'(1000 0),圖層為0層,顏色為1【紅色】這個是一條直線的一些數據,怎麼執行變成程式碼如下:
(entmake (list '(0 . "LINE") '(8 . "0") '(62 . 1) '(10 0 0) '(11 1000 0)))
以上可以直覺的看數據,也可以貼到AutoCAD的命令列,就繪製出以上要的直線。
AutoLISP語言中程式運行過程就是對函數值的過程,是在對函數值的過程中實現函數的功能。在AutoCAD裡面,所有的物件可以看成是由無數的點構成,每個點都有自己的座標,函數的運作就是計算出這些點的數值,根據得到的數值來判斷。
AutoLISP語言的主要控制結構是採用遞歸方式。遞歸方式的使用,使得程式設計簡單易懂。例如:
(setq &k1 (entsel));選擇物件
(setq &k1 (car &k1));提取圖元
############ ###(setq #g1 (entget &k1));取得屬性清單### ###(setq c0 (cdr (assoc 0 #g1)));取得圖元名稱### ###以上是一個個的寫下來,可以寫成以下:### ###(setq c0 (cdr (assoc 0 (entget (car (entsel))))));簡單易懂### ###由於autolisp簡單,容易,所以上手很快。寫程式後,可以大大的提升繪圖效率,有名的【天正】插件,就是繪圖的好幫手。 ### ###autolisp程式也有不足的地方,如提取座標,這個只能在圖元屬性裡面提取,這樣的話會有局限性,法向座標1與-1的座標值相同,但是圖形的位置不同,造成計算座標的困難,所以提取座標值,最好使用VLAX函數來提取。 ###以上是自學編寫CAD的Lisp程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

蒸汽雲錯誤可能是由於許多原因引起的。要順利玩遊戲,您需要採取一些措施來刪除此錯誤,然後才能啟動遊戲。 PHP.CN軟件在這篇文章中介紹了一些最佳方法以及更多有用的信息。

您可能會看到“無法建立與Windows Metadata和Internet Services(WMI)的連接”。事件查看器的錯誤。 PHP.CN的這篇文章介紹瞭如何刪除Windows元數據和Internet服務問題。

KB5035942更新問題 - 用戶通常發生崩潰系統。受到的人們希望找到擺脫困境的出路,例如崩潰系統,安裝或聲音問題。針對這些情況,這篇文章由Php.cn Wil發表

OneDrive是Microsoft的在線雲存儲服務。有時,您可能會發現OneDrive無法將照片上傳到雲。如果您在同一條船上,請繼續閱讀PHP.CN軟件的帖子,以獲取有效的解決方案!

如果您在計算機上有一個名為PC App Store的程序,並且沒有故意安裝它,則可能會感染惡意軟件。 PHP.CN的這篇文章介紹瞭如何刪除PC App Store惡意軟件。

兄弟是:兩個兒子重製的故事沒有發起嗎?遇到兄弟:兩個兒子重製黑屏的故事?在這裡,有關PHP.CN的這篇文章為您提供了測試的解決方案,以幫助您解決此問題。

許多Surfacebook用戶報告說,他們符合Windows 11/10上的“由EW_USBCCGPFILTER.SYS阻止的核心隔離”問題。 PHP.CN的這篇文章有助於解決煩人的問題。繼續閱讀。

ExplorerPatcher是一種開源可行可執行文件,可讓您自定義Windows 11開始菜單,任務欄,文件資源管理器等。但是,許多用戶會收到有關HackTool的Trojan警告:Win64/ExplorerPatcher! MTB。為什麼會發生
