关键词不能为空

当前您在: 主页 > 英语 >

AutoCAD VBA简介及自动化介绍

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 21:19
tags:

-

2021年2月1日发(作者:pearl)


AutoCAD VBA




A


u


t


o

C


A


D



V


B


A



介< /p>



?


VBA


(< /p>


Visual Basic for Application




VBA< /p>



AutoCAD


的一种开发工具,具有 强大的功能。


Microsoft VBA


是一种面向对象的编 程环


境,


它与


VB

一样具有很强的开发功能。


VBA



VB


之间的区别就是


VBA AutoCAD


在同一处理


空间运行,为


AutoCAD


提供智能和快速的编程环境。


VBA


功能:


创建对话框和其它界


?



?



?



?



?



面;



创建工具栏;



建立模块级宏指令;



提供建立类模块的功能;



具有完善的 数据访问和管理能力;


(ADO



DA O



RDO



C/S)


能够使用


Win32API


提供的功能,建立应用程序与操作系统之间的通信;




AutoCAD


中使用


VBA


的好处


Visual Basic


编程环境易学易用;



?



VBA


作 为


AutoCAD


的一个过程运行,这使程序执行速度变得非常 快;



?



对 话框结构快速有效,允许开发者在设计时启动应用程序并能得到快速反


馈;


(易于代码纠错和维护)



?



对象可以独立出来,也可以嵌入< /p>


AutoCAD


图形。灵活性很强。


< /p>









< p>


AutoCAD VBA


界面中有许多不同类型 的对象。


例如


:



?



图形对象,如线、弧、文本和标注都是对象;



?



样式设置,如线型和标注样式均为对象;



?



组织结构,如图层、组合和图块也是对象;



?



图形显示,如视图和视口都是对象;



?



甚至图形和


AutoCAD


应用程序本身也是对象。


对象是通过分层方式 来组织


的,应用程序对象为根对象。这种分层结构的视图被归结为对象模型。对


象模型提供了你访问下一层对象的途径。






集合对象是预先定义的对象,


它包含所有相似对象的实例


(


即这些对象的 父对象


)



集合对象

< br>有以下的对象:



文档


(Doc uments)


集合



包含所有在当前


AutoCAD


进程打开的文档。


< /p>


模型空间


(ModelSpace)


集合



包含在模型空间中的所有图形对象


(


图元


)



< /p>


图纸空间


(PaperSpace)


集合



包含在活动图纸空间布局中的所有图形对象

< br>(


图元


)



图块


(Block)


对象



包含在指定图块定义中的所有图元。



图块


(Blocks)


集合



包含在图形中的所有图块。



字典


(Dictionaries)


集合


包含在图形中的所有字典。



标 注样式


(DimStyles)


集合



包含在图形中的所有标注样式。



组合


(Groups)


集合



包含在图形中的所有组合。



超级链接


(Hyperlinks)


集合



包含提供图元的所有超级链接。



图层


(Layers)


集合



包含在图形中的所有图层。



布局


(Layouts)


集合



包含在图形中的所有布局。



线型


(Linetypes)


集合



包含在图形中的所有线型。



菜单条< /p>


(MenuBar)


集合



包含当前显示于


AutoCAD


的所有菜单。



菜单组


(MenuGroups)


集合



包含当前装载到


AutoCAD


中的所有菜单和工具栏。


注册应用程序


(RegisteredApplications)


集合



包含在图形中的所有注册的应用程序。



选择集


(SelectionSets)


集合



包含在图形中所有的选择集。


字型


(TextStyles)


集合



包含在图形中所有的文字样式。



UCSs


集合


包含在图形中所有的用户坐标系统


(UCS)


< p>


视图


(Views)


集 合



包含在图形中所有的视图。



视口


(Viewports)


集合



包含在图形中所有的视口。

















每一对象都关联着属性和方法。


属性描述着单个对象的外观,


而方法是一种可在单个对


象上执行的行为。当对象创建后,你就可通过属性和方法查询和编辑对象。







例如,


一个圆对象有圆心属性。


该属性以三 维世界坐标系统的坐标描述了圆的圆心。



改圆的圆心,你只要 简单地将该属性设定为新的坐标。圆对象也有称为偏移


(Offset)


的方法。


该方法可在相对于现存圆的指定偏移距离创建一个新的对象。


关于圆对象所有属性和方法的


列表,请参考


Au toCAD ActiveX



VBA


参考中的圆对象。








< br>实




1


、程序和文档窗口设置


< p>
'''***************************************** ************************************


Sub MyWindow()






MsgBox Title '=


杨彪绘图


01






State = acMin 'acMax



'acNorm


End Sub



Sub SetMyAcadTitle()





Dim hw&




hw = GetParent(GetParent())




SetWindowText hw,


杨彪地质编录出图子系统





Call InitialDZBL '


初始化





State = acMax


End Sub



Sub SetMyAcadWindow()





State = acNorm




Left = 100




Left = 100




= 600




= 600


End Sub



2


、视图



'''************************************ **************************************


Sub MyZoomView1()







tents






ZoomAll


End Sub



Sub MyZoomView2()







Dim VPn1



As Variant, VPn2 As V


ariant







VPn1 = nt(,


缩放窗口左下点:







VPn2 = nt(,


缩放窗口右上点:







ndow VPn1, VPn2


End Sub




3


、二维图形绘制




addline


Sub Myaddline()






Dim ln As AcadLine






Dim startPt(2) As Double, EndPt(2) As Double






startPt(0) = 0






startPt(1) = 0






startPt(0) = 100






startPt(1) = 50






Set ln = e(startPt(), EndPt())






= acRed






ZoomAll


End Sub


‘LightWeightPolyline



Sub MyLightWeightPolyline ()






Dim MyPln As AcadLWPolyline






Dim Pnts(9) As Double











For I = 0 To 9










Pnts(I) = Rnd * 100






Next


'





Pnts(0) = PntMin(0): Pnts(1) = PntMin(1)


'





Pnts(2) = PntMin(0) + DWidth: Pnts(3) = PntMin(1)


'





Pnts(4) = PntMin(0) + DWidth: Pnts(5) = PntMin(1) + DHeight


'





Pnts(6) = PntMin(0): Pnts(7) = PntMin(1) + DHeight


'





Pnts(8) = PntMin(0): Pnts(9) = PntMin(1)











Set MyPln = htWeightPolyline(Pnts)











Dim n As Integer






n = UBound(Pnts)






For K = 0 To (n / 2 - 1) '


宽度设定











th K, K / 5, Rnd * 10






Next






= acYellow






ZoomAll


End Sub


‘Polyline



Sub MyPolyline()






Dim MyPln As AcadPolyline






Dim Pnts(8) As Double '''


必须是


3*N


的数组












For I = 0 To 8










Pnts(I) = Rnd * 100






Next











Set MyPln = yline(Pnts)











Dim n As Integer






n = UBound(Pnts)






For K = 0 To (n / 3 - 1) '


宽度设定











th K, K / 5, Rnd * 10






Next






= acYellow






ZoomAll


End Sub



‘Light


Circle



and



Hatch



Sub MyCircle()






Dim Cir(0) As AcadCircle






VPn1 = nt(,


输入插入点:







Set Cir(0) = cle(VPn1, 10#)






Set MyHatchObj = ch(0,






OuterLoop (Cir)






= 1






te


End Sub




Sub Mytext()







Dim MyTxt As AcadText






Dim StrTxt As String






Dim VPnts(2) As Double






StrTxt =


河海大学土木工程学院测绘工程系







Set MyTxt = t(StrTxt, VPnts, 100)






= acRed






ZoomAll


End Sub





Sub MyPoint()







Dim Pnts(0 To 2) As Double






Dim I As Integer, J As Integer






Dim MyPoint As AcadPoint






Pnts(I) = 50






Pnts(I) = 60






Set MyPoint = nt(Pnts)






ZoomAll


End Sub





4


、图层



Sub GetlayerName()






Dim MyLay



As AcadLayer






Dim BLExist As Boolean






BLExist = False






Dim LayExit As Boolean






LayExit = False






For Each MyLay In










If =










MsgBox , vbInformation






Next











If LayExit Then










MsgBox


图层:


'ybNewLayer'


已经存在


!






Else















End If






(






(






Layer = (






' =


(


End Sub




Sub Ch2_IterateLayer()






'


在图层集合中循环







On Error Resume Next











Dim I As Integer






Dim msg As String






msg =






For I = 0 To - 1






msg = msg + (I).Name + vbCrLf






Next






MsgBox msg


End Sub





5


、用户输入



'''********************************************** *************************


Sub GetInput()






Dim VPn1



As Variant, StrTF As String, KwordList As String, Str1 As String






Dim Obj1 As AcadObject






VPn1 = nt(,


输入插入点:












Str1 = ing(1,


请输入点号:












KwordList =






lizeUserInput 1, KwordList






StrTF = word(


是否显 示选点的坐标?


(




Y)/(




N)








If UCase(StrTF) =










MsgBox


< br>









Else















End If











ity Obj1, Pnt1,


选择一个对象:







= 1


End Sub



Sub MyZoomView3()






Str1 = ing(1,


请按回车键:







aled 0.7, acZoomScaledRelative


End Sub



6


、选择集合


''


'****



SelectionSets



***************************


Sub MySelectionSets()





Dim K As Integer






Dim ssetObj As AcadSelectionSet






Dim objCollection As AcadEntity






Dim ob As AcadEntity











Dim I As Integer






For I = - 1 To 0 Step -1











ionSets(I).Delete






Next I


'





ity objCollection, Pnt1,


选择一个对象:



'





= 1











Set ssetObj = (


'





Set ssetObj = SelectionSet






acSelectionSetAll






If > 0 Then










MsgBox


选择集中对象数目


:










For Each ob In ssetObj














= acMagenta










Next






End If


End Sub




7


、栅格图像


Raster


Sub InsertRaster()






Dim a As AcadRasterImage






Dim b(2) As Double






Dim ly As AcadLayer






Dim PicFileName As String






Dim factor As Double






factor = 2#






Set ly = (


底图







PicFileName =


图片







b(0) = 100






b(1) = 100






b(2) = 0






Set


a


=


ter(PicFileName,


b,


factor, 45)






arency = True






=


底图












tents







End Sub



8


、计算面积



'''************************


计算面积


**************************************


Sub Ch3_CalculateDefinedArea()






Dim p1 As Variant






Dim p2 As Variant






Dim p3 As Variant






Dim p4 As Variant






Dim p5 As Variant











'


从用户处取得点







p1 = nt(, vbCrLf &


第一个点


:





p2 = nt(p1, vbCrLf &


第二个点


:






p3 = nt(p2, vbCrLf &


第三个点


:






p4 = nt(p3, vbCrLf &


第四个点


:






p5 = nt(p4, vbCrLf &


第五个点


:











'


由这些点创建二维多段线







Dim polyObj As AcadLWPolyline






Dim vertices(0 To 9) As Double






vertices(0) = p1(0): vertices(1) = p1(1)






vertices(2) = p2(0): vertices(3) = p2(1)






vertices(4) = p3(0): vertices(5) = p3(1)






vertices(6) = p4(0): vertices(7) = p4(1)






vertices(8) = p5(0): vertices(9) = p5(1)




Set polyObj = htWeightPolyline _






(vertices)






= True






l











'


显示多段线的面积







MsgBox


通过定义的点形成的面积为








, ,


计算定义的面积



End Sub





9


、加载菜单




加载菜单


-


-


-


-


-


-


-


-



本文更新与2021-02-01 21:19,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595144.html

AutoCAD VBA简介及自动化介绍的相关文章