Replace Component (C#)
This example shows how to replace a component with a different component.
//---------------------------------------------------------------------------
// Preconditions: Specified file exists.
//
// Postconditions: The first instance of the shaft
washer component is
// replaced
with a lock washer.
//
// NOTE: The
replacement does not fit properly with the model.
//--------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
using SwDocumentMgr;
namespace ExampleCS.csproj
{
partial
class SolidWorksMacro
{
public
void Main()
{
//
Opening the file using the SolidWorks Document Manager API,
//
not the SolidWorks API. This
sample code is packaged in a SolidWorks
//
macro for your convenience.
SwDMClassFactory
swCf;
swCf
= new SwDMClassFactory();
SwDocumentMgr.SwDMApplication
swDocMgr;
swDocMgr
= swCf.GetApplication("your_license_key");
SwDMDocument12
swDoc12;
SwDocumentMgr.SwDmDocumentOpenError
res;
SwDmDocumentType
dt;
dt
= SwDmDocumentType.swDmDocumentAssembly;
string
filename;
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
= swDocMgr.GetDocument(filename,
dt, false, out res) as SwDMDocument12;
if
(swDoc12 == null | (res != SwDmDocumentOpenError.swDmDocumentOpenErrorNone))
{
Debug.Print("Error
opening file...");
return;
// TODO: Might not be correct. Was : Exit Sub
}
Debug.Print("Getting
the active configuration...");
SwDMConfiguration8
activeConfig;
SwDocumentMgr.SwDMConfigurationMgr
configMgr;
configMgr
= swDoc12.ConfigurationManager;
configMgr.GetConfigurationNames();
activeConfig
= configMgr.GetConfigurationByName(configMgr.GetActiveConfigurationName())
as SwDMConfiguration8;
if
(activeConfig == null)
{
Debug.Print("Error
getting the active configuration...");
return;
}
Debug.Print("Getting
the components of the active configuration...");
object[]
vComponents;
vComponents
= (object[])activeConfig.GetComponents();
SwDMComponent6
swDmComponent;
int
i;
for
(i = 0; i < vComponents.Length; i++)
{
swDmComponent
= (SwDMComponent6)vComponents[i];
if
(swDmComponent.Name == "shaft
washer")
{
bool
bResult = 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());
break;
}
}
swDoc12.Save();
swDoc12.CloseDoc();
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
}
}