計算機輔助設(shè)計與制造(第二版)課件第7章AutoCAD二次開發(fā)技術(shù)_第1頁
計算機輔助設(shè)計與制造(第二版)課件第7章AutoCAD二次開發(fā)技術(shù)_第2頁
計算機輔助設(shè)計與制造(第二版)課件第7章AutoCAD二次開發(fā)技術(shù)_第3頁
計算機輔助設(shè)計與制造(第二版)課件第7章AutoCAD二次開發(fā)技術(shù)_第4頁
計算機輔助設(shè)計與制造(第二版)課件第7章AutoCAD二次開發(fā)技術(shù)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章AutoCAD二次開發(fā)技術(shù)7.1向AutoCAD增加新命令

任何CAD系統(tǒng),都不可能滿足所有用戶的要求,特別是一些專業(yè)設(shè)計用戶的要求。而AutoCAD的特長就是可以用簡單的程序設(shè)計,給系統(tǒng)增加一些專業(yè)設(shè)計所需要的新命令。利用AutoLISP語言編程就可以很容易地向AutoCAD增加新命令,用戶只要用自定義函數(shù)Defun產(chǎn)生一個名為“C:XXX”的函數(shù)即可。

圖7.1標(biāo)注粗糙度

下面的AutoLISP函數(shù)就是向AutoCAD增加一條標(biāo)注粗糙度的新命令,命令名為CCD。(defunC:ccd()(setqbp(getpoint"\nEnterbasepoint:")ang(getangle"\nEnterrotateangle:")txt(getstring"\nEntervalue:"))(command"line"bp(polarbp(+ang(/pi3))12)"")(setqpt(polarbp(+ang(/pi1.5))7))(command"line"bppt(polarptang7)"")(cond((<angpi)(command"text"(polarpt(+ang70)1.2)"2.5"(*ang(/180pi))(evaltxt)))(T(command"text""j""r"(polarpt(+ang70)3.7)"2.5"(*(-angpi)(/180pi))(evaltxt)))))7.2用戶界面的開發(fā)設(shè)計

用戶界面是用戶與圖形系統(tǒng)之間進(jìn)行信息交換的一種接口。菜單是普遍采用的界面形式,它將命令和選擇項均列在相對應(yīng)的交互設(shè)備上,通過鼠標(biāo)器控制光標(biāo)等辦法來點“菜”(即選擇拾?。?。菜單功能是通過菜單文件來實現(xiàn)的,AutoCAD菜單文件是一個標(biāo)準(zhǔn)的ASCII文件,允許用戶根據(jù)需要對它進(jìn)行改造或創(chuàng)建,形成用戶界面。

(1)菜單文件的類型

菜單文件實際上是指一組協(xié)同定義和控制菜單區(qū)域的顯示及操作的文件。

AutoCAD的菜單文件類型主要有以下5種:MNU:樣板(Template)菜單文件,是ASCII碼文本文件。用戶可利用該種菜單文件定義自己的菜單源文件。(2)MNC:將MNU菜單源文件編譯之后得到的菜單目標(biāo)文件。(3)MNR:菜單資源文件。這種二進(jìn)制文件包含有菜單所使用的位圖資源。(4)MNS:AutoCAD系統(tǒng)所生成的菜單源文件。AutoCAD在編譯

MNU用戶菜單源文件時,在生成MNC菜單目標(biāo)文件的同時,還生存更為規(guī)范的MNS菜單源文件。

(5)MNL:菜單LISP文件。該類文件包含了菜單中對LISP函數(shù)的定義。

AutoCAD系統(tǒng)提供了一些標(biāo)準(zhǔn)菜單文件,它們分別為ACAD.MNU,ACAD.MNC,ACAD.MNR,ACAD.MNS,ACAD.MNL,這些文件安裝在support文件夾中。使用MENU命令可引導(dǎo)AutoCAD從磁盤文件中裝載一個新菜單。使用MENULOAD和MENUUNLOAD命令可加載和卸載附加菜單(局部菜單),并且可以從菜單欄中添加或移去特定的下拉菜單。AutoCAD在系統(tǒng)登記表(registry)中保存所用的最后一個菜單名,每當(dāng)重新啟動AutoCAD時,系統(tǒng)自動加載上次AutoCAD運行時最后調(diào)用的菜單文件。

(2)菜單文件的結(jié)構(gòu)及格式1)菜單文件的結(jié)構(gòu):

菜單文件一般為樹型結(jié)構(gòu),層次很分明。每個菜單文件由若干段組成,每段包含若干子菜單和菜單項。AutoCAD2002標(biāo)準(zhǔn)菜單包含以下10個菜單段。##下拉菜單段:POP1~POP11##光標(biāo)菜單段:POP0##定點設(shè)備按鈕菜單段:BUTTONS1,BUTTON2##輔助菜單段:AUX1~AUX4##工具欄段:TOOLBARS

##圖像塊菜單段:IMAGE##屏幕菜單段:SCREEN##數(shù)字化儀菜單段:TABLET1~TABLET4##快捷鍵段:ACCELERATORS##狀態(tài)欄幫助段:HELPSTRINGS2)菜單文件的格式:

菜單文件由多個菜單段組成,每段有一個段標(biāo)題,單獨占一行,格式如下:***<段名>段名標(biāo)識該菜單從屬于何種設(shè)備。AutoCAD2002有如下段標(biāo)號:***MENUGROUP菜單組名***BUTTONSn按鈕菜單段***AUXn輔助菜單段***POP0光標(biāo)菜單段***POPn下拉菜單段***IMAGE圖像塊菜單段***SCREEN屏幕菜單段***TABLETn數(shù)字化儀菜單段***ACCELERATORS快捷鍵段***HELPSTRINGS狀態(tài)欄幫助段

子菜單的起始標(biāo)記為“**子菜單名”,子菜單名可由用戶任意指定,但各個子菜單名不能相同。3)子菜單的調(diào)用:用戶在菜單項中可用以下格式來調(diào)用子菜單:

$<菜單類型>=[被調(diào)用子菜單名]被調(diào)用子菜單的菜單類型采用縮寫形式,它們分別為:縮寫形式菜單類型

S屏幕菜單

A1~A4輔助菜單

B1~B4按鈕菜單

P0~P16彈出式菜單下面是調(diào)用子菜單的例子:$S=TRAN調(diào)用屏幕子菜單TRAN$I=PARTS調(diào)用圖像塊子菜單PARTS$T1=ELEMENT調(diào)用數(shù)字化儀子菜單ELEMENT

如果沒有指定被調(diào)用子菜單名,則返回上一菜單。例如菜單項

[AUTOCADY]$S=用來恢復(fù)前一屏幕菜單。

4)菜單項的表示:

菜單或子菜單中包含的一行行命令串稱為菜單項。菜單項有以下幾種表示:(a)[菜單項名]命令串

該方法用于屏幕菜單項或下拉菜單項的表示。方括號中的菜單項名顯示在屏幕的相應(yīng)區(qū)域內(nèi),方括號外的命令串可能是AutoCAD的命令、關(guān)鍵字或子菜單調(diào)用命令。如果是AutoCAD的命令或關(guān)鍵字,則出現(xiàn)在命令行并執(zhí)行;如果是子菜單調(diào)用命令,則調(diào)出相應(yīng)的子菜單。由于屏幕菜單區(qū)的寬度有限,只能顯示出菜單項的前八個字符,故菜單項名的有效字符數(shù)為八。

(b)[字符串]

方括號中的字符串只是作為子菜單的標(biāo)題項使用。(c)字符串該種表示方法是第(1)種表示方法的特例,此時,字符串既作為菜單項名顯示在屏幕上,又作為命令串出現(xiàn)在命令行。(d)[->子菜單名]和[<-菜單項名]命令串前者是調(diào)用下拉子菜單或光標(biāo)子菜單的菜單項。后者是子菜單的最后一個菜單項,方括號內(nèi)的菜單項名將顯示在屏幕上,命令串的作用同(1)所述。

