Ankündigungen

Ab Dezember werden wir Inhalte aus der Community, die 10 Jahre und älter sind, archivieren. Diese FAQ enthält weitere Informationen.

Community
Inventor - Deutsch
Das Forum für alle Fragen rund um Autodesk Inventor, iLogic, Factory Design, Automation und mehr. Der Ort zum Fragen stellen, Antworten erhalten und Wissen teilen.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Ilogic Masse =0 Bauteil auf Referenz

8 ANTWORTEN 8
GELÖST
Antworten
Nachricht 1 von 9
Holger_Fen
1047 Aufrufe, 8 Antworten

Ilogic Masse =0 Bauteil auf Referenz

Hallo an die Ilogic – Profis,
gibt es eine Regel, die in einer Baugruppe alle Bauteile mit dem Gewicht 0 kg ausfiltert, und diese auf Referenz setzt. Ändert sich das Gewicht mehrere Teile oder des Teils von 0 auf X soll die Referenz auf Vorgabe zurückgesetzt werden.
Danke für die Hilfe!!!

Beschriftungen (3)
8 ANTWORTEN 8
Nachricht 2 von 9
S_May
als Antwort auf: Holger_Fen

Hi @Holger_Fen 

 

wie kann denn ein Gewicht 0 sein bei einem Bauteil?

Nachricht 3 von 9
fullevent
als Antwort auf: Holger_Fen

Hallo @Holger_Fen,

 

du musst innerhalb einer Baugruppe alle Komponenten durchlaufen und da bei jedem Bauteil (oder auch Baugruppe??) das Gewicht abfragen.

Wenn Gewicht gleich null -> Stücklistenstruktur auf Referenz

oOccurrence.Definition.BOMStructure = BOMStructureEnum.kReferenceBOMStructure

sonst -> Stücklistenstruktur auf Normal

oOccurrence.Definition.BOMStructure = BOMStructureEnum.kNormalBOMStructure

Sowas lässt sich vergleichsweise leicht realisieren.

 

Was vermutlich nicht funktioniert ist das automatische triggern der Regel bei einer Änderung der Massen. Das erste was mir einfällt ist ein automatischer Durchlauf beim Speichern.. ABER
Je nachdem wie groß die Baugruppe ist.. 50 Teile, 500 Teile, 5000 Teile??.. wird der Durchlauf entsprechend dauern.. Außerdem ist der Durchlauf wahrscheinlich nicht immer gewünscht.
Dann lieber die Regel in der Baugruppe manuell triggern.. oder als Makro ausführen und als Button ins Menü legen falls es öfter gebraucht wird.

 

Grüße,


Aleksandar Krstic
Produkt- und Projektmanager

Nachricht 4 von 9
Holger_Fen
als Antwort auf: S_May

Hallo S_May,

wird in einem Multibody - Bauteil ein Element unterdrückt , so bleibt in der Baugruppe die Ableitung ohne Element , also ein Bauteil ohne Gewicht.  

 

Nachricht 5 von 9
Holger_Fen
als Antwort auf: fullevent

Hallo fullevent,

ich habe den die Regel wie folgt umgesetzt , jedoch wird die Referenz nicht umgeschaltet wenn das Gewicht größer ist als Null .  

 

oCompDef = ThisDoc.Document.ComponentDefinition
For Each oOcc As ComponentOccurrence In oCompDef.Occurrences
If oOcc.MassProperties.Mass >= 0.1 g Then
oOcc.BOMStructure = BOMStructureEnum.kDefaultBOMStructure
Else If oOcc.MassProperties.Mass = 0 g Then
oOcc.BOMStructure = BOMStructureEnum.kReferenceBOMStructure
End If
Next

Nachricht 6 von 9
fullevent
als Antwort auf: Holger_Fen

Hallo @Holger_Fen,

 

ich habe es gestern zwar in VBA getestet, aber da hat es problemlos funktioniert 🤔

