Attribute VB_Name = "Gewicht" ' Durchsucht die Properties nach Eintraegen von: ' - Masse ' und trägt diese als Benutzerdefinierte Properties ein ' '--------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------- Sub GewichtHolen() 'Schreibt die Masse des Bauteils oder Assemblies in die benutzerdefinierten Eigenschaften als Eigenschaft "Masse" 'Nur im Part: If Not ((ThisApplication.ActiveDocumentType = kPartDocumentObject) Or _ (ThisApplication.ActiveDocumentType = kAssemblyDocumentObject) Or _ (ThisApplication.ActiveDocumentType = kUnknownDocumentObject)) Then Exit Sub End If Dim oDoc As Inventor.Document Set oDoc = ThisApplication.ActiveDocument sMasse = WieIstDasGewicht(oDoc) 'Benutzerdefinierten Eintrag erzeugen 'Masse vorhanden? Dim bMasseDa As Boolean Dim oProp As Property bMasseDa = False For Each oProp In oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") 'Benutzerdefiniert If oProp.name = "Masse" Then bMasseDa = True Exit For End If Next 'Masse eintragen oder ändern If bMasseDa Then oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Masse").Value = sMasse Else oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add sMasse, "Masse" End If Set oApp = Nothing Set oDoc = Nothing Set oProp = Nothing Set oUOM = Nothing End Sub Private Sub TESTGewichtHolen() Call GewichtHolen MsgBox "Gewicht: = " & IPropEintraege.Property_lesen(ThisApplication.ActiveDocument, "Masse") End Sub Private Function WieIstDasGewicht(oDoc As Inventor.Document) As String ' Holt sich die Masse aus den MasseProperties und stellt diese in einem String zur Verfügung ' Format : sMasse = sMasseWert & " " & sMasseEinheit ' Set a reference to the UnitsOfMeasure object of the ' active document. Dim oUOM As UnitsOfMeasure Set oUOM = oDoc.UnitsOfMeasure Dim sMasse As String Dim sMasseWert As String Dim sMasseEinheit As String Dim dMasse As Double dMasse = oDoc.ComponentDefinition.MassProperties.Mass sMasse = oUOM.GetStringFromValue(oDoc.ComponentDefinition.MassProperties.Mass, oUOM.MassUnits) 'Debug.Print dMasse 'Debug.Print sMasse 'Debug.Print ' String auseinandernehmen sMasseWert = Left$(sMasse, InStr(1, sMasse, " ", vbTextCompare) - 1) sMasseEinheit = TrimExtended(Right$(sMasse, Len(sMasse) - InStr(1, sMasse, " ", vbTextCompare))) 'dMasse = CDbl(sMasseWert) Const iSignifikanteStellen As Integer = 3 Select Case sMasseEinheit Case Is = "kg" ' für das metrische System 'Debug.Print dMasse; " kg"; 'Debug.Print If (dMasse <= 0.00001) Then 'Debug.Print "Umrechnung in MilliGramm" sMasseWert = CStr(Round(dMasse * 1000000, iSignifikanteStellen)) sMasseEinheit = "mg" ElseIf ((0.00001 < dMasse) And (dMasse <= 0.0001)) Then 'Debug.Print "Umrechnung in MilliGramm" sMasseWert = CStr(Round(dMasse * 1000000, iSignifikanteStellen - 1)) sMasseEinheit = "mg" ElseIf ((0.0001 < dMasse) And (dMasse <= 0.001)) Then 'Debug.Print "Umrechnung in MilliGramm" sMasseWert = CStr(Round(dMasse * 1000000, iSignifikanteStellen - 2)) sMasseEinheit = "mg" ElseIf ((0.001 < dMasse) And (dMasse <= 0.01)) Then 'Debug.Print "Umrechnung in Gramm" sMasseWert = CStr(Round(dMasse * 1000, iSignifikanteStellen)) sMasseEinheit = "g" ElseIf ((0.01 < dMasse) And (dMasse <= 0.1)) Then 'Debug.Print "Umrechnung in Gramm" sMasseWert = CStr(Round(dMasse * 1000, iSignifikanteStellen - 1)) sMasseEinheit = "g" ElseIf ((0.1 < dMasse) And (dMasse <= 1)) Then 'Debug.Print "Umrechnung in Gramm" sMasseWert = CStr(Round(dMasse * 1000, iSignifikanteStellen - 3)) sMasseEinheit = "g" ElseIf ((1 < dMasse) And (dMasse <= 10)) Then 'Debug.Print "Umrechnung in Kilogramm" sMasseWert = CStr(Round(dMasse, iSignifikanteStellen)) sMasseEinheit = "kg" ElseIf ((10 < dMasse) And (dMasse <= 100)) Then 'Debug.Print "Umrechnung in Kilogramm" sMasseWert = CStr(Round(dMasse, iSignifikanteStellen - 1)) sMasseEinheit = "kg" ElseIf ((100 < dMasse) And (dMasse <= 1000)) Then 'Debug.Print "Umrechnung in Kilogramm" sMasseWert = CStr(Round(dMasse, iSignifikanteStellen - 2)) sMasseEinheit = "kg" ElseIf ((1000 < dMasse) And (dMasse <= 10000)) Then 'Debug.Print "Umrechnung in Tonnen" sMasseWert = CStr(Round(dMasse / 1000, iSignifikanteStellen - 1)) sMasseEinheit = "t" ElseIf ((10000 < dMasse) And (dMasse <= 100000)) Then 'Debug.Print "Umrechnung in Tonnen" sMasseWert = CStr(Round(dMasse / 1000, iSignifikanteStellen - 2)) sMasseEinheit = "t" ElseIf (dMasse > 100000) Then 'Debug.Print "Umrechnung in Tonnen" sMasseWert = CStr(Round(dMasse / 1000, iSignifikanteStellen - 3)) sMasseEinheit = "t" Else 'Debug.Print "keine Aktion" End If Case Else 'keine andere Umrechnung verfügbar (Baustelle) sMasseWert = "" sMasseEinheit = "k.A." End Select sMasse = sMasseWert & " " & sMasseEinheit Debug.Print " = "; sMasse 'Debug.Print 'Debug.Print "-------------------------" 'Debug.Print WieIstDasGewicht = sMasse End Function '-------------------------------------------------------------------------------------------------- Sub GewichtHolenAssembly() 'Schreibt die Masse des Bauteils in die benutzerdefinierten Eigenschaften als Eigenschaft "Masse" Call GewichtHolen End Sub Private Sub SchweißnahtGewichtHolen() 'muß erst noch ans rennen kommen !!!!!!!!!!!!!!!!!! 'Schreibt die Masse des Bauteils oder Assemblies in die benutzerdefinierten Eigenschaften als Eigenschaft "Masse" 'Nur im Part: If Not ((ThisApplication.ActiveDocumentType = kAssemblyDocumentObject) Or _ (ThisApplication.ActiveDocumentType = kUnknownDocumentObject)) Then Exit Sub End If Dim oDoc As Inventor.Document Set oDoc = ThisApplication.ActiveDocument End Sub Sub dummy() End Sub