Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Unterbaugruppe öffnen, Regel ausführen, schließen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Unterbaugruppe öffnen, Regel ausführen, schließen (210 / mal gelesen)
Baccardi88
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Baccardi88 an!   Senden Sie eine Private Message an Baccardi88  Schreiben Sie einen Gästebucheintrag für Baccardi88

Beiträge: 6
Registriert: 13.11.2022

Inventor 2020

erstellt am: 14. Feb. 2024 07:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen, ich war bei der Suche leider nicht fündig. Ich möchte gerne aus einer Baugruppe heraus eine bestimmte Unterkomponente (iam) öffnen, eine darin befindliche Regel auslösen, diese Komponente speichern und wieder schließen.

Hintergrund ist folgender. Ich habe in der obersten BG schon eine Regel, welche über eine Schleife mit "runruleincomponent" die entsprechenden Regeln ausführt. Diese Regel in der Unterkomponente stellt dort Positionsdarstellung und Ansicht ein, was leider nur teilweise funktioniert, wenn es von "ganz oben" ausgeführt wird ( Positionsdarstellung wird gesetzt, jedoch nicht die Ansicht). Die BG werden bei uns automatisch über eine externe Ansteuerung erstellt, deshalb steckt die Regel auch noch im Ereignisauslöser vor dem Speichern. Laut Messagebox wird die Regel auch ausgeführt, aber läuft wie beschrieben nicht ordnungsgemäß durch, aussesr ich führe sie manuell aus.

Wenn ich manuell die Unter-BG öffne, die Regel ausführe, läuft alles prima, deshalb ist das jetzt meine Idee, es per ilogic zu machen.

Oder hat jemand einen anderen Vorschlag?
Vielen Dank schonmal 

Das hier ist mein Code in der Unter-BG, welcher nur zuverlässig ausgeführt wird, wenn ich es manuell mache.


If ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER > 1 Then

'ALLE ERWEITERUNGEN----------------------------------------------------------------------------------------------------------------------
Dim positionsdarstellung_erweiterung As String
Dim ansicht_erweiterung As String
Dim erweiterung As String
Dim ende As Double
Dim nummer As Double
ende = ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER - 1
nummer = 0

If AUSRICHTUNG_UEBERTRAGUNGSPARAMETER = 1 Then
positionsdarstellung_erweiterung = "Pos 1"
Else
positionsdarstellung_erweiterung = "Pos 2"
End If


Do While Not EqualWithinTolerance(nummer, ende, 0.5)

nummer = nummer + 1
erweiterung = "TEIL_"&nummer
' MessageBox.Show(erweiterung, "Erweiterung")

Try
Component.InventorComponent(erweiterung).ActivePositionalRepresentation = positionsdarstellung_erweiterung
Catch
End Try

If nummer = 10 Then Exit Do
Loop
'ALLE ERWEITERUNGEN----------------------------------------------------------------------------------------------------------------------

'ELETZTES TEIL----------------------------------------------------------------------------------------------------------------------
Dim ansicht_letztes_teil As String
Dim positionsdarstellung_letztes_teil As String
Dim letztes_teil As String

ansicht_letztes_teil = "ohne_anbindung"

If AUSRICHTUNG_UEBERTRAGUNGSPARAMETER = 1 Then
positionsdarstellung_letztes_teil = "Anbau links"
Else
positionsdarstellung_letztes_teil = "Anbau rechts"
End If

letztes_teil = "TEIL_"&ANZAHL_TEILE_UEBERTRAGUNGSPARAMETER
' MessageBox.Show(letztes_teil, "Letztes Teil")

Try
For Each Occurrence In ThisApplication.ActiveDocument.ComponentDefinition.Occurrences
    If Occurrence.Name = letztes_teil Then Occurrence.SetDesignViewRepresentation(ansicht_letztes_teil, , True)
Next
Component.InventorComponent(letztes_teil).ActivePositionalRepresentation = positionsdarstellung_letztes_teil
Catch
End Try
'LETZTES TEIL----------------------------------------------------------------------------------------------------------------------

End If

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2406
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 14. Feb. 2024 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Baccardi88 10 Unities + Antwort hilfreich

Moin

Wundert mich nicht, wenn man alle potentiell auftretenden Fehler mit TryCatch stumm wegfängt.

Code:
For Each Occurrence In ThisApplication.ActiveDocument.ComponentDefinition.Occurrences
    If Occurrence.Name = letztes_teil Then Occurrence.SetDesignViewRepresentation(ansicht_letztes_teil, , True)
Next
Component.InventorComponent(letztes_teil).ActivePositionalRepresentation = positionsdarstellung_letztes_teil

Nehmen wir nur mal das Stück hier. Du verwendest ActiveDocument, was beim Ausführen einer Regel in einer Unterbaugruppe immer noch die Hauptbaugruppe ist. Als Faustregel, das ActiveDocument ist das Dokument dessen Name oben im Inventor Fenstertitel angezeigt wird. Das gleiche gilt, wenn man die Unterbaugruppe inline zur Bearbeitung öffnet. Verwendet man stattdessen ThisDoc.Document sollte das gehen. Öffnet man alternativ die Unterbaugruppe in einem separaten View, ist das ActiveDocument die Unterbaugruppe.
Die jeweils aktive Positionsdarstellung ist meines Wissens eine Eigenschaft der Occurrence. Existieren also zwei Occurrences parallel (2x die gleiche Unterbaugruppe verbaut) kann und darf es nicht möglich sein die Positionsdarstellung der Unterunterbaugruppe (die Baugruppe in der Unterbaugruppe) zu ändern. Denn das würde zwei Occurrences der Unterbaugruppe mit gleicher aktiver Positionsdarstellung aber unterschiedlichen aktiven Positionsdarstellungen der Unterunterbaugruppe bedeuten.

Du musst meiner Meinung die Unterbaugruppe in einem eigenen View öffnen, die gewünschte Positionsdarstellung der Unterbaugruppe aktivieren und anschließend die Positionsdarstellung der Unterunterbaugruppe. Das dann speichern und den View schließen. In der Hauptbaugruppe anschließend die Positionsdarstellung aktivieren und die aktive Positionsdarstellung der Unterbaugruppe einstellen. Willkommen in der Hölle der Ansichten und Darstellungen. 

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Baccardi88
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Baccardi88 an!   Senden Sie eine Private Message an Baccardi88  Schreiben Sie einen Gästebucheintrag für Baccardi88

Beiträge: 6
Registriert: 13.11.2022

Inventor 2020

erstellt am: 14. Feb. 2024 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf und vielen Dank. Also eine wichtige Info von dir ist schonmal das mit ActiveDocument. Ich hatte nie eine VBA Schulung und mir sind die ganzen Basics mit Klassen, Methoden usw. unbekannt. Das Try Catch funktionierte bisher gut, weil unsere BG über einen Konfigurator erzeugt werden und man im Master vorher nie weiß, was alles darin vorkommt. Deshalb habe ich alles mit Try Catch erledigt, was auch in den einzelnen BG gut funktioniert.

This.Doc.Document hat das Problem gelöst und es reicht nun sogar, die Regel während des Konfigurationsablaufes in der Unterbaugruppe 1x ausführen zu lassen. Somit kann ich mir die Regel in der Hauptbaugruppe sparen, sehr gut!

Eine VBA Schulung würde mir auf jeden Fall mal helfen.

Ich danke dir vielmals, es läuft nun so, wie gewünscht!
Hast du evtl. eine Empfehlung, wo man am besten so eine VBA Schulung bekommt im Raum Süddeutschland?

Beste Grüße
Matthias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2406
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 14. Feb. 2024 14:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Baccardi88 10 Unities + Antwort hilfreich

Moin

fx64 bietet meines Wissens API Schulungen an (Link). Zum Inhalt, Ablauf usw. kann ich nichts sagen.
iLogic nutzt VB.Net, kein VBA. Sieht zwar ähnlich aus, is aber unterschiedlich.
Im Netz findet man eine Reihe freie Tutorials, um den generellen Umgang mit VB.Net zu erlernen. Die Inventor API als Objektbaum kann man bei Autodesk als PNG herunterladen (Link 2). In der Programmierhilfe finden sich auch gute Einleitungskapitel (Link 3), die beim Verständnis helfen. Gut, manchmal helfen sie nur bei der Vermehrung der grauen Haare, aber das is eine andere Geschichte.   

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz