cad自己編寫lisp,cad編程怎麼編

本文目錄一覽:

編寫一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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 07:30
下一篇 2024-12-04 07:30

相關推薦

發表回復

登錄後才能評論