用VB在AutoCADR14中寫TEXT的方法_第1頁
用VB在AutoCADR14中寫TEXT的方法_第2頁
用VB在AutoCADR14中寫TEXT的方法_第3頁
用VB在AutoCADR14中寫TEXT的方法_第4頁
用VB在AutoCADR14中寫TEXT的方法_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PAGE PAGE 35用 VB 在 AutoCAD R14 中寫 TEXT 的方法 AutoCAD 可以寫不同高寬比、不同角度、不同顏色的 TEXT。無論是用 AutoCAD 的 TEXT 命令,還是用 AutoLISP,都是很容易做到的,用 VB 是否也很容易哪?我們來看下面一段示例:Public objAcad As ObjectPublic objDoc As ObjectDim ent As ObjectDim startPoint(0 To 2) As DoubleDim Point1(0 To 2) As DoubleSet objAcad = GetObject(, AutoC

2、AD.Application) 獲得AutoCAD R14對象Set objDoc = objAcad.ActiveDocument 初始化 TEXT 的起點startPoint(0) = 10#startPoint(1) = 10#startPoint(2) = 0# 寫一串 TEXT, 其中字高為 5Set ent = objDoc.ModelSpace.AddText(textString, startPoint, 5#) 初始化 TEXT 的調整點Point1(0) = 20#Point1(1) = 10#Point1(2) = 0#With ent .Color = 1 改用紅色 .

3、ObliqueAngle = 0.174444 改傾斜角度 .VerticalAlignment = 0 設垂直位置為 0 .ScaleFactor = 1# 設文字高寬比,當需要兩端對齊時,必須任意給一個值 .HorizontalAlignment = 5 設文字為兩端對齊 .TextAlignmentPoint = Point1 設對齊點End WithSet objAcad = Nothinga VB應用程序中用DDE功能開發(fā)AutoCAD for Windows目前,許多工程CAD系統(tǒng)是以AutoCAD作為支撐軟件,在其基礎上進行二次開發(fā)而形成的。AutoCAD R12 for Win

4、dows 以AutoLISP和ADS作為二次開發(fā)工具,但它們都有不足之處,AutoLISP速度慢,沒有友好的開發(fā)環(huán)境,ADS是基于C語言的開發(fā)環(huán)境,而C語言面向Windows編程本身難以掌握,因此AutoLISP和ADS的使用都受到一定的限制。VB是Windows下主要的開發(fā)工具之一,它的“可視性”和“事件驅動性”簡化了面向Windows的編程,深受廣大用戶的青睞。Windows下,VB和AutoCAD都支持強有力的DDE(動態(tài)數(shù)據(jù)交換)功能,用VB編寫具有DDE功能的程序來控制AutoCAD,既能與AutoCAD交換各種復雜的數(shù)據(jù)結構,又能向AutoCAD發(fā)送命令,由此開發(fā)出的應用程序能滿足

5、用戶的需要,同時又縮短了開發(fā)周期。本文結合實例介紹了用VB開發(fā)AutoCAD的途徑與方法。 一、直接利用DDE功能開發(fā) DDE是Windows的強大功能之一,它可以使應用程序自動地接收由其它應用程序發(fā)送來的數(shù)據(jù),當傳送端的數(shù)據(jù)有變化時,接收端的數(shù)據(jù)也會隨之改變,也可將命令或鍵盤輸入傳遞給其它程序,實現(xiàn)遠程控制。在VB編程環(huán)境中,創(chuàng)建應用程序的方法很簡單,首先是設計用戶界面,也就是在空白窗體中放入所需要的控件,如命令按鈕,單選鈕,文本框,標簽,圖片框等,然后針對各控件上要發(fā)生的事件(如鼠標單擊,鼠標移動等)書寫事件過程,最后將編寫的應用程序運行,調試,生成執(zhí)行文件即可。VB中能和其它Window

6、應用程序建立DDE通道的控件有文本框,標簽和圖片框。下面結合簡單實例,說明VB應用程序與AutoCAD間建立DDE通道和交換數(shù)據(jù)的方法。在VB中啟動一個新項目,參見圖(1)建立窗體,其中“建立鏈接”,“直線”,“標注”,“退出”為命令按鈕,標有“Text1”的為文本框,用于建立DDE通道,并輸入下面的事件代碼。 Option ExplicitPrivate Sub cmdLine_Click() 畫直線Text1.LinkExecute 33line 3,3 8,8 3End SubPrivate Sub cmdText_Click() 標注文字Text1.LinkExecute 33text

7、 10,10 1 90 AUTOCAD!10End SubPrivate Sub cmdLink_click() 建立鏈接Text1.LinkMode = 0Text1.LinkTopic = autocad.dde|systemText1.LinkMode = 2End SubPrivate Sub cmdExit_click() 退出EndEnd Sub 運行此應用程序,注意在運行前,一定要先加載AutoCAD。單擊“建立鏈接”按扭,cmdLink_Click()過程被執(zhí)行,執(zhí)行時設置文本框Text1的LinkTopic和LinkMode的屬性,完成VB應用程序與AutoCAD間DDE通道

