Replace Component (VB.NET)
This example shows how to replace a component with a different component.
'---------------------------------------------------------------------------
' Preconditions:
' 1. Copy the sample code to a VB.NET console application.
' 2. Ensure that the specified file exists.
' 3. Replace "your_license_key" with your DocumentManager license.
' 4. Add the DocumentManager interop assembly to the project references:
' Select Project > Add Reference > Browse >
' install_dir\api\redist\SolidWorks.Interop.swdocumentmgr.dll.
' 5. Register swDocumentMgr.dll.
' (Read DocumentManager API Help Getting Started to learn how to
' register swDocumentMgr.dll.)
' 6. Open an Immediate window.
'
' Postconditions:
' 1. Inspect the Immediate window.
' 2. The first instance of the shaft washer component is
' replaced with a lock washer in the document.
'
' NOTE: The specified file should be backed up before running this macro,
' as it is used elsewhere. The macro uses a replacement that does not
' properly fit in the model.
'--------------------------------------------------------------------------
Imports
System.Diagnostics
Imports
SolidWorks.Interop.swdocumentmgr
Module
Module1
Sub
Main()
' Opening the file using the
SolidWorks Document Manager API,
'
not the SolidWorks API.
Dim
swCf As
SwDMClassFactory
swCf = New
SwDMClassFactory()
Dim
swDocMgr As
SwDMApplication
swDocMgr = DirectCast(swCf.GetApplication("your_license_key"),
SwDMApplication)
Dim
swDoc12 As
SwDMDocument12
Dim
res As
SwDmDocumentOpenError
Dim
dt As
SwDmDocumentType
dt = SwDmDocumentType.swDmDocumentAssembly
Dim
filename As
String
Debug.Print("Opening
an assembly...")
Debug.Print("Substitute your path
to this SolidWorks sample file.")
filename = "C:\Program Files\SolidWorks
Corp\SolidWorks\samples\tutorial\advdrawings\98food processor.sldasm"
swDoc12 =
TryCast(swDocMgr.GetDocument(filename,
dt, False,
res), SwDMDocument12)
If
swDoc12 Is
Nothing
Or (res <>
SwDmDocumentOpenError.swDmDocumentOpenErrorNone)
Then
Debug.Print("Error
opening file...")
Return
End
If
Debug.Print("Getting
the active configuration...")
Dim
activeConfig As
SwDMConfiguration8
Dim
configMgr As
SwDMConfigurationMgr
configMgr = swDoc12.ConfigurationManager
configMgr.GetConfigurationNames()
activeConfig = TryCast(configMgr.GetConfigurationByName(configMgr.GetActiveConfigurationName()),
SwDMConfiguration8)
If
activeConfig Is
Nothing
Then
Debug.Print("Error
getting the active configuration...")
Return
End
If
Debug.Print("Getting
the components of the active configuration...")
Dim
vComponents As
Object()
vComponents = DirectCast(activeConfig.GetComponents(),
Object())
Dim
swDmComponent As
SwDMComponent6
Dim
i As
Integer
For
i = 0 To
vComponents.Length - 1
swDmComponent = DirectCast(vComponents(i),
SwDMComponent6)
If
swDmComponent.Name = "shaft washer"
Then
Dim
bResult As
Boolean =
swDmComponent.Replace("C:\Program Files\SolidWorks
Corp\SolidWorks\samples\tutorial\smartcomponents\lockwasher.sldprt",
"Default",
False)
Debug.Print("Replacing
shaft washer with lock washer...")
Debug.Print(bResult.ToString())
Exit
For
End
If
Next
swDoc12.Save()
swDoc12.CloseDoc()
End
Sub
End Module