why does my code not update and purge all styles like ?

why does my code not update and purge all styles like ?

Darkforce_the_ilogic_guy
Advisor Advisor
172 Views
1 Reply
Message 1 of 2

why does my code not update and purge all styles like ?

Darkforce_the_ilogic_guy
Advisor
Advisor

why does my code not update and purge all styles like ? I have try before on inventor 2020 to get it to hope know what missing in my code 

 

 

Darkforce_the_ilogic_guy_1-1727248262090.png

 

 

 

Sub Main()
	Dim stopWatch As New Stopwatch()
 stopWatch.Start()
	
	Mainscript
Mainscript

Stopwatch.Stop()
' Get the elapsed time as a TimeSpan value.
Dim ts As TimeSpan = Stopwatch.Elapsed

' Format and display the TimeSpan value.
Dim elapsedTime As String = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)
'MsgBox("RunTime " & elapsedTime)
Logger.Info("RunTime " & elapsedTime & "Hours:Minutes:Seconds:Milliseconds", filename)

End Sub

Sub Mainscript()
	

Dim doc As Document = ThisDoc.Document

    Select Case doc.DocumentType
        Case DocumentTypeEnum.kAssemblyDocumentObject
            Dim asm As AssemblyDocument = doc
             UpdateStyles(asm.LightingStyles)
            UpdateStyles(asm.TextStyles)
			
			PurgeStyles(asm.LightingStyles)
            PurgeStyles(asm.TextStyles)
			
			
           
            PurgeAssets(asm.MaterialAssets)
            PurgeAssets(asm.AppearanceAssets)

        Case DocumentTypeEnum.kPartDocumentObject
			'MsgBox("3d part files")
            Dim prt As PartDocument = doc
			
			UpdateStyles(prt.LightingStyles)
            UpdateStyles(prt.TextStyles)
			 

            PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
			
                     
            PurgeAssets(prt.MaterialAssets)
            PurgeAssets(prt.AppearanceAssets)
			
			' 2 times
			
			
			UpdateStyles(prt.LightingStyles)
            UpdateStyles(prt.TextStyles)

            PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
			
                     
            PurgeAssets(prt.MaterialAssets)
            PurgeAssets(prt.AppearanceAssets)

            If doc.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
				'MsgBox("3d sheet metal files")
                Dim smCompDef As SheetMetalComponentDefinition = prt.ComponentDefinition
               UpdateStyles(smCompDef.SheetMetalStyles)
                UpdateStyles(smCompDef.UnfoldMethods)
			   
			   
			   PurgeStyles(smCompDef.SheetMetalStyles)
                PurgeStyles(smCompDef.UnfoldMethods)
				
				
				PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
	
			' 2. time
			
			
			 UpdateStyles(smCompDef.SheetMetalStyles)
                UpdateStyles(smCompDef.UnfoldMethods)
			   
			   
			   PurgeStyles(smCompDef.SheetMetalStyles)
                PurgeStyles(smCompDef.UnfoldMethods)
				
				
				PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)

'               
            End If

        Case DocumentTypeEnum.kDrawingDocumentObject
            Dim drw As DrawingDocument = doc
            PurgeStyles(drw.StylesManager.Styles)

            UpdateStyles(drw.StylesManager.Styles)

        Case Else
            Logger.Warn("This document can't be purged")
    End Select

End Sub