8、的建立。LinkTopic屬性用于通知AutoCAD由誰來提供數(shù)據(jù),它被管道符“|”分成兩部分,第一部分“AutoCAD.DDE”為應用程序名,第二部分“System”是通訊的主題。LinkMode屬性用于切實建立鏈接,在LinkMode=0時,表示關閉以前的DDE通道,在LinkMode=2時,表示以手動模式激活DDE通道。在完成DDE鏈接后,VB應用程序就可以與AutoCAD間進行數(shù)據(jù)交換或命令傳送了。單擊“直線”按扭,cmdLine_Click()過程被執(zhí)行,應用程序通過LinkExecute方法向AutoCAD發(fā)送命令,在AutoCAD中以點(3,3)和(8,8)為端心,畫一條直線。語

9、句中的3相當于AutoCAD中的取消鍵Ctrl+C,空格相當于AutoCAD中的回車鍵。單擊“標注”按扭,執(zhí)行cmdText_Click()過程,可在AutoCAD中顯示以(10,10)為基點,高為1,旋轉角度為90的字符串“AutoCAD!”。語句中的10相當于AutoCAD中的回車鍵,在標注文字時不能用空格代替回車鍵。根據(jù)需要,可用上面的方法傳送AutoCAD的其它命令,實現(xiàn)對AutoCAD的開發(fā)。二、通過調用VB ADS開發(fā) 上面介紹了在VB應用程序中直接利用DDE與AutoCAD作用實現(xiàn)開發(fā)的方法,此方法要求用戶自己建立與AutoCAD間的DDE通道,此外,我們還可以通過調用VB AD

10、S函數(shù)對AutoCAD進行開發(fā)。在VB ADS函數(shù)庫中已有專門的函數(shù)負責建立應用程序與AutoCAD間的DDE通道,而不需用戶親自建立,較為方便。另外,VB應用程序還可以通過VB ADS函數(shù)向AutoCAD發(fā)送數(shù)據(jù)和命令,同時也可以利用VB ADS函數(shù)的返回值來獲得AutoCAD的數(shù)據(jù),實現(xiàn)對AutoCAD更深入的開發(fā)。為了利用AutoCAD的VB ADS函數(shù)建立VB的應用程序,AutoCAD提供了幾個VB ADS支撐文件,這些文件除DDEBAS.EXE和ACADVB.DLL存放在C:ACADWIN子目錄外,其余都存放在C:ACADWINVBNEW子目錄中。文件如下:1. DDEBAS.EXE

11、-ADS/DDE服務者,為保證VB于AutoCAD 間正常通信,此命令必須首先在AutoCAD中用XLOAD命令加載運行。2. ACADVB.DLL-VB ADS動態(tài)連接庫,在運行VB應用程序前,應將其拷到C:WINDOWSSYSTEM子目錄下。3. GLOBAL.BAS-VB ADS應用程序中所需要使用的全局變量定義文件。4. ADSFUNCS.BAS-VB ADS函數(shù)庫,可以在VB應用程序中直接調用。5. ADSFUNCS.FRM-包含有應用程序和AutoCAD間建立DDE鏈接的窗體文件。 下面結合具體的例子,說明利用VB ADS函數(shù)開發(fā)應用程序的方法。 HJ 啟動VB,打開C:ACADW

12、INVBNEWNEWPROJ.MAK項目文件,參見圖 2建立新窗體,并輸入如下的事件代碼。 Option ExplicitPrivate Sub Form_Load()DDE_TIMEOUT = -1 等待DDE事件txtX.Text = 5 圓心,半徑的隱含值txtY.Text = 5txtRadius = 3End SubPrivate Sub cmdCircle_Click() 畫圓過程Dim ret As IntegerDim pt As ads_point 定義Ads點類型Dim Radius As DoubleDim Apndll As ApndLLType 定義增加鏈表類型Dim

