autolispdcl編程,autolisp語言程序設計

本文目錄一覽:

你們好 我想學AUTOLISP 請告訴我該怎麼辦?

我也是學生,,最近剛剛學測量,,,正好到圖書館借了本lisp的書自學,,,你去買這本書吧,,很詳細,都是些基本的lisp的語法,,你有C++基礎,很如意懂的.

用Visual LISP 開發AutoCAD 2000 應用程序人民郵電出版社出版的

很老的書了,,不知道你找的到不,,

其實LISP是很老的語言了,不過,給CAD編程夠用了.

autocad怎樣調用dcl對話框?

轉載過來 希望對你有用

對話框文件是擴展名為.dcl的文本文件,符合dcl對話框控制語言的語法。但對話框文件本身並不能工作,還必須要用autolisp或ads應用程序調用。

對話框由主對話框和其內部的各種片型框組成,其結構為數狀。圖1.1為一對話框結構示例,樹葉是各種片型框,樹根為dialog;圖1.2為其在autocad中的顯示。

在可編程對話框pdb中已預定義了以下基本片型框:

:dialog 對話

:button 按鈕

:edit_box 編輯框

:list_box 列表框

:image_button 圖像按鈕

:popup_list 彈出表

:radio_button 單選按鈕

:slider 滾動條

:toggle 開關

每個片型框包含一系列的屬性,這些屬性的值確定了片型框的位置、大小、長度、高度和文件標識等,例如lable屬性確定了在片型框上顯示的文字。用戶可以根據dcl語法將這些基本的片型框組裝起來,形成更為複雜,功能更為詳盡的對話框,也可以定義與基本片型框無關的新片型框,並將其與基本片型框組合成新的片型框組。為了方便對話框的布局,可將一行或一列片型框當作一個新的片型框,並在其周圍畫上邊框。對話框的基本布局有以下幾種:

:column 列。定義,可以與行、列嵌套。

:row 行。片型框組按行平行分布,顯示順序同column,也可與行列嵌套。

:radio_column 單選列。包含一列單選片型框,同時只能選擇一個片型框。

:radio_row 單選行。包含一行單選片型框,同時只能選擇一個片型框。

:boxed_column 有界列。列的周圍畫上邊框。

:boxed_row 有界行。行的周圍畫上邊框。

:boxed_radio_column有界單選列。在單選列的周圍畫上邊框。

:boxed_radio_row 有界單選行。在單選行的周圍畫上邊框。

用戶可以定義自己的屬性,不過在一般情況下僅使用pdb預定義的屬性就可以滿足程序的要求了。當片型框中的屬性未被指定時,pdb將賦於其預設值。沒片型框的預定義屬性也各不相同,但布局屬性和功能屬性則是所有有效片型框的公共屬性,這些公共屬性是:

aligment 片型框的定位方式;

width height 片型框的寬度和高度;

fixed_width fixed_height 其值為true時,片型框大小固定不變;

children_aligment 子片型框的定位屬性;

children_fixed_width 子片型框的寬度固定屬性;

children_fixed_height 子片型框的固定高度屬性;

label 顯示在片型框內或左上方的文字;

key 指定程序引用片型框的文本字元串,在指定的對話框中,每個key的值應該是唯一的;

value 片型框的初始值,為一字元串;

mnemonic 片型框內快捷鍵,即帶下劃線的字母;

is_enabled 值為false時,片型框不可選;

is_tab_stop 值為false時,片型框不接受tab聚焦;

action 指定片型框時,對應的autolisp程序進行的操作。

另外,片型框還包括圖像框image、文本框text和襯框spacer,這三種片型框只是起修飾作用和加強視覺效果,不能引起任何操作。

dcl文件採用c語言的風格,每個分號表示一名,每個片型框的定義用一對大括弧括起來;注釋在單行時用//,多行時可採用/*注釋語句*/的形式。

下面以一個簡單的例子說明dcl的編程,圖2是調用example.dcl的顯示。

//example.dcl對話框示例文件