''' <summary>
''' Purges all styles from stylesCollection
''' </summary>
''' <param name="stylesCollection">Must be collection of objects accesible by index.
''' Each element in collection must provide properties: bool InUse, string Name, StyleLocationEnum StyleLocation, and method Delete()</param>
Sub PurgeStyles(stylesCollection As Object)
    Dim someStyleDeleted As Boolean
    Do
        someStyleDeleted = False
        Dim i As Integer = 1
        Do

            Dim s = stylesCollection(i)
            If s.InUse Or s.StyleLocation = StyleLocationEnum.kLibraryStyleLocation Then
                i += 1
            Else
                Dim msg = s.Name
                Try
                    s.Delete()
                    someStyleDeleted = True
                Catch
                    msg = msg & " Not deleted"
                    i += 1
                End Try
                Logger.Debug(msg)
            End If

        Loop While stylesCollection.Count >= i
    Loop While someStyleDeleted
    Logger.Info("{0} - Done", [Enum].GetName(GetType(ObjectTypeEnum), stylesCollection.Type))

End Sub

Sub PurgeAssets(assetsCollection As AssetsEnumerator)
    Dim i As Integer = 1
    Do
        Dim asset As Asset = assetsCollection(i)
        If asset.IsUsed Then
            i += 1
        Else
            Dim msg = asset.Name
            Try
                asset.Delete()
                i += 1
            Catch
                msg = msg & " Not deleted"
                i += 1
            End Try
            Logger.Debug(msg)
        End If
    Loop While assetsCollection.Count >= i
End Sub

Sub UpdateStyles(stylesCollection As Object)
    For Each s In stylesCollection
        If Not s.UpToDate Then s.UpdateFromGlobal()
    Next
End Sub

 

 

0 Likes
173 Views
1 Reply
Reply (1)
Message 2 of 2

Darkforce_the_ilogic_guy
Advisor
Advisor

I have a lillte update this code fix the styles I send before but I find other styles that does get remove

 

Sub Main()
	Dim stopWatch As New Stopwatch()
 stopWatch.Start()
	
	Mainscript
Mainscript

Stopwatch.Stop()
' Get the elapsed time as a TimeSpan value.
Dim ts As TimeSpan = Stopwatch.Elapsed

' Format and display the TimeSpan value.
Dim elapsedTime As String = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)
'MsgBox("RunTime " & elapsedTime)
Logger.Info("RunTime " & elapsedTime & "Hours:Minutes:Seconds:Milliseconds", filename)

End Sub

Sub Mainscript()
	

Dim doc As Document = ThisDoc.Document

    Select Case doc.DocumentType
        Case DocumentTypeEnum.kAssemblyDocumentObject
            Dim asm As AssemblyDocument = doc
			'UpdateAllStyles
            UpdateStyles(asm.LightingStyles)
            UpdateStyles(asm.TextStyles)
'			UpdateStyles(asm.MaterialAssets)
'			UpdateStyles(asm.AppearanceAssets)
'			UpdateStyles(asm.RenderStyleAssets)
'			UpdateStyles(asm.RenderStyle)
'			UpdateStyles(asm.Materials)
			
			Logger.Info("Test ", filename)

			
			PurgeStyles(asm.LightingStyles)
            PurgeStyles(asm.TextStyles)
			
			
           
            PurgeAssets(asm.MaterialAssets)
            PurgeAssets(asm.AppearanceAssets)
			PurgeAllStyles
			'PurgeUnusedStyles

        Case DocumentTypeEnum.kPartDocumentObject
			'MsgBox("3d part files")
            Dim prt As PartDocument = doc
			
			UpdateStyles(prt.LightingStyles)
            UpdateStyles(prt.TextStyles)
			UpdateAllStyles() 
			
			 

            PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
			
			
                     
            PurgeAssets(prt.MaterialAssets)
            PurgeAssets(prt.AppearanceAssets)
			
			' 2 times
			
			
			UpdateStyles(prt.LightingStyles)
            UpdateStyles(prt.TextStyles)

            PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
			
                     
            PurgeAssets(prt.MaterialAssets)
            PurgeAssets(prt.AppearanceAssets)

            If doc.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
				'MsgBox("3d sheet metal files")
                Dim smCompDef As SheetMetalComponentDefinition = prt.ComponentDefinition
               UpdateStyles(smCompDef.SheetMetalStyles)
                UpdateStyles(smCompDef.UnfoldMethods)
			   
			   
			   PurgeStyles(smCompDef.SheetMetalStyles)
                PurgeStyles(smCompDef.UnfoldMethods)
				
				
				PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)
	
			' 2. time
			
			
			 UpdateStyles(smCompDef.SheetMetalStyles)
                UpdateStyles(smCompDef.UnfoldMethods)
			   
			   
			   PurgeStyles(smCompDef.SheetMetalStyles)
                PurgeStyles(smCompDef.UnfoldMethods)
				
				
				PurgeStyles(prt.LightingStyles)
            PurgeStyles(prt.TextStyles)

'               
            End If

        Case DocumentTypeEnum.kDrawingDocumentObject
            Dim drw As DrawingDocument = doc
            PurgeStyles(drw.StylesManager.Styles)

            UpdateStyles(drw.StylesManager.Styles)

        Case Else
            Logger.Warn("This document can't be purged")
    End Select

End Sub


''' <summary>
''' Purges all styles from stylesCollection
''' </summary>
''' <param name="stylesCollection">Must be collection of objects accesible by index.
''' Each element in collection must provide properties: bool InUse, string Name, StyleLocationEnum StyleLocation, and method Delete()</param>
Sub PurgeStyles(stylesCollection As Object)
    Dim someStyleDeleted As Boolean
    Do
        someStyleDeleted = False
        Dim i As Integer = 1
        Do

            Dim s = stylesCollection(i)
            If s.InUse Or s.StyleLocation = StyleLocationEnum.kLibraryStyleLocation Then
                i += 1
            Else
                Dim msg = s.Name
                Try
                    s.Delete()
                    someStyleDeleted = True
                Catch
                    msg = msg & " Not deleted"
                    i += 1
                End Try
                Logger.Debug(msg)
            End If

        Loop While stylesCollection.Count >= i
    Loop While someStyleDeleted
    Logger.Info("{0} - Done", [Enum].GetName(GetType(ObjectTypeEnum), stylesCollection.Type))

