AnsweredAssumed Answered

Selecting Edges

Question asked by Martin M. on Feb 21, 2018
Latest reply on Feb 21, 2018 by Jacob Corder

Hi all, I copied this function from a different thread and I'm trying to convert it to select edges instead of faces. Everything works except for the line " Set Edge = Body.GetEdge ". How do I get GetEdge to work? The link to the other forum https://forum.solidworks.com/thread/213089

   

    Dim swApp As SldWorks.SldWorks

    Dim AssyDoc As SldWorks.ModelDoc2

    Dim longstatus As Long

    Dim MyMate As Object

    Dim CompName As String

    Dim EdgeName As String

    Dim CCompName As String

    Dim EEdgeName As String

    Dim boolstatus As Boolean

    Dim myComp1 As Component2

    Dim myComp2 As Component2

    Dim swAssy As SldWorks.AssemblyDoc

    Dim swComp As SldWorks.Component2

    Dim SelMgr As Object

    Dim SelData As SldWorks.SelectData

    Dim Comp As Object

    Dim Body As Object

    Dim Edge As SldWorks.Edge

    Dim CurEdgeName As String

    Const swSelCOMPONENTS = 20

 

Public Sub SelectComponentEdgeByName(CompName As String, EdgeName As String)

 

    Set swApp = Application.SldWorks

  

    Set swModel = swApp.ActiveDoc

 

    Set SelMgr = swModel.SelectionManager()

 

    Set SelData = SelMgr.CreateSelectData

 

    Set Comp = swModel.GetComponentByName(CompName)

 

    Set Body = Comp.GetBody()

 

    If (Body Is Nothing) Then

 

        swApp.SendMsgToUser "Component Body Unavailable."

 

        swApp.SendMsgToUser "Make sure not lightweight or suppressed"

 

        Exit Sub

 

    End If

 

    Set Edge = Body.GetEdge

 

    Do While Not Edge Is Nothing

 

        CurEdgeName = swModel.GetEntityName(Edge)

 

        If (CurEdgeName = EdgeName) Then

 

            boolstatus = Edge.Select4(True, SelData)

 

            Exit Do

 

        End If

 

        Debug.Print CurEdgeName

 

        Set Edge = Edge.GetNextEdge

 

        Loop

 

End Sub

Outcomes