test:dialog{

label=”dialog example”;

:text{//文本片型框

label=”this is aexample.”;

}

:button{//按鈕片型框

key=”accept”;

//關鍵字key為accept

label=”ok”;//標號為ok

mnemonic=”o”;

//按alt_o鍵可以選擇ok按鈕

fixed_width=true;

//按鈕的寬度固定不變

aligment=centered;

//按鈕以中心對齊

is_default=true;

}

}

pdb在base.dcl中還提供了一組標準的按鈕群,在我們自己的dcl文件中可以直接使用:

:ok_only單個ok按鈕;

:lk_cancel ok按鈕和cancel兩個按鈕;

:ok_cncel_help ok、cancel和help…三個按鈕;

:ok_cncel_help_info ok、cancel、help…和info…四個按鈕。

文本文件的對話框文件自身本身不能工作,需要用autolisp或ads應用程序調用對話框文件才行,ads的效率比較高,但掌握起來要困難一些,autolisp程序較為煩瑣,但比較容易掌握。autolisp提供了一組管理對話框的函數包,處理用戶與對話框之間的交互。下面是最重要的幾個函數:

(load_dialog dclfile)用與裝入一個dcl文件,返回一個整數標識。

(unload_dialog dcl_id)卸載標識為dcl_id的dcl文件。

(new_dialog dialog_name dcl_id)初始化對話框,並在屏幕顯示對話框,其中dialog_name是在對話框文件中定義的對話框名稱。

(start_dialog)啟動對話框,並接受用戶的輸入信息。

(done_dialog)終止對話框信息的輸入,並且停止顯示對話框。

(action_tile key action_express)處理用戶的選擇,將片型框與應用程序中的對應操作聯繫起來,key是片型框的關鍵字。

下面的autolisp程序就是對上面的example.dcl對話框文件的管理:

;;;example.dcl管理example.dcl對話框文件的autolisp程序

(defun c:showdcl(/dcl_id)

(setq dcl_id (load_dialog”example.dcl”))

(if(not(new_dialog”test”dcl_id))

(exit))

(action_tile

“accept”

“(done_dialog)”)

(start_dialog)

(unload_dialog dcl_id)

)

在autocad中顯示圖2對話框的過程如下:

command:(load”example.lsp”)

c:showdcl

command:showdel

本文只是對對話框dcl作了簡單的介紹,要想充分發揮autocad的潛能,掌握dcl對話框的編程,還需要參閱有關資料,詳加研究。

圖紙上dcl什麼意思

圖紙上dcl是AutoCAD的一種二次開發工具AutoLisp的程序文件。DCL是資料庫控制語言。

它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣,這4條命令是用來對資料庫里的數據進行操作的語言。

DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的鏈接和約束等初始化工作上,他們大多在建立表時使用。

語法結構:

DCL以控制用戶的訪問許可權為主,因此其指令作法並不複雜,可利用 DCL 控制的許可權有:

SELECT。

INSERT。

UPDATE。

DELETE。

EXECUTE。

USAGE。

REFERENCES。

根據不同的DBMS以及不同的安全性實體,其支持的許可權控制也有所不同。

GRANT的語法結構為:GRANT [許可權] ON [要授予許可權的資料庫物件] TO [使用者帳戶名稱] WITH [授權選項]。

DENY的語法結構為:DENY [許可權] ON [要授予許可權的資料庫物件] TO [使用者帳戶名稱]。

Autolisp編程求助

換個思路,輪廓線不刪除,代碼如下:

(defun c:111 ( / ptb ptb1 sel1 x)

(if (setq sel1 (entsel))

(progn

(setq sel1 (car sel1))

(setq ptb (mapcar ‘cdr (vl-remove-if ‘(lambda(x)(/= (car x) 10)) (entget sel1))))

(if (setq ptb1 (ssget “_cp” ptb));如果選中對象

(vl-catch-all-apply ‘ssdel (list sel1 ptb1));選擇集裡面排除輪廓線

)

(if (ssname ptb1 0);如果選擇集裡面還有其他對象

(command “ERASE” ptb1 “”);刪除

)

)

)

(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自學網 ] 轉載請保留原文鏈接:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192862.html

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

相關推薦

發表回復

登錄後才能評論