End Sub

Sub PurgeAssets(assetsCollection As AssetsEnumerator)
   Try
   Dim i As Integer = 1
    Do
        Dim asset As Asset = assetsCollection(i)
        If asset.IsUsed Then
            i += 1
        Else
            Dim msg = asset.Name
            Try
                asset.Delete()
                i += 1
            Catch
                msg = msg & " Not deleted"
                i += 1
            End Try
            Logger.Debug(msg)
        End If
    Loop While assetsCollection.Count >= i
	Catch
		
	End Try
End Sub

Sub UpdateStyles(stylesCollection As Object)
    For Each s In stylesCollection
		
		
        If Not s.UpToDate Then s.UpdateFromGlobal()
    Next
End Sub

Sub UpdateAllStyles()
	Logger.Info("Run All Styles")

    ' Get the active document
    Dim oDoc As Document
    oDoc = ThisApplication.ActiveDocument

    ' Update Lighting Styles
    Dim oLightingStyle As LightingStyle
    For Each oLightingStyle In oDoc.LightingStyles
        If oLightingStyle.UpToDate = False Then
            oLightingStyle.UpdateFromGlobal
        End If
    Next

    ' Update Text Styles
    Dim oTextStyle As TextStyle
    For Each oTextStyle In oDoc.TextStyles
        If oTextStyle.UpToDate = False Then
            oTextStyle.UpdateFromGlobal
        End If
    Next

    ' Update Render Styles
    Dim oRenderStyle As RenderStyle
    For Each oRenderStyle In oDoc.RenderStyles
        If oRenderStyle.UpToDate = False Then
            oRenderStyle.UpdateFromGlobal
        End If
    Next

    ' Update Materials
    Dim oMaterial As Material
    For Each oMaterial In oDoc.Materials
        If oMaterial.UpToDate = False Then
            oMaterial.UpdateFromGlobal
        End If
    Next

    ' Update Sheet Metal Styles
    If oDoc.ComponentDefinition.Type = kSheetMetalComponentDefinitionObject Then
        Dim oSheetMetalStyle As SheetMetalStyle
        For Each oSheetMetalStyle In oDoc.ComponentDefinition.SheetMetalStyles
            If oSheetMetalStyle.UpToDate = False Then
                oSheetMetalStyle.UpdateFromGlobal
            End If
        Next
    End If
End Sub

Sub PurgeAllStyles()
	Logger.Info("Purge All Styles")
  ' Get the active document
    Dim oDoc As Document
    oDoc = ThisApplication.ActiveDocument

    ' Purge unused Lighting Styles
	Try
    Dim oLightingStyle As LightingStyle
    For Each oLightingStyle In oDoc.LightingStyles
        If oLightingStyle.InUse = False Then
            oLightingStyle.Delete
        End If
    Next
	Catch
		
	End Try

'    ' Purge unused Text Styles
Try
    Dim oTextStyle As TextStyle
    For Each oTextStyle In oDoc.TextStyles
        If oTextStyle.InUse = False Then
            oTextStyle.Delete
        End If
    Next
	
	Catch
		
	End Try

'     Purge unused Render Styles
Try
    Dim oRenderStyle As RenderStyle
    For Each oRenderStyle In oDoc.RenderStyles
        If oRenderStyle.InUse = False Then
            oRenderStyle.Delete
        End If
    Next
	Catch
		
	End Try

    ' Purge unused Materials
	Try
    Dim oMaterial As Material
    For Each oMaterial In oDoc.Materials
        If oMaterial.InUse = False Then
            oMaterial.Delete
        End If
    Next
	Catch
		
	End Try

    ' Purge unused Sheet Metal Styles
	Try
    If oDoc.ComponentDefinition.Type = kSheetMetalComponentDefinitionObject Then
        Dim oSheetMetalStyle As SheetMetalStyle
        For Each oSheetMetalStyle In oDoc.ComponentDefinition.SheetMetalStyles
            If oSheetMetalStyle.InUse = False Then
                oSheetMetalStyle.Delete
            End If
        Next
    End If
	Catch
		
	End Try
End Sub

 

 

Darkforce_the_ilogic_guy_0-1727260588664.png

 

 

0 Likes