Was mir auffällt ist, dass du die Einheit mit hast. Ich versuche immer mit Inventor internen Einheiten zu arbeiten.

Ich wusste auch gar nicht, dass iLogic die Angabe so akzeptiert und umrechnet?!

 

Hast du geprüft ob sich das Gewicht des Referenz-Bauteils in der Baugruppe auch wirklich geändert hat?
Das ist im Prinzip was abgefragt wird.

 

Grüße,


Aleksandar Krstic
Produkt- und Projektmanager

Nachricht 7 von 9
Holger_Fen
als Antwort auf: fullevent

Hallo fullevent,

solange das Bauteil auf Referenz steht wird das Gewicht nicht aktualisiert , siehe Anhang.

 Meine Regel schaltet das Bauteil nicht auf Vorgabe zurück !  Wie sieht dein Code aus ? 

Vorab aber schon ein Danke für die Hilfe !

Nachricht 8 von 9
fullevent
als Antwort auf: Holger_Fen

Hallo @Holger_Fen,

 

ich habe das Umschalten der Stücklistenstruktur in Abhängigkeit vom Gewicht getestet. Nicht das Überschreiben oder Aktualisieren des Gewichtes.

 

Wenn ich dich richtig Verstanden habe, dann ist dein Problem nicht das Umschalten der Stücklistenstruktur sondern das Bauteilgewicht in der Baugruppe. Richtig?

 

Schalte im ersten Step einfach jede Komponente auf Vorgabe. Anschließend kannst du das Gewicht abfragen und ggf. auf Referenz setzen. Hier mal als VBA..

Private Sub Forum_test()
    Dim oCompDef As ComponentDefinition
    Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition
    Dim oOcc As ComponentOccurrence
    For Each oOcc In oCompDef.Occurrences
        oOcc.BOMStructure = BOMStructureEnum.kDefaultBOMStructure
        If oOcc.MassProperties.Mass = 0 Then oOcc.BOMStructure = BOMStructureEnum.kReferenceBOMStructure
    Next
End Sub

 

Das sollte zum gewünschten Ergebnis führen.

 


Aleksandar Krstic
Produkt- und Projektmanager

Nachricht 9 von 9
Holger_Fen
als Antwort auf: fullevent

Hallo Aleksander,

danke für den Code ,  ich habe eine ähnliche Frage im Forum gefunden, und diesen entsprechend abgeändert.

Die Ilogic-Regel wird manuell aufgerufen . Beim Speichern werden die Gewichtswerte aktualisiert und in die Properties der Bauteile geschrieben . Danach werden die Elemente mit Gewicht "0" unsichtbar geschaltet und bekommen die Eigenschaft "Referenz ". Somit kann ich Stutzen ein bzw. ausblenden und die Stückliste passt sich an. 

Danke für die Hilfe 👍

Anbei der Code :

 

Thisdoc.Save
Dim assemblyDef As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
Dim occ As Inventor.ComponentOccurrence
For Each occ In assemblyDef.Occurrences.AllLeafOccurrences
    Dim refDoc As PartDocument = occ.Definition.Document
    
    Dim customPropSet As PropertySet
    customPropSet = refDoc.PropertySets.Item("Inventor User Defined Properties")

	Dim weightProp As Inventor.Property
	weightProp = Nothing
	Try
		weightProp = customPropSet.Item("Gewicht")
    Catch ex As Exception
	End Try 
	If Not weightProp Is Nothing Then
        Dim weightVal As Double
        weightVal = weightProp.Value
        
        If weightVal = "0" Then
            occ.Visible = False
			occ.BOMStructure = BOMStructureEnum.kReferenceBOMStructure
        Else
            occ.Visible = True
			occ.BOMStructure = BOMStructureEnum.kDefaultBOMStructure
	End If
    End If
Next
InventorVb.DocumentUpdate(True)

 

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report