(e)[幻燈片庫名(幻燈片名,文字)]命令串這是圖像塊菜單段中菜單項的完整表示形式。方括號內(nèi)的幻燈片名所對應(yīng)的幻燈片或文字顯示在列表框中,命令串的作用同(1)所述。(f)[字母…數(shù)字]命令串這是數(shù)字化儀菜單段中菜單項的表示形式。每一項對應(yīng)于數(shù)字化儀上的一個小區(qū),字母是小區(qū)的行號,數(shù)字是小區(qū)的列號。

菜單項的一般格式如下:command_tag[label]menu_function(a)“command_tag”為命令標(biāo)識符,用作標(biāo)識名,它由字母、下劃線和數(shù)字構(gòu)成,位于菜單項名前面,是菜單項的標(biāo)識。各個菜單項的標(biāo)識名不能同名。(b)“l(fā)abel”為項標(biāo)題,方括號中的項標(biāo)題作為菜單項名將顯示在屏幕的相應(yīng)區(qū)域內(nèi)。(c)“menu_function”為實現(xiàn)預(yù)定功能的操作,如執(zhí)行AutoCAD的命令、調(diào)用子菜單或AutoLISP函數(shù)等。下面的一個菜單項是合法的:ID_save[Save]^C^C_save其中:ID_save是該菜單項的標(biāo)識名,方括號中的Save是菜單項名顯示在屏幕上。當(dāng)該菜單項被用戶選擇后,save命令將被執(zhí)行。

(3)用戶界面開發(fā)的一般方法

用戶界面(即菜單文件)的開發(fā)有兩種途徑:一種是在AutoCAD的標(biāo)準(zhǔn)菜單文件ACAD.MNU中增加新內(nèi)容;另一種是用戶建立自己的菜單文件。1)在ACAD.MNU中增加新內(nèi)容在ACAD.MNU標(biāo)準(zhǔn)菜單文件中增加新內(nèi)容的操作步驟如下:(1)確定要加入的菜單類型,如下拉菜單、屏幕菜單、圖像塊菜單、數(shù)字化儀菜單等。(2)分析所要加入菜單的功能,如繪圖、編輯、顯示、圖形庫管理等,以便確定增加到ACAD.MNU中的哪個菜單段或子菜單。(3)確定所要增加的菜單的位置,即菜單在屏幕上的顯示位置,或在數(shù)字化儀菜單的哪個小區(qū)域。(4)用文本編輯程序調(diào)出ACAD.MNU文件,將要增加的菜單新內(nèi)容放到相應(yīng)的菜單段中或子菜單中。

(5)對增加了新內(nèi)容的ACAD.MNU文件進(jìn)行編譯。

在啟動AutoCAD之前,必須先刪除ACAD.MNC、ACAD.MNS、ACAD.MNR三個文件,然后啟動AutoCAD,系統(tǒng)就會自動編譯ACAD.MNU文件,并重新生成ACAD.MNC、ACAD.MNS、ACAD.MNR三個菜單文件。

例:在ACAD.MNU下拉菜單中增加一個下拉菜單段POP14,該菜單段包含五個菜單項,可分別繪制圓形、三角形、梯形、平行四邊形和五角星。具體操作步驟如下:(1)用文本編輯程序調(diào)出ACAD.MNU文件,在POP11下拉菜單段后面增加一個POP14下拉菜單段,內(nèi)容如下:***POP14**繪特殊圖形ID_YDRAW1[繪特殊圖形]ID_Circle[圓形]^C^Ccircle200,18060ID_Angle[三角形]^C^Cline100,70300,70260,240C

ID_Dbtx[梯形]^C^Cline50,50350,50300,280100,280CID_Pret[平行四邊形]^C^Cline50,50300,50350,240100,240CID_Star[五角星]^C^Cline100,100@150<0@150<216@150<72@150<288C(2)將修改后的ACAD.MNU文件存盤,退出文本編輯程序。