13、 Resbuf As ResbufType 定義結果緩沖器pt.X = val(Trim(txtX.Text)給圓心,半徑賦值pt.Y = val(Trim(txtY.Text) Radius = val(Trim(txtRadius.Text)ret% = ads_newrb(10, Resbuf)建立新的結果緩沖器Resbuf.hResbuf = 0 Apndll.apType = RTSTR說明鏈表類型為字符串Apndll.apString = circle + Chr$(0)鏈表賦值ret% = ApndLLNode(Resbuf, Apndll) 增加鏈表到結果緩沖器Apndll.a

14、pType = RTPOINTApndll.apPoint = ptret% = ApndLLNode(Resbuf, Apndll)Apndll.apType = RTREALApndll.apReal = Radiusret% = ApndLLNode(Resbuf, Apndll) Apndll.apType = RTNONE 鏈表結束值類型ret% = ApndLLNode(Resbuf, Apndll)ret% = ads_cmd(Resbuf) 執(zhí)行結果緩沖器的命令ret% = ads_relrb(Resbuf) 釋放結果緩沖器End SubPrivate Sub cmdExit_

15、Click() 退出過程EndEnd Sub在應用程序運行前,必須首先運行AutoCAD,并用命令(XLOAD DDEBAS)加載DDEBAS. EXE。在上面的應用程序中,除語句DDE_TimeOut-1外,沒有其它涉及建立DDE通道的語句,因為應用程序與AutoCAD間建立DDE通道所需要的代碼已保存在VB ADS 函數(shù)庫中,打開支撐文件adsfuncs.bas,可以發(fā)現(xiàn)Sub OPENDDE()過程,它負責VB應用程序與AutoCAD間DDE通道的建立,所以用戶在開發(fā)應用程序時,只管調用VB ADS函數(shù)即可。例子中的cmdCircle_Click()過程,是在VB 4.0編程環(huán)境通過調用

16、VB ADS函數(shù)開發(fā)的,運行程序后在文本框中輸入半徑和圓心的值,單擊“畫圖”按扭,即可在AutoCAD中得到所需的圓。c VB應用程序編制實例 VB自1991年問世以來,已從1.0版步入到功能十分強大的5.0版。VB以其開發(fā)軟件周期短、操作簡單、可視化程度高的優(yōu)點倍受編程人員的青睞。近幾年來,許多Windows程序員應用VB作為編程語言,開發(fā)了大量的應用軟件。本文通過幾個實例說明了VB的強大功能。一、工具棒的建立方法 Windows應用程序的操作界面都含有大量的圖標,這些圖標集中放在某一個區(qū)域形成工具棒(Toolbars), 工具棒中的圖標用圖示的方法表示某一種功能,可以加速操作,在某些Win

17、dows應用程序中還把這些工具棒直接稱為加速棒(Speedbars)。下面介紹編制工具棒的方法。 在窗體上畫一個足夠大的圖片框,使用這個圖片框可以存放圖標。設置圖片框的Align屬性,使圖片框列在窗口的頂部,即窗體名控件名Align=1. 在圖片框中增加影像控件(Image Control)數(shù)組或者三維命令控制按鈕數(shù)組(3D Command Button Control)。改變控件的Picture屬性,輸入圖形,圖形的格式為:*.BMP,*.DIB,*.WMF,*.ICO。 下面的實例介紹了工具棒的建立方法,具體步驟為: 1建立一個圖片框,取名為Demo(即Name屬性為Demo),設置Ali

18、gn屬性,即 Demo.Align=1 2在圖片框上增加三維命令按鈕,設置Name屬性為Tool,設置Index的屬性為0(第一個控件),改變 Picture 屬性,輸入圖示化的圖形(文件)。改變提示信息,設置Caption取值為空。 3增加三維命令按鈕控件,設置Name屬性為Tool,注意使Index屬性分別為1,2,。 4建立窗體Paint事件過程Sub FormPaint()Demo.ScaleHeight = Tool(0).Height 設置工具棒的高度iw = Tool(0).Width 獲取第一個圖標的寬度,用于設置其他的圖標寬度For i = 0 To 3Tool(i).Hei

19、ght = Demo.ScaleheihtTool(i).Width = iwTool(i).AutoSize = 1 設置圖標中的圖形充滿整個圖形框Tool(i).Move iw i, 0 重新排列所有圖標的位置Next iEnd Sub 5.建立圖標事件過程 為工具棒中的每一個圖標增加一個過程,執(zhí)行相應的命令:Sub Tool_Click(index As Integer)If index = 0 ThenTool (0). Picture = Load(animal.bmp) 更換第一個圖標中圖像ElseIf index = 1 Thenj = Shell(calc.exe, 1) 執(zhí)行

20、WINDOWS95計算重新CALC.EXEElseIf index = 2 Then End 中止程序的執(zhí)行End IfEnd Sub在實際應用中,程序員可以發(fā)揮自己的想象力,從而完善工具棒的功能。AutoCAD中表格自動化工程圖紙中經常遇到大量表格填寫,例如工程勘察中的成果表、設計的材料表,在AutoCAD中文字處理比較差,用TEXT、DTEXT命令在表格中定位也不方便,填寫的表格既不美觀,還容易出錯。在一些雜志中有關表格填寫程序介紹,但是使用不方便,也不能連續(xù)填寫多個表格,長距離線路勘察中線轉點少則幾十個,多則上千,中線數(shù)據(jù)可由計算直接生成,能否利用中線數(shù)據(jù)直接填表出圖。利用AutoCAD

21、二次開發(fā),編寫中線成果填寫程序(zxcglsp),改變以往出圖工序(填寫、校對),大大提高工作效率。一、程序功能與編寫說明1、本程序具有下列功能:(1)直接在文本編輯器(EDIT、QE、WPS等等)編輯、修改數(shù)據(jù),免去AutoCAD文字編輯、修改之不便;(2)可以自動分頁,自動填寫工程名稱、檔案號、日期等等;(3)可以自動處理中線成果數(shù)據(jù)前后的空格,例如:“123123123”將自動轉化為“123123123”;(4)可以自動識別兩種工程名稱數(shù)據(jù)文件;(5)文本狀態(tài)下數(shù)據(jù)正確無誤,出圖前無需在AutoCAD中修改,調圖速度和重新成圖速度相差無幾,可直接保存數(shù)據(jù)文件,節(jié)省磁盤空間。2、程序說明:

22、程序利用AutoLISP的計算、判斷、字符處理、循環(huán)結構以及調用Text命令等功能對讀入的數(shù)據(jù)進行處理后填寫,與本程序對應的Zxcgdwg圖形文件含四個表格圖塊,程序中的有關參數(shù)均取決于四個圖塊。二、使用說明1、關于中線成果數(shù)據(jù)格式:(1)無曲線第一行,總點數(shù)(N)第二至七行,點名(NAME)、里程(K)、高程(H)、坐標X、Y、轉角(B)重復二至七行(沒有數(shù)據(jù)項用空行代替)(2)有曲線第一行,總點數(shù)(N)第二至十一行,點名(NAME)、里程(K)、高程(H)、坐標X、Y、轉角B,半徑R,切線長T、曲線長L、外矢矩E重復二至十一行(沒有數(shù)據(jù)項用空行代替)2、關于工程名稱數(shù)據(jù)格式:(1)單標題第

23、一行,工程名稱第二行,檔案號(如測3777表,只需輸入3777)第三行,日期(可省略,取當前日期)(2)雙標題第一行,工程名稱大標題第二行,工程名稱小標題第三行,檔案號(如測3777表,只需輸入3777)第四行,日期(可省略,取當前日期)三、加載及運行在AutoCADR12(或AutoCADforWindows)中,把Zxcglsp和Zxcgdwg拷貝到SUPPORT子目錄下,用鼠標點文件(File)下應用程序(Applications),或在Command:下敲入Appload加載Zxcglsp,或在Command:下敲入(Load“Zxcg”)即可。然后在Command:下敲入ZX運行程序

24、,本程序將中文提示。四、結束語該應用程序提供了兩種形式的表格,有興趣的AutoCAD用戶不妨增加幾種表格,修改程序中對應的參數(shù)即可。附源程序 ERROR(DEFUNERR(X);IFANERROR(SUCHASCTRLC)OCCURS;WHILETHISCOMMANDISACTIVE(IF(AND(XFUNCTIONCANCELLED)(XQUITEXITABORT)(PPINC(STRCATnERROR:X)(SETVARCMDECHO1)(SETVERBLIPMODE1)(IF(TYPERF)FILE)(CLOSERF)(IF(TYPERN)FILE)(CLOSERN)(SETQRFNIL

25、)(SETQRNNIL)(SETQERROROLDERR);RESTOREOLDERRORHANDLER(PRINC)FILETOREAD(DEFUNINPUT()(IF(FF1nil)(SEFQFF1(GETVARDWGPREFIX)(SETQF1(GETFILED請輸入中線成果數(shù)據(jù)文件FF1DAT12)(SETQLF(STRLENF1)FF1(SUBSTRF11(LF4)(IF(FF2nil)(SETQFF2FF1)(SETQF2(GETFILED請輸入工程名稱文件FF2TXT12)(SETQLF(STRLENF2)FF2(SUBSTRF21(LF4)(initgetYesNo)(setq

26、YN(getkwordn請選擇有曲線元素YesNo:(N)(if(YNnil)(SETQYNNo)DATAFORPROGRAMME(DEFUNDDAT()(SETQRF(OPENF1r)(SETQRN(OPENF2r)(SETQGN(READLINERN)GG1DAH(READLINERN)(IF(ATOIDAH)0)(PROGN(SETQGG2GN2DAHDAH(READLINERN)(SETQDAT(READLINERN)(IF(DATNIL)(PROGN(SETQDAT(GETVARCDATE);取當前日期(SETQDAT(FIXDAT)(SETQDAT(ITOADAT)(SETQYY(

27、SUBSTRDAT14)MM(SUBSTRDAT52)(SETQDD(SUBSTRDAT72)DAT(STRCATYYMMDD)(SETQNO(READLINERF)N(ATOINO)(SETQNF26NN29);首、次頁行數(shù)(SETQM(FIX(NNF)NN)2):計算頁數(shù)(SETQNL(REM(NNF)NN)(IF(NL0)(SETQM(M1)NLNN)(IF(NNF)PROGN(SETQM1)(SETQNLN)(princ共讀入)(PRINCN)(PRINC點,分)(PRINCM)(PRINC頁填寫?。⊿ETQYY8XX230);行距、頁距(SETQI1X00Y00DAH(STRCAT

28、測DAH)(IF(YNNO)(SETQDI(LIST678581035812508150081800820808)(SETQDI(LIST10719088391055812261140301568317286188072080023273);表格項數(shù)及各項橫坐標(X)(SETQYYF2850YYN3057);首、次頁第一行縱坐標刪除數(shù)據(jù)前后空格(QKG)(DEFUNQKG()(SETQLE1)(WHILE(LE(STRLENTXT)(RPOGN(SETQLF(1LE)(WHILE(SUBSTRTXT11)(PROGN(SETQTXT(SUBSTRTXT2(STRLENTXT)(SETQLE(S

29、TRLENTXT)(IF(LE2)(WHILE(AND(SUBSTRTXTLE1)(LE2)(PROGN(SETQLE(LE1)TXT(SUBSTRTXT1LE)ZXTX(DEFUNZXTX()(PRINCn正在填寫中線成果數(shù)據(jù),請稍候?。╓HILE(IM)(PROGN(SETQPT0(LISTX0Y0)(SETQP1(LIST(X02360)3485)(SETQP2(LIST(X02070)3420)(SETQP3(LIST(X02270)3420)(SETQP4(LIST(X02222)3356)(IF(YNNo)(IF(I1)(SETQZXPZXF)(SETQZXPZXN);圖塊選擇(

30、IF(I1)(SETQZXQZXF)(SETQZXQZXN)(COMMANDINSERTZXPT010)(IF(I1)(PROGN(SETQP2(LIST(X02070)3360)(SETQP3(LIST(X02270)3360)(SETQP4(LIST(X02222)3296)(SETQP5(LIST(X01251)3295)(SETQP6(LIST(X01859)3295)(IF(GG2)(PROGN(SETQP5(LIST(X01251)3335)(SETQP6(LIST(X01859)3335)(SETQP7(LIST(X01351)3235)(SETQP8(LIST(X01759)3

31、235)(COMMANDTEXTSHZJAP5P6GN)(COMMANDTEXTJMP4250DAT)(IF(GG2)(COMMAND)TEXTJAP7P8GNZ)(IF(I1)(SETQJNF)(SETQJNN)用VB5直接控制Excel 97用VB5可編寫直接控制Excel操作的程序,方法是用VB的OLE自動化技術獲取Excel 97 的控制句柄,從而直接控制Excel 97的一系列操作。與用VBA語言編寫的Excel控制程序相比,兩者主要有如下差異: 1. 實現(xiàn)VB5對Excel的直接控制后,可在用戶所編的程序中調用Ex cel,即從控制界面直接調入Excel,且退出Excel后又回到控

32、制界面,使人看起來就如Excel是依附于用戶程序上。這給既想獲取Excel的強大支持,又想編寫傻瓜軟件交給不熟悉計算機的用戶使用的程序員來說,其好處是不言而喻的。VBA則必須依附于特定的Excel環(huán)境,且只有先進入確定的Excel環(huán)境后,才能運行VBA程序。 2. 用VB5實現(xiàn)Excel的控制后,所有程序可編譯成完整的EXE執(zhí)行文件,直接在Win 95 /NT平臺上執(zhí)行,運行環(huán)境更為簡潔明了,程序更易加密。不會因為有多個程序指令塊帶來管理麻煩,也不易因用戶的不小心使用而出現(xiàn)程序丟失,造成功能短缺。VBA編寫的程序最大的不方便是不能編譯成執(zhí)行文件,不能脫離其主應用程序獨立運行。 3. VBA在E

33、xcel環(huán)境中,幾乎是一個萬能的工具,可通過建立功能強大的宏指令來擴展或模擬Excel的全部功能。而VB的OLE自動技術目前還不能實現(xiàn)Excel所有功能的模擬與控制。 操作步驟 用VB5控制Excel 97的操作步驟如下: 1. 引用Microsoft Excel類型庫: *從工程菜單中選擇引用欄; *選擇Microsoft Excel 8.0 Object Library; *選擇確定。 2. 聲明顯式數(shù)據(jù)類型: Dim x1 as Excel.Application 3. 創(chuàng)建新實例,獲取Excel的控制句柄: Set x1=CreatObject(Excel.Application) 4

34、. 由于Excel 97啟動為不可見,調用后需使其顯示出來: x1.Visible=True 5. 交還Excel控制句柄: Set x1=Nothing 同理,用此方法也可直接控制Word、Access等Microsoft Office 97的其他應用軟件,享受其便利和支持。 操作程序 Private Sub Contral_Excel_97() Dim x1 as Excel.Application 聲明顯式數(shù)據(jù)類型 Set x1=CreateObject(Excel.Application) 創(chuàng)建新實例 x1.Workbooks.Add 添加新工作簿 x1.Range(A1).Value

35、=5A1格賦值 x1.Range(A2).Value=8A2格賦值 x1.Range(A3).Value=16 A3格賦值 x1.Range(A4).Value=7A4格賦值 x1.Charts.Add 插入圖形 x1.ActiveChart.ChartType=x1ColumnClustered 柱狀圖 x1.ActiveChart.SetSourceData Source:=x1.Sheets(Sheet1) .Range(A1:A4) PlotBy:=x1Columns 圖形數(shù)據(jù)來源 With x1.ActiveChart 圖標題 .HasTitle=False 沒有總標題 .Axes(

36、x1Category,x1Primary).HasTitle=False .Axes(x1Value,x1Primary).HasTitle=True 有Y軸標題 .Axes(x1Value,x1Primary).AxisTitle.Characters .Text=銷售電視機(臺) End With With x1.ActiveChart.PageSetup 圖形頁面設置 .CenterHeader=&28 & ListSTNM(Combo2. ListIndex)&逐日電視機銷售 標題 .CenterFooter=&12x x x 商場下邊落款 .RightFooter=Format(No

37、w,yyyy-m-d-h:n) 右下角顯示時間 .Orientation=x1Landscape 打印紙頁面橫向 End With x1.ActiveChart.PlotArea.Interior.ColorIndex=x1None 無背景色 x1.ActiveWindow.SelectedSheets.PrintPreview 打印預覽 x1.Visible=True 顯示圖形 Set x1=Nothing 交還控制句柄 VB中使用Word的“藝術字”工具Word 97中的“藝術字”工具(WordArt)能創(chuàng)建出各種各樣的文字,令人賞心悅目。如果能在VB中使用“藝術字”該有多好??!由于有了面

38、向對象技術中的代碼重用思想,現(xiàn)在就可以輕松地實現(xiàn)這個愿望了。 代碼重用主要有兩種形式,即二進制代碼重用與源代碼重用。前者是通過創(chuàng)建和使用對象來實現(xiàn)的;后者,顧名思義,是通過繼承實現(xiàn)的,后者在C+語言中被廣泛使用。由于Visual Basic不支持繼承,所以在VB中的代碼重用主要是指二進制代碼重用,并且VB算得上是二進制代碼重用的先驅。它的基本思路是:首先將待重用的代碼和數(shù)據(jù)編譯為二進制文件,稱為ActiveX服務器部件,然后在客戶應用程序里創(chuàng)建部件中類的對象來調用該部件。在VB中最為人們所熟悉的控件就是典型的二進制代碼重用的例子,每個控件都是一個ActiveX部件,在向窗體中添加一個控件的同時

39、就創(chuàng)建了該控件類的一個新實例,然后通過調用該控件的屬性、方法和事件就重用了該控件中的代碼。 Word 97本身就是一個龐大的代碼部件,也就是說,Word 97中的整個對象庫是對外開放的,它允許其他應用程序對其進行編程。換句話說,Word 97中的對象能被其他應用程序所調用。而“藝術字”正是Word 97中的一種對象,因此可以方便地在VB中調用它。 要使用“藝術字”,必須先把Word 97的對象庫加入到程序中,然后創(chuàng)建一個對象變量來保持對Word應用程序對象的引用,可以用兩種方法創(chuàng)建對Word應用程序對象的引用,一種方法是直接聲明一個Word應用程序的對象變量,例如: Dim w As New

40、Word.Application 這種方法稱為前期綁定,它速度較快;另一種方法是聲明一個對象變量w,然后把用CreateObject函數(shù)創(chuàng)建出的Word應用程序對象賦給w,例如: Dim w As Object Set w=CreateObject(Word.Application) 這種方法稱為后期綁定,它速度較慢。在創(chuàng)建了Word應用程序對象后,就可以以代碼的方式像在Word中進行具體操作那樣創(chuàng)建新文檔,并在文檔中加入“藝術字”。在創(chuàng)建好“藝術字”之后,用剪貼板將其傳給窗體。在創(chuàng)建Word應用程序對象時,VB會在后臺自動打開Word,因此,在程序結束時,應該先關閉Word,其代碼如下: w

41、.Quit wdDoNotSaveChanges 下面用一個具體的項目實例幫你輕松學習如何在VB中使用Word對象。 (1)啟動Microsoft Visual Basic 5.0,選擇“標準EXE”,創(chuàng)建一個新項目; (2)選擇“項目”菜單中的“引用”選項,顯示“引用”對話框,選中Microsoft Word 8.0 Object Library和Microsoft Office 8.0 Object Library兩項,單擊“確定”按鈕(見圖1); 添加對Word對象庫的引用 (3)將下列代碼加入到Form1的“通用”|“聲明”選項中: Dim w As New Word.Applicat

42、ion (4)將下列代碼加入到Form1的Load事件中: Private Sub Form_Load() w.Documents.Add.Select w.ActiveDocument.Shapes.AddTextEffect(0,藝術字,隸書,48#,-1,0,183.75,70.5).Select End Sub 這里顯示的字樣是隸書的“藝術字”三個字,你可以根據(jù)自己的喜好來改變字體(如宋體、楷體等)以及改變字樣; (5)將下列代碼加入到Form1的Click事件中: Private Sub Form_Click() w.Selection.ShapeRange.TextEffect.P

43、resetTextEffect = Int(Rnd(1) * 30) w.Selection.ShapeRange.TextEffect.FontName = 隸書 w.Selection.Copy Picture = Clipboard.GetData() End Sub (6)將下列代碼加入到Form1的Unload事件中: Private Sub Form_Unload(Cancel As Integer) w.Quit wdDoNotSaveChanges Set w = Nothing End Sub (7)在窗體上放置一個按鈕,其Caption屬性為Exit,并在它的Click事件

44、中處理退出: Private Sub Command1_Click() End End Sub (8)運行程序后,當鼠標在窗體上單擊時,會隨機地顯示出一種“藝術字”字型(Word中共有30種內建“藝術字”字型),下圖分別給出了隸書與宋體兩種不同字體的字樣為“藝術字”的幾種情形。 在VB窗體中顯示的Word中的“藝術字”,左面是隸書,右面是相應的宋體 同樣,由這個實例可以舉一反三,即我們也可以在VB中使用Excel的圖表、PowerPoint的幻燈片,因為Office 97中的產品都是代碼部件,這些產品中的對象庫都是可以被其他應用程序調用的,所以只要了解這些對象的外部接口(屬性、方法和事件),就

45、可以方便地調用這些對象了。PCC 基于AutoCAD R14和VB5開發(fā)的數(shù)控自動編程系統(tǒng)1引言數(shù)控零件加工程序的編制是進行數(shù)控加工的一個重要步驟,國內外數(shù)控加工統(tǒng)計說明,造成數(shù)控機床等待約20%30%是編程不及時所致,可見數(shù)控編程直接影響著數(shù)控機床的加工效率。隨著數(shù)控技術應用的日益擴大,我國企業(yè)在數(shù)控自動編程應用方面已有較大發(fā)展,目前主要有以下三種自動編程方式。(1)采用數(shù)控編程語言的自動編程。最著名的是APT(Automatically Programmed Tools)語言。(2)計算機輔助圖形設計的自動編程。采用CAD方法,將設計好的零件圖形顯示在屏幕上,編程人員指定要加工的表面,并回

46、答軟件提出的一些問題,諸如對刀點、走刀方式、切削用量參數(shù)等,然后由系統(tǒng)進行自動編程,形成刀位數(shù)據(jù)文件或APT程序,再經后置處理,變成機床所需的NC代碼。(3)從CAD獲取信息的自動編程。編程所需的零件形狀信息直接從CAD那里得到,一般利用AutoCAD提供的圖形交換文件DXF接口,編程人員只需進行適當工藝處理。由于圖紙上給出的零件形狀數(shù)據(jù)往往比較少,而數(shù)控系統(tǒng)的插補功能要求有較多的數(shù)據(jù)才能控制機床。尤其是當數(shù)控系統(tǒng)插補功能要求輸入的數(shù)據(jù)與零件形狀給出的數(shù)據(jù)不一致時,就需要進行復雜的數(shù)學運算,而在運算過程中可能產生人為的錯誤。而這些復雜的數(shù)學運算可由計算機快速、準確地完成。NC程序作為數(shù)控加工的

47、信息載體,其正確與否直接影響零件加工質量。目前實際生產使用的NC程序,在投入加工之前通常采用機床空運行和木模、蠟模的試切,完成NC程序的檢查。該方法加工準備周期長,生產成本增加,難以實現(xiàn)數(shù)控機床的高效生產。圖形仿真是目前CAD/CAPP/CAM系統(tǒng)中通用的NC檢驗方法。本文介紹了作者開發(fā)的數(shù)控軟件(Numerical Control Automatic Programming SystemNCAPS)設計方案和實現(xiàn)方法。操作人員在實際操作數(shù)控銑床加工工件之前,先用該系統(tǒng)進行模擬操作。通過計算機屏幕可清晰地看到所編輯的加工程序運行的刀具切削模擬過程,并可方便地反復修改加工程序,直到被加工的“工件

48、”符合要求為止。且該過程都在AutoCAD環(huán)境下實現(xiàn)。這無疑對新產品的開發(fā)、安全生產、提高生產效率及減少廢品都具有實際意義。2ActiveX Automation對象及開發(fā)工具介紹2.1ActiveX Automation對象(1)頂層是AutoCAD Application,它除具有對象的屬性和方法外,還包括兩個重要的對象Preferences(參數(shù)對象)和Document(文檔對象)。Preferences對象是與AutoCAD系統(tǒng)中參數(shù)設置相對應的對象,Document對象則是包括圖形文件的所有對象集合,如Blocks Collection、ModelSpace Entities Col

49、lection、PaperSpace Entities Collection等一系列對象。(2)圖形對象。Blocks Collection等屬于圖形對象,它是用戶使用頻繁的對象,是實現(xiàn)參數(shù)化、變量化及三維實體造型等功能的主要方式。(3)輸出對象。輸出對象控制圖形文件的輸出格式,如設置坐標原點、方向等。(4)實用對象。該對象提供AutoCAD中常用的數(shù)據(jù)轉換、輔助計算等功能。2.2開發(fā)工具本文以Visual Basic 5.0為開發(fā)工具,給出了實例。由于編程思想是相同的,所以該方法可移到Visual C、Delphi等開發(fā)工具上。用VB5實現(xiàn)ActiveX Automation開發(fā)的關鍵是要獲

50、得AutoCAD對象的指針,及創(chuàng)建AutoCAD.Application對象,進而創(chuàng)造AutoCAD的文檔對象,以實現(xiàn)對AutoCAD中其它對象的訪問,完成與AutoCAD的通訊。3系統(tǒng)的組成與功能圖形交互式自動編程系統(tǒng)處理零件程序的一般過程是:輸入零件圖形輸入工藝參數(shù)運動軌跡計算加工模擬后置處理程序清單輸出。NCAPS是針對數(shù)控銑床開發(fā)的,系統(tǒng)框架結構如圖1所示,它主要包括進入AutoCAD R14系統(tǒng)繪制零件圖、工藝處理、動態(tài)校驗和數(shù)控加工程序輸出等功能模塊。具體步驟如下:(1)進入AutoCAD R14系統(tǒng)繪制零件圖它是AutoCAD實體建模過程。(2)工藝處理 圖1NCAPS系統(tǒng)框架結

51、構示意圖它是第(1)步操作后對圖形數(shù)據(jù)進行再加工的核心模塊。利用計算機圖形學技術,直接在AutoCAD環(huán)境下進行工藝干預。工藝干預內容包括輪廓和點位二種方式,干預過程通過鼠標事件選擇實體來實現(xiàn)。用鼠標選取實體的先后來組成加工環(huán)(加工路線)?,F(xiàn)以VB5編寫的源程序說明如何直接從AutoCAD環(huán)境下選擇實體,形成加工路線(該程序只是該模塊的部分)。Option ExplicitPublic objAcad As Object,objDoc As ObjectPrivate Sub FormLoad()StartAutoCAD-為對AutoCAD訪問做準備End SubPrivate Sub Sta

52、rtAutoCAD()Dim DwgName As StringSet objAcad=GetObject(,“AutoCAD.Application”)End SubPrivate Sub SelectCutTypeClick()Dim EntityName As StringDim EntityMessager(1 To 6) As VariantDim ent As Object,sset As ObjectSet objDoc=objAcad.ActiveDocumentSet sset=objDoc.SelectionSets.Add(“SS1”)設置sset到一個名為SS1的選擇集

53、中sset.SelectOnScreenDim msgstr As String,appName As StringappName=App.CompanyNameFor Each ent In ssetIf ent.EntityName=“AcDbLine”Then為直線EntityName=ent.EntityNameEntitymessager(1)=ent.StarPoint:EntityMessager(2)=ent.EndPointElseIf ent.EntityName=“AcDbCircle”Then為圓EntityName=ent.EntityNameEntityMessag

54、er(1)=ent.Center:EntityMessager(2)=ent.RadiusElseIf ent.EntityName=“AcDbArc”Then為圓弧EntityName=ent.EntitynameEntityMessager(1)=ent.Center:EntityMessager(2)=ent.RadiusEntityMessager(3)=ent.StartAngle:EntityMessager(4)=ent.EndAngleEntityMessager(5)=ent.StartPoint:EntityMessager(6)=ent.EndPointElseEntit

55、yName=ent.EntityName為其它實體End IfNext ent選擇集中的下一個實體End Sub(3)NC代碼生成經過工藝干預(即確定刀具走刀路線)后,便可將圖形幾何信息和工藝干預信息轉換成ISO標準數(shù)控加工程序代碼。同時以(*.NC)形成的文件名永久保存。(4)動態(tài)校驗上述生成的NC代碼是否正確還要進行校驗方能制作控制介質輸出。本模塊采用時間分割插補算法進行動態(tài)模擬,以校驗ISO數(shù)控加工程序代碼是否正確,以及刀具與工件是否產生干涉等。如果校驗不正確,則需對上述各個環(huán)節(jié)進行反復調試,直到正確為止。為使刀位數(shù)據(jù)易于獲得,避免傳統(tǒng)數(shù)值積分法(DDA)精度較差與運算繁瑣等缺點,本系統(tǒng)

56、在加工仿真過程中引入方向性概念,使刀心軌跡在算法上簡潔明了,程序可讀性強。對于CNC系統(tǒng)刀補功能,以往的直線過渡刀補算法,常利用三角函數(shù)關系式來計算各轉接點的坐標值。這些方法公式推導復雜,計算量大,不宜歸納和簡化。本系統(tǒng)引入運動矢量和刀具半徑矢量來計算,對直線到直線、直線到圓弧、圓弧到直線和圓弧到圓弧各種轉接情況進行了分析,綜合為兩個統(tǒng)一公式進行計算,大大簡化了CNC系統(tǒng)的刀具補償?shù)挠嬎懔俊?5)文本編輯模塊此模塊允許操作人員把已編好的ISO代碼形式的數(shù)控加工程序通過文本編輯送到計算機,對其加工過程模擬演示,以便驗證所編的數(shù)控零件加工程序的正確性。(6)數(shù)控加工程序輸出經調試和檢驗后的正確數(shù)控

57、加工程序可以通過拷貝、打印、通訊接口的方式輸出。4實例本文以二維零件數(shù)控銑削加工為例,首先在AutoCAD環(huán)境下繪制零件輪廓,如圖2所示。工藝干預可得沿圖2所示1-2-3-4-5-6-7-8-9-10-11順時針方向走刀的ISO數(shù)控加工程序,且此程序已通過動態(tài)校核檢驗(如圖3)。圖2工藝干預結果圖3數(shù)控加工(銑削)仿真結果5結束語綜上所述,本系統(tǒng)具有如下優(yōu)點:(1)直接在AutoCAD環(huán)境下經圖形轉換,自動生成數(shù)控指令代碼。由指令代碼可以動態(tài)模擬刀具運動軌跡,校驗代碼的正確性。(2)代碼可以直接和數(shù)控機床通訊,加工出新設計的圖形,實現(xiàn)了CAD/CAM一體化。(3)該系統(tǒng)已與數(shù)控機床連通,并進行

58、了實際切削。實驗表明,該系統(tǒng)具有運行準確、直觀,能顯著提高數(shù)控編程效率等特點,對其中一些功能繼續(xù)完善,可滿足實際加工需要。目前,該系統(tǒng)被我校CAM課程自動編程實驗室采用。利用VBA編程實現(xiàn)從EXCEL表到AUTOCAD表轉換(1) 一、前言 Microsoft Excel 軟件具有十分強大的制表、表格計算等功能,是普通人員常用的制表工具。可以通過其內嵌的VBA語言可以控制Microsoft Excel 的整個操作過程。 AutoCAD是由AutoDesk公司的工程繪圖軟件,是CAD市場的主流產品,功能十分強大,是工程制圖人員常用的軟件之一。AutoDesk公司從R14版以后,為其提供了VBA語

59、言接口。 在工程制圖中,常常需要在圖中插入繪制表格,一般有兩種方法。其一,是利用剪貼板,將Microsoft Excel表格拷貝至剪貼板中,然后打開AutoCAD文件,再將剪貼板中的文件粘貼至所需位置。這種方法十分簡單,但有其固有的缺點。在保存文件必須將.xls和.dwg文件保存在一起,一旦缺少excel環(huán)境,則再對表格繼續(xù)修改。同時打開多個表格操作,需要占據(jù)較大的內存空間。文件體積變得很大,表格有時在.dwg文件中以圖標形式顯示,不便于觀察。 第二種方法,即利用Microsoft Excel、AutoCAD都提供的VBA功能,編制程序進行轉換,將Microsoft Excel表格按原來樣子轉

60、換,即把Microsoft Excel表格中的文字和線條信息全部讀取出來,在AutoCAD文件里按照一一對應的方式寫出來,確保轉換后的表格與原表格一致。這樣徹底避免了前種方法的缺點,便于表格內容編輯。本文著重介紹此方法。 二、表格轉換工作機理分析及具體實現(xiàn)方法 1表格轉換工作機理分析 在制表過程中,經常遇到兩個概念,表和方格。 在Microsoft Excel中,與表對應的對象是工作表(Sheet或Worksheet),與每一個表格方格相對應的對象是單元格區(qū)域(range),它可以僅包括一個單元格(cell),也可以由多個單元格合并而成。 在AutoCAD中,沒有與表對應的對象,但表可以理解由

溫馨提示

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

評論

0/150

提交評論