|
不想总是点另存为,在选择文件类型的方式来另存文件,于是就按照论坛大神的方法编了一个VBA程序做成按钮……
如果当前文件是工程图存成DXF文件,零件存成IGS文件,装配体则弹窗询问是否要输出文件。
代码有点乱,都是跟论坛大神学习的。
代码如下:
- Dim swApp As Object
- Dim longstatus As Long, longwarnings As Long
- Sub main()
- Set swApp = Application.SldWorks
- Set swModel = swApp.ActiveDoc
- Set Part = swModel
- Set Part = swApp.ActiveDoc
- '判断是否打开零件体
- If swModel Is Nothing Then
- MsgBox "没有打开文档!", 0 + 16 + 65536, "错误"
- Exit Sub
- End If
- '判定当前活动文件是否是零件并赋相应扩展名变量值
- If (Part.GetType = swDocPART) Then
- g = "igs" '零件模式设定输出扩展名为igs,不包含"."
- ElseIf Part.GetType = swDocDRAWING Then
- g = "dxf" '图纸模式设定输出扩展名为dxf,不包含"."
- ElseIf Part.GetType = swDocASSEMBLY Then
- Msgr = MsgBox("当前为装配体,是否确定要将装配体输出文件?", 4 + 64 + 65536, "注意")
- If Msgr = 6 Then
- g = "igs" '设定输出扩展名为igs,不包含"."
- Else
- Exit Sub
- End If
- End If
- boolstatus = Part.EditRebuild3() '刷新模型
- Set swApp = Application.SldWorks
- Set Part = swApp.ActiveDoc
- Set SelMgr = Part.SelectionManager
- swApp.ActiveDoc.ActiveView.FrameState = 1
- '设定变量
- a = swApp.ActiveDoc.GetTitle() '零件名Part.GetPathName
- b = Part.GetPathName() '当前活动模型的完整路径和完整文件名
- c = Right(a, 7) '文件名消除扩展名
- d = Left(b, InStrRev(b, "")) '完整路径消除文件名
- e = Left(a, InStrRev(a, ".")) '消除文件名中的扩展名
- f = Chr(46) & "sldprt" '设定扩展名,不包含"."
- h = Left(b, InStrRev(b, ".")) '完整路径移除扩展名
- If (b = "") Then
- MsgBox "当前文件还未保存," & vbCrLf & "保存文件后继续执行!", 0 + 16 + 65536, "错误"
- Exit Sub
- End If
- PName = h & g
- longstatus = Part.SaveAs3(PName, 0, 0)
- MsgBox "输出文件:" & PName, 0 + 64 + 65536, "成功"
- End Sub
复制代码 用了一段时间,基本没有问题。
但是还有两个问题困扰我,能解决了就完美啦。
如下图
1.当前目录有同名文件会弹窗问你是否要替换,能默认选择是就好了……
2.工程图出现有多个比例的视图时也会弹窗提醒,其实也默认确定就好了。
有这个需求的朋友可以直接复制代码,保存成Swp文件后添加到Solidworks工具栏就ok了。
有解决办法的大神,麻烦指点下,万分感谢……
|
|