做了隱藏和顯示兩個指令.
我寫的簡單,功能不太全.你看著用吧
複製下列程式碼,建立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是很簡單的,只要掌握了幾個主要命令的使用就行,就是對語句格式要很研,本身lisp的函數相當多,不必去記。
載入LISP
1. 可以使用APPLOAD指令,然後去找到要載入的LISP文件,載入即可。
2. 可以自己從檔案總管把LISP檔案拖曳到ACAD的圖形窗口,也可以載入
3. 在命令列後使用,(load "c:\\temp\\xxx.lsp")也可以載入,路徑名請輸入實際的路徑。
另:對於一個LSP程序,(defun 後面的既是命令或函數,一般程序應該有提示,若沒有,標誌符c:後面的單字是可以在ACAD下使用的命令,既可以在COMMAND:後面直接輸入,即可執行。
有幾個CAD中的LISP語言怎麼程式設計
(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中文網其他相關文章!