autocad二次開發(fā).ppt
《autocad二次開發(fā).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《autocad二次開發(fā).ppt(67頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
本土化,包括語言、標(biāo)準(zhǔn)和習(xí)慣等,二次開發(fā)的意義,減少重復(fù)勞動(dòng),滿足不同特定企業(yè)、行業(yè)的需要,比如CAXA系列、開目CAD天河CAD、InteCAD中望CAD、堯創(chuàng)CAD、浩辰CAD,企業(yè)產(chǎn)品:系列化,面向?qū)ο螅核泄I(yè)部門的功能:全而不專,圓柱齒輪、錐齒輪、非圓齒輪、齒條等,閥門行業(yè)換熱器行業(yè)鍋爐行業(yè),AutoLisp,ADS,DCL,ADSRX,ObjectARX,Activex,VBA,VLisp,Automation,Autocad開發(fā)方式及發(fā)展,第一代AutoLisp,概述,1986年隨AutoCADv2.18提供的二次開發(fā)工具。是嵌入AutoCAD內(nèi)部的COMMONLISP的一個(gè)子集。是唯一的一種解釋型語言使用AutoLISP可直接調(diào)用幾乎所有的AutoCAD命令A(yù)utoLISP語言的應(yīng)用最典型應(yīng)用之一是實(shí)現(xiàn)參數(shù)化繪圖程序設(shè)計(jì),包括尺寸驅(qū)動(dòng)程序和鼠標(biāo)拖動(dòng)程序等。另一個(gè)典型應(yīng)用就是驅(qū)動(dòng)AutoCAD提供PDB模塊構(gòu)成DCL(DialogControlLanguage)文件,創(chuàng)建自己的對話框。,(defunc:11(/p1p2)(setqp1(getpoint輸入第一個(gè)點(diǎn))(setqp2(getpoint輸入第二個(gè)點(diǎn))(commandlinep1p2),Defun函數(shù)-定義函數(shù),(defun函數(shù)名(函數(shù)參數(shù)/變量表)表達(dá)式),例如定義一個(gè)加3函數(shù),程序源代碼如下:(defunmul3(x)(setqx(+3x),(defunC:AutoCAD命令名(/局部變數(shù)表)表達(dá)式,setq:賦值函數(shù)作用:給變量進(jìn)行賦值。格式:(setqnamevaluenamevalue.)其中Name為變量名Value為賦予變量的值,(函數(shù)名函數(shù)參數(shù).),AutoLISP以表的形式調(diào)用函數(shù),其格式如下,這里的函數(shù)參數(shù)的數(shù)量可能為0,也可以為任意多個(gè),這取決于具體的函數(shù)。每個(gè)參數(shù)還可以是表達(dá)式,返回的是表達(dá)式的最終計(jì)算結(jié)果。每調(diào)用一個(gè)函數(shù)都會(huì)得到函數(shù)的結(jié)果,即函數(shù)的返回值。有的函數(shù)返回的是數(shù)值,有的函數(shù)返回的是邏輯常數(shù)T或者nil,這取決于函數(shù)princ(打印字符)函數(shù),比如(princ)。調(diào)用自定義函數(shù)的方法與調(diào)用系統(tǒng)提供的函數(shù)的方法相同,例如:,AutoLISP用command函數(shù)調(diào)用AutoCAD命令,其格式如下。(command“AutoCAD命令”“命令所需的數(shù)據(jù)”),(command“l(fā)ine”“6,9”“18,27”“”),List函數(shù)List函數(shù)用于定義一個(gè)二維或三維點(diǎn),若表達(dá)式中不包含任何變量及未定義項(xiàng),則該函數(shù)還可以使用單引號(hào)()命名。示例(setq(List2.53.56)返回2.5,3.56(setq(2.53.56)返回2.5,3.56,car、cdr與cadr函數(shù)1.car函數(shù)car函數(shù)返回一個(gè)表中的第一個(gè)元素。若表中不包含任何元素,函數(shù)返回nil。car函數(shù)格式為:(carList)其中car.返回第一個(gè)元素list.元素列表示例:(car(2.53.56)返回2.5(car(x)返回(car(1520)56)返回(1520)(car()返回nil其中的單引號(hào)表示個(gè)表。,2.cdr函數(shù)cdr函數(shù)返回一個(gè)移去了表的第一個(gè)元素后的列表,其格式為(cdrList)其中cdr.返回第一個(gè)元素被移去的列表list.元素列表示例:(cdr(2.53.56)返回(3.56)(cdr(,y,z)返回(y,)(cdr(1520)56)返回(56)(cdr()返回nil,3.cadr函數(shù)cadr函數(shù)執(zhí)行兩個(gè)操作,cdr和car,返回列表中第二個(gè)元素。cdr函數(shù)移去了第一個(gè)元素。car函數(shù)返回新表中的第一個(gè)元素。、cadr函數(shù)的格式為:(cadrList)其中cadr.執(zhí)行兩個(gè)操作(car(cdr()List元素列表示例:(cadr(23)返回3(cadr(2356)返回3(cadr(x))返回(cadr(1520)5624)返回56這些例子中,cadr執(zhí)行兩個(gè)操作(cadr()=(car(cdr()=(car(yz)返回,princ函數(shù)Princ函數(shù)打?。ɑ蝻@示)變量的值。若變量位于雙引號(hào)中,該函數(shù)打?。ɑ蝻@示)雙引號(hào)內(nèi)的表達(dá)式。princ函數(shù)的格式為:(Princ變量或表達(dá)式)示例:(princ)在屏幕上打印一個(gè)空行(princ)在屏幕上打印出變量的值(princ“Welcome”)在屏幕上打印Welcome,運(yùn)行錯(cuò)誤有以下兩種情況(1)語法錯(cuò)誤:沒有按程序規(guī)定的語言寫程序,這是低級(jí)錯(cuò)誤。(2)邏輯錯(cuò)誤:程序員錯(cuò)誤地理解了計(jì)算機(jī)所要完成的任務(wù),這是高級(jí)錯(cuò)誤,對于一個(gè)程序員來說要盡量避免。無意輸入錯(cuò)誤變量名對計(jì)算機(jī)而言也屬于這種錯(cuò)誤。,(defunc:11(/p1p2)(setqp1(getpoint輸入第一個(gè)點(diǎn))(setqp2(getpoint輸入第二個(gè)點(diǎn))(commandlinep1p2),畫線,(defunc:rect1(/p1p2p3p4)(graphscr)(setvarcmdecho0)(promptrect1commanddrawsarectangle)(terpri)(setqp1(getpointEnterfirstcorner)(terpri)(setqp3(getpointEnteroppositecorner)(terpri)(setqp2(list(carp3)(cadrp1)(setqp4(list(carp1)(cadrp3)(commandlinep1p2p3p4c)(setvarcmdecho1)(Princ),畫矩形,(defunC:BA()(setqallarea0)(print請拾取內(nèi)部一個(gè)點(diǎn))(while(setqpt(getpoint)(commandboundarypt)(commandareaol)(setqallarea(+allarea(getvararea)(print總面積是)(printallarea)(print請拾取內(nèi)部一個(gè)點(diǎn)),累計(jì)面積計(jì)算,(1)語言規(guī)則十分簡單,易學(xué)易用;(2)直接針對AutoCAD,易于交互;(3)解釋執(zhí)行,立竿見影。,優(yōu)點(diǎn),第一代AutoLisp,(1)功能單一,綜合處理能力差;(2)解釋執(zhí)行,程序運(yùn)行速度慢;(3)缺乏很好的保護(hù)機(jī)制,源程序保密性差;(4)LISP用表來描述一切,并不能很好地反映現(xiàn)實(shí)世界和過程,跟人的思維方式也不一致;(5)不能直接訪問硬件設(shè)備、進(jìn)行二進(jìn)制文件的讀寫。AutoLISP的這些特點(diǎn),使其僅適合于有能力的終端用戶完成一些自己的開發(fā)任務(wù)。,缺點(diǎn),第一代AutoLisp,什么是宏?,計(jì)算機(jī)中宏又稱為宏命令,即通過特殊的控制語,將一系列動(dòng)作簡便化;即:一種批處理的程序,AutoCad中的宏,就是一個(gè)程序工具集,用VBA,LISP一類的語言編程,完成一個(gè)相對復(fù)雜的工具集合,也是用編程語言的方式簡化軟件操作的過程。,word或ppt中的宏比如:將圖片批量刪除或批量修改圖片尺寸,PublicSubmacrodemo()MsgBox“歡迎使用VBA”EndSub,例題1,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,例題2,Sub和endsub標(biāo)志程序的開始和結(jié)束C100宏的名稱,也叫過程名稱當(dāng)用戶執(zhí)行C100時(shí),程序?qū)⑦\(yùn)行sub和endsub之間的所有指令,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,cc變量名cc()數(shù)組cc(0To2)數(shù)組有三個(gè)元素:CC(0)、CC(1)、CC(2)AsDouble數(shù)據(jù)類型是雙精度型聲明坐標(biāo)變量注釋語法:Dim變量名As數(shù)據(jù)類型將cc作為坐標(biāo)數(shù)組,存儲(chǔ)坐標(biāo)值,坐標(biāo)值是雙精度型例:DimaAssingleDimcc(1To3)AsLong,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,cc(0)x坐標(biāo)cc(0)內(nèi)存儲(chǔ)x的坐標(biāo)值1000,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,cc(1)y坐標(biāo)cc(1)內(nèi)存儲(chǔ)y的坐標(biāo)值1000,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,cc(2)z坐標(biāo)cc(2)內(nèi)存儲(chǔ)z的坐標(biāo)值0,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,語法:For變量=數(shù)值1To數(shù)值2Step數(shù)值3For循環(huán)語句i變量(變換范圍:數(shù)值1到數(shù)值2)數(shù)值3數(shù)值1變化到數(shù)值2的步長,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,Call調(diào)用其他程序或方法ThisDrawing.ModelSpace當(dāng)前CAD文檔的模型空間AddCircle畫圓方法,需要兩個(gè)參數(shù):圓心和半徑CC()圓心坐標(biāo),i*10圓的半徑這些圓的半徑分別是,例題2,10、110、210、310,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,Next與For語句配套,例題2,Subc100()Dimcc(0To2)AsDouble聲明坐標(biāo)變量cc(0)=1000定義圓心坐標(biāo)cc(1)=1000cc(2)=0Fori=1To1000Step10開始循環(huán)CallThisDrawing.ModelSpace.AddCircle(cc,i*10)畫圓vNextiEndSub,例題2,坐標(biāo)值的輸入:程序?qū)懭胧謩?dòng)輸入鼠標(biāo)拾取,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,例題3,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,Sub和endsub標(biāo)志程序的開始和結(jié)束my1宏的名稱,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,定義p1和p2存放坐標(biāo)variant,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,Utility提示用戶輸入Getpoint輸入點(diǎn)格式:Getpoint(參考點(diǎn),“提示信息”)Getpoint(p1,“請輸入一個(gè)點(diǎn)p2”)起點(diǎn)p1,終點(diǎn)p2跟隨鼠標(biāo)移動(dòng)(不畫實(shí)線),Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,Utility提示用戶輸入GetReal輸入數(shù)值格式:GetReal(“提示信息”),Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,P1(2)-數(shù)組中的第三個(gè)數(shù)存放位置即z坐標(biāo)值存放位置,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,OnError-出錯(cuò)陷井語句GoTo跳轉(zhuǎn)語句,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,Do循環(huán)開始標(biāo)志Loop循環(huán)結(jié)束標(biāo)志,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,將輸入點(diǎn)賦給p2,從p1開始,橡皮線連著p2,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,將輸入的值賦給z,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,再將Z值放入數(shù)組中,p2有x、y、z三個(gè)坐標(biāo)值,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,當(dāng)前CAD文檔.模型空間.畫線,Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,將第一條線的第二點(diǎn)作為第二條線第一點(diǎn),Submy1()Dimp1AsVariant申明端點(diǎn)坐標(biāo)Dimp2AsVariantp1=ThisDrawing.Utility.GetPoint(,輸入點(diǎn):)獲取點(diǎn)坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p1(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中OnErrorGoToErr_Control出錯(cuò)陷井Do開始循環(huán)p2=ThisDrawing.Utility.GetPoint(p1,vbCr&輸入下一點(diǎn):)獲取下一個(gè)點(diǎn)的坐標(biāo)z=ThisDrawing.Utility.GetReal(Z坐標(biāo):)用戶輸入Z坐標(biāo)值p2(2)=z將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中CallThisDrawing.ModelSpace.AddLine(p1,p2)畫直線p1=p2將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)LoopErr_Control:EndSub,出錯(cuò)后跳轉(zhuǎn)到Err_Control,執(zhí)行之后的語句,基本變換,透視變換,平移變換,全比例變換,abcpdefqhIjrlmns,圖形變換矩陣,PrivateSubcmdscale_click()DimTransmatrix(0To3,0To3)AsDoubleDimindexlAsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNextTransmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWithUnloadMeEndSub,定義矩陣并初始化,矩陣賦值,圖形轉(zhuǎn)換修改顏色更新,DimTransmatrix(0To3,0To3)AsDoubleDimindex1AsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNext,DimTransmatrix(0To3,0To3)AsDoubleDimindexlAsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNext,定義Transmatrix:4*4矩陣數(shù)據(jù)類型:Double,DimTransmatrix(0To3,0To3)AsDoubleDimindex1AsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNext,定義index1:行數(shù)index2:列數(shù)數(shù)據(jù)類型:Integer,DimTransmatrix(0To3,0To3)AsDoubleDimindex1AsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNext,內(nèi)層循環(huán):第一行為零,DimTransmatrix(0To3,0To3)AsDoubleDimindex1AsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNext,外層循環(huán):行列都置零,Transmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1,Transmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1,將文本框內(nèi)的值賦給矩陣(0,0)位置,Transmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1,將文本框內(nèi)的值賦給矩陣(1,1)位置,Transmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1,將文本框內(nèi)的值賦給矩陣(2,2)位置,Transmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,3)=1,矩陣(1,1)位置賦值1,WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWith,WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWith,使用With可以省略書寫內(nèi)容結(jié)尾:endwith,WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWith,TransformBy:圖形矩陣轉(zhuǎn)換命令,WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWith,改變轉(zhuǎn)換后圖形顏色,WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acRed.Item(.Count-1).UpdateEndWith,更新圖形,PrivateSubcmdscaleToCenter_click()Centerpoint=ThisDrawing.Utility.GetPoint(,輸入縮放點(diǎn))DimTransmatrix(0To3,0To3)AsDoubleDimindexlAsInteger,index2AsIntegerForindex1=0To3Forindex2=0To3Transmatrix(index1,index2)=0NextNextDimscalefactorAsDoublescalefactor=frmtransformations.TxtscalefactorTransmatrix(0,0)=CDbl(Txtscalefactor)Transmatrix(1,1)=CDbl(Txtscalefactor)Transmatrix(2,2)=CDbl(Txtscalefactor)Transmatrix(3,0)=CDbl(1-Txtscalefactor)*Centerpoint(0)Transmatrix(3,1)=CDbl(1-Txtscalefactor)*Centerpoint(1)Transmatrix(3,2)=CDbl(1-Txtscalefactor)*Centerpoint(2)WithThisDrawing.ModelSpace.Item(.Count-1).TransformBy(Transmatrix).Item(.Count-1).color=acBlue.Item(.Count-1).UpdateEndWithUnloadMe,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- autocad 二次開發(fā)
鏈接地址:http://m.italysoccerbets.com/p-3389623.html