Zum Hauptinhalt springen
Featured image for iLogic: Masse in Custom Property eintragen

iLogic: Masse in Custom Property eintragen

·485 Wörter·3 min·
Inhaltsverzeichnis
Inventor iLogic - Dieser Artikel ist Teil einer Serie.
Teil 22: Dieser Artikel

Inventor stellt die Angabe über die Masse der Konstruktion über das MassProperties Object bereit. Die Angabe erfolgt in Gramm.

Dieser Wert kann auch auf Zeichnungen als Textbaustein mittels Physical Properties - Model > MASS genutzt werden:

Der Massenwert, den die API liefert ist trügerisch, denn er stellt nur den letzten Wert dar, der erfolgreich berechnet werden konnte. Wurde bspw. eine Unterkomponente nicht sauber aktualisiert, bescheinigt Inventor dies mit einem Blitz-Icon und liefert in der Application keinen sauberen Massenwert, sondern N/A zurück:

Das Thema wird seit Jahren lang und breit im Inventor-Forum diskutiert und sorgt oftmals für fehlende Masseangaben in Schriftköpfen:

Autodesk hat dazu ebenfalls ein Support-Dokument veröffentlicht Properties are shown as N/A in Inventor drawing and Vault batch plot und nennt wortkarg folgenden Grund:

Physical properties are not updated in the model and also shown as N/A.

Der Grund liegt, wie bereits erwähnt, in nicht sauber aktualisierten Unterkomponenten. Weist man einer Unterkomponente ein neues Material zu, ändern sich folgerichtig auch die Massenwerte der Komponente. Inventor erfordert nun ein auschecken und eine neue Speicherung der übergeordneten Komponente. Das kann bei kleinen Konstruktionen ein schneller Akt sein, stößt aber bei größeren Designs mit Freigabeprozessen schnell auf langwierige Hürden.

Code Beispiele

Im folgenden sind zwei Methoden aufgelistet, um den Massenwert zu ermitteln, auf drei Nachkommastellen zu runden und in ein Custom Property mit dem Namen Masse zu schreiben. Dieses Property kann dann als dreckiger Workaround bspw. in den Schriftköpfen von Zeichnungen verwendet werden.

iLogic Snippet iProperties.Mass

iLogic hat ein natives Snippet iProperties.Mass, das den Massenwert ermitteln kann. Es hat jedoch einen kritischen Nachteil, denn es liefert den Rückgabewert immer in der Masseneinheit, die in den Document Settings hinterlegt ist:

Möchte man dieses Snippet benutzen, sollte vorher immer sichergestellt sein, dass ein einheitliches Einheitensystem in jedem Bauteil vorhanden ist, um zu verhindern dass Werte mal in Gramm und mal in Kilogramm rausgeschrieben werden. Wie das geht wurde bereits im Post iLogic: Units of Measurement beschrieben. Anschließend kann das Snippet folgendermaßen benutzt werden:

Dim dMass As Double = iProperties.Mass

iProperties.Value("Custom", "Masse") = Round(dMass, 3)

Alternative: Inventor API

Eine alternative Methode besteht darin, dass man den letzten ermittelbaren Wert der Masse über die API ausliest:

Dim oDoc As Document = ThisDoc.Document
Dim UOM As UnitsOfMeasure = oDoc.UnitsOfMeasure
Dim dMass As Double = oDoc.ComponentDefinition.MassProperties.Mass

' Konvertiere Masse in Kilogramm
dMass = UOM.ConvertUnits(dMass, UnitsTypeEnum.kDatabaseMassUnits, UnitsTypeEnum.kKilogramMassUnits)
' Runde Massenwert auf 3 Nachkommastellen
dMass = Round(dMass, 3)

iProperties.Value("Custom", "Masse") = dMass
Logger.Info("Masse: {0} [kg]", dMass)

Der Code liefert verlässlich unabhängig von der Masseneinheit in den Document Settings eine Massenwert in der Einheit kg, der auf drei Nachkommastellen gerundet ist.


Achtung: Sollte die iLogic automatisch mit einem Trigger ausgelöst werden, darf sie nicht einer Zeichnung zugeordnet sein, denn diese haben keinen Massenwert. Alternativ kann man den Code umschreiben und explizit den Dokumententyp abfragen, wie im Post iLogic: Dokumententypen beschrieben.

Inventor iLogic - Dieser Artikel ist Teil einer Serie.
Teil 22: Dieser Artikel