(3)刪除ACAD.MNC、ACAD.MNS、ACAD.MNR三個文件。

2)建立用戶菜單

除了修改AutoCAD標(biāo)準(zhǔn)菜單文件ACAD.MNU外,還可以開發(fā)獨立的用戶菜單文件。建立用戶菜單的操作步驟如下:(1)確定要開發(fā)的菜單類型,如下拉菜單、屏幕菜單、圖像塊菜單、數(shù)字化儀菜單等。(2)分析所要開發(fā)的菜單的功能,如繪圖、編輯、顯示、圖形庫管理等,以便確定需開發(fā)哪些菜單段或子菜單。(3)確定各個菜單的位置,即菜單在屏幕上的顯示位置,或在數(shù)字化儀菜單的哪個小區(qū)域。

(4)用文本編輯程序編輯用戶自己開發(fā)的菜單文件(.MNU文件),然后將其保存在對應(yīng)于AutoCAD的相應(yīng)文件夾(SUPPORT)中。(5)在AutoCAD系統(tǒng)環(huán)境下,使用MENU命令調(diào)用用戶菜單,格式如下:

Command:MENU↙

執(zhí)行該命令后,系統(tǒng)將打開一個對話框,單擊用戶建立的菜單文件并按“確定”按鈕,系統(tǒng)就開始編譯用戶菜單文件,在屏幕上顯示出用戶菜單的內(nèi)容。

例:在AutoCAD2002中開發(fā)用戶界面,建立一個適合機械制圖的包含有“文件”、“圖幅設(shè)置”、“繪圖”和“尺寸標(biāo)注”4個下拉菜單的用戶菜單文件,菜單文件名取為YUAN.MNU。具體操作步驟如下:(1)用文本編輯程序編輯YUAN.MNU文件,該文件包含4個下拉菜單段POP1、POP2、POP3和POP4,內(nèi)容如下:***POP1**文件ID_Title1[文件]ID_New[新建]^C^Cnew

ID_Open[打開]^C^Copen[--]ID_Save[保存]^C^CsaveID_Saveas[另存為]^C^Csaveas***POP2**圖幅設(shè)置ID_Tile2[圖幅設(shè)置]ID_A[0號圖幅]^C^Climits0,01189,841zoomaline0,0@1189,0@0,841@-1189,0Cline25,10w0.7@1154,0@0,821@-1154,0CID_A1[1號圖幅]^C^Climits0,0841,594zoomaline0,0@841,0@0,594@-841,0Cpline25,10w0.7@706,0@0,574@-706,0C

ID_A2[2號圖幅]^C^Climits0,0594,420zoomaline0,0@594,0@0,420@-594,0Cpline25,10w0.7@559,0@0,400@-559,0CID_A3[3號圖幅]^C^Climits0,0420,297zoomaline0,0@420,0@0,297@-420,0Cpline25,5w0.7@390,0@0,287@-390,0CID_A4[4號圖幅]^C^Climits0,0297,210zoomaline0,0@297,0@0,210@-297,0Cpline25,5w0.7@267,0@0,200@-267,0C***POP3**繪圖ID_Title3[繪圖]ID_Line[直線]^C^ClineID_Pline[多義線]^C^CplineID_Circle[圓]^C^CcircleID_Arc[圓弧]^C^CarcID_Text[文本]^C^Cdtext***POP4**尺寸標(biāo)注ID_Title4[尺寸標(biāo)注]ID_Hor[水平標(biāo)注]^C^CdimhorID_Ver[垂直標(biāo)注]^C^CdimverID_Ali[對齊標(biāo)注]^C^Cdimali

