④设置中心线和中心符号线
在“文件属性\出详图”中,分别将“延伸线”设置为3.5mm,“中心符号线”设置为3.5mm;将“中心线”复选框选中。
⑤设置其他选项
在“文件属性\出详图\装饰螺纹线”区,选中“高品质”复选框;在“网格线/捕捉”选项卡中,“网格线”选区不选中“虚线”和“自动定比例”,将“主网格间距”设置为10; “线型”选区将“剖面线”的“线粗”选取为正常。
⑥图层的添加
在工具栏上点右键,选中图层工具栏并弹出图层工具栏。点击右侧图层按钮,弹出图层编辑对话框,根据设计需要,设定自己所需的各种图层、线型,线宽以及颜色等。
⑦保存工程图模板
用户可以将刚刚建立的工程图以格式*.drwdot保存为工程图模板并,并命名为自命名文件名,它可以包含图纸格式、预定义视图、用户对文件属性自定义的设置以及系统选项里设定的注释和尺寸样式。以DrawingTemplates(*.drwdot)格式另存,设计模板的存放默认路径在SolidWorks的安装目录SolidWorks\lang\Chinese-simplified\data\Tutorial和 SolidWorks\data\Templates中。也可以“工具\选项\系统选项\文件位置”中设定文件模板的位置[4]。并对“默认模板”进行更新。在设计过程中如无特殊要求,就无需重复修改选项参数,使用自定义模板即可。
3国标工程图的实现
3.1工程视图的表达
生成三视图时,首先应根据零件和绘图比例的大小选择相应的图纸格式,该程序以A2图纸为例进行起重机车轮组轴的国标工程图转化。
相关代码:
Set swDraw = swApp.NewDrawing2(swDwgTemplateA2size, _
"",swDwgPaperA2size,0.594,0.4201)
Set swDrawModel = swDraw
'创建第一视角三视图
Ok= swDrawModel.SetUserPreferenceToggle(swDisplayOrigins,False)
Ok= swDraw.Create1stAngleViews2(Part.GetPathName)
……
对于复杂零件如果三视图不能满足需要,可以采用剖视图函数retval=DrawingDoc.CreateSectionViewAt4(X,Y,Z,SectionLabel,Options,ExcludedComponents)来增加剖视图或局部视图来完整表达图纸。
3.2设置图纸比例
在工程图中需要根据要求进行视图按比例的放大或缩小,在SolidWorks中通过程序来实现[5]。
相关代码:
Set selMgr = swDraw.SelectionManager()
If selMgr.GetSelectedObjectCount <> 1 Then
swApp.SendMsgToUser "请选择工程视图"
Else
'获得选择列表中的第一项
Set swView = selMgr.GetSelectedObject2(1)
currentScale = swView.ScaleDecimal
'给变量x赋值数值型的数据
X = Val(Text4.Text)
newScale = X * currentScale
swView.UseSheetScale = False
swView.ScaleDecimal = newScale
swDraw.EditRebuild
3.3尺寸位置调整
桥式起重机部件结构图纸尺寸,可以发现绝大部分尺寸分布在视图外,视图内部的尺寸分布相对比较少。针对工程图的这种特点,将视图的尺寸分为内部尺寸和外部尺寸。由于内部尺寸比较少,我们主要对视图的外部尺寸进行程序调整。
外部尺寸包括线性尺寸和角度尺寸,一般情况下,外部的线性尺寸分布是有层次性的,根据此特性设定尺寸的层,SolidWorks工程图里面的每个图形都有SolidWorks默认的矩形区域,即为图形的最大包络框,如下图所示,从视图的最大包络框为0层开始向外递增。这样,除了角度尺寸之外,所有的外部线性尺寸都可以归类为不同的层,再设置层与层之间的距离,因此只要确定第0层的尺寸位置,其它层的位置就可以依次递加。
尺寸位置调整原理是基于尺寸层的,在尺寸标注的时候,将所有外部尺寸将归入如图3的各个尺寸层,在调整的时候,首先通过遍历获得各层的尺寸,然后在程序中设置每一层尺寸的外边界的距离,这样每一层的尺寸就对齐了[6][7]。
图3工程图图层层次
相关代码:
'获得视图中心
Set swView = swDraw.GetFirstView
Do While Not swView Is Nothing
vOutline = swView.GetOutline
vPos = swView.PositionSet Swasm = SwApp.OpenDoc(SLDASM, 2)
……
'遍历获得每层的尺寸
Do While Not swDispDim Is Nothing
Set swAnn = swDispDim.GetAnnotation
Set swDim = swDispDim.GetDimension
Set swDispDim = swDispDim.GetNext3
Loop
Set swView = swView.GetNextView
Loop
bRet = swAnn.SetPosition(X_pos, Y_pos, Z_pos)
……
3.4注释位置调整
在工程图指定位置可以自动添加符合企业标准的常用的粗糙度符号、形位公差符号、基准代号、注释等内容。我们可以将常用注释提前制成块,放在指定位置,程序调用就可,或采用修改符号库的方法(即在库中直接增加需调用的符号)解决这个问题。如:焊接符号的添加方法: 打开SolidWorks符号库定义位置:lang\chinese_simplified\gtol.sym纯文本文件,有五种绘图的基本命令:直线LINE(x1,y1,x2,y2),圆CIRCLE(x,y,r),圆弧ARC(x,y,r,a1,a2),文字TEXT(x1,y1,x2,y2,t),填充三角(x1,y1,x2,y2,x3,y3),所有(x,y)取值范围为(0,1)。软件中已有的各种符号正是通过以上5种命令绘制出来的。用户只要遵守以上规则,就可自己建立各种自定义符号。
相关代码:
……
boolstatus = swModel.Extension.SelectByID("", "EDGE", 0, 0, 0, False, 0, Nothing)
boolstatus = swModel.InsertSurfaceFinishSymbol2(1, 0, 0, 0, 0, 0, 1, "", "", "", "", "2.6", "", "")
……
3.5企业专用BOM表的写入 程序控制明细栏生成与调整过程中具体调用的函数类型及使用方法描述如下:BOMTable对象是SolidworksAPI提供的指向明细栏的对象,它是view对象的下一级对象,通过ModelDoc2对象的下一级对象selectionMgr对象的Getselectedobject5方法获得指向需要建立明细栏的视图的view对象,同时通过view对象InsertBomTable2方法就可以实现程序建立明细栏,在明细栏建立之后通过view对象的Get2BomTable方法可以获得指向明细栏的指针,得到指向BOMtable对象的指针后,就可以操作明细栏的属性[8]。 在建立明细栏获得指向BOMTable对象指针后,通过BOMTable对象的BomFeature方法可以获得指向BomFeature对象的指针,通过Bom2feature对象的Configuration/TableType/Keep2missingItems等属性和方法就可以对明细栏的模版、类型、是否保持丢失项目以及起始序号等属性进行获取和设置,明细栏出现空白行的情况可以通过BomFeature对象的Get2TableAnnotations方法获取指向TableAnnotation对象的指针,通过TableAnnotation对象的DeleteRow方法就可以删除空白的行,通过TableAnnotation的Text属性可以实现零件数量的更新。相关代码: