Beyond Inventor Wizard... The Community!

Autodesk Inventor en AutoCAD Forum

Plaats deze code in de vba editor en activeer de sub FlattenAssembly

Option Explicit

Public Sub FlattenAssembly()
Dim sourceAsmDoc As AssemblyDocument
On Error Resume Next
Set sourceAsmDoc = ThisApplication.ActiveDocument
If Err Then
    MsgBox "An assembly must active."
    Exit Sub
End If

Dim targetAsmDoc As AssemblyDocument
Set targetAsmDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject, ThisApplication.FileManager.GetTemplateFile(kAssemblyDocumentObject))

Call CopyAssemblyAsFlat(targetAsmDoc.ComponentDefinition, sourceAsmDoc.ComponentDefinition.Occurrences)

End Sub

Private Sub CopyAssemblyAsFlat(TargetAsm As AssemblyComponentDefinition, Occurrences As ComponentOccurrences)
   
Dim occ As ComponentOccurrence
For Each occ In Occurrences
    ' Skip any invisible, suppressed, or excluded components.
    If occ.Visible And Not occ.Suppressed And Not occ.Excluded Then
        ' Check to see if this occurrence is a part or assembly.
        If occ.DefinitionDocumentType = kPartDocumentObject Then
            ' Create an occurrence in the target assembly
            ' for this part.
            Dim newOcc As ComponentOccurrence
            Set newOcc = TargetAsm.Occurrences.AddByComponentDefinition(occ.Definition, occ.Transformation)
            newOcc.Grounded = True
        Else
            ' Recursively call this sub to continue
            ' traversing the assembly.
            Call CopyAssemblyAsFlat(TargetAsm, occ.SubOccurrences)
        End If
    End If
Next
End Sub

Aantal maal bekeken: 505

Hierop reageren

Berichten in deze discussie

Waarvoor heel veel dank Frederic. Die ga ik zeker gebruiken. 

Het zou ook heel handig zijn als al de parts naar een aparte folder zouden verplaatst worden ook.

Als mijn assembly klaar is dan heb ik meestal 5 keer meer parts aangemaakt dan dat ik nodig heb, ( probeersels en back ups etc).

Door alle gebruikte parts in een aparte folder te verplaatsen wordt het heel makkelijk om de " overschot" te verwijderen uit je workspace. 

Ik wil die code optioneel er wel bij voegen. maar weet dat je gebruik kunt maken van pack and go om te doen wat je wil.

Ja dat weet ik, maar Pack en go maakt copies van de parts, mijn idee is meer om  op een snelle manier de gebruikte van de ongebruikte parts te scheiden door ze in een aparte map te steken. Die map kan in de code makkelijk aangemaakt worden met de naam " gebruikt in assembly" als folder name bvb. Dit natuurlijk enkel als de map eerder nog niet is aangemaakt door de macro.  Ik denk dat er veel gebruikers dit heel nuttig zullen vinden.

Volgens mij is dit technisch, voor mij althans, onmogelijk om te programmeren.

Wat ik wel kan doen is alle ongebruikte onderdelen in een map plaatsen?

Als ik er zo over nadenk, dit is eigenlijk nog beter als wat ik eerder voorstelde. Misschien wel oppassen met gelinkte parts ( ingeval van skeletal modelling of derived bvb...)

RSS

Interessante links

Word Fan!

Inventor Wizard Cartoons

Video's

  • Video's toevoegen
  • Alles weergeven

© 2021   Gemaakt door Stefaan Boel.   Verzorgd door

Banners  |  Een probleem rapporteren?  |  Algemene voorwaarden