Get External References Example (C#)
This example shows how to
get all of the external references for the base part using the SolidWorks Document Manager API.
//-----------------------------------------
// Preconditions:
// 1. Read the SolidWorks Document Manager API
// Getting Started topic.
// and ensure that the required DLLs have been registered.
// 2. Copy and paste this module into a C#
// console application in Microsoft
Visual Studio.
// 3. Ensure that the specified part exists
// (or point to another assembly).
// 4. Add the Solidworks.Interop.swdocumentmgr.dll
// reference to the project:
// a. Right-click the solution in Solution Explorer.
// b. Select Add Reference.
// c. Click the Browse tab.
// d. Load:
// <SolidWorks_install_dir>\api\redist\Solidworks.Interop.swdocumentmgr.dll.
// 5. Substitute <your_license_code> with your SolidWorks
// Document
Manager license key.
// 6. Compile and run this program in Debug mode.
//
// Postconditions: Inspect the Output Window and
// the code to see how the API is used.
//------------------------------------------
using
SolidWorks.Interop.swdocumentmgr;
using
System;
using
System.Diagnostics;
using
System.Collections.Generic;
using
System.Text;
class
Program
{
static
void Main(string[]
args)
{
const
string
sLicenseKey =
"<your_license_code>";
//Specify your license key
const
string
sDocFileName = "C:\\Program Files\\SolidWorks
Corp\\SolidWorks\\samples\\tutorial\\cosmosfloxpress\\ball valve\\ball_valve.sldasm";
SwDMClassFactory swClassFact =
default(SwDMClassFactory);
SwDMApplication
swDocMgr = default(SwDMApplication);
SwDMDocument13
swDoc = default(SwDMDocument13);
SwDMSearchOption
swSearchOpt = default(SwDMSearchOption);
SwDmDocumentType
nDocType = 0;
SwDmDocumentOpenError
nRetVal = 0;
string[]
vDependArr = null;
// Determine type of SolidWorks
file based on file extension
if
(sDocFileName.EndsWith("sldprt"))
{
nDocType =
SwDmDocumentType.swDmDocumentPart;
}
else
if (sDocFileName.EndsWith("sldasm"))
{
nDocType =
SwDmDocumentType.swDmDocumentAssembly;
}
else
if (sDocFileName.EndsWith("slddrw"))
{
nDocType =
SwDmDocumentType.swDmDocumentDrawing;
}
else
{
// Not a SolidWorks file
nDocType =
SwDmDocumentType.swDmDocumentUnknown;
// So cannot open
return;
}
swClassFact = new
SwDMClassFactory();
swDocMgr = swClassFact.GetApplication(sLicenseKey);
swSearchOpt = swDocMgr.GetSearchOptionObject();
swDoc = (SwDMDocument13)swDocMgr.GetDocument(sDocFileName,
nDocType, false,
out
nRetVal);
Debug.Assert(SwDmDocumentOpenError.swDmDocumentOpenErrorNone
== nRetVal);
Debug.Print("File
= " + swDoc.FullName);
object
vBrokenRefs = null;
object
vIsVirtuals = null;
object
vTimeStamps = null;
vDependArr = (string[])swDoc.GetAllExternalReferences4(swSearchOpt,
out
vBrokenRefs, out
vIsVirtuals, out
vTimeStamps);
if
((vDependArr == null))
return;
Debug.Print("External
references:");
foreach
(string
vDepend in
vDependArr) {
Debug.Print("
" + vDepend);
}
Debug.Print("Reference
statuses as defined in swDmReferenceStatus");
foreach
(SwDmReferenceStatus
brokenRef in
(SwDmReferenceStatus[])vBrokenRefs)
{
Debug.Print("
" + brokenRef);
}
Debug.Print("Virtual
component?");
foreach
(Boolean
isVirtual in
(Boolean[])vIsVirtuals)
{
Debug.Print("
" + isVirtual);
}
Debug.Print("Timestamps");
foreach
(Double
timeStamp in
(Int32[])vTimeStamps)
{
Debug.Print("
" + timeStamp);
}
}
}