iCAx开思网

标题: solidworks零件批量导出CAD展开图宏文件 [打印本页]

作者: 735057167    时间: 2020-2-24 16:30
标题: solidworks零件批量导出CAD展开图宏文件
本帖最后由 735057167 于 2020-2-29 23:26 编辑

求可以直接通过零件转为cad的展开图宏,
不需要转为工程图

最好可以标识厚度

作者: yx1991    时间: 2020-2-26 10:54
可以,判断厚度,最好是钣金零件,
Value = Part.ExportFlatPatternView(MyFileNameDXF, swExportFlatPatternOption_None) '保留折弯线
value = Part.ExportFlatPatternView(FilePath, swExportFlatPatternOption_RemoveBends)'去掉折弯线

作者: 735057167    时间: 2020-2-26 17:05
本帖最后由 735057167 于 2020-2-26 17:07 编辑

有转cad代码就够了
作者: 735057167    时间: 2020-2-26 17:06
yx1991 发表于 2020-2-26 10:54
可以,判断厚度,最好是钣金零件,
Value = Part.ExportFlatPatternView(MyFileNameDXF, swExportFlatPatt ...

判断厚度的代码我有了,就差零件自动转为cad的代码

作者: wenmk    时间: 2020-2-26 21:46
735057167 发表于 2020-2-26 17:06
判断厚度的代码我有了,就差零件自动转为cad的代码

以下代码为API VBA源码,在下部倒数第二个参数是钣金输出选项,参见API帮助。以下代码略加修改可以做成批量处理工具。我用VB.NET写的代码给你应该没什么用如下图。
[attach]1270551[/attach]

VBA代码:
  1. Option Explicit

  2. Dim swApp As SldWorks.SldWorks
  3. Dim swModel As SldWorks.ModelDoc2
  4. Dim swPart As SldWorks.PartDoc
  5. Dim sModelName As String
  6. Dim sPathName As String
  7. Dim varAlignment As Variant
  8. Dim dataAlignment(11) As Double
  9. Dim varViews As Variant
  10. Dim dataViews(1) As String
  11. Dim options As Long

  12. Sub main()
  13.     Set swApp = Application.SldWorks
  14.     Set swModel = swApp.ActiveDoc   
  15.     sModelName = swModel.GetPathName
  16.     sPathName = swModel.GetPathName
  17.     sPathName = Left(sPathName, Len(sPathName) - 6)
  18.     sPathName = sPathName + "dwg"   

  19.     Set swPart = swModel   

  20.     dataAlignment(0) = 0#
  21.     dataAlignment(1) = 0#
  22.     dataAlignment(2) = 0#
  23.     dataAlignment(3) = 1#
  24.     dataAlignment(4) = 0#
  25.     dataAlignment(5) = 0#
  26.     dataAlignment(6) = 0#
  27.     dataAlignment(7) = 1#
  28.     dataAlignment(8) = 0#
  29.     dataAlignment(9) = 0#
  30.     dataAlignment(10) = 0#
  31.     dataAlignment(11) = 1#   

  32.     varAlignment = dataAlignment   

  33.     dataViews(0) = "*Current"
  34.     dataViews(1) = "*Front"   

  35.     varViews = dataViews   

  36.     'Export each annotation view to a separate drawing file
  37.     swPart.ExportToDWG2 sPathName, sModelName, swExportToDWG_ExportAnnotationViews, False, varAlignment, False, False, 0, varViews
  38.    
  39.     'Export sheet metal to a single drawing file
  40.     options = 1   'include flat-pattern geometry
  41.     swPart.ExportToDWG2 sPathName, sModelName, swExportToDWG_ExportSheetMetal, True, varAlignment, False, False, options, Null

  42. End Sub
复制代码



作者: 735057167    时间: 2020-2-26 23:06
wenmk 发表于 2020-2-26 21:46
以下代码为API VBA源码,在下部倒数第二个参数是钣金输出选项,参见API帮助。以下代码略加修改可以做成批 ...

这个可以,谢谢

作者: 735057167    时间: 2020-2-27 11:47
yx1991 发表于 2020-2-26 10:54
可以,判断厚度,最好是钣金零件,
Value = Part.ExportFlatPatternView(MyFileNameDXF, swExportFlatPatt ...

这个代码知道怎么用,直接加上会出错

作者: yx1991    时间: 2020-2-27 13:27
735057167 发表于 2020-2-27 11:47
这个代码知道怎么用,直接加上会出错

哪里出错,可以说出来我们讨论下,楼上发的那个代码适合选择面然后输出CAD格式那样会好点

作者: 735057167    时间: 2020-2-29 23:26
yx1991 发表于 2020-2-27 13:27
哪里出错,可以说出来我们讨论下,楼上发的那个代码适合选择面然后输出CAD格式那样会好点

已经解决了取得厚度代码附
  1. Option Explicit
  2. Sub thiness0()
  3.     Dim swApp As SldWorks.SldWorks
  4.     Dim swModel As SldWorks.ModelDoc2
  5.     Dim swPart As SldWorks.PartDoc
  6.     Dim i As Long
  7.     Dim swFeatMgr As FeatureManager
  8.     Dim swFeat As Feature
  9.     Dim swSheetMetalFol As SheetMetalFolder
  10.     Dim swSheetFeatData As SheetMetalFeatureData
  11.     Dim swBaseFlangeFeatData As BaseFlangeFeatureData
  12.     Dim vSheetMetalFeat As Variant
  13.     Dim ThicknessM As String
  14.     Dim Path As String
  15.     Dim sModelName As String
  16.     Dim sPathName As String
  17.     Dim varAlignment As Variant
  18.     Dim dataAlignment(11) As Double
  19.     Dim options As Long
  20.   
  21.     Set swApp = Application.SldWorks
  22.     Set swModel = swApp.ActiveDoc
  23.     Set swFeatMgr = swModel.FeatureManager
  24.     Set swSheetMetalFol = swFeatMgr.GetSheetMetalFolder
  25.   
  26.     If Not swSheetMetalFol Is Nothing Then
  27.         vSheetMetalFeat = swSheetMetalFol.GetSheetMetals
  28.         For i = 0 To UBound(vSheetMetalFeat)
  29.             Set swFeat = vSheetMetalFeat(i)
  30.             If swFeat.GetTypeName2 = "SheetMetal" Then
  31.                 Set swSheetFeatData = swFeat.GetDefinition
  32.               Exit For
  33.             End If
  34.         Next i
  35.     Else
  36.         Set swFeat = swModel.FirstFeature
  37.         Do While Not swFeat Is Nothing
  38.             If swFeat.GetTypeName2 = "SMBaseFlange" Then
  39.                 Set swBaseFlangeFeatData = swFeat.GetDefinition
  40.                 Exit Do
  41.             ElseIf swFeat.GetTypeName2 = "SheetMetal" Then
  42.                 Set swSheetFeatData = swFeat.GetDefinition
  43.                 Exit Do
  44.             End If
  45.             Set swFeat = swFeat.GetNextFeature
  46.         Loop
  47.     End If
  48.     ThicknessM = swSheetFeatData.Thickness * 1000
  49.    C = ThicknessM
  50.   C = "(T=" & C & "mm)"
  51. msgbox c
  52. End Sub
复制代码


作者: vip0537    时间: 2020-3-2 13:07
735057167 发表于 2020-2-29 23:26
已经解决了取得厚度代码附

我运行此楼代码    提示编译错误变量未定义,能否上传  .swp附件  谢谢
作者: xiabulai    时间: 2020-3-3 08:25
735057167 发表于 2020-2-29 23:26
已经解决了取得厚度代码附

是不是该跟工程师论坛上回复你代码的回复一句谢谢呢?

作者: xiabulai    时间: 2020-3-3 08:25
735057167 发表于 2020-2-29 23:26
已经解决了取得厚度代码附

是不是该跟工程师论坛上回复你代码的回复一句谢谢呢?

作者: 735057167    时间: 2020-3-6 17:53
xiabulai 发表于 2020-3-3 08:25
是不是该跟工程师论坛上回复你代码的回复一句谢谢呢?

当然应该,感谢所有回复我的人

作者: 735057167    时间: 2020-3-6 17:56
vip0537 发表于 2020-3-2 13:07
我运行此楼代码    提示编译错误变量未定义,能否上传  .swp附件  谢谢

       只需要在最上面加上
DIM C

我这个c的公共变量在其它模块已经定义


作者: vip0537    时间: 2020-3-7 09:14
735057167 发表于 2020-3-6 17:56
只需要在最上面加上
DIM C

还是报错,

作者: 735057167    时间: 2020-3-8 22:31
vip0537 发表于 2020-3-7 09:14
还是报错,

你看一下引那里有没有丢失的
零件要求是钣金件

作者: yanguo521    时间: 2020-3-17 07:25
学习了    感谢分享
作者: 1066236582    时间: 2021-4-16 16:37
wenmk 发表于 2020-2-26 21:46
以下代码为API VBA源码,在下部倒数第二个参数是钣金输出选项,参见API帮助。以下代码略加修改可以做成批 ...

感谢分享

作者: z460515477    时间: 2021-11-9 19:15
小白求教,输出展开dxf,文件名带厚度的完整宏可以发一下吗
作者: 13717174595    时间: 2021-11-10 08:22
为什么我只显示厚度,找不到输出的CAD图纸呢
作者: zctao1966    时间: 2022-4-12 22:38
感谢分享!学习了




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3