本一CAD课程设计VBA参数化编程方法及实例Word文件下载.docx
- 文档编号:21772996
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:235.49KB
本一CAD课程设计VBA参数化编程方法及实例Word文件下载.docx
《本一CAD课程设计VBA参数化编程方法及实例Word文件下载.docx》由会员分享,可在线阅读,更多相关《本一CAD课程设计VBA参数化编程方法及实例Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
三维参数化编程除了要遵循上述主要步骤之外,还需要注意以下几点:
①编程中计算点的时候,尽量不要变换坐标系,除非万不得已不动;
②安排好空间点的位置,注意其变化;
③尽量多用三维旋转Rotate3d、移动Move等命令。
6.2化学工程二维图形VBA参数化编程实例
在化工CAD制图过程中,经常会用到大量的常用标准件的绘制问题,而这些标准件是常用的、结构一致,带有参数表的,这样的图形如果用交互式方法绘制,不仅麻烦,而且降低设计效率,利用AutoCAD系统提供的强大的参数化编程功能来减少工作量,来进行程序自动绘制,是AutoCAD软件系统的优越功能之一,本章将以化工常用标准件为例,用VBA编程模式,介绍法兰、法兰盖、封头、筒体、支座、人孔、手孔的二维参数化编程7个实例;
鞍式支座、A型支承式支座、A型耳式支座、常压手孔、水平吊盖式平焊法兰人孔三维参数化编程5个实例。
6.2.1一种法兰二维编程实例
在化工管道中,法兰连接的使用十分广泛,法兰连接是化工制图中常用图形。
环连接面整体钢制管法兰的剖面图见图6-1,该图是左右对称的结构,可以先绘制右侧部分,然后使用镜像命令复制出左侧部分。
其点图、尺寸参数表、点表如下所示:
图6-1环连接面整体钢制管法兰
图6-2法兰点图
表6-1环连接面整体钢制管法兰尺寸参数表
dn
d
dd
k
L
nn
th
p
e
f
c
n
s0
s1
xx
15
20
25
32
40
50
65
80
100
125
150
200
250
300
350
400
105
55
75
14
4
"
M12"
35
6.5
9
45
10
130
68
90
18
M16"
140
78
24
61
155
86
110
22
M20"
170
102
26
82
21
180
112
135
85
8
12
205
136
160
215
146
115
28
122
11
172
M24"
145
30
23
295
208
240
M27"
175
34
177
13
345
245
280
33
M30X2"
36
204
27
415
306
M33X2"
265
42
264
16
470
362
320
46
19
530
422
460
375
52
378
39
600
475
525
M36X3"
420
56
434
670
540
585
M39X3"
480
60
490
我们以p0点为该图形的起点(插入点),xx,S0,SL,L,N,F,P,d,K,dd,E,C为参数,确定p0~p17各点的坐标为:
表6-2法兰点表
计算点
相对点
相对角度
相对长度
p0
p10
p9
1.5pi
p1
p11
p5
pi
(d-k+l)/2
p2
0.5n-(sl-s0)
p12
p3
(xx-c-e)/3
p13
l
p4
p0x+0.5n
p0y-(xx-c-e)
p14
(d-n)/2
p15
(p-f)/2
p6
p16
p15x+0.5f
p15y+f
p7
(d-dd)/2
p17
p8
p18
n-2(sl-s0)
0.5n-sl
p19
接下来,就可以进行基于VBA的参数化编程。
(1)为了使用方便,首先在D盘根目录下构建名为“falanpan.mdb”的Access数据库,在库中创建一个名为“csb”的表格,存放各个参数数据,构建各个字段(注意顺序不能改变,否则后面的程序按字段顺序提取数据时会出错。
)如图6-3所示,然后将表6-1中各个参数输入到数据库中(具体步骤请参考Access资料)。
(2)启动AutoCAD,点击【工具】|【宏】|【VisualBasic编辑器】菜单,进入VBA编辑环境。
在右侧“工程”项中点击鼠标右键,选择【插入】|【用户窗体】在VBA环境中插入一个用户窗体,过程如图6-4所示。
接下来,在出现的“工具箱”中,单击鼠标右键,选择“附加控件”,向工具箱中添加“MicrosoftADODataControl6.0(SP4)(OLEDB)”控件,以备用ADO方式访问参数库,如图6-5所示。
图6-3构建数据库字段
图6-4在VBA环境中插入用户窗体
图6-5向工具箱添加ADO控件
(3)向用户窗体添加该Adodc控件,并将其“Visible”属性设为“False”以隐藏该控件。
同时添加一个列表框、几个标签控件和几个文本框控件,为文本框命名与标签对应的名字(参见图6-6以及后面的ListBox1_Click函数),添加图像控件和两个按钮控件,并调整位置,然后向图像控件引入法兰图片,设置窗体和按钮“Caption”属性,如图6-6所示。
图6-6窗体控件示意图
(4)双击用户窗体,进入代码界面,首先在代码的最上端声明通用变量:
DimFalanpan_ConAsADODB.Connection
DimFalanpan_RecAsADODB.Recordset
其中,Falanpan_Con和Falanpan_Rec,分别作为数据库对象和数据集对象。
选择窗体的“Initialize”响应函数,该函数负责连接数据库,向列表框添
加数据库中法兰盘的各参数数据。
Initialize函数代码如下:
PrivateSubUserForm_Initialize()
'
以ADO方式打开数据库
SetFalanpan_Con=NewADODB.Connection
SetFalanpan_Rec=NewADODB.Recordset
DimSQLAsString
SQL="
provider=Microsoft.Jet.OLEDB.4.0;
DataSource=d:
\falanpan.mdb"
数据库的路径不同则这里需要修改
Falanpan_Con.OpenSQL
Falanpan_Rec.Open"
csb"
Falanpan_Con,adOpenDynamic,adLockBatchOptimistic
计算打开的数据表中有几条记录
OnErrorResumeNext
Dimcount1AsInteger
count1=0
Falanpan_Rec.MoveFirst
DoWhileNotFalanpan_Rec.EOF
count1=count1+1
Falanpan_Rec.MoveNext
Loop
数据库的指针指向第一条记录
向列表框添加记录
ListBox1.ColumnCount=6
ListBox1.AddItem
ListBox1.List(0,0)="
型号"
ListBox1.List(0,1)="
D"
ListBox1.List(0,2)="
d"
ListBox1.List(0,3)="
K"
ListBox1.List(0,4)="
L"
ListBox1.List(0,5)="
n"
Fori=1Tocount1
ListBox1.AddItemFalanpan_Rec(0)
ListBox1.List(i,0)=Falanpan_Rec
(1)
ListBox1.List(i,1)=Falanpan_Rec
(2)
ListBox1.List(i,2)=Falanpan_Rec(3)
ListBox1.List(i,3)=Falanpan_Rec(4)
ListBox1.List(i,4)=Falanpan_Rec(5)
ListBox1.List(i,5)=Falanpan_Rec(6)
Next
初始选择确定按钮
CommandButton1.SetFocus
默认选择第一条记录
ListBox1.Selected
(1)=True
EndSub
(5)在窗体上双击列表框,编写列表框的点击响应函数,实现选择不同类型法兰盘时,文本框显示数据的改变,如下所示:
PrivateSubListBox1_Click()
点击listbox框的首行,不能绘图
IfListBox1.ListIndex=0Then
CommandButton1.Enabled=False
ExitSub
Else
CommandButton1.Enabled=True
EndIf
Fori=1ToListBox1.ListIndex-1'
首行已经用于显示字段名,所以,下标为1为第一个记录
TxtD.Text=Falanpan_Rec
(2)'
falanpan_rec(0)和
(1)分别为ID号和型号
Txtd2.Text=Falanpan_Rec(3)
TxtK.Text=Falanpan_Rec(4)
TxtL.Text=Falanpan_Rec(5)
Txtn.Text=Falanpan_Rec(6)
Txtth.Text=Falanpan_Rec(7)
Txtp.Text=Falanpan_Rec(8)
Txte.Text=Falanpan_Rec(9)
Txtf.Text=Falanpan_Rec(10)
Txtc.Text=Falanpan_Rec(11)
Txtn2.Text=Falanpan_Rec(12)
Txts0.Text=Falanpan_Rec(13)
Txts1.Text=Falanpan_Rec(14)
Txtxx.Text=Falanpan_Rec(15)
(6)回到窗体界面,双击“确定”按钮,出现代码窗口。
在这个函数中,要分别创建粗实线层、中心线层、剖面线层并设置其颜色、线型和线宽。
在绘图过程中,首先提示输入基点,然后根据点表6-2计算法兰盘右半侧的各点坐标;
接下来调用绘图命令绘制图形。
在绘制过程中,用到了绘制直线命令和镜像命令。
剖面线的绘制要先绘制边界直线,然后在边界直线围成的区域内调用打剖面线命令绘制剖面线。
PrivateSubCommandButton1_Click()'
绘制法兰盘
隐藏窗体,以显示绘图区
Me.Hide
设定粗实线层颜色
DimCSXLayObjAsAcadLayer
SetCSXLayObj=ThisDrawing.Layers.Add("
粗实线层"
)
CSXLayObj.color=acWhite
设定粗实线层的线型
DimentObjAsAcadLineType
Dimfound1AsBoolean
found1=False
ForEachentObjInThisDrawing.Linetypes
IfStrComp(entObj.Name,"
continuous"
1)=0Then
found1=True
ExitFor
如果没有加载粗实线线型,则从线型文件acad.lin中加载
IfNot(found1)Then
ThisDrawing.Linetypes.Load"
"
acad.lin"
CSXLayObj.Linetype="
设定粗实线层的线宽
CSXLayObj.Lineweight=acLnWt030
DimcurrLayerAsAcadLayer'
用于保存当前图层的对象变量
DimnewLayerAsAcadLayer'
保存新当前图层的对象变量
SetcurrLayer=ThisDrawing.ActiveLayer
SetnewLayer=ThisDrawing.Layers("
ThisDrawing.ActiveLayer=newLayer
输入插入点
DiminsertPntAsVariant
OnErrorGoToGetPointWrong
insertPnt=ThisDrawing.Utility.GetPoint(,"
请输入插入点:
计算各点坐标
DimPnt1(0To2)AsDouble
DimxxAsDouble
xx=CDbl(Txtxx.Text)'
CDbl为将文本数据转换成双精度数据函数
Pnt1(0)=insertPnt(0)
Pnt1
(1)=insertPnt
(1)-xx
Pnt1
(2)=insertPnt
(2)'
平面绘图中,Z坐标为0
DimPnt2(0To2)AsDouble
Pnt2(0)=insertPnt(0)+0.5*CDbl(Txtn2.Text)-(CDbl(Txts1.Text)-CDbl(Txts0.Text))
Pnt2
(1)=insertPnt
(1)
Pnt2
(2)=insertPnt
(2)
DimPnt3(0To2)AsDouble
Pnt3(0)=Pnt2(0)
Pnt3
(1)=Pnt2
(1)-(CDbl(Txtxx.Text)-CDbl(Txtc.Text)-CDbl(Txte.Text))/3
Pnt3
(2)=insertPnt
(2)
DimPnt4(0To2)AsDouble
Pnt4(0)=insertPnt(0)+0.5*CDbl(Txtn2.Text)
Pnt4
(1)=insertPnt
(1)-(CDbl(Txtxx.Text)-CDbl(Txtc.Text)-CDbl(Txte.Text))
Pnt4
(2)=insertPnt
(2)
DimPnt5(0To2)AsDouble
Pnt5(0)=Pnt4(0)+(CDbl(TxtD.Text)-CDbl(Txtn2.Text))/2
Pnt5
(1)=Pnt4
(1)
Pnt5
(2)=insertPnt
(2)
DimPnt6(0To2)AsDouble
Pnt6(0)=Pnt5(0)
Pnt6
(1)=Pnt5
(1)-CDbl(Txtc.Text)
Pnt6
(2)=insertPnt
(2)
DimPnt7(0To2)AsDouble
Pnt7(0)=Pnt6(0)-(CDbl(TxtD.Text)-CDbl(Txtd2.Text))/2
Pnt7
(1)=Pnt6
(1)
Pnt7
(2)=insertPnt
(2)
DimPnt8(0To2)AsDouble
Pnt8(0)=Pnt7(0)
Pnt8
(1)=Pnt7
(1)-CDbl(Txte.Text)
Pnt8
(2)=insertPnt
(2)
DimPnt9(0To2)AsDouble
Pnt9(0)=insertPnt(0)+0.5*CDbl(Txtn2.Text)-CDbl(Txts1.Text)
Pnt9
(1)=insertPnt
(1)
Pnt9
(2)=insertPnt
(2)
DimPnt10(0To2)AsDouble
Pnt10(0)=Pnt9(0)
Pnt10
(1)=Pnt9
(1)-CDbl(Txtxx.Text)
Pnt10
(2)=insertPnt
(2)
DimPnt11(0To2)AsDouble
Pnt11(0)=Pnt5(0)-(CDbl(TxtD.Text)-CDbl(TxtK.Text)+CDbl(TxtL.Text))/2
Pnt11
(1)=Pnt5
(1)
Pnt11
(2)=insertPnt
(2)
DimPnt12(0To2)AsDouble
Pnt12(0)=Pnt11(0)
Pnt12
(1)=Pnt11
(1)-CDbl(Txtc.Text)
Pnt12
(2)=insertPnt
(2)
DimPnt13(0To2)AsDouble
Pnt13(0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 课程设计 VBA 参数 编程 方法 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)