| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Autodesk Inventor Schweißkonstruktion, ein Seminar am 07.04.2025
|
Autor
|
Thema: Modellzustand und Positionsdarstellung verknüpfen (292 / mal gelesen)
|
Inventor-UKD Mitglied
 Beiträge: 3 Registriert: 20.02.2025
|
erstellt am: 20. Feb. 2025 12:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo Liebes Forum, Ich würde gerne über den Wechsel einer Positionsdarstellung in einer Baugruppe, ein Modellzustand eines Einzelteiles in dieser Baugruppe aktivieren bzw. deaktivieren. Meine Anwendung ist hier die Energiekette. Hat hier jemand eine Lösung? Gruß und Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 20. Feb. 2025 15:12 <-- editieren / zitieren --> Unities abgeben:          Nur für Inventor-UKD
Moin Willkommen im Forum Meines Wissens sind beide Funktionen nicht verknüpfbar. Warum steuerst du die Positionen nicht auch über einen Modellzustand? Gibt es einen Grund warum Positionsdarstellungen verwendet werden? Frag nur aus Neugierde. Du kannst, falls es nicht doch irgendwo verknüpfbar ist, mit iLogic was bauen. - Erstelle in der Baugruppe eine neue iLogicregel und füge den Code ein:
Code:
' Namen der Positionsdarstellungen Dim sPosRep_1 As String = "A" Dim sPosRep_2 As String = "B"' Namen der Modellzustände Dim sMS_1 As String = "AA" Dim sMS_2 As String = "BB" 'Name des Bauteilexemplares anpassen Dim sOcc As String = "Bauteil1:1" Dim oDoc As AssemblyDocument = ThisDoc.Document Dim oOcc As ComponentOccurrence For Each oOcc In oDoc.ComponentDefinition.Occurrences If oOcc.Name = sOcc Then Exit For End If oOcc = Nothing Next If oOcc Is Nothing Then Exit Sub 'Bauteilexemplar nicht gefunden Dim oPosRep As PositionalRepresentation = oDoc.ComponentDefinition.RepresentationsManager.ActivePositionalRepresentation If oPosRep.Name = sPosRep_1 Then oOcc.ActiveModelState = sMS_1 ElseIf oPosRep.Name = sPosRep_2 Then oOcc.ActiveModelState = sMS_2 End If
- Passe die Namen der Positionsdarstellungen und Modellzustände und den Namen des Bauteilexemplares an. Speichern. - Im RibbonTab "Verwalten", Panel "iLogic", Button "Ereignisauslöser" anklicken - Den Tab "Dieses Dokument" im Dialog aktivieren - Per Drag'n Drop die Regel von links nach rechts unter den Punkt "Beliebige Modellparameteränderung" ziehen. Ich gehe davon aus, dass die Positionsdarstellungen zumindest eine Abhängigkeit im Wert verändern. Die Werte sind auch Modellparameter und lösen somit die Regel aus.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Inventor-UKD Mitglied
 Beiträge: 3 Registriert: 20.02.2025
|
erstellt am: 20. Feb. 2025 15:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, Danke für deine Antwort, ich werde den Code im Nachgang ausprobieren. Zum Grundsatz meiner Frage. Ich habe zwei Gründe warum ich die Modellzustände nicht verwenden möchte. -1 Die anderen Konstrukteure arbeiten nicht mit Modellzuständen -2 Ich habe keine guten Erfahrungen mit Modellzuständen gemacht, wenn einmal vergessen wird die Bearbeitung umzustellen kann alles neu gemacht werden. Klingt das plausibel? Gruß und Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TLipo Mitglied

 Beiträge: 85 Registriert: 11.05.2022 Inventor 2024
|
erstellt am: 20. Feb. 2025 16:08 <-- editieren / zitieren --> Unities abgeben:          Nur für Inventor-UKD
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 20. Feb. 2025 20:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Inventor-UKD
Moin Zitat: Klingt das plausibel?
Ja klingt es. Ich wollte deine Arbeitsweise nicht werten. Ich selbst konstruiere nur noch selten, aber es interessiert mich wann warum welche Methodik benutzt wird oder eben nicht. Mir bringt das Hinterfragen ein besseres Verständnis des Problems. Wenn möglich, um passende Lösungsvorschläge oder sinnvolle Alternativvorschläge zu machen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Inventor-UKD Mitglied
 Beiträge: 3 Registriert: 20.02.2025
|
erstellt am: 24. Feb. 2025 16:10 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von rkauskh: MoinWillkommen im Forum Meines Wissens sind beide Funktionen nicht verknüpfbar. Warum steuerst du die Positionen nicht auch über einen Modellzustand? Gibt es einen Grund warum Positionsdarstellungen verwendet werden? Frag nur aus Neugierde. Du kannst, falls es nicht doch irgendwo verknüpfbar ist, mit iLogic was bauen. - Erstelle in der Baugruppe eine neue iLogicregel und füge den Code ein:
Code:
' Namen der Positionsdarstellungen Dim sPosRep_1 As String = "A" Dim sPosRep_2 As String = "B"' Namen der Modellzustände Dim sMS_1 As String = "AA" Dim sMS_2 As String = "BB" 'Name des Bauteilexemplares anpassen Dim sOcc As String = "Bauteil1:1" Dim oDoc As AssemblyDocument = ThisDoc.Document Dim oOcc As ComponentOccurrence For Each oOcc In oDoc.ComponentDefinition.Occurrences If oOcc.Name = sOcc Then Exit For End If oOcc = Nothing Next If oOcc Is Nothing Then Exit Sub 'Bauteilexemplar nicht gefunden Dim oPosRep As PositionalRepresentation = oDoc.ComponentDefinition.RepresentationsManager.ActivePositionalRepresentation If oPosRep.Name = sPosRep_1 Then oOcc.ActiveModelState = sMS_1 ElseIf oPosRep.Name = sPosRep_2 Then oOcc.ActiveModelState = sMS_2 End If
- Passe die Namen der Positionsdarstellungen und Modellzustände und den Namen des Bauteilexemplares an. Speichern. - Im RibbonTab "Verwalten", Panel "iLogic", Button "Ereignisauslöser" anklicken - Den Tab "Dieses Dokument" im Dialog aktivieren - Per Drag'n Drop die Regel von links nach rechts unter den Punkt "Beliebige Modellparameteränderung" ziehen. Ich gehe davon aus, dass die Positionsdarstellungen zumindest eine Abhängigkeit im Wert verändern. Die Werte sind auch Modellparameter und lösen somit die Regel aus.
Noch einmal Danke für deine Hilfe. Der Code funktioniert in der verbauten Baugruppe soweit. Wenn ich nun jedoch das Ganze in der Überbaugruppe verbaue tut sich leider nichts. Gibt es hierzu eine erklärung?
Gruß und Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 25. Feb. 2025 11:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Inventor-UKD
Moin Weil ich es so geschrieben habe, dass nach dem Bauteil nur in der ersten Ebene gesucht wird. Von einer Unterbaugruppe war ja nicht die Rede. Spielt aber auch keine Rolle, das Aktivieren von Modellzuständen geht immer nur in der ersten Ebene. Kann man auch in der GUI sehen. Man kann im Modellbrowser den Modellzustand eines Bauteiles nicht direkt umschalten, wenn es in einer Unterbaugruppe steckt. Man kann nur den Modellzustand der Unterbaugruppe umschalten und in dem Modellzustand der Unterbaugruppe ist der aktive Modellzustand des Bauteiles definiert. Oder man öffnet die Unterbaugruppe separat und aktiviert dort den Modellzustand des Bauteiles ohne einen entsprechenden Modellzustand in der Baugruppe anzulegen. Der Unterschied zwischen beiden Varianten zeigt sich, sobald die Unterbaugruppe mehfach verbaut ist. Sind in der Unterbaugruppe 2 Modellzustände angelegt, die jeweils einen Modellzustand des Bauteiles enthalten, können die zwei Unterbaugruppen mit unterschiedlichen aktiven Modellzuständen in der Hauptbaugruppe erscheinen. Bei Variante zwei ändert sich der Modellzustand des Bauteiles in beiden verbauten Unterbaugruppen synchron. Es kann keine unterschiedliche Darstellung geben. Soll jetzt beim Umschalten der Positionsdarstellung in der Hauptbaugruppe der Modellzustand von ALLEN verbauten Exemplaren des Bauteiles in ALLEN Unterbaugruppen umgeschaltet werden, könnte es mit dieser Regel funktionieren. Dabei sind KEINE Modellzustände in den Unterbaugruppen erforderlich. Wenn es nur ein bestimmtes Bauteil in einer bestimmten Unterbaugruppe sein soll, braucht man a) den kompletten Pfad durch die Unterbaugruppen, um es zu finden und b) doch Modellzustände in allen Unterbaugruppen, falls die Unterbaugruppe mehrfach verbaut ist. Code:
option explicit on Public Sub main 'Name des Bauteilexemplares anpassen Dim sOcc As String = "Bauteil1:1" ThisApplication.ScreenUpdating = False Dim oDoc As AssemblyDocument = ThisDoc.Document Try Dim oOcc As ComponentOccurrence For Each oOcc In oDoc.ComponentDefinition.Occurrences.AllLeafOccurrences If oOcc.Name = sOcc Then ProcessOcc(oDoc, oOcc, sOcc) End If oOcc = Nothing Next Catch ex As Exception Finally ThisApplication.ScreenUpdating = True End Try oDoc.Update End SubPrivate Sub ProcessOcc(ByVal oDoc As AssemblyDocument, ByVal oOcc As ComponentOccurrence, byval sOcc as string) ' Namen der Positionsdarstellungen Dim sPosRep_1 As String = "A" Dim sPosRep_2 As String = "B" ' Namen der Modellzustände Dim sMS_1 As String = "AA" Dim sMS_2 As String = "BB" Dim oRefedDoc As AssemblyDocument = oOcc.ParentOccurrence.Definition.Document Dim oView As Inventor.View If oRefedDoc.Views.Count = 0 Then oView = oRefedDoc.Views.Add() Else oView = oRefedDoc.Views.Item(1) End If oView.Activate oRefedDoc = oView.Document For Each oOcc In oRefedDoc.ComponentDefinition.Occurrences '.AllLeafOccurrences If oOcc.Name = sOcc Then Exit For End If oOcc = Nothing Next Dim oPosRep As PositionalRepresentation = oDoc.ComponentDefinition.RepresentationsManager.ActivePositionalRepresentation If oPosRep.Name = sPosRep_1 Then oOcc.ActiveModelState = sMS_1 ElseIf oPosRep.Name = sPosRep_2 Then oOcc.ActiveModelState = sMS_2 End If oView.Close End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |