SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2182|回复: 11
打印 上一主题 下一主题

求一个得出钣金件厚度的代码

  [复制链接]

1

主题

7

帖子

32

金币

天使

Rank: 2Rank: 2

积分
83

最佳新人

跳转到指定楼层
楼主
 楼主| 发表于 2020-2-27 11:43:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

   经典图书
最近在做一个零件直接转为cad的钣金展开宏文件
其中cad批量展开导出,已经实现

为方便排版人统一厚,现想要把厚度加上

故求一取得钣金厚度的代码

最好有注释
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

0

主题

129

帖子

1672

金币

传奇

Rank: 8Rank: 8

积分
6811

最佳新人活跃会员热心会员宣传达人灌水之王

沙发
发表于 2020-2-28 11:29:35 | 只看该作者
Set swFeat = swModel.FirstFeature
        Do While Not swFeat Is Nothing
            If swFeat.GetTypeName2 = "SMBaseFlange" Then
                Set swBaseFlangeFeatData = swFeat.GetDefinition
                swApp.SendMsgToUser2 "Sheet Metal Feat Name: " & swFeat.Name & "     Thickness: " & swBaseFlangeFeatData.Thickness * 1000 & "mm.", swMessageBoxIcon_e.swMbInformation, swMessageBoxBtn_e.swMbOk
                swApp.SendMsgToUser2 "Thickness: " & swBaseFlangeFeatData.Thickness * 1000 & "mm.", swMessageBoxIcon_e.swMbInformation, swMessageBoxBtn_e.swMbOk

SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

1

主题

10

帖子

249

金币

堂主

Rank: 4

积分
759

最佳新人宣传达人

板凳
发表于 2020-2-29 08:50:35 来自手机 | 只看该作者

   经典图书
通过sheetmetalfeaturedata 接口获取就可以了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

16

帖子

122

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
337

最佳新人宣传达人

地板
发表于 2020-2-29 09:45:55 | 只看该作者
nasyun 发表于 2020-2-29 08:50
通过sheetmetalfeaturedata 接口获取就可以了

从切割清单读取,有关钣金的所有数据都在那
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

129

帖子

1672

金币

传奇

Rank: 8Rank: 8

积分
6811

最佳新人活跃会员热心会员宣传达人灌水之王

5#
发表于 2020-3-3 08:32:13 | 只看该作者

   经典案例图书
本来想说一个更好的方案,楼主在别的地方说解决了,在此贴却不对大家对应的回复,算了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

24

帖子

817

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1222
6#
发表于 2020-3-4 09:56:07 | 只看该作者
很不错,顶一下!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

70

帖子

301

金币

堂主

Rank: 4

积分
911

最佳新人活跃会员热心会员宣传达人

7#
发表于 2020-3-18 23:35:28 来自手机 | 只看该作者

   经典案例图书
能不能分享下钣金展开宏
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

7

帖子

32

金币

天使

Rank: 2Rank: 2

积分
83

最佳新人

8#
 楼主| 发表于 2020-4-14 16:00:45 | 只看该作者
xiabutan 发表于 2020-3-3 08:32
本来想说一个更好的方案,楼主在别的地方说解决了,在此贴却不对大家对应的回复,算了。

不好意思,我是忘了在这里提问过,确实是已经解决了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

7

帖子

32

金币

天使

Rank: 2Rank: 2

积分
83

最佳新人

9#
 楼主| 发表于 2020-4-14 16:02:03 | 只看该作者
981616365 发表于 2020-3-18 23:35
能不能分享下钣金展开宏

今天晚上发出来
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

7

帖子

32

金币

天使

Rank: 2Rank: 2

积分
83

最佳新人

10#
 楼主| 发表于 2020-4-14 16:05:25 | 只看该作者

   经典图书
981616365 发表于 2020-3-18 23:35
能不能分享下钣金展开宏

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


