Message 1 of 2
why does my code not update and purge all styles like ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
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
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