Inventor VBA Fehler beim speicher

Inventor VBA Fehler beim speicher

sanL2DWK
Participant Participant
361Aufrufe
3Antworten
Nachricht 1 von 4

Inventor VBA Fehler beim speicher

sanL2DWK
Participant
Participant

Hallo zusammen

ich habe mir mit VBA ein Makro geschrieben das einige Informationen automatisch aus einem Bauteil ausließt und diese dann in Ipropertys schreibt. Das Makro wird automatisch vor jedem speichern des Bauteiles ausgeführt und funktioniert soweit auch ganz gut. Das einzige mako ist das wenn ich ein einzelnes Bauteil aus einer Baugruppe bearbeiten will und ich das Bauteil nicht in einem eigenem "Tab" öffne, sondern mehr oder weniger noch in der Baugruppe (die Baugruppe wird dann nur noch transparent dargestellt) öffne ich in einen Fehler laufe. Ich habe keine Anung wie der Modus heißt. In dem angefügten Screenshot habe ich euch ein Beispiel angefügt um den Modus zu zeigen den ich meine.

sanL2DWK_0-1674813983335.png

 

In diesem Modus kann ich die Datei (auch ohne das Makro) nicht speichern, was auch kein Problem ist. Allerdings würde ich gerne eine kurze Meldung ausgeben und dann das Makro abbrechen. Nur habe ich keine Idee, wie ich erkennen kann das ich in diesem Zustand bin. Kann mir jemand dafür ein Code snippsel oder einen kleinen Suchtipp geben?

 

Ich bin für jede Anregung dankbar.

 

Mit freundlichen Grüßen

Andi

 

Ps.: Wir nutzen die 2023 Version. In der 2021Version hatte ich das "Problem" aber auch.

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
362Aufrufe
3Antworten
Antworten (3)
Nachricht 2 von 4

fullevent
Advisor
Advisor

Hallo Andi,

 

ohne dein Makro zu kennen wird es schwierig. Ich vermute mal du nutzt sowas wie "= ThisApplication.ActiveDocument".
Da ist es so.. Auch wenn du eine Unterbaugruppe oder ein Bauteil in deiner Hauptbaugruppe bearbeitest (ohne extra Tabfenster), dann ist das "ActiveDocument" die Hauptbaugruppe und nicht die Komponente welche gerade bearbeitet wird. Das heißt dein Makro würde in dem Fall versuchen den Code auf die Hauptbaugruppe anzuwenden.

 

Könnte das das Problem sein?

 

Grüße,


Aleksandar Krstic
Produkt- und Projektmanager

0 „Gefällt mir“-Angaben
Nachricht 3 von 4

raith-mb
Advocate
Advocate
Akzeptierte Lösung

Hallo Andi,

 

du musst prüfen, ob das aktive Doc eine IAM ist. In der IAM auf das ActiveEditObject zugreifen.

Das Beispiel ermittelt das oDoc, in das geschrieben werden soll:

 

Dim oDoc As Document
    
    If ThisApplication.ActiveDocumentType = kPartDocumentObject Then
        Set oDoc = ThisApplication.ActiveDocument
    End If 'ActiveDocumentType = kPartDocumentObject
    
    If ThisApplication.ActiveDocumentType = kAssemblyDocumentObject Then
        Dim oAssemDoc As AssemblyDocument
        Set oAssemDoc = ThisApplication.ActiveDocument

        If oAssemDoc.ComponentDefinition.ActiveOccurrence Is Nothing Then
            'keine Occurance aktiv (IAM direkt geöffnet)
            Set oDoc = ThisApplication.ActiveDocument
                       
            Else
            'Occurance aktiv (In-Place geöffnet)
            Set oDoc = ThisApplication.ActiveEditObject
        End If
        
    End If 'DocumentType = kAssemblyDocumentObject

 

Nachricht 4 von 4

sanL2DWK
Participant
Participant

Hallo

genau das hat funktioniert. Vielen Dank für den Code

 

Grüße

Andi