Option Explicit


Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim sModelName As String
Dim sPathName As String
Dim varAlignment As Variant
Dim dataAlignment(11) As Double
Dim varViews As Variant
Dim dataViews(1) As String
Dim options As Long


Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc   
    sModelName = swModel.GetPathName
    sPathName = swModel.GetPathName
    sPathName = Left(sPathName, Len(sPathName) - 6)
    sPathName = sPathName + "dwg"   


    Set swPart = swModel   


    dataAlignment(0) = 0#
    dataAlignment(1) = 0#
    dataAlignment(2) = 0#
    dataAlignment(3) = 1#
    dataAlignment(4) = 0#
    dataAlignment(5) = 0#
    dataAlignment(6) = 0#
    dataAlignment(7) = 1#
    dataAlignment(8) = 0#
    dataAlignment(9) = 0#
    dataAlignment(10) = 0#
    dataAlignment(11) = 1#   


    varAlignment = dataAlignment   


    dataViews(0) = "*Current"
    dataViews(1) = "*Front"   


    varViews = dataViews   


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

End Sub



可以,判断厚度,最好是钣金零件,
Value = Part.ExportFlatPatternView(MyFileNameDXF, swExportFlatPatternOption_None) '保留折弯线
value = Part.ExportFlatPatternView(FilePath, swExportFlatPatternOption_RemoveBends)'去掉折弯线




Option Explicit
Sub thiness0()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swPart As SldWorks.PartDoc
    Dim i As Long
    Dim swFeatMgr As FeatureManager
    Dim swFeat As Feature
    Dim swSheetMetalFol As SheetMetalFolder
    Dim swSheetFeatData As SheetMetalFeatureData
    Dim swBaseFlangeFeatData As BaseFlangeFeatureData
    Dim vSheetMetalFeat As Variant
    Dim ThicknessM As String
    Dim Path As String
    Dim sModelName As String
    Dim sPathName As String
    Dim varAlignment As Variant
    Dim dataAlignment(11) As Double
    Dim options As Long
  
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swFeatMgr = swModel.FeatureManager
    Set swSheetMetalFol = swFeatMgr.GetSheetMetalFolder
  
    If Not swSheetMetalFol Is Nothing Then
        vSheetMetalFeat = swSheetMetalFol.GetSheetMetals
        For i = 0 To UBound(vSheetMetalFeat)
            Set swFeat = vSheetMetalFeat(i)
            If swFeat.GetTypeName2 = "SheetMetal" Then
                Set swSheetFeatData = swFeat.GetDefinition
              Exit For
            End If
        Next i
    Else
        Set swFeat = swModel.FirstFeature
        Do While Not swFeat Is Nothing
            If swFeat.GetTypeName2 = "SMBaseFlange" Then
                Set swBaseFlangeFeatData = swFeat.GetDefinition
                Exit Do
            ElseIf swFeat.GetTypeName2 = "SheetMetal" Then
                Set swSheetFeatData = swFeat.GetDefinition
                Exit Do
            End If
            Set swFeat = swFeat.GetNextFeature
        Loop
    End If
    ThicknessM = swSheetFeatData.Thickness * 1000
   C = ThicknessM
  C = "(T=" & C & "mm)"
msgbox c
End Sub


我运行此楼代码    提示编译错误变量未定义,能否上传  .swp附件  谢谢






只需要在最上面加上
DIM C

我这个c的公共变量在其它模块已经定义
Macro11.zip (9.56 KB, 下载次数: 81)
只需要在最上面加上
DIM C


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


SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

463

帖子

909

金币

传奇

Rank: 8Rank: 8

积分
5099

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

11#
发表于 2020-7-18 15:10:53 | 只看该作者
我试了一下宏,没有展开图,只有弹出一个厚度提示窗,感觉没什么用。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

618

帖子

18

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1870

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

12#
发表于 2024-3-15 18:27:35 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2024-9-29 17:31 , Processed in 0.334293 second(s), 24 queries , Memcache On.

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表