Set Material Example (C#)
This example shows how to get the names of the material schema, material
databases, and bodies in a part document. This example also shows how
to apply a SolidWorks Material to all of the bodies in a part document.
//-----------------------------
// Preconditions: Specified document exists.
//
// Postconditions: The material ABS
PC from the
// SolidWorks Material database is applied to all
// bodies in the open part document.
//
// NOTE: Because the part document is used elsewhere,
// do not save any changes when closing it.
//------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
namespace GetMaterialBodyCSharp.csproj
{
public
partial class SolidWorksMacro
{
public
void Main()
{
ModelDoc2
swModel = default(ModelDoc2);
PartDoc
swPart = default(PartDoc);
Body2
swBody = default(Body2);
int
errors = 0;
int
warnings = 0;
object[]
vMatDBarr = null;
object[]
vMatDB = null;
object[]
Bodies = null;
long
BodyMaterialError = 0;
string
sMatName = "";
string
sMatDB = "";
int
i = 0;
int
j = 0;
bool boolstat = false;
//
Open the document
swModel
= (ModelDoc2)swApp.OpenDoc6("c:\\Program
Files\\SolidWorks Corp\\SolidWorks\\samples\\tutorial\\multibody\\multi_inter.sldprt",
(int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent,
"", ref errors, ref warnings);
swPart
= (PartDoc)swModel;
//
Get the material schema and names
//
of available materials databases
vMatDBarr
= (object[])swApp.GetMaterialDatabases();
Debug.Print("Material
schema pathname = " + swApp.GetMaterialSchemaPathName());
for
(i=0; i < vMatDBarr.Length; i++)
{
Debug.Print("
Material database: " + vMatDB);
}
Debug.Print("");
Bodies
= (object[])swPart.GetBodies2((int)swBodyType_e.swAllBodies,
false);
for
(j = 0; j < Bodies.Length; j++)
{
swBody
= (Body2)Bodies[j];
//
Get the name of the body
Debug.Print(swBody.Name);
swBody.Select2(false, null);
//
Set the SolidWorks material for that body
BodyMaterialError
= swBody.SetMaterialProperty("Default",
"solidworks materials.sldmat", "ABS PC");
// Comment out the previous statement and uncomment the following statement to
use custom material
//BodyMaterialError
= swBody.SetMaterialProperty("Default",
"custom materials.sldmat", "Custom Plastic");
//
Get the names of the body's material and the
//
database to which it belongs
sMatName
= swBody.GetMaterialPropertyName("",
out sMatDB);
if
(string.IsNullOrEmpty(sMatName))
{
Debug.Print("Body
" + j + "'s material name: No material applied");
}
else
{
Debug.Print("Body
" + j + "'s material name: " + sMatName);
Debug.Print("Body
" + j + "'s material database: " + sMatDB);
Debug.Print("
");
}
}
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
}
}