[--]ID_Ang[角度標(biāo)注]^C^CdimangularID_Dia[直徑標(biāo)注]^C^CdimdiameterID_Rad[半徑標(biāo)注]^C^Cdimradius(2)保存該菜單文件,將其存入對應(yīng)于AutoCAD庫搜索路徑的文件夾內(nèi)。菜單文件名取為YUAN.MNU。(3)啟動AutoCAD2010后,在“命令”提示符下輸入MENU命令,系統(tǒng)將打開“選擇菜單文件”對話框。在該對話框中選定YUAN.MNU文件,然后單擊“Open”(打開)按鈕,系統(tǒng)將編譯YUAN.MNU文件,生成ACAD.MNC、ACAD.MNS、ACAD.MNR三個菜單文件。7.3.1圖形交換文件

AutoCAD提供了一種固定格式的后綴為.DXF的ASCII碼文件,稱為圖形交換文件,用于與其它CAD系統(tǒng)及用戶應(yīng)用程序間的圖形信息交換。1.總體結(jié)構(gòu)DXF文件由6個段(SECTION)組成:(1)標(biāo)題段(HEADER)此段記錄了有關(guān)圖形的各種當(dāng)前設(shè)置和參數(shù),它實際上描述了AutoCAD系統(tǒng)的當(dāng)前工作環(huán)境。(2)類段(CLASSES)類段保存由應(yīng)用程序定義的類,而該類的實體則出現(xiàn)在塊段,實體段,對象段中。7.3圖形系統(tǒng)與外部程序交換信息(3)表段(TABLES)

表段又由9張表組成,它們依次為:視口配置表(VPORT),線型表(LTYPE),層表(LAYER),字體表(STYLE),視圖表(VIEW),坐標(biāo)系表(UCS),應(yīng)用程序名表(APPID),標(biāo)注字體表(DIMSTYLE),塊定義表(BLOCK_RECORD)。(4)塊段(BLOCKS)此段記錄在圖形中所使用的塊及其各塊內(nèi)所包含實體的描述。(5)實體段(ENTITIES)此段包含圖中所有實體的信息。(6)對象段(OBJECTS)對象段包含圖形數(shù)據(jù)庫中所有非圖形實體的定義數(shù)據(jù)2.組(GROUP)

DXF文件的最小組成單元為組(GROUP),每個組占兩行,第一行為組代碼,第二行為組值。組代碼是非負(fù)的整數(shù),而組值的數(shù)據(jù)類型取決于組代碼的數(shù)值,其規(guī)定如下:

組代碼的范圍組值的數(shù)據(jù)類型

0~9字符型

10~59實型

60~79整型常用組代碼的含義如下:

0:標(biāo)識一個事物的開始,如一個段、一個表、一個塊、一個實體等。

2:名字,如段、表、塊等名字。

8:圖層名(固定的)。

10—18:X坐標(biāo)值。

20—28:Y坐標(biāo)值。

30—37:Z坐標(biāo)值。

40—48:高度、寬度、距離、半徑、比例因子等。

50—58:角度值。3.實體(直線、圓、圓弧)的幾何數(shù)據(jù)描述:(1)直線的幾何數(shù)據(jù)的組代碼

10,20,30:起點的X,Y,Z坐標(biāo)

11,21,31:終點的X,Y,Z坐標(biāo)(2)圓的幾何數(shù)據(jù)的組代碼

10,20,30:圓心的X,Y,Z坐標(biāo)

40:圓的半徑(3)圓弧的幾何數(shù)據(jù)的組代碼

10,20,30:圓弧中心的X,Y,Z坐標(biāo)

40:圓弧的半徑

50:圓弧的起始角

51:圓弧的終止角

4.圖形交換命令與DXF文件有關(guān)的AutoCAD命令有二個:Dxfout和Dxfin。(1)Dxfout命令用于將AutoCAD屏幕上的圖形信息轉(zhuǎn)換成DXF文件。(2)Dxfin命令用于將DXF文件轉(zhuǎn)換成AutoCAD的圖形,與Dxfout命令相反。7.3.2用C語言生成DXF文件

