利用参数化绘图,可以将图形尺寸与设计参数相联系,即将图形尺寸看作是"设计参数"的函数。当设计参数发生变化时,图形尺寸也随之发生变化。VB语言是常用的编程语言,具有很好的界面。AuwCAD具有参数化绘图功能,可以与其它程序设计的语言相接,而且其自身有AUTOLISP、ADS、ARS、VBA,开发工具功能强。通过VB语言把AutoCAD中的VBA代码转变为VB代码,以VB作为编译器,AutoCAD作为图形支撑软件,可以使用VB直接调用AutoCAD来实现孔型设计的参数化绘图。孔型设计是型钢、棒线材轧制的核心工艺问题,采用参数化绘图进行孔型设计方便、快捷、准确,具有实用价值。
1 Visual Basic 6.0与AutoCAD2002的连接
1.1 VB与AutoCAD连接方式
VBA是AutoCAD2002的内嵌式语言,它的全称是Visual Basic for Application。VBA是依附于AutoCAD的,所以其与AutoCAD共享内存空间和数据环境。VBA语言结构简单,即可利用AutoCAD主界面操作环境,也可创造自己所需的主界面操作环境。
转化VBA代码为VB代码,首先要引用AumCAD type library。在VB6.0中,选择工程一"引用",然后在"引用"对话框选择AutoCAD2000 type library。下一步,将VBA代码中所有的This&awing替换成一个用户定义的代表当前活动文档的变量,用AutoCAD应用程序(acadApp)和当前文档(acadDoc)定义一个变量,然后设置应用程序变量为当前AutoCAD应用程序。
1.2 VB与AutoCAD的连接
VB与AutoCAD的连接程序代码为
Public acadapp As Object AutoCAD应用程序对象变量
Public preference As Object AutoCAD优先设置对象变量
Public acaddoc As Object AutoCAD文档对象变量
Public paspace As Object AutoCAD图纸空间对象变量
Public mospace As Object AutoCAD模型空间对象变量
Sub init() 与CAD建立连接
On Error Resume Next 如果CAD正在运行,则GetObjeet函数返回对应用程序对象的引用
Set acadapp=C,etObject 变量AcadApp已经定义成全局变量
If Err Then Err.Clear 清除错误
Set acadapp=CreateObjeet 启动AutoCAD,
如果GetObject函数不能创建AutoCAD应用程序对象,则提示不能运行AutoCAD!!!If Err Then MsgBox"不能运行AutoCAD!!!"
Exit Sub 退出本过程
End If 如果成功的引用了AutoCAD应用程序对象则使其界面可见
acadapp.Visible=True
acadapp.Width=Screen.Width
acadapp.Height=Screen.Height
Set preference=acadapp.preference
Set acaddoc=acadapp.ActiveDocument
Set mospace=acaddoc.ModelSpace
Set paspace=acaddoc.PaperSpace
End Sub 结束过程
2参数化绘图
2.1 AutoCAD对象模型
AutoCAD应用程序公开的对象很多,每个对象都代表了AutoCAD应用程序的一部分,图形实体对象如直线line、圆circle等,样式设置对象如线型linetype等,组织结构对象如层layer、块block等。这些对象按照从属关系,有层次地组织在一起,就形成了AutoCAD对象模型。在编制参数化绘图代码前必须建立实体层、中心线层,并设定各层的颜色和线型。
2.2建立图形的几何及数学模型
在参数化绘图过程时,首先确定所选坐标系的原点坐标,这里是(OX,oy)。其次是确定一些特征点的坐标,按照图形的几何关系,根据特征点计算绘图点,绘图点由特征点两边夹角和圆角半径来确定。然后利用AutoCAD的直线、圆弧绘图命令,把这些绘图点连接起来,即可绘出完整的孔型图。以箱形孔型为例来说明参数化绘图的具体过程。孔型设计中首先确定孔型形状和孔型尺寸,然后将孔型配置在轧辊上。已知轧件宽度b,轧件高度h,外角半径rl,内角半径r2,孔型上半部倾斜角删1,孔型下半部倾斜角qxj2,辊缝S等参数。在参数化绘制孔型图的过程中,首先要正确地确定特征点的坐标,一般应根据尺寸的几何关系,建立孔型上所有的特征点的坐标和孔型宽度、高度的关系式。从而实现当轧件尺寸改变时,相应孔型图也随之改变的目的。绘图点由特征点两边夹角和圆角半径来确定。因为箱形孔是按照Y轴对称,所以只画出左面一半的图形,右面一半的图形由左面图形关于Y轴镜像得到。
编制箱形孔参数化绘图的程序如下所示:
Public OX,oy As Double 图形所放位置的相对原点坐标
Dim pnl(0 To 2)As Double 定义l点的坐标为双精度数
Dim pn2(o To 2)As Double 定义2点的坐标为双精度数
.Dim pn3(0 To 2)As Double 定义3点的坐标为双精度数
Dim pntcenl(0 To 2)As Double 过渡弧圆心坐标
Dim Linel As Object '定义l点和2点之间的直线l为对象变量
箱形孔的孔型图
Dim Line2 As Object 定义2点和3点之间的圆弧2为对象变量
Dim linell As Object 定义直线l关于Y轴的对称线段ll为对象变量
Dim Line21 As Object 定义圆弧2 Y轴的对称弧2l为对象变量
Dim lkx As Object 轮廓线
Dim pointl(0 To 2)As Double 镜像点坐标
Dim point2(0 To 2)As Double 镜像点坐标
Dim=obj As AcadLineType 建立实体层
Dim stlayerobj As AcadLayer
Dim curlayerobj As AeadLayer
添加一个实体层
Set sflayembj=acaddoc.Layers.Add("lunkuoxian")
sflayembj.Color=acWhite
stlayembj.Lineweight=acLnWt025
画孔型轮廓线
Set curlayerobj=acaddoc.ActiveLayer 保存当前活动层
acaddoc.ActiveLayer=stlayerobj 设实体层为当前层
Set=obj=acaddoc.Linetypes.Add("continuous")
acaddoc.ActiveLinetype==obj
xxobj.Lineweight=acLnWt025
acaddoc.Regen True
qxjl=7*pi/180:rl=25:r2=18:8=15 qxjl为箱形孔的侧壁斜角
ph1(0)=ox-b/2一rl}Tan((pi/2一q) j1)/2)一20:pnl(1)=oy+s/2:pnl(2)=0
pr2(0) =ox-b(i)/2一rl}Tan((p/2一qxjl)/2):pn2(1)=oy 4-s/2:pn2(2)=0
Set Linel=mospace.AddLine(pnl,pn2)
pntcenl(0)=pn2(0):pntcenl(1)=oy+s(i)/2+rl:pntcenl(2)=0
Set Line2=mospace.AddArc(pntcenl,rl,3/2*pi,2*pi-qxjl)
pointl(0)=OX:pointl(1)=oy一135:pointl(2)=0
point2(0)=OX:point2(1)=oy+118.5:point2(2)=0
Set linell=Linel.Mirror(pointl,point2)
Set Line21=Line2.Mirror(pointl,point2)
图中其它点的坐标也按照上述的方法依次找到,这样就依次画出箱形孔型图的左半部分,通过关于Y轴镜像得到完整的孔型图。采用同样的方法还绘制了使用连铸坯轧制20号角钢的孔型图,见图2所示。
3尺寸标注
尺寸标注是绘图的重要内容,标注对象在图形中属于图形对象,包括几何尺寸、对象之间的距离或者角度、特征点的X和Y坐标值等。采用基于变量设计的参数化尺寸驱动方法,实现图形尺寸与设计参数的联系。
3.1 添加标注层并设定标注层的颜色
Dim bzlayerobj As AcadLayer 添加一标注层用于创建尺寸标注线
Set bzlayerobj=acaddoc.Layers.Add("biaozhu") 设定标注层的颜色
bzlayerobj.Color=acGreen
3.2直线标注和半径标注
(1)直线标注
采用AddDimAligned方法进行标注,这种方法的功能是创建一个对齐尺寸标注对象。其语法格式是:
RetVal(返回值)=object.AddDimAligned(ExtLinel Point,ExtLine2Point,TextPosition)
Object 这个方法适用于模型空间、纸空间、块空间。
xtLinelPoint 要求输入尺寸界限的第一个端点的三维坐标值。
ExtLine2Point 要求输人尺寸界限的第二个端点的三维坐标值。
TextPosition 要求输人文字位置的三维坐标值。
RetVal(返回值)返回对齐式标注的DimAligned对象。
以箱形孑L孔型高度的标注为例来说明此方法的应用。
h1(0)=ox:h1(1)=oy 4-h(i)/2-6.5:hl(2)=0
h2(0)=ox:h2(1)=oy-h(i)/2-6.5:h2(2)=0
text(O)=OX+b(i)/2+30:text(1)=oy:text(2)=0.
Set dimobj=acaddoc.ModelSpace.AddDimAligned(hl,h2,text)
dimobj.ArrowheadSize=4
(2)半径标注
采用采用AddDimRadial方法进行标注,这种方法的功能是在给定位置创建一个半径尺寸标注。其语法格式是:
RetVal(返回值)=object.AddDimRadial(Center,ChordPoint,LeaderLength)
Object 这个方法适用于模型空间、纸空间、块空间。
Center 要求输入圆或弧的中心点三维坐标值。
ChordPoint 要求输入圆或弧上的标注点的三维坐标值。
LeaderLength 要求输入正值,用来设置标注点到标注文字之间的引线的长度。
RetVal(返回值) 返回新创建的半径标注对象。
以箱形孔孔型内角半径的标注为例来说明此方法的应用。,
pntcen2(0)2 pn4(O)+r2*Cos(qxj1):pntcen2(1)=oy+h(i)/2-6.5一r2:pnteen2(2)=0
chordpnt(0)=pn4(O)+r2*Cos(qxj1):chordpnt(1)=oy+h(i)/2-6.5:chordpnt(2)=0
Set radobj=mospaee.AddDimRadial(pntcen2,chordpnt,0)
radobj.Fit=acTextAndArrows
radobj.ArrowheadSize=4
按照上述方法可以标注出孔型中的任何尺寸。
4 结论
通过VB与AutoCAD的连接,以VB作为编译器,以AutoCAD为图形支撑软件,在AutoCAD绘图环境下进行参数化绘图,实现了使用连铸坯轧制棒材和型材的孔型设计,使用方便,界面友好。将VB语言在计算和数据处理上的优点与AutoCAD在图形绘制上的特长有机地结合在一起,为计算机辅助孔型设计提供了一个方便快捷的方法。