用VB在AutoCADR14中写TEXT的方法_第1页
用VB在AutoCADR14中写TEXT的方法_第2页
用VB在AutoCADR14中写TEXT的方法_第3页
用VB在AutoCADR14中写TEXT的方法_第4页
用VB在AutoCADR14中写TEXT的方法_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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功能开发AutoCAD for Windows目前,许多工程CAD系统是以AutoCAD作为支撑软件,在其基础上进行二次开发而形成的。AutoCAD R12 for Win

4、dows 以AutoLISP和ADS作为二次开发工具,但它们都有不足之处,AutoLISP速度慢,没有友好的开发环境,ADS是基于C语言的开发环境,而C语言面向Windows编程本身难以掌握,因此AutoLISP和ADS的使用都受到一定的限制。VB是Windows下主要的开发工具之一,它的“可视性”和“事件驱动性”简化了面向Windows的编程,深受广大用户的青睐。Windows下,VB和AutoCAD都支持强有力的DDE(动态数据交换)功能,用VB编写具有DDE功能的程序来控制AutoCAD,既能与AutoCAD交换各种复杂的数据结构,又能向AutoCAD发送命令,由此开发出的应用程序能满足

5、用户的需要,同时又缩短了开发周期。本文结合实例介绍了用VB开发AutoCAD的途径与方法。 一、直接利用DDE功能开发 DDE是Windows的强大功能之一,它可以使应用程序自动地接收由其它应用程序发送来的数据,当传送端的数据有变化时,接收端的数据也会随之改变,也可将命令或键盘输入传递给其它程序,实现远程控制。在VB编程环境中,创建应用程序的方法很简单,首先是设计用户界面,也就是在空白窗体中放入所需要的控件,如命令按钮,单选钮,文本框,标签,图片框等,然后针对各控件上要发生的事件(如鼠标单击,鼠标移动等)书写事件过程,最后将编写的应用程序运行,调试,生成执行文件即可。VB中能和其它Window

6、应用程序建立DDE通道的控件有文本框,标签和图片框。下面结合简单实例,说明VB应用程序与AutoCAD间建立DDE通道和交换数据的方法。在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()过程被执行,执行时设置文本框Text1的LinkTopic和LinkMode的属性,完成VB应用程序与AutoCAD间DDE通道

8、的建立。LinkTopic属性用于通知AutoCAD由谁来提供数据,它被管道符“|”分成两部分,第一部分“AutoCAD.DDE”为应用程序名,第二部分“System”是通讯的主题。LinkMode属性用于切实建立链接,在LinkMode=0时,表示关闭以前的DDE通道,在LinkMode=2时,表示以手动模式激活DDE通道。在完成DDE链接后,VB应用程序就可以与AutoCAD间进行数据交换或命令传送了。单击“直线”按扭,cmdLine_Click()过程被执行,应用程序通过LinkExecute方法向AutoCAD发送命令,在AutoCAD中以点(3,3)和(8,8)为端心,画一条直线。语

9、句中的3相当于AutoCAD中的取消键Ctrl+C,空格相当于AutoCAD中的回车键。单击“标注”按扭,执行cmdText_Click()过程,可在AutoCAD中显示以(10,10)为基点,高为1,旋转角度为90的字符串“AutoCAD!”。语句中的10相当于AutoCAD中的回车键,在标注文字时不能用空格代替回车键。根据需要,可用上面的方法传送AutoCAD的其它命令,实现对AutoCAD的开发。二、通过调用VB ADS开发 上面介绍了在VB应用程序中直接利用DDE与AutoCAD作用实现开发的方法,此方法要求用户自己建立与AutoCAD间的DDE通道,此外,我们还可以通过调用VB AD

10、S函数对AutoCAD进行开发。在VB ADS函数库中已有专门的函数负责建立应用程序与AutoCAD间的DDE通道,而不需用户亲自建立,较为方便。另外,VB应用程序还可以通过VB ADS函数向AutoCAD发送数据和命令,同时也可以利用VB ADS函数的返回值来获得AutoCAD的数据,实现对AutoCAD更深入的开发。为了利用AutoCAD的VB ADS函数建立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动态连接库,在运行VB应用程序前,应将其拷到C:WINDOWSSYSTEM子目录下。3. GLOBAL.BAS-VB ADS应用程序中所需要使用的全局变量定义文件。4. ADSFUNCS.BAS-VB ADS函数库,可以在VB应用程序中直接调用。5. ADSFUNCS.FRM-包含有应用程序和AutoCAD间建立DDE链接的窗体文件。 下面结合具体的例子,说明利用VB ADS函数开发应用程序的方法。 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) 执行结果缓冲器的命令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 函数库中,打开支撑文件adsfuncs.bas,可以发现Sub OPENDDE()过程,它负责VB应用程序与AutoCAD间DDE通道的建立,所以用户在开发应用程序时,只管调用VB ADS函数即可。例子中的cmdCircle_Click()过程,是在VB 4.0编程环境通过调用

16、VB ADS函数开发的,运行程序后在文本框中输入半径和圆心的值,单击“画图”按扭,即可在AutoCAD中得到所需的圆。c VB应用程序编制实例 VB自1991年问世以来,已从1.0版步入到功能十分强大的5.0版。VB以其开发软件周期短、操作简单、可视化程度高的优点倍受编程人员的青睐。近几年来,许多Windows程序员应用VB作为编程语言,开发了大量的应用软件。本文通过几个实例说明了VB的强大功能。一、工具棒的建立方法 Windows应用程序的操作界面都含有大量的图标,这些图标集中放在某一个区域形成工具棒(Toolbars), 工具棒中的图标用图示的方法表示某一种功能,可以加速操作,在某些Win

17、dows应用程序中还把这些工具棒直接称为加速棒(Speedbars)。下面介绍编制工具棒的方法。 在窗体上画一个足够大的图片框,使用这个图片框可以存放图标。设置图片框的Align属性,使图片框列在窗口的顶部,即窗体名控件名Align=1. 在图片框中增加影像控件(Image Control)数组或者三维命令控制按钮数组(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.建立图标事件过程 为工具棒中的每一个图标增加一个过程,执行相应的命令:Sub Tool_Click(index As Integer)If index = 0 ThenTool (0). Picture = Load(animal.bmp) 更换第一个图标中图像ElseIf index = 1 Thenj = Shell(calc.exe, 1) 执行

20、WINDOWS95计算重新CALC.EXEElseIf index = 2 Then End 中止程序的执行End IfEnd Sub在实际应用中,程序员可以发挥自己的想象力,从而完善工具棒的功能。AutoCAD中表格自动化工程图纸中经常遇到大量表格填写,例如工程勘察中的成果表、设计的材料表,在AutoCAD中文字处理比较差,用TEXT、DTEXT命令在表格中定位也不方便,填写的表格既不美观,还容易出错。在一些杂志中有关表格填写程序介绍,但是使用不方便,也不能连续填写多个表格,长距离线路勘察中线转点少则几十个,多则上千,中线数据可由计算直接生成,能否利用中线数据直接填表出图。利用AutoCAD

21、二次开发,编写中线成果填写程序(zxcglsp),改变以往出图工序(填写、校对),大大提高工作效率。一、程序功能与编写说明1、本程序具有下列功能:(1)直接在文本编辑器(EDIT、QE、WPS等等)编辑、修改数据,免去AutoCAD文字编辑、修改之不便;(2)可以自动分页,自动填写工程名称、档案号、日期等等;(3)可以自动处理中线成果数据前后的空格,例如:“123123123”将自动转化为“123123123”;(4)可以自动识别两种工程名称数据文件;(5)文本状态下数据正确无误,出图前无需在AutoCAD中修改,调图速度和重新成图速度相差无几,可直接保存数据文件,节省磁盘空间。2、程序说明:

22、程序利用AutoLISP的计算、判断、字符处理、循环结构以及调用Text命令等功能对读入的数据进行处理后填写,与本程序对应的Zxcgdwg图形文件含四个表格图块,程序中的有关参数均取决于四个图块。二、使用说明1、关于中线成果数据格式:(1)无曲线第一行,总点数(N)第二至七行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角(B)重复二至七行(没有数据项用空行代替)(2)有曲线第一行,总点数(N)第二至十一行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角B,半径R,切线长T、曲线长L、外矢矩E重复二至十一行(没有数据项用空行代替)2、关于工程名称数据格式:(1)单标题第

23、一行,工程名称第二行,档案号(如测3777表,只需输入3777)第三行,日期(可省略,取当前日期)(2)双标题第一行,工程名称大标题第二行,工程名称小标题第三行,档案号(如测3777表,只需输入3777)第四行,日期(可省略,取当前日期)三、加载及运行在AutoCADR12(或AutoCADforWindows)中,把Zxcglsp和Zxcgdwg拷贝到SUPPORT子目录下,用鼠标点文件(File)下应用程序(Applications),或在Command:下敲入Appload加载Zxcglsp,或在Command:下敲入(Load“Zxcg”)即可。然后在Command:下敲入ZX运行程序

24、,本程序将中文提示。四、结束语该应用程序提供了两种形式的表格,有兴趣的AutoCAD用户不妨增加几种表格,修改程序中对应的参数即可。附源程序 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请输入中线成果数据文件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);首、次页行数(SETQM(FIX(NNF)NN)2):计算页数(SETQNL(REM(NNF)NN)(IF(NL0)(SETQM(M1)NLNN)(IF(NNF)PROGN(SETQM1)(SETQNLN)(princ共读入)(PRINCN)(PRINC点,分)(PRINCM)(PRINC页填写!)(SETQYY8XX230);行距、页距(SETQI1X00Y00DAH(STRCAT

28、测DAH)(IF(YNNO)(SETQDI(LIST678581035812508150081800820808)(SETQDI(LIST10719088391055812261140301568317286188072080023273);表格项数及各项横坐标(X)(SETQYYF2850YYN3057);首、次页第一行纵坐标删除数据前后空格(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正在填写中线成果数据,请稍候!)(WHILE(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. 实现VB5对Excel的直接控制后,可在用户所编的程序中调用Ex cel,即从控制界面直接调入Excel,且退出Excel后又回到控

32、制界面,使人看起来就如Excel是依附于用户程序上。这给既想获取Excel的强大支持,又想编写傻瓜软件交给不熟悉计算机的用户使用的程序员来说,其好处是不言而喻的。VBA则必须依附于特定的Excel环境,且只有先进入确定的Excel环境后,才能运行VBA程序。 2. 用VB5实现Excel的控制后,所有程序可编译成完整的EXE执行文件,直接在Win 95 /NT平台上执行,运行环境更为简洁明了,程序更易加密。不会因为有多个程序指令块带来管理麻烦,也不易因用户的不小心使用而出现程序丢失,造成功能短缺。VBA编写的程序最大的不方便是不能编译成执行文件,不能脱离其主应用程序独立运行。 3. VBA在E

33、xcel环境中,几乎是一个万能的工具,可通过建立功能强大的宏指令来扩展或模拟Excel的全部功能。而VB的OLE自动技术目前还不能实现Excel所有功能的模拟与控制。 操作步骤 用VB5控制Excel 97的操作步骤如下: 1. 引用Microsoft Excel类型库: *从工程菜单中选择引用栏; *选择Microsoft Excel 8.0 Object Library; *选择确定。 2. 声明显式数据类型: Dim x1 as Excel.Application 3. 创建新实例,获取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 声明显式数据类型 Set x1=CreateObject(Excel.Application) 创建新实例 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 图形数据来源 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)能创建出各种各样的文字,令人赏心悦目。如果能在VB中使用“艺术字”该有多好啊!由于有了面

38、向对象技术中的代码重用思想,现在就可以轻松地实现这个愿望了。 代码重用主要有两种形式,即二进制代码重用与源代码重用。前者是通过创建和使用对象来实现的;后者,顾名思义,是通过继承实现的,后者在C+语言中被广泛使用。由于Visual Basic不支持继承,所以在VB中的代码重用主要是指二进制代码重用,并且VB算得上是二进制代码重用的先驱。它的基本思路是:首先将待重用的代码和数据编译为二进制文件,称为ActiveX服务器部件,然后在客户应用程序里创建部件中类的对象来调用该部件。在VB中最为人们所熟悉的控件就是典型的二进制代码重用的例子,每个控件都是一个ActiveX部件,在向窗体中添加一个控件的同时

39、就创建了该控件类的一个新实例,然后通过调用该控件的属性、方法和事件就重用了该控件中的代码。 Word 97本身就是一个庞大的代码部件,也就是说,Word 97中的整个对象库是对外开放的,它允许其他应用程序对其进行编程。换句话说,Word 97中的对象能被其他应用程序所调用。而“艺术字”正是Word 97中的一种对象,因此可以方便地在VB中调用它。 要使用“艺术字”,必须先把Word 97的对象库加入到程序中,然后创建一个对象变量来保持对Word应用程序对象的引用,可以用两种方法创建对Word应用程序对象的引用,一种方法是直接声明一个Word应用程序的对象变量,例如: Dim w As New

40、Word.Application 这种方法称为前期绑定,它速度较快;另一种方法是声明一个对象变量w,然后把用CreateObject函数创建出的Word应用程序对象赋给w,例如: Dim w As Object Set w=CreateObject(Word.Application) 这种方法称为后期绑定,它速度较慢。在创建了Word应用程序对象后,就可以以代码的方式像在Word中进行具体操作那样创建新文档,并在文档中加入“艺术字”。在创建好“艺术字”之后,用剪贴板将其传给窗体。在创建Word应用程序对象时,VB会在后台自动打开Word,因此,在程序结束时,应该先关闭Word,其代码如下: w

41、.Quit wdDoNotSaveChanges 下面用一个具体的项目实例帮你轻松学习如何在VB中使用Word对象。 (1)启动Microsoft Visual Basic 5.0,选择“标准EXE”,创建一个新项目; (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 这里显示的字样是隶书的“艺术字”三个字,你可以根据自己的喜好来改变字体(如宋体、楷体等)以及改变字样; (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开发的数控自动编程系统1引言数控零件加工程序的编制是进行数控加工的一个重要步骤,国内外数控加工统计说明,造成数控机床等待约20%30%是编程不及时所致,可见数控编程直接影响着数控机床的加工效率。随着数控技术应用的日益扩大,我国企业在数控自动编程应用方面已有较大发展,目前主要有以下三种自动编程方式。(1)采用数控编程语言的自动编程。最著名的是APT(Automatically Programmed Tools)语言。(2)计算机辅助图形设计的自动编程。采用CAD方法,将设计好的零件图形显示在屏幕上,编程人员指定要加工的表面,并回

46、答软件提出的一些问题,诸如对刀点、走刀方式、切削用量参数等,然后由系统进行自动编程,形成刀位数据文件或APT程序,再经后置处理,变成机床所需的NC代码。(3)从CAD获取信息的自动编程。编程所需的零件形状信息直接从CAD那里得到,一般利用AutoCAD提供的图形交换文件DXF接口,编程人员只需进行适当工艺处理。由于图纸上给出的零件形状数据往往比较少,而数控系统的插补功能要求有较多的数据才能控制机床。尤其是当数控系统插补功能要求输入的数据与零件形状给出的数据不一致时,就需要进行复杂的数学运算,而在运算过程中可能产生人为的错误。而这些复杂的数学运算可由计算机快速、准确地完成。NC程序作为数控加工的

47、信息载体,其正确与否直接影响零件加工质量。目前实际生产使用的NC程序,在投入加工之前通常采用机床空运行和木模、蜡模的试切,完成NC程序的检查。该方法加工准备周期长,生产成本增加,难以实现数控机床的高效生产。图形仿真是目前CAD/CAPP/CAM系统中通用的NC检验方法。本文介绍了作者开发的数控软件(Numerical Control Automatic Programming SystemNCAPS)设计方案和实现方法。操作人员在实际操作数控铣床加工工件之前,先用该系统进行模拟操作。通过计算机屏幕可清晰地看到所编辑的加工程序运行的刀具切削模拟过程,并可方便地反复修改加工程序,直到被加工的“工件

48、”符合要求为止。且该过程都在AutoCAD环境下实现。这无疑对新产品的开发、安全生产、提高生产效率及减少废品都具有实际意义。2ActiveX Automation对象及开发工具介绍2.1ActiveX Automation对象(1)顶层是AutoCAD Application,它除具有对象的属性和方法外,还包括两个重要的对象Preferences(参数对象)和Document(文档对象)。Preferences对象是与AutoCAD系统中参数设置相对应的对象,Document对象则是包括图形文件的所有对象集合,如Blocks Collection、ModelSpace Entities Col

49、lection、PaperSpace Entities Collection等一系列对象。(2)图形对象。Blocks Collection等属于图形对象,它是用户使用频繁的对象,是实现参数化、变量化及三维实体造型等功能的主要方式。(3)输出对象。输出对象控制图形文件的输出格式,如设置坐标原点、方向等。(4)实用对象。该对象提供AutoCAD中常用的数据转换、辅助计算等功能。2.2开发工具本文以Visual Basic 5.0为开发工具,给出了实例。由于编程思想是相同的,所以该方法可移到Visual C、Delphi等开发工具上。用VB5实现ActiveX Automation开发的关键是要获

50、得AutoCAD对象的指针,及创建AutoCAD.Application对象,进而创造AutoCAD的文档对象,以实现对AutoCAD中其它对象的访问,完成与AutoCAD的通讯。3系统的组成与功能图形交互式自动编程系统处理零件程序的一般过程是:输入零件图形输入工艺参数运动轨迹计算加工模拟后置处理程序清单输出。NCAPS是针对数控铣床开发的,系统框架结构如图1所示,它主要包括进入AutoCAD R14系统绘制零件图、工艺处理、动态校验和数控加工程序输出等功能模块。具体步骤如下:(1)进入AutoCAD R14系统绘制零件图它是AutoCAD实体建模过程。(2)工艺处理 图1NCAPS系统框架结

51、构示意图它是第(1)步操作后对图形数据进行再加工的核心模块。利用计算机图形学技术,直接在AutoCAD环境下进行工艺干预。工艺干预内容包括轮廓和点位二种方式,干预过程通过鼠标事件选择实体来实现。用鼠标选取实体的先后来组成加工环(加工路线)。现以VB5编写的源程序说明如何直接从AutoCAD环境下选择实体,形成加工路线(该程序只是该模块的部分)。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标准数控加工程序代码。同时以(*.NC)形成的文件名永久保存。(4)动态校验上述生成的NC代码是否正确还要进行校验方能制作控制介质输出。本模块采用时间分割插补算法进行动态模拟,以校验ISO数控加工程序代码是否正确,以及刀具与工件是否产生干涉等。如果校验不正确,则需对上述各个环节进行反复调试,直到正确为止。为使刀位数据易于获得,避免传统数值积分法(DDA)精度较差与运算繁琐等缺点,本系统

56、在加工仿真过程中引入方向性概念,使刀心轨迹在算法上简洁明了,程序可读性强。对于CNC系统刀补功能,以往的直线过渡刀补算法,常利用三角函数关系式来计算各转接点的坐标值。这些方法公式推导复杂,计算量大,不宜归纳和简化。本系统引入运动矢量和刀具半径矢量来计算,对直线到直线、直线到圆弧、圆弧到直线和圆弧到圆弧各种转接情况进行了分析,综合为两个统一公式进行计算,大大简化了CNC系统的刀具补偿的计算量。(5)文本编辑模块此模块允许操作人员把已编好的ISO代码形式的数控加工程序通过文本编辑送到计算机,对其加工过程模拟演示,以便验证所编的数控零件加工程序的正确性。(6)数控加工程序输出经调试和检验后的正确数控

57、加工程序可以通过拷贝、打印、通讯接口的方式输出。4实例本文以二维零件数控铣削加工为例,首先在AutoCAD环境下绘制零件轮廓,如图2所示。工艺干预可得沿图2所示1-2-3-4-5-6-7-8-9-10-11顺时针方向走刀的ISO数控加工程序,且此程序已通过动态校核检验(如图3)。图2工艺干预结果图3数控加工(铣削)仿真结果5结束语综上所述,本系统具有如下优点:(1)直接在AutoCAD环境下经图形转换,自动生成数控指令代码。由指令代码可以动态模拟刀具运动轨迹,校验代码的正确性。(2)代码可以直接和数控机床通讯,加工出新设计的图形,实现了CAD/CAM一体化。(3)该系统已与数控机床连通,并进行

58、了实际切削。实验表明,该系统具有运行准确、直观,能显著提高数控编程效率等特点,对其中一些功能继续完善,可满足实际加工需要。目前,该系统被我校CAM课程自动编程实验室采用。利用VBA编程实现从EXCEL表到AUTOCAD表转换(1) 一、前言 Microsoft Excel 软件具有十分强大的制表、表格计算等功能,是普通人员常用的制表工具。可以通过其内嵌的VBA语言可以控制Microsoft Excel 的整个操作过程。 AutoCAD是由AutoDesk公司的工程绘图软件,是CAD市场的主流产品,功能十分强大,是工程制图人员常用的软件之一。AutoDesk公司从R14版以后,为其提供了VBA语

59、言接口。 在工程制图中,常常需要在图中插入绘制表格,一般有两种方法。其一,是利用剪贴板,将Microsoft Excel表格拷贝至剪贴板中,然后打开AutoCAD文件,再将剪贴板中的文件粘贴至所需位置。这种方法十分简单,但有其固有的缺点。在保存文件必须将.xls和.dwg文件保存在一起,一旦缺少excel环境,则再对表格继续修改。同时打开多个表格操作,需要占据较大的内存空间。文件体积变得很大,表格有时在.dwg文件中以图标形式显示,不便于观察。 第二种方法,即利用Microsoft Excel、AutoCAD都提供的VBA功能,编制程序进行转换,将Microsoft Excel表格按原来样子转

60、换,即把Microsoft Excel表格中的文字和线条信息全部读取出来,在AutoCAD文件里按照一一对应的方式写出来,确保转换后的表格与原表格一致。这样彻底避免了前种方法的缺点,便于表格内容编辑。本文着重介绍此方法。 二、表格转换工作机理分析及具体实现方法 1表格转换工作机理分析 在制表过程中,经常遇到两个概念,表和方格。 在Microsoft Excel中,与表对应的对象是工作表(Sheet或Worksheet),与每一个表格方格相对应的对象是单元格区域(range),它可以仅包括一个单元格(cell),也可以由多个单元格合并而成。 在AutoCAD中,没有与表对应的对象,但表可以理解由

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论