AnsweredAssumed Answered

Rename files with custom properties

Question asked by Ryan Hawley on Mar 5, 2013
Latest reply on Mar 21, 2018 by Deepak Gupta

I'm trying to create a macro that traverses thru the sub assembly and renames the part files using the custom properties associated in that paticular file.

 

I used the Rename macro that is in the Solidworks API help.  My problem is it takes the properties from the main subassembly and not the paticular part file.  I'm very green to macro's so any help you can provide would be helpful

 

thanks

 

This is what I have so far

 

Option Explicit

 

Public Enum swUserPreferenceToggle_e

 

     swExtRefUpdateCompNames = 18

 

End Enum

 

 

Sub main()

 

     Dim swApp                   As SldWorks.SldWorks

     Dim swModel                 As SldWorks.ModelDoc2

     Dim swConfigMgr             As SldWorks.ConfigurationManager

     Dim swConfig                As SldWorks.Configuration

     Dim swRootComp              As SldWorks.Component2

     Dim SwCustProp              As SldWorks.CustomPropertyManager

     Dim Children                As Variant

     Dim bOldSetting             As Long

     Dim swChild                 As SldWorks.Component2

     Dim ChildCount              As Integer

     Dim DetailNo                As String

     Dim JobNumber               As String

     Dim Description             As String

     Dim NewName                 As String

 

 

     bOldSetting = swApp.GetUserPreferenceToggle(swExtRefUpdateCompNames)

 

 

    swApp.SetUserPreferenceToggle swExtRefUpdateCompNames, False

    Dim bRet                    As Boolean

    Dim i                       As Long

    Dim DetNumber               As String

   

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swConfigMgr = swModel.ConfigurationManager

    Set swConfig = swConfigMgr.ActiveConfiguration

    Set swRootComp = swConfig.GetRootComponent

    bOldSetting = swApp.GetUserPreferenceToggle(swExtRefUpdateCompNames)

    swApp.SetUserPreferenceToggle swExtRefUpdateCompNames, False

    Children = swRootComp.GetChildren

    ChildCount = UBound(Children)

 

   For i = 0 To ChildCount

         Set swChild = Children(i)

     ' Changing component name requires component to be selected

          bRet = swChild.Select2(False, 0)

     ' Get Detail Number from Custom Properties

       

   JobNumber = swModel.CustomInfo("ProjName")

    Description = swModel.CustomInfo("Comment")

    DetailNo = swModel.CustomInfo("test")

    NewName = JobNumber + "Det " + DetailNo + " " + Description

 

    swChild.Name2 = NewName

 

    Next i

    swApp.SetUserPreferenceToggle swExtRefUpdateCompNames, bOldSetting

 

End Sub

Outcomes