Hide Table of Contents

Swap To and From Components on Each Wire Example (VBA)

This example shows how to swap the "to" and "from" components on each wire.

'--------------------------------------------------------------------
' Preconditions:
' 1. Open an assembly document that contains a routing assembly.
' 2. Select a component representing a routing assembly.
'
' Postconditions: "To" and "from" components are swapped.
'--------------------------------------------------------------------

Option Explicit

 

Dim swApp As SldWorks.SldWorks

 

Sub Main()

    Dim swModel                 As SldWorks.ModelDoc2

    Dim swTopLevelAssembly      As SldWorks.AssemblyDoc

    Dim swRoutingAssembly       As SldWorks.AssemblyDoc

    Dim rtRouteManager          As SWRoutingLib.RouteManager

    Dim swComponent             As SldWorks.Component2

    Dim rtElectricalRoute       As SWRoutingLib.ElectricalRoute

    Dim bRetVal                 As Boolean

    Dim vWires                  As Variant

    Dim vWire                   As Variant

    Dim rtWire                  As SWRoutingLib.Wire

    Dim strNewWireName          As String

    Dim strNewToComponent       As String

    Dim strNewFromComponent     As String

    Dim strNewToPin             As String

    Dim strNewFromPin           As String

    

    ' Connect to SOLIDWORKS

    Set swApp = Application.SldWorks

    

    ' Get the active document

    Set swModel = swApp.ActiveDoc

    

    ' Downcast from model document to assembly document

    Set swTopLevelAssembly = swModel

    

    ' Select the component that represents a routing assembly

    Set swComponent = swModel.SelectionManager.GetSelectedObject6(1, 0)

    

    If swComponent Is Nothing Then

        Debug.Print "No component selected."

        Exit Sub

    End If

    

    ' Get the assembly document for this component

    Set swRoutingAssembly = swComponent.GetModelDoc

    

    ' Get the RouteManager from the routing assembly

    Set rtRouteManager = swRoutingAssembly.GetRouteManager

            

    If rtRouteManager Is Nothing Then

        Debug.Print "No route manager found in sub-assembly document: " & swRoutingAssembly.GetPathName

        Exit Sub  

    End If

                        

    '

    ' Must be editing component for route properties to be available

    '

                         

    ' Clear selection

    swModel.ClearSelection2 True

    

    ' Make sure that the component representing the routing assembly is selected

    bRetVal = swComponent.Select3(True, Nothing)

                            

    ' Start editing the routing assembly

    swTopLevelAssembly.EditAssembly

    

    ' Get the electrical route

    Set rtElectricalRoute = rtRouteManager.GetElectricalRoute

    

    ' Check for an electrical route

    If rtElectricalRoute Is Nothing Then

        Debug.Print "No electrical route found."

    Else

        Debug.Print "Electrical route found."

        

        '

        ' Swap "to" and "from" component on each wire

        '

        

        ' Get the wires

        vWires = rtElectricalRoute.GetWires

        

        ' Loop over the wires.

        If Not IsEmpty(vWires) Then

            For Each vWire In vWires

                Set rtWire = vWire

                Debug.Assert (Not rtWire Is Nothing)

                

                ' Give the wire a new name

                strNewWireName = rtWire.UserName & "-swapped"

                

                rtWire.UserName = strNewWireName

            

                ' Swap references

                strNewToComponent = rtWire.FromComponentReference

                strNewToPin = rtWire.FromPinReference

                strNewFromComponent = rtWire.ToComponentReference

                strNewFromPin = rtWire.ToPinReference

                

                rtWire.FromComponentReference = strNewFromComponent

                rtWire.FromPinReference = strNewFromPin

                

                rtWire.ToComponentReference = strNewToComponent

                rtWire.ToPinReference = strNewToPin

                

            Next vWire

        

            ' Commit the changes

            bRetVal = rtElectricalRoute.RouteWires

            If bRetVal = False Then

                Debug.Print "Routing of wires failed."                    

            Else                

                Debug.Print "Routing of wires successful."

            End If

 

        End If

 

    End If

    

    ' Return to editing the top-level assembly

    swTopLevelAssembly.EditAssembly

                    

End Sub



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Swap To and From Components on Each Wire Example (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2021 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.