(山西焦煤汾西矿业(集团)有限责任公司高阳煤矿)
摘要:本文首先推导出两圆柱面在空间中相交的相贯线展开方程,然后使用AutoCAD中VBA功能绘制高精度的相贯线展开曲线,将相贯线的展开方程与计算机绘图技术结合,探索一种快速获取高精度相贯线展开曲线的方法。
关键词:管道加工;相贯线展开;
一、相贯线方程的推导。
如图1所示,OO′是半径为r和半径为r′的两圆柱面轴线的公垂线段,其中OO′=e,r>r′+e,z轴与大圆柱面的轴线重合,z′轴与小圆柱面的轴线重合,z轴与z′间的夹角为α,y轴y′轴经过OO′。
式中θ的含义为:从z′轴正向向负方向看,逆时针方向为正,起点为x′轴的正半轴。
假设空间中任意点A在坐标系O-xyz和坐标系O′-x′y′z′中的坐标分别为(x,y,z)和(x′,y′,z′),则它们之间的关系为:
式中θ的含义与(2)式中θ的含义相同。
二、使用AutoCadVBA功能自动获取相贯线展开曲线
AutoCAD中内置的VBA工具能够使用户绘制较高精度的图纸,在对图纸精度有着较高要求的场合具有重要作用。下面介绍如何利用VBA工具绘制空间圆柱面相贯线展开曲线。
本实例使用AutoCad2004
第1步:在模型空间按快捷键Alt+F8,出现宏窗口
第2步:在宏名称中填写yangtiao,点“创建”、“确定”
第3步:在Subyangtiao()和EndSub之间输入下面的代码。
第4步:回到模型空间,再次按Alt+F8,点击“运行”,根据脚本提示,输入相应数据即可获取相贯线的展开曲线。
通过以上脚本可以获取下面的实验结果
三、结论。
(1)可以通过计算机软件编制圆柱面相贯线展开程序,快速、准确地得到相贯线展开曲线。
(2)展开软件得到结果迅速精确,可用于指导加工、下料等生产实践,提升工作效率,提高加工质量。
附代码:
Subyangtiao()
DimRAsDouble,rrAsDouble,eAsDouble,alfaAsDouble,PIAsDouble
PI=3.1415926
'---------------------------输入圆柱直径,轴线距离等数据-------------------------------------------
inputError:
R=InputBox("大圆柱面直径","初始数据输入",100)/2
rr=InputBox("小圆柱面直径","初始数据输入",80)/2
e=InputBox("轴线距离","初始数据输入",0)
IfR<rr+eThen
MsgBox"R应大于rr+e!"
GoToinputError
EndIf
'---------------------------输入两圆柱面轴线夹角-------------------------------------------
alfaError:
alfa=InputBox("轴线夹角(>0,<=90)","初始数据输入",90)
Ifalfa>90Oralfa<0Then
MsgBox"角度输入错误,请输入大于0小于或等于90度的数值"
GoToalfaError
EndIf
alfa=alfa/180*PI'角度值转换成弧度值
'---------------------------将相贯线分割成若干段小直线,循环画线-------------------------------------------
DimStartPoint(0To2)AsDouble,EndPoint(0To2)AsDouble
DimJingDuAsDouble'定义曲线绘制精度
JingDu=InputBox("请输入曲线精度(>0,<=0.1)","初始数据输入",0.01)
Fori=0#ToPI*2StepJingDu
EndPoint(0)=i*rr'获取横坐标
EndPoint(1)=(1/Sin(alfa))*(Sqr((R*R)-(rr*Sin(i)+e)^2))-(1/Sin(alfa))*rr*Cos(i)*Cos(alfa)
'获取纵坐标
Ifi>0#ThenThisDrawing.ModelSpace.AddLineStartPoint,EndPoint'从第二个循环点开始绘制小线段。
StartPoint(0)=EndPoint(0)'保存坐标点横坐标
StartPoint(1)=EndPoint(1)'保存坐标点纵坐标
Nexti
'---------------------------绘制最后一个点-------------------------------------------
i=PI*2
EndPoint(0)=i*rr'获取横坐标
EndPoint(1)=(1/Sin(alfa))*(Sqr((R*R)-(rr*Sin(i)+e)^2))-(1/Sin(alfa))*rr*Cos(i)*Cos(alfa)
ThisDrawing.ModelSpace.AddLineStartPoint,EndPoint
ZoomAll'调整视图
MsgBox"相贯线绘制完成。"'绘制结束后提示。
EndSub