Replace Component Example (C#)
This example shows how to replace a component with a different component.
//---------------------------------------------------------------------------
// Preconditions:
// 1. Copy the sample code to a C# console application.
// 2. Ensure that the namespace matches your C# project name.
// 3. Ensure that the specified file exists.
// 4. Replace "your_license_key" with your DocumentManager license.
// 5. Add the DocumentManager interop assembly to the project
references:
// Select Project > Add Reference > Browse >
// install_dir\api\redist\CLR2\SolidWorks.Interop.swdocumentmgr.dll.
// 6. Register swDocumentMgr.dll.
// (Read DocumentManager API Help Getting Started to learn how to
// register swDocumentMgr.dll.)
// 7. 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.
//--------------------------------------------------------------------------
using
System;
using
System.Diagnostics;
using
SolidWorks.Interop.swdocumentmgr;
namespace
ConsoleApplication2
{
class
Program
{
static
void Main(string[]
args)
{
// Opening the file using the
SolidWorks Document Manager API,
//
not the SolidWorks API.
SwDMClassFactory
swCf;
swCf = new
SwDMClassFactory();
SwDMApplication
swDocMgr;
swDocMgr = (SwDMApplication)swCf.GetApplication("your_license_key");
SwDMDocument12
swDoc12;
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;
}
Debug.Print("Getting
the active configuration...");
SwDMConfiguration8
activeConfig;
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();
}
}
}