汽车行业玻璃升降器百线图的建立教程百格线.docx
《汽车行业玻璃升降器百线图的建立教程百格线.docx》由会员分享,可在线阅读,更多相关《汽车行业玻璃升降器百线图的建立教程百格线.docx(14页珍藏版)》请在冰豆网上搜索。
汽车行业玻璃升降器百线图的建立教程百格线
汽车行业CATIA百线图的构造
汽车中百位线的作用是能够快速得知汽车各部分零件相对于汽车坐标系的位置(如图所示)。
在车身质量控制,人机工程等方面相当重要。
这一用途同样适用于模具及其它行业,比如汽车玻璃升降器中百线图的设计(如图所示)。
对于这样的百位线图用AUTOCAD软件进行设计的工程师一般都通过一步一步画直线,阵列,画圆来实现。
当然用CATIA软件进行三维模型设计,然后投影成工程图,也可以用如上的方法一步一步画出百位线,但这样工作效率非常低。
因此网上很多朋友就询问有没有比较好的方法自动生成百位线。
那么我在这介绍两种种CATIA软件自动生成百位线的方法,这两种方法在CATIAV5R16以上的环境下测试过都没有问题。
首先在装配体里面新建零件,在为新零件建立新原点时选择否,新建的三个坐标平面就是整个汽车的坐标平面,这样整个车的坐标系就出来了,如下图所示
进入CATIA工程制图界面,新建空白文件进入工程图纸页面,然后投影主视图,但要注意工程图纸选择投影品面时要选择新建零件的坐标平面,也就是坐标原点所在的平面(这个很重要)。
投影完成后在投影图的左下角和右上角分别建立两点,着两点的位置所做的矩形能够将整个图纸包含即可,然后选择工具——宏(或Alt+F8)点击宏库——目录——添加现有库——找到宏所在的文件夹,然后选择宏点击运行,如下图所示
确定百线格为100,如下图所示
确定后点击左下角的点,再确定后点击右上角的点,完成后白线图就生成了,如下图所示:
Catia百格线生成宏
你是否为在Catia做2D图纸的时候,画百格线而伤脑筋呢?
别担心,接下来我告诉你一个简单的方法
1.新建一个txt文本文档,比如Draw-Grid.txt
2.把以下内容复制到Draw-Grid.txt中
=========这里开始,不要复制我=======
OptionExplicit
'***********************************************************************
' Purpose:
ThismacroallowsyoutocreateGridlineinCATIAdrawing
' Author:
chenqa
' Languages:
VBScript
' Locales:
English
' DevelopingCATIALevel:
V5R12
' Viewmushparalleltosystemaixes,viewangle0deg,90degand-90deg
'***********************************************************************
SubCATMain()
CATIA.RefreshDisplay=False
DimsStatusAsString
'SettheCATIApopupfilealertstoFalse
'Itpreventstostopthemacroateachalertduringitsexecution
CATIA.DisplayFileAlerts=False
'Optional:
allowstofindthesamplewhereverit'sinstalled
'Variablesdeclaration
DimoDrwDocumentAsDrawingDocument
DimoDrwSheetsAsDrawingSheets
DimoDrwSheetAsDrawingSheet
DimoDrwViewAsDrawingView
DimoFactory2DASFactory2D
'TheDistancebetweenthelines
DimDAsInteger
DimnxAsInteger
DimnyAsInteger
'ThepointcoordinateselectfromDrawing
DimX1AsInteger
DimY1AsInteger
DimX2AsInteger
DimY2AsInteger
DimPt1AsPoint2D
DimPt2AsPoint2D
'TheviewscaledAngleforrotateviewscaleforviewscale
DimdScale,dAngleAsDouble
'Theviewcoordinateorigin
DimXAsInt
DimYAsInt
DimxSel AsINFITF.Selection
D=InputBox("PleaseInputtheDistanceValue","inputbox","100")
D=Cint(D)
'Retriveanewdrawingdocument
SetoDrwDocument=CATIA.ActiveDocument
'Retrievethedrawingdocument'ssheetscollection
SetoDrwSheets=oDrwDocument.Sheets
'Retrievetheactivesheet
SetoDrwSheet=oDrwSheets.ActiveSheet
'Retrievetheactiveviewofthesheet
SetoDrwView=oDrwSheet.Views.ActiveView
'Retrivethevalueoftheview
X=oDrwView.xAxisData
Y=oDrwView.yAxisData
dScale=oDrwView.Scale
dAngle=oDrwView.Angle
SetoFactory2D=oDrwView.Factory2D
'Getthecoordinatefromtheselecttwopoint
'OnErrorResumeNext
SetxSel=CATIA.ActiveDocument.Selection
xSel.clear
ReDimsFilter(0)
sFilter(0)="Point2D"
MsgBox"Pleaseselecttheleft-bottompoint"
sStatus=xSel.SelectElement2(sFilter,"SelectFirstPoint.",false)
If(sStatus="Normal")Then
DimSelectedPoint1AsSelectedElement
SetSelectedPoint1=xSel.Item
(1)
Dimpt1Coord
(2)AsInt
SelectedPoint1.GetCoordinates(pt1Coord)
'MsgBox"Thefrstpointhasbeenselected"
ElseMsgBox"Selecta2DPoint1"
ExitSub
EndIf
MsgBox"Pleaseselecttheritht-toppoint"
sStatus=xSel.SelectElement2(sFilter,"SelectTheSecondPoint.",false)
If(sStatus="Normal")Then
DimSelectedPoint2AsSelectedElement
SetSelectedPoint2=xSel.Item
(1)
Dimpt2Coord
(2)AsInt
SelectedPoint2.GetCoordinates(pt2Coord)
'MsgBox"Thesecondpointhasbeenselected"
ElseMsgBox"Selecta2Dpoint1"
ExitSub
EndIf
ifdAngle=0then
X1=Cint((pt1Coord(0)-X)/dScale)
Y1=Cint((pt1Coord
(1)-Y)/dScale)
X2=Cint((pt2Coord(0)-X)/dScale)
Y2=Cint((pt2Coord
(1)-Y)/dScale)
endif
'MsgBox(pt1Coord(0))
'MsgBoxX
ifdAngle>0then
X1=Cint((pt1Coord
(1)-Y)/dScale)
Y1=Cint((pt1Coord(0)-X)/dScale)
X2=Cint((pt2Coord
(1)-Y)/dScale)
Y2=Cint((pt2Coord(0)-X)/dScale)
endif
ifdAngle<0then
X1=Cint((pt1Coord
(1)-Y)/dScale)
Y1=Cint((pt1Coord(0)-X)/dScale)
X2=Cint((pt2Coord
(1)-Y)/dScale)
Y2=Cint((pt2Coord(0)-X)/dScale)
endif
X1=D*Cint(X1/D)
Y1=D*Cint(Y1/D)
X2=D*Cint(X2/D)
Y2=D*Cint(Y2/D)
nx=(X2-X1)\D'Thenumberofthehorizontalline
ny=(Y2-Y1)\D'Thenumberoftheverticalline
DimLine2D1AsLine2D
DimCircle2D1asCircle2D
DimMyTextasDrawingText
DimiFontsizeasDouble
DimiAsInt
DimjAsInt
DimRAsDoubel'theradiusofthecircle
iFontSize=3.5
R=8
R=R/dScale
'------------------------------------------------------
DimDi_H,Di_Vasint
DimText_XYZ_Hasstring
DimText_XYZ_Vasstring
Di_H=1
Di_V=1
'ComparethedrawingviewHVwith3DAixes
DimXX1,YY1,ZZ1,XX2,YY2,ZZ2asint
oDrwView.GenerativeBehavior.GetProjectionPlaneXX1,YY1,ZZ1,XX2,YY2,ZZ2
if(XX1=1)then
Text_XYZ_H="X"
Endif
if(XX1=-1)then
Text_XYZ_H="X"
Di_H=-1
Endif
if(YY1=1)then
Text_XYZ_H="Y"
Endif
if(YY1=-1)then
Text_XYZ_H="Y"
Di_H=-1
Endif
if(ZZ1=1)then
Text_XYZ_H="Z"
Endif
if(ZZ1=-1)then
Text_XYZ_H="Z"
Di_H=-1
Endif
if(XX2=1)then
Text_XYZ_V="X"
Endif
if(XX2=-1)then
Text_XYZ_V="X"
Di_V=-1
Endif
if(YY2=1)then
Text_XYZ_V="Y"
Endif
if(YY2=-1)then
Text_XYZ_V="Y"
Di_V=-1
Endif
if(ZZ2=1)then
Text_XYZ_V="Z"
Endif
if(ZZ2=-1)then
Text_XYZ_V="Z"
Di_V=-1
Endif
ifdAngle>0then
Di_V=-Di_V
endif
ifdAngle<0then
Di_H=-Di_H
endif
DimoSelasSelection
DimoVisPropsasVisPropertySet
setoSel=oDrwDocument.Selection
oSel.Clear
DimTextVAsint
TextV=R/2
'Drawthehorizontallline
fori=0TOny
ifdAngle=0then
setLine2D1=oFactory2D.CreateLine(X1-D/3,Y1+D*i,X1+nx*D+D/3,Y1+D*i)
oSel.AddLine2D1
setCircle2D1=oFactory2D.CreateClosedCircle(X1-D/3-R,Y1+D*i,R)
oSel.AddCircle2D1
setLine2D1=oFactory2D.CreateLine(X1-D/3-R*2,Y1+D*i,X1-D/3,Y1+D*i)
oSel.AddLine2D1
SetMyText=oDrwView.Texts.Add(Text_XYZ_V,X1-D/3-R,Y1+D*i+TextV)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
SetMyText=oDrwView.Texts.Add((Y1+D*i)*Di_V,X1-D/3-R,Y1+D*i-TextV)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
endif
ifdAngle>0then
setLine2D1=oFactory2D.CreateLine(X1-D/3,-Y1-D*i,X1+nx*D+D/3,-Y1-D*i)
oSel.AddLine2D1
setCircle2D1=oFactory2D.CreateClosedCircle(X1+nx*D+D/3+R,-Y1-D*i,R)
oSel.AddCircle2D1
setLine2D1=oFactory2D.CreateLine(X1+nx*D+D/3+R,-Y1-D*i+R,X1+nx*D+D/3+R,-Y1-D*i-R)
oSel.AddLine2D1
SetMyText=oDrwView.Texts.Add(Text_XYZ_V,X1+nx*D+D/3+R+TextV,-Y1-D*i)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
SetMyText=oDrwView.Texts.Add((Y1+D*i)*Di_V,X1+nx*D+D/3+R-TextV,-Y1-D*i)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
endif
ifdAngle<0then
setLine2D1=oFactory2D.CreateLine(-X1+D/3,Y1+D*i,-(X1+nx*D+D/3),Y1+D*i)
oSel.AddLine2D1
setCircle2D1=oFactory2D.CreateClosedCircle(-(X1+nx*D+D/3)-R,Y1+D*i,R)
oSel.AddCircle2D1
setLine2D1=oFactory2D.CreateLine(-X1-nx*D-D/3-R,Y1+D*i+R,-X1-nx*D-D/3-R,Y1+D*i-R)
oSel.AddLine2D1
SetMyText=oDrwView.Texts.Add(Text_XYZ_V,-X1-nx*D-D/3-R+TextV,Y1+D*i)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
SetMyText=oDrwView.Texts.Add((Y1+D*i)*Di_V,-X1-nx*D-D/3-R-TextV,Y1+D*i)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
endif
next
'Drawtheverticalline
forj=0TOnx
ifdAngle=0then
setLine2D1=oFactory2D.CreateLine(X1+D*j,Y1-D/3,X1+D*j,Y1+ny*D+D/3)
oSel.AddLine2D1
setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,Y1+ny*D+D/3+R,R)
oSel.AddCircle2D1
setLine2D1=oFactory2D.CreateLine(X1+D*j-R,y1+ny*D+D/3+R,X1+D*J+R,y1+ny*D+D/3+R)
oSel.AddLine2D1
SetMyText=oDrwView.Texts.Add(Text_XYZ_H,X1+D*j,Y1+ny*D+D/3+R+TextV)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
SetMyText=oDrwView.Texts.Add((X1+D*j)*Di_H,X1+D*j,y1+ny*D+D/3+R-TextV)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize0,0,iFontSize
endif
ifdAngle>0then
setLine2D1=oFactory2D.CreateLine(X1+D*j,-Y1+D/3,X1+D*j,-Y1-ny*D-D/3)
oSel.AddLine2D1
setCircle2D1=oFactory2D.CreateClosedCircle(X1+D*j,-Y1+D/3+R,R)
oSel.AddCircle2D1
setLine2D1=oFactory2D.CreateLine(X1+D*j,-Y1+D/3+R*2,X1+D*J,-Y1+D/3)
oSel.AddLine2D1
SetMyText=oDrwView.Texts.Add(Text_XYZ_H,X1+D*j+TextV,-Y1+D/3+R)
MyText.AnchorPosition=catMiddleCenter
MyText.SetFontSize