'mit diesem Makro starten für Selektion der Flächen und Berechnung Public WithEvents swApp As SldWorks.SldWorks ' WICHTIG mit Withevents deklariert Public WithEvents swPartdoc As SldWorks.PartDoc ' WICHTIG mit Withevents deklariert Dim swModelDocExt As SldWorks.ModelDocExtension Dim swFeatureManager As SldWorks.FeatureManager Dim swMidSurfaceFeature As SldWorks.MidSurface3 Dim swFeature As SldWorks.Feature Dim swSelectionMgr As SldWorks.SelectionMgr Dim swFace As SldWorks.Face2 Dim swSelObj As Object Dim status As Boolean Dim errors As Long Dim warnings As Long Dim fileName As String Dim count As Long Dim faces As Variant Dim i As Long Dim vFaceProp As Variant Dim dblSurFace As Double ' 'Dim Dateiname As String Dim longstatus As Long, longwarnings As Long '/Elementeigenschaft Dim swEntity As SldWorks.Entity Dim edgeName As String ' FaceName Dim messageString As String Dim ret As Boolean Public Sub start() Set swApp = Application.SldWorks Set swPartdoc = swApp.ActiveDoc ' aktives Part zuweisen Set swModelDocExt = swPartdoc.Extension Set swSelectionMgr = swPartdoc.SelectionManager ' SelectionManager aktivieren UserForm1.Show End Sub 'Diese Funktion wird bei jeder Selektion ausgeführt Private Function swPartdoc_UserSelectionPostNotify() As Long If (swSelectionMgr.GetSelectedObjectCount <> 0) Then Set swSelObj = swSelectionMgr.GetSelectedObject6(1, -1) 'selektierte Fläche ermitteln 'Debug.Print "Selected Type = " & swSelectionMgr.GetSelectedObjectType2(1)' Gibt den Selektiontyp in Direktbereich aus If swSelectionMgr.GetSelectedObjectType2(1) = 2 Then 'Fläche wurde gewählt/Flächentyp 2 = swface Set swFace = swSelectionMgr.GetSelectedObject6(1, -1) 'selektierte Fläche ermitteln '/Gibt den Flächeninhalt der selektierten Fläche an 'dblSurFace = swFace.GetArea dblSurFace = swFace.GetArea * 1000000 ' Muss mal Faktor 1 000 000 berechnet werden UserForm2.TextBox1.Text = Format(dblSurFace, "0.00") 'auf 2 Nachkommastellen '/ '/Gibt den Entitätsnamen der Fläche an edgeName = swPartdoc.GetEntityName(swEntity) 'Gebe gespeicherten Text unter Eigenschaft aus If (edgeName = "") Then ret = swPartdoc.SetEntityName(swEntity, "NewEdgeName") 'Wenn kein Name vergeben wurde, wird der name" NewEdgeName" vergeben If ret Then swApp.SendMsgToUser ("Successfully set name of edge") 'Nach Vergabe des Namens kommt die Bestätigung Else swApp.SendMsgToUser ("Error setting name of edge") 'Wenn nichst ausgewählt wurde wird ein Error angezeigt End If Else messageString = "Edge already has name of " + edgeName 'In der Textausgabe wird der name des bereits vergebeben Namens ausgegeben swApp.SendMsgToUser (messageString) End If Else MsgBox ("Keine Fläche gewählt!") 'Wenn keine Fläche ausgewählt wurde , wird die Benachrichtigung ausgegeben End If End If End Function