本文目錄一覽:
- 1、編寫一LISP程序,是autoCAD
- 2、如何生成一個cad可載入的lisp可用的文件
- 3、CAD怎麼自己編lisp程序
- 4、如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
- 5、在cad中如何創建lisp程序
- 6、編寫一lisp程序
編寫一LISP程序,是autoCAD
寫了一個程序,參考一下。
(defun c:tes ( / ang1 ang2 ang3 dis1 n1 p1 p2 p3 p4 p5 p6 ss1 pt1 pt2 pt3)
(setvar “cmdecho” 0)
(setvar “blipmode” 0)
(if (null (setq n1 (getint (strcat “\n請輸入行默認:” “1” “”)))) (setq n1 1) )
(if (and
( n1 0)
(setq p1 (getpoint “\n請指定基點”))
(setq dis1 (getdist p1 “\n請輸入半徑”))
( dis1 0)
)
(progn
(setq ang1 (/ pi 3) ang2 (/ (* pi 5) 6) ss1 ‘())
(setq p2 (polar p1 ang2 dis1) ss1 (cons p2 ss1) ang2 (/ (* pi 2) 3))
(setq p2 (polar p1 (* 1.5 pi) dis1) ss1 (cons p2 ss1))
(repeat n1
(entmake (list ‘(0 . “CIRCLE”) (cons 10 p1) (cons 40 dis1)))
(setq p2 p1)
(repeat (- n1 1)
(setq p2 (polar p2 ang1 (* dis1 2)))
(entmake (list ‘(0 . “CIRCLE”) (cons 10 p2) (cons 40 dis1)))
)
(setq p2 p1 p1 (polar p1 0 (* dis1 2)) n1 (- n1 1))
);repeat
(setq ang3 (/ pi 6))
(setq p1 (polar p2 ang3 dis1) p2 (polar p1 ang2 dis1) p3 (car ss1))
(setq p4 (polar p3 0 dis1) pt1 (inters p1 p2 p3 p4 nil) p5 (cadr ss1));求交點繪製三角形
(setq p6 (polar p5 ang1 dis1) pt2 (inters p1 p2 p5 p6 nil) pt3 (inters p3 p4 p5 p6 nil))
(entmake (list ‘(0 . “LINE”) (cons 10 pt1) (cons 11 pt2)))
(entmake (list ‘(0 . “LINE”) (cons 10 pt1) (cons 11 pt3)))
(entmake (list ‘(0 . “LINE”) (cons 10 pt3) (cons 11 pt2)))
);progn
)
(princ)
)
如何生成一個cad可載入的lisp可用的文件
生成lisp文檔:打開記事本,將你手上的代碼複製到記事本中,另存為後綴名為LSP的文件,請確保不要存成
「*.lsp.txt」
,這個文件事實上還是記事本文檔,CAD不認的。
載入並讀取:直接把後綴名是lsp的文件,拖動到CAD黑色的圖形區域內,就能實現載入。
執行:此時需要注意執行的命令名.需要打開lsp文件查看,通常查找(defun
c:xx()),其中XX位置的為代碼的執行命令。
如果你想讓這個lisp程序,每次打開CAD的時候自動載入的話,可以將這個lsp文件拷貝到CAD的support目錄下,然後執行appload,打開對話框中啟動欄,選擇support目錄下的程序即可。
祝你好運!
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)
)
如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
打開Visual Lisp編輯器有兩種方式:
1.AutoCAD2008及之前的版本,在菜單欄「工具(Tools)”下面,選擇」AutoLisp”—-“Visual
Lisp編輯器”。(」AutoLisp”—-“導入應用”這個命令是用來載入AutoLisp腳本的)
2.AutoCAD2009及之後的版本,在功能區的」管理「選項卡里可以直接打開Visual Lisp編輯器。
如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
打開Visual Lisp編輯器之後新建一個文件,並另存為Lisp源文件。然後就可以在編輯窗口裡輸你的代碼了。
代碼編輯並調試確認無錯誤後,就可以在AutoCAD中使用了。
如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
左邊的按鈕表示立即運行當前代碼,如果有錯誤就會提示出來,右邊按鈕是切換到CAD窗口。
如果不需要再修改代碼了還可以將代碼進行編譯以加速運行。
如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
根據嚮導一步步進行編譯很簡單的。
如果在其他CAD圖形文件中需使用當前代碼文件或編譯後的文件,就按上面第一點的,或者在命令行輸入」ap”,打開導入應用的對話框。
如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
1是用來臨時導入的,2是將程序加入CAD的啟動組。
lisp解決重複性勞動問題
在設計和繪圖中,你覺得都是簡單粗暴的重複性工作,就可以考慮用AutoLisp來代替你做。
首先,AutoLisp也是一個程序設計語言,屬於Common
Lisp的子集,同時加入了很多自定義的函數。即然是一個程序語言,就是其他編程語言能做的,它也能做,只是他的lisp語法跟一般的語言有些差另就是了,但是如果是一個沒有VB、C#、C++(對應於AutoCAD的開發方式分別是VBA,.net,ObjectArx)的基礎的人來說,AutoLisp是很簡單而且特別容易上手的一個語言。
作為一個編程語言,AutoLisp能做的很多:
1、擴充AutoCAD的原有命令。任何帶有C:前綴的AutoLisp函數,在AutoCAD中都可以像”line” “circle”
“dim”等命令一樣使用。
2、編寫代碼直接根據國標圖庫要求來繪出一些常用圖庫標準件什麼的,或是代替人查找各種設計手冊中的相關數據並繼續使用。
3、進行參數化繪圖,對於一些不特別複雜的系統,提供窄範圍、大深度的專業設計自動化或者輔助系統,如發動機裝配工具設計、縱使機主軸箱設計等。
4、DWG文件本質上是AutoCAD在圖形生成和編輯中使用的資料庫,可以將一些非圖形信息的數據(粗糙度,高度,厚度。。)等存於DWG文件中作
為非圖形資料庫文件,然後利用Lisp程序進行讀取等。
各種AutoCAD二次開發方式的比較:
由於 .net語言和c++的學習曲線比較陡峭,所以簡單易學的AutoLisp經常與VBA進行對比。(當然如果有VB的基礎還是直接學VBA好了。)
AutoLISP擅長建立新命令和產生已有命令的連接。VBA擅長執行包括在其他應用程序中的組件,如Microsoft的Excel和Access。AutoLISP是基於表處理的編程體系,它允許程序員隨意地存儲和操作傳送信息,然而VBA部件包括數據和對複雜情況的各種有效操作,這就是問題變得複雜的地方。
不過,在AutoCAD2000開始,Autodesk公司就在AutoCAD中加入了Visual
Lisp編輯器,引入了許多新函數擴充AutoLisp的功能,並支持ActiveX對象的訪問方式,所以使用AutoLisp來與Word\Excel等程序進行交互也是變簡單了。
另外,在創建帶GUI圖形界面的應用程序上,VBA當然是所見即所得的了,而AutoLisp是通過DCL文件來實現GUI的(語法很簡單,但做不到所見即所得).這點是AutoLisp略遜一籌了。原文出自[
CAD自學網 ] 轉載請保留原文鏈接:
在cad中如何創建lisp程序
寫LISP程序很簡單,用記事本就可以,保存成*.lsp文件就行,關鍵是需要懂LISP編程啊
編寫一lisp程序
方法/步驟
創建一個cad,新建一個工程,如下圖所示。
在lisp編輯器中編寫一下程序,程序的作用為計算線段總長度,並選擇另存為位置,保存文件lsp文件。
使用cad載入lsp文件,選擇lsp文件位置。
在命令欄點擊l,用cad繪製幾條線段,如下圖所示。
在命令欄輸入ll,選擇所有線段,則在圖下計算並顯示出了所有線段的總長度,如下圖所示。
用lisp的代碼為(defun c:LL ()
(setvar “cmdecho” 1)
(setq en (ssget (list ‘(0 . “spline,arc,line,ellipse,LWPOLYLINE”))))
(setq i 0)
(setq ll 0)
(repeat (sslength en)
(setq ss (ssname en i))
(setq endata (entget ss))
(command “lengthen” ss “”)
(setq dd (getvar “perimeter”))
(setq ll (+ dd ll))
(setq i (1+ i))
)
(princ “所選線條總長為:”)(princ ll)(princ)
)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198182.html