首页 > 其他分享 >solidworks列出单个文件的焊接清单

solidworks列出单个文件的焊接清单

时间:2023-05-26 17:45:01浏览次数:46  
标签:Dim cutLists End String solidworks Set SldWorks 清单 焊接

solidworks首先打开一个零件,然后运行此宏,此宏将焊接清单信息打印到立即窗口:

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()

    Set swApp = Application.SldWorks
    
    Dim swModel As SldWorks.ModelDoc2
    Set swModel = swApp.ActiveDoc
    
    If swModel.GetType() = swDocumentTypes_e.swDocPART Then
        Dim vCutLists As Variant
        vCutLists = GetCutLists(swModel)
        Debug.Print swModel.GetPathName
        ColorizeCutLists vCutLists
    Else
        Err.Raise vbError, "", "Only part document is supported"
    End If
    
End Sub


Sub ColorizeCutLists(vCutLists As Variant)
    
    Dim i As Integer
    
    For i = 0 To UBound(vCutLists)
        
        Dim swCutList As SldWorks.Feature
        Set swCutList = vCutLists(i)
        Dim swCutListPrpMgr As SldWorks.CustomPropertyManager
        Set swCutListPrpMgr = swCutList.CustomPropertyManager
        Dim outp As String
        outp = GetCutListItemString(swCutListPrpMgr)
        Debug.Print outp
    Next
    
End Sub

Function GetCutLists(model As SldWorks.ModelDoc2) As Variant
    Dim swFeat As SldWorks.Feature
    Dim swCutLists() As SldWorks.Feature
    Set swFeat = model.FirstFeature
    While Not swFeat Is Nothing
        If swFeat.GetTypeName2 <> "HistoryFolder" Then
            ProcessFeature swFeat, swCutLists
            TraverseSubFeatures swFeat, swCutLists
        End If
        Set swFeat = swFeat.GetNextFeature
    Wend
    
    GetCutLists = swCutLists
    
End Function

Sub TraverseSubFeatures(parentFeat As SldWorks.Feature, cutLists() As SldWorks.Feature)
    
    Dim swChildFeat As SldWorks.Feature
    Set swChildFeat = parentFeat.GetFirstSubFeature
    
    While Not swChildFeat Is Nothing
        ProcessFeature swChildFeat, cutLists
        Set swChildFeat = swChildFeat.GetNextSubFeature()
    Wend
    
End Sub

Sub ProcessFeature(feat As SldWorks.Feature, cutLists() As SldWorks.Feature)
    
    If feat.GetTypeName2() = "SolidBodyFolder" Then
        Dim swBodyFolder As SldWorks.BodyFolder
        Set swBodyFolder = feat.GetSpecificFeature2
        swBodyFolder.UpdateCutList
    ElseIf feat.GetTypeName2() = "CutListFolder" Then
        
        If Not Contains(cutLists, feat) Then
            If (Not cutLists) = -1 Then
                ReDim cutLists(0)
            Else
                ReDim Preserve cutLists(UBound(cutLists) + 1)
            End If
            
            Set cutLists(UBound(cutLists)) = feat
        End If
        
    End If
    
End Sub

Function Contains(arr As Variant, item As Object) As Boolean
    
    Dim i As Integer
    
    For i = 0 To UBound(arr)
        If arr(i) Is item Then
            Contains = True
            Exit Function
        End If
    Next
    
    Contains = False
    
End Function

Function GetCutListItemString(srcPrpMgr As SldWorks.CustomPropertyManager) As String
    Dim length As String
    length = GetProperty(srcPrpMgr, "长度")

    Dim spec As String
    spec = GetProperty(srcPrpMgr, "说明")

    Dim mat As String
    mat = GetProperty(srcPrpMgr, "MATERIAL")

    Dim quan As String
    quan = GetProperty(srcPrpMgr, "QUANTITY")

    GetCutListItemString = spec & vbTab & mat & vbTab & length & vbTab & quan

End Function


Function GetProperty(srcPrpMgr As SldWorks.CustomPropertyManager, prpName As String) As String
    Dim prpVal As String
    Dim prpResVal As String
    srcPrpMgr.Get5 prpName, False, prpVal, prpResVal, False
    GetProperty = prpResVal
End Function

标签:Dim,cutLists,End,String,solidworks,Set,SldWorks,清单,焊接
From: https://www.cnblogs.com/cuishengli/p/17435411.html

相关文章

  • Jar包的清单文件manifest.MF
    如何在Java中使用JARManifest文件[摘录](如何在Java中使用JARManifest文件(附实例)-掘金(juejin.cn))在Java编程语言中,清单文件是一个文本文件,它包含与程序员的JAR归档文件中包含的文件有关的元数据。这种元数据的范围可以从与包信息有关的信息到安全属性的属性。一个程序在......
  • solidworks修改零件材质
    在solidworks没有打开任何文件的情况下,运行此宏。此宏会打开指定的文件,修改其材质,保存并关闭文件。OptionExplicitSubmain()DimfilenameAsStringfilename="e0501-P0504"DimmatnameAsStringmatname="PPH"CallChangeMaterialOfPart(filename,matname)EndS......
  • 怎样记录待办事项?怎么制定一个优质的待办清单?
    无论是在生活还是工作中,我们总是有各种各样的待办事项需要完成。如果没有一个有效的方式来记录和管理这些待办事项,很容易就会遗漏或忘记一些重要的事情,从而造成不良的后果。于是怎么记录待办事项?怎么制定一个优质的待办清单?是很多人都需要去面对的问题。其实想要制定一个优质、高......
  • SOLIDWORKS批量修改模型单位系统
    我们在做产品设计时,经常会用到一些标准外购件,或者供应商提供的三维模型,也有可能用到国外的同事做好的模型,在这种情况下,有时就会面临一个问题,那就是模型的单位系统不同。单位系统不同,就有可能造成在装配时两个孔不能完全同心,这时我们就需要统一单位系统来进行模型的孔位置的调整,那......
  • solidworks工程图
    代码:OptionExplicitConstTRAININGDIRAsString=_"D:\ApplicationData\SolidWorks\文章\TRN_CDT2315_API2023\SOLIDWORKSTrainingFiles\APIFundamentals"ConstTEMPLATEDIRAsString=_"C:\ProgramData\SolidWorks\SOLIDWORKS2022......
  • 【听书笔记-0515】-《清单革命》
    认识清单这是自樊登读书后第二次听清单革命这本书,个人认为还是收获很大的。清单最大的魅力是使用去强制性外力督促人去注意细节,变得慎重。我们每个人都会犯错,通常是连个原因造成的:无知或者无能。无知是因为我们记忆力是有限资源,不可能知道、记住所有的知识; 无能是由于人的注意力也......
  • 档案信息化建设,这份法律法规清单,请收好
    为了推进档案管理的数字化落地,国家颁布了一系列法律法规和标准规范,当企业在进行档案信息化建设时,应遵循相应的法律法规,保障信息安全、规范档案管理、保障档案使用和保存。法律法规2020年6月20日第十三届全国人民代表大会常务委员会第十九次会议修订《中华人民共和国档案法》专门增......
  • 高柔SS加减速曲线在锂电池焊接中的应用
    一、应用背景自科技发展以来,锂电池具有使用寿命长、适应性强以及能量高等优点,因此锂电池在电子产品、交通工具等领域的应用也越来越广泛,由此衍生的锂电池焊接等生产行业也在市场中迅速扩张。随着市场竞争地不断增长,锂电池焊接行业对精度要求也越来越高,本文主要介绍正运动运动控......
  • 软件物料清单:打开软件资产黑匣子的关键钥匙
    大家有没有遇到过,手机被免费召回维修的情况?有些人可能遇到这样的问题,手机购买一段时间后,突然收到手机品牌官方发布的通知:听筒模块上的某个组件可能会发生故障,会出现拨打或接听电话时听筒发不出声音的问题。类似的产品召回,在其他行业也出现过。即使是第三方供应商提供的零件,也在召回......
  • Lerna 备忘清单_开发速查表分享
    Lerna备忘清单lerna是一种多包管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题,每个package都有自己的依赖项(package.json),能够作为独立的npmpackage发布,只是源码放在一起维护,公共包可以放在根目录中的package.json......