本文目錄一覽:
- 1、你們好 我想學AUTOLISP 請告訴我該怎麼辦?
- 2、autocad怎樣調用dcl對話框?
- 3、圖紙上dcl什麼意思
- 4、Autolisp編程求助
- 5、如何在AutoCAD Visual Lisp編輯器中創建與編譯lisp程序
你們好 我想學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-hant/n/192862.html