用C語言生成DXF文件就是編寫生成DXF文件的接口程序,進(jìn)行接口程序開發(fā)應(yīng)注意以下2個問題:

(1)實用的DXF文件接口程序應(yīng)該是一些具有專用功能的函數(shù)模塊組成。

(2)AutoCAD可以接受缺少任何一些段、表的DXF文件.1.接口程序的基本函數(shù)模塊組成

(1)begin建立一個DXF新文件,并生成實體段段標(biāo)題的函數(shù)。應(yīng)用程序須最先調(diào)用此函數(shù)。begin(){charfname[14];printf(“EnterDXFfilename:”);scanf(“%s”,fname);strcat(fname,“.dxf”);fp=fopen(“fname,“w”);fprintf(fp,“0\nSECTION\n2\nENTITIES\n”);}

(2)ending生成段尾和文件結(jié)束符的函數(shù),并關(guān)閉DXF文件。應(yīng)用程序應(yīng)最后調(diào)用此函數(shù)。ending(){fprintf(fp,“0\nENDSEC\n0\nEOF\n”);fclose(fp);}(3)line寫直線實體函數(shù)。line(floatxs,floatys,floatxe,floatye){fprintf(fp,“0\nLINE\n8\n0\n”);fprintf(fp,“10\n%f\n”,xs);fprintf(fp,“20\n%f\n”,ys);fprintf(fp,“30\n0.0\n”);fprintf(fp,“11\n%f\n”,xe);fprintf(fp,“21\n%f\n”,ye);fprintf(fp,“31\n0.0\n”);}(4)circle寫圓實體函數(shù)。circle(floatxc,floatyc,floatr){fprintf(fp,“0\nCIRCLE\n8\n0\n”);fprintf(fp,“10\n%f\n”,xc);fprintf(fp,“20\n%f\n”,yc);fprintf(fp,“30\n0.0\n”);fprintf(fp,“40\n%f\n”,r);}(5)arc寫圓弧實體函數(shù)。arc(floatxc,floatyc,floatr,floatang1,floatang2){fprintf(fp,“0\n\ARC\n8\n0\n”);fprintf(fp,“10\n%f\n”,xc);fprintf(fp,“20\n%f\n”,yc);fprintf(fp,“30\n0.0\n”);fprintf(fp,“40\n%f\n”,r);fprintf(fp,“50\n%f\n”,ang1);fprintf(fp,“51\n%f\n”,ang2);}2.應(yīng)用舉例(yuan4.c)利用上述5個接口函數(shù)繪制如圖所示圖形的C語言主程序如下:main(){floatx0,y0,b,h,d;printf(“Enterx0,y0,b,h,d:”);scanf(“%f,%f,%f,%f,%f”,&x0,&y0,&b,&h,&d);/*調(diào)用接口函數(shù)*/begin();line(x0,y0,x0+b,y0);line(x0+b,y0,x0+b,y0+h);arc(x0+b/2,y0+h,b/2,0,180);line(x0,y0+h,x0,y0);circle(x0+b/2,y0+h,d/2);ending();}7.3.3用C語言讀取DXF文件

讀取DXF文件,從中提取用戶應(yīng)用程序所需信息,這是utoCAD與高級語言程序接口的又一種形式。

下面的C語言程序是從DXF文件中提取直線實體幾何信息的源程序,即提取直線的起點坐標(biāo)xs,ys,zs和終點坐標(biāo)xe,ye,ze,并將提取的坐標(biāo)值存放在用戶指定的數(shù)據(jù)文件中(yuan5.c)。/*從DXF文件提取直線實體幾何信息的C語言源程序*/#include"stdio.h"#include"math.h"FILE*fp;inti,gcode;charfname[14],gvalue[65];floatxs[100],ys[100],zs[100],xe[100],ye[100],ze[100];/*主程序*/main(){intn;i=0;scanline();printf("Enterdatafilename:");scanf("%s",fname);fp=fopen(fname,"w");fprintf(fp,"%d\n",i);for(n=1;n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論