SolidWorks MakroMania - Masse und Schwerpunkt aller Konfigurationen

SolidWorks MakroMania ist eine Beispielsammlung einiger Makros, die Ihnen eine Vorstellung davon geben soll, was man auch schon mit Makros in SolidWorks alles anstellen kann. Der Code des Makros sollte so gut dokumentiert sein, dass Sie damit ohne weitere Anleitung verstehen, was gemacht wird.

< voriges
MakroMania
Übersicht


nächstes >

Nummer 22
Masse und Schwerpunkt aller Konfigurationen

Download
ZIP, 14 KB

Ich übernehme keine Haftung für die korrekte Funktion der Routinen oder irgendwelcher Schäden bei der Anwendung dieser Beispiele. Das gesamte Risiko trägt der Benutzer selbst. - Sorry, muss sein.

Dieses Excelsheet mit eingebettetem Makro holt zu allen Konfigurationen des aktuellen Modells die Masseeigenschaften (Masse) und die Koordinaten des Schwerpunktes.


' Globale Variable
Dim zeile As Integer        ' Zeilenzähler für Ausgabe im Blatt


Const swMM = 0
Const swCM = 1
Const swMETER = 2
Const swINCHES = 3
Const swFEET = 4
Const swFEETINCHES = 5
Const swANGSTROM = 6
Const swNANOMETER = 7
Const swMICRON = 8
Const swMIL = 9
Const swUIN = 10


Private Sub CommandButton1_Click()
    ' aus aktivem SolidWorks Dokument für alle Konfigurationen
    ' Masse und Mssenmittelpunkt auslesen. Keine Fehlerabragen etc.
    ' 23.02.2003 Stefan Berlitz
    ' http://solidworks.cad.de

    Dim swApp As Object
    Dim ModelDoc As Object
    Dim Configuration As Object
    Dim ConfigCount As Long
    Dim ConfigNames As Variant
    Dim MassProp As Variant

    Dim i As Integer
    Dim conv As Double
    Dim convstring As String
    Dim convmass As Double
    Dim convmassstring As String

    ' an SolidWorks anklinken und aktives Assembly holen
    Set swApp = CreateObject("SldWorks.Application")
    Set ModelDoc = swApp.ActiveDoc

    ' convert unities, SWX uses kg and meters, so we have to convert
    ' if modeldoc uses dufferent units
    Select Case ModelDoc.LengthUnit
        Case swMM
            conv = 1000
            convstring = " [mm]"
            convmass = 1 ' no need to convert kg
            convmassstring = " [kg]"
        Case swCM
            conv = 100
            convstring = " [cm]"
            convmass = 1
            convmassstring = " [kg]"
        Case swMETER
            conv = 1
            convstring = " [m]"
            convmass = 1
            convmassstring = " [kg]"
        Case swINCHES
            conv = 1 / 0.0254
            convstring = " [inch]"
            convmass = 1 / 0.45359   ' converts kg to lbl
            convmassstring = " [lbl]"
        Case swFEET
            conv = 1 / 0.3048
            convstring = " [feet]"
            convmass = 1 / 0.45359
            convmassstring = " [lbl]"
        'Case swFEETINCHES
        'Case swANGSTROM
        'Case swNANOMETER
        'Case swMICRON
        'Case swMIL
        'Case swUIN
        Case Else
            conv = 1
            convstring = " [m]"
            convmass = 1
            convmassstring = " [kg]"
    End Select

    ' Root-Komponente des Assemblies als Ausgangspunkt festmachen
    ConfigCount = ModelDoc.GetConfigurationCount
    ConfigNames = ModelDoc.GetConfigurationNames

    ' erst Blatt leeren, dann Spaltenbeschriftung im Excel-Blatt
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Configname"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Mass" & convmassstring
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "X" & convstring
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Y" & convstring
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Z" & convstring
    zeile = 2   ' Zeilenzähler zur Ausgabe in Tabellenblatt

    For i = 0 To ConfigCount - 1
        Range("A" & zeile).Select
        ActiveCell.FormulaR1C1 = ConfigNames(i)
        If ModelDoc.ShowConfiguration2(ConfigNames(i)) Then
            '
            MassProp = ModelDoc.GetMassProperties
            ' die Reihenfolge der MassProps im Variant ist:
            ' CenterOfMassX, CenterOfMassY, CenterOfMassZ, Volume, Area, Mass,
            ' MomXX, MomYY, MomZZ, MomXY, MomZX, MomYZ
            ' Masse ist die 6. Eigenschaft, also Index 5

            Range("B" & zeile).Select
            ActiveCell.FormulaR1C1 = MassProp(5) * convmass
            Range("C" & zeile).Select
            ActiveCell.FormulaR1C1 = MassProp(0) * conv
            Range("D" & zeile).Select
            ActiveCell.FormulaR1C1 = MassProp(1) * conv
            Range("E" & zeile).Select
            ActiveCell.FormulaR1C1 = MassProp(2) * conv

        Else
            Range("B" & zeile).Select
            ActiveCell.FormulaR1C1 = "Error activating configuration"
        End If
        ' nächste Zeile
        zeile = zeile + 1
    Next i

    ' make it pretty
    Columns("A:E").Columns.AutoFit

End Sub

Zurück zum Seitenanfang

hr.gif (4491 Byte)

counter Kritik und Anregungen bitte an Stefan Berlitz. Letzte Änderung dieser Seite am Donnerstag, 01. Februar 2007 17:40