Hide Table of Contents

Apply Thermostat-controlled Heat Power for Transient Thermal Study Example (C#)

This example shows how to apply thermostat-controlled heat power and flux in a transient thermal study.

//---------------------------------------------------------------------------
// Preconditions:
// 1. Add the SOLIDWORKS Simulation as an add-in (in SOLIDWORKS, click 
//    Tools > Add-ins > SOLIDWORKS Simulation > OK).

// 2. Add the SOLIDWORKS Simulation primary interop assembly as a reference
//    (in the IDE, click Project > Add Reference > .NET > 
//    SolidWorks.Interop.cosworks > OK).
// 3. Ensure that c:\temp exists.

// 4. Ensure that the specified material library exists.
// 5. Ensure that the specified model document exists.
// 6. Open the Immediate window.
//
// Postconditions:
//  1. Opens the specified model document.
//  2. Creates Thermal_One study.
//  3. Defines default thermal study results plot and plot options.
//  4. Applies user-defined and SOLIDWORKS materials to components.
//  5. Specifies initial temperatures for assembly components.
//  6. Specifies thermostat location and the temperature range.
//  7. Prints heat flux properties to the Immediate window.
//  8. Prints radiation properties to the Immediate window.

//  9. Meshes the model.
// 10. Analyzes Thermal_One.
// 11. Creates 60 thermal plots.
// 12. Saves the Thermal1 results plot as an eDrawings document in c:\temp.
// 13. Exports Thermal_One study to the NASTRAN finite-element analysis program
//     in c:\temp.
// 14. Renames Thermal_One study to TransientThermal.
// 15. Inspect the Immediate window, the Simulation study tree,
//     and the graphics area.
//
// NOTES:
//  * To get persistent reference identifiers (PIDs) for model selections,
//    you can use pidcollector.exe or IModelDocExtension::GetPersistReference3.
//  * Solving this study can take some time. Examine the Immediate window
//    to monitor the macro's progress. Done! indicates that the macro
//    has finished.
//  * Because the assembly is used elsewhere, do not save any changes.
//--------------------------------------------------------------------
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.cosworks;
using System.Runtime.InteropServices;
namespace AddHeatFlux_CSharp.csproj
{
    partial class SolidWorksMacro
    {
 
 
        public void Main()
        {
            CosmosWorks COSMOSWORKS = default(CosmosWorks);
            CwAddincallback CWObject = default(CwAddincallback);
            CWModelDoc ActDoc = default(CWModelDoc);
            CWStudyManager StudyMngr = default(CWStudyManager);
            CWStudy Study = default(CWStudy);
            CWSolidManager SolidMgr = default(CWSolidManager);
            CWSolidComponent SolidComp = default(CWSolidComponent);
            CWSolidBody SolidBody = default(CWSolidBody);
            CWThermalStudyOptions ThermalOptions = default(CWThermalStudyOptions);
            CWConvection CWConv = default(CWConvection);
            CWMesh CwMesh = default(CWMesh);
            CWResults CWResult = default(CWResults);
            CWMaterial CWMat = default(CWMaterial);
            CWTemperature CWTemp = default(CWTemperature);
            ModelDoc2 Part = default(ModelDoc2);
            CWLoadsAndRestraintsManager LBCMgr = default(CWLoadsAndRestraintsManager);
            CWHeatFlux heatFlux = default(CWHeatFlux);
            CWHeatPower CWHeatPower = default(CWHeatPower);
            object oselect1 = null;
            object oselect2 = null;
            object oselect3 = null;
            object oselect4 = null;
            object oselect5 = null;
            object oselect6 = null;
            object oselect7 = null;
            object oselect8 = null;
            object oselect9 = null;
            object oselect10 = null;
            object therm1 = null;
            byte[] var1 = null;
            byte[] var2 = null;
            byte[] var3 = null;
            byte[] var4 = null;
            byte[] var5 = null;
            byte[] var6 = null;
            byte[] var7 = null;
            byte[] var8 = null;
            byte[] var9 = null;
            byte[] var10 = null;
            byte[] var11 = null;
            object Temp = null;
            int bApp = 0;
            bool res = false;
            string selection1 = null;
            string selection2 = null;
            string selection3 = null;
            string selection4 = null;
            string selection5 = null;
            string selection6 = null;
            string selection7 = null;
            string selection8 = null;
            string selection9 = null;
            string selection10 = null;
            string selection11 = null;
            int longstatus = 0;
            int longwarnings = 0;
            int errCode = 0;
            double el = 0;
            double tl = 0;
            int nStep = 0;
 
 
            Part = swApp.OpenDoc6("C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2017\\Simulation Examples\\Thermal\\CoffeeJar.SLDASM", (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, ""ref longstatus, ref longwarnings);
            if (Part == null)
                ErrorMsg(swApp, "Failed to open document");
 
            // Get the SOLIDWORKS Simulation add-in object
            CWObject = (CwAddincallback)swApp.GetAddInObject("SldWorks.Simulation");
            if (CWObject == null)
                ErrorMsg(swApp, "Failed to get Simulation add-in");
 
            COSMOSWORKS = CWObject.CosmosWorks;
            if (COSMOSWORKS == null)
                ErrorMsg(swApp, "Failed to get CosmosWorks object");
 
            // Get active document
            ActDoc = COSMOSWORKS.ActiveDoc;
            if (ActDoc == null)
                ErrorMsg(swApp, "Failed to get active document");
 
            // Add a default thermal study results plot
            bApp = ActDoc.AddDefaultThermalStudyPlot((int)swsThermalResultComponentTypes_e.swsThermalResultComponentTypes_TEMP, true);
 
            // Set default thermal plot options
            // Show maximum value annotation on the plot
            res = ActDoc.SetSimulationOptionToggle((int)swsUserPreferenceToggle_e.swsPlotAnnotationShowMaxValue, true);
            Debug.Print("Show maximum value annotation on the plot? " + ActDoc.GetSimulationOptionToggle((int)swsUserPreferenceToggle_e.swsPlotAnnotationShowMaxValue));
 
            // Set sub-folder option
            res = ActDoc.SetSimulationOptionToggle((int)swsUserPreferenceToggle_e.swsResultFolderUnderSubFolder, true);
            Debug.Print("Set sub-folder option? " + ActDoc.GetSimulationOptionToggle((int)swsUserPreferenceToggle_e.swsResultFolderUnderSubFolder));
 
            // Put results in C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2017\Simulation Examples\Thermal\temp
            res = ActDoc.SetSimulationOptionStringValue((int)swsUserPreferenceStringValue_e.swsSolidWorksDocumentFolderSubFolderLocation, "temp");
            Debug.Print("Place results in model document sub-folder, " + ActDoc.GetSimulationOptionStringValue((int)swsUserPreferenceStringValue_e.swsSolidWorksDocumentFolderSubFolderLocation));
 
            // Set boundary settings option to translucent single color
            res = ActDoc.SetSimulationOptionIntegerValue((int)swsUserPreferenceIntegerValue_e.swsPlotSettingsBoundaryOption, (int)swsPlotBoundarySettingsOptionValue_e.swsPlotBoundaryTranslucentSingleColor);
            Debug.Print("Boundary settings option as defined in swsPlotSettingsBoundaryOption is " + ActDoc.GetSimulationOptionIntegerValue((int)swsUserPreferenceIntegerValue_e.swsPlotSettingsBoundaryOption));
 
            // Set boundary color; Red 1 is 0xFF0000 in http://cloford.com/resources/colours/500col.htm
            // Reverse the hexadecimal (&H0000FF) in the call below
            res = ActDoc.SetSimulationOptionIntegerValue((int)swsUserPreferenceIntegerValue_e.swsPlotBoundaryOptionTranslucentSingleColorSetting, 0xff);
            Debug.Print("Boundary color is " + ActDoc.GetSimulationOptionIntegerValue((int)swsUserPreferenceIntegerValue_e.swsPlotBoundaryOptionTranslucentSingleColorSetting));
 
            // Set boundary transparency of translucent part color to 50%
            res = ActDoc.SetSimulationOptionDoubleValue((int)swsUserPreferenceDoubleValue_e.swsPlotBoundaryTransparency, 50.0);
            Debug.Print("Transparency of boundary translucent part color is " + ActDoc.GetSimulationOptionDoubleValue((int)swsUserPreferenceDoubleValue_e.swsPlotBoundaryTransparency));
 
            // Create new thermal study
            Debug.Print("Creating thermal study...");
 
            StudyMngr = ActDoc.StudyManager;
            if (StudyMngr == null)
                ErrorMsg(swApp, "No CWStudyManager object");
 
            Study = StudyMngr.CreateNewStudy3("Thermal_One", (int)swsAnalysisStudyType_e.swsAnalysisStudyTypeThermal, (int)swsMeshType_e.swsMeshTypeSolid, out errCode);
            if (Study == null)
                ErrorMsg(swApp, "Failed to create study");
 
            // Get first solid component
            SolidMgr = Study.SolidManager;
            if (SolidMgr == null)
                ErrorMsg(swApp, "No CWSolidManager object");
 
            SolidComp = SolidMgr.GetComponentAt(0, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component");
 
            SolidBody = SolidComp.GetSolidBodyAt(0, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component body");
 
            // Add material
            CWMat = SolidBody.GetDefaultMaterial();
            if (CWMat == null)
                ErrorMsg(swApp, "No CWMaterial object");
 
            CWMat.MaterialName = "Coffee";
            CWMat.SetPropertyByName("DENS", 1000, 0);
            CWMat.SetPropertyByName("KX", 40, 0);
            CWMat.SetPropertyByName("C", 4200.0, 0);
 
            errCode = SolidBody.SetSolidBodyMaterial(CWMat);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to set material");
 
            // Get second solid component
            SolidComp = SolidMgr.GetComponentAt(1, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component");
 
            SolidBody = SolidComp.GetSolidBodyAt(0, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component body");
 
            // Add material
            bApp = SolidBody.SetLibraryMaterial("C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\lang\\english\\sldmaterials\\solidworks materials.sldmat""Glass");
            if (bApp == 0)
                ErrorMsg(swApp, "Failed to apply glass material");
 
            // Get third solid component
            SolidComp = SolidMgr.GetComponentAt(2, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component");
 
            SolidBody = SolidComp.GetSolidBodyAt(0, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to get component body");
 
            // Add material
            bApp = SolidBody.SetLibraryMaterial("C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\lang\\english\\sldmaterials\\solidworks materials.sldmat""Nylon 6/10");
            if (bApp == 0)
                ErrorMsg(swApp, "Failed to apply Nylon 6/10 material");
 
            // CoffeePot
            selection1 = "216,14,0,0,5,0,0,0,255,254,255,21,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0";
            StringtoArray(selection1, ref var1);
            oselect1 = Part.Extension.GetObjectByPersistReference3((var1), out longstatus);
 
            // Coffee
            selection2 = "216,14,0,0,5,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0";
            StringtoArray(selection2, ref var2);
            oselect2 = Part.Extension.GetObjectByPersistReference3((var2), out longstatus);
 
            // Top
            selection3 = "216,14,0,0,5,0,0,0,255,254,255,15,84,0,111,0,112,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,13,0,0,0";
            StringtoArray(selection3, ref var3);
            oselect3 = Part.Extension.GetObjectByPersistReference3((var3), out longstatus);
 
            // Get the four coffee faces that make up the surface of coffee in the coffee pot
            // Face 1
            selection4 = "216,14,0,0,3,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,6,99,0,111,0,102,0,102,0,101,0,101,0,126,253,47,63,11,128,255,254,255,57,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,10";
            selection4 = selection4 + "8,0,92,0,99,0,111,0,102,0,102,0,101,0,101,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,90,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,4,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,5,0,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,80,114,111,106,73,100,82,101,112,95,99,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,19,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,1,0,0,0,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,11,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection4, ref var4);
            oselect4 = Part.Extension.GetObjectByPersistReference3((var4), out longstatus);
 
            // Face 2
            selection5 = "216,14,0,0,3,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,6,99,0,111,0,102,0,102,0,101,0,101,0,126,253,47,63,11,128,255,254,255,57,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,";
            selection5 = selection5 + "108,0,92,0,99,0,111,0,102,0,102,0,101,0,101,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,90,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,4,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,6,0,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,80,114,111,106,73,100,82,101,112,95,99,0,0,5,128,8,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,1,0,0,0,19,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,11,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection5, ref var5);
            oselect5 = Part.Extension.GetObjectByPersistReference3((var5), out longstatus);
 
            // Face 3
            selection6 = "216,14,0,0,3,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,6,99,0,111,0,102,0,102,0,101,0,101,0,126,253,47,63,11,128,255,254,255,57,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,";
            selection6 = selection6 + "108,0,92,0,99,0,111,0,102,0,102,0,101,0,101,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,90,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,4,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,2,0,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,80,114,111,106,73,100,82,101,112,95,99,0,0,5,128,8,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,1,0,0,0,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,11,0,0,0,19,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection6, ref var6);
            oselect6 = Part.Extension.GetObjectByPersistReference3((var6), out longstatus);
 
            // Face 4
            selection7 = "216,14,0,0,3,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,6,99,0,111,0,102,0,102,0,101,0,101,0,126,253,47,63,11,128,255,254,255,57,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,";
            selection7 = selection7 + "108,0,92,0,99,0,111,0,102,0,102,0,101,0,101,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,90,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,4,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,1,0,0,0,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,11,0,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,80,114,111,106,73,100,82,101,112,95,99,0,0,5,128,8,0,92,0,0,0,241,69,48,63,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,1,0,0,0,21,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,16,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection7, ref var7);
            oselect7 = Part.Extension.GetObjectByPersistReference3((var7), out longstatus);
 
            // Get the selections for convection
            // Top-outer face of coffee pot
            selection8 = "216,14,0,0,3,0,0,0,255,254,255,21,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,9,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,174,232,47,63,11,128,255,254,255,60,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,";
            selection8 = selection8 + "114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,108,0,92,0,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,46,0,83,0,76,0,68,0,80,0,82,0,84,0,153,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,5,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,234,237,47,63,3,0,0,0,3,128,0,0,5,128,8,0,39,0,0,0,234,237,47,63,2,0,0,0,0,0,3,128,0,0,5,128,8,0,39,0,0,0,234,237,47,63,4,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection8, ref var8);
            oselect8 = Part.Extension.GetObjectByPersistReference3((var8), out longstatus);
 
            // Bottom-outer face of coffee pot
            selection9 = "216,14,0,0,3,0,0,0,255,254,255,21,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,9,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,174,232,47,63,11,128,255,254,255,60,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,";
            selection9 = selection9 + "0,114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,108,0,92,0,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,46,0,83,0,76,0,68,0,80,0,82,0,84,0,153,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,5,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,234,237,47,63,2,0,0,0,3,128,0,0,5,128,8,0,39,0,0,0,234,237,47,63,3,0,0,0,0,0,3,128,0,0,5,128,8,0,39,0,0,0,234,237,47,63,1,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection9, ref var9);
            oselect9 = Part.Extension.GetObjectByPersistReference3((var9), out longstatus);
 
            // Thermostat sensor located on the top of the bottom face of the coffee pot
            selection10 = "216,14,0,0,3,0,0,0,255,254,255,18,67,0,111,0,102,0,102,0,101,0,101,0,45,0,49,0,64,0,99,0,111,0,102,0,102,0,101,0,101,0,106,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,12,0,0,0,255,255,1,0,13,0,109,111,86,101,114,116,101,120,82,101,102,95,99,255,255,255,255,255,255,255,255,8,0,0,0,0,2,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,18,0,109,111,80,76,105,110,101,80,114,111,106,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,";
            selection10 = selection10 + "1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,6,99,0,111,0,102,0,102,0,101,0,101,0,126,253,47,63,11,128,255,254,255,57,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,114,0,115,0,92,0,84,0,104,";
            selection10 = selection10 + "0,101,0,114,0,109,0,97,0,108,0,92,0,99,0,111,0,102,0,102,0,101,0,101,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,90,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,4,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,241,69,48,63,255,255,1,0,18,0,109,111,80,76,105,110,101,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,90,0,0,0,219,69,48,63,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,";
            selection10 = selection10 + "110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,1,0,0,0,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,3,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,14,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,1,0,0,0,3,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,";
            selection10 = selection10 + "135,69,48,63,5,0,0,0,1,0,0,0,14,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,14,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,5,0,0,0,14,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,14,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,1,0,0,0,14,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,14,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,";
            selection10 = selection10 + "5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,2,0,0,0,2,0,0,0,14,128,0,0,5,128,8,0,92,0,0,0,241,69,48,63,14,128,0,0,5,128,8,0,90,0,0,0,219,69,48,63,17,128,0,0,5,128,8,0,88,0,0,0,135,69,48,63,5,0,0,0,1,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0";
            StringtoArray(selection10, ref var10);
            therm1 = Part.Extension.GetObjectByPersistReference3((var10), out longstatus);
 
            // Face to which to apply heat power and flux
            selection11 = "216,14,0,0,3,0,0,0,255,254,255,21,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,45,0,49,0,64,0,67,0,111,0,102,0,102,0,101,0,101,0,74,0,97,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,255,255,1,0,11,0,109,111,70,97,99,101,82,101,102,95,99,1,0,0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,125,195,148,37,173,73,178,84,125,195,148,37,173,73,178,84,0,0,255,255,1,0,23,0,109,111,70,114,111,109,83,107,116,69,110,116,83,117,114,102,73,100,82,101,112,95,99,0,0,255,255,1,0,6,0,109,111,70,82,95,99,255,255,1,0,13,0,109,111,69,120,116,79,98,106,101,99,116,95,99,255,255,1,0,14,0,109,111,79,98,106,70,105,108,101,68,101,102,95,99,255,255,1,0,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,9,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,174,232,47,63,11,128,255,254,255,60,67,0,58,0,92,0,67,0,79,0,83,0,77,0,79,0,83,0,68,0,111,0,99,0,115,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,95,0,102,0,111,0,114,0,67,0,117,0,115,0,116,0,111,0,109,0,101,0,";
            selection11 = selection11 + "114,0,115,0,92,0,84,0,104,0,101,0,114,0,109,0,97,0,108,0,92,0,67,0,111,0,102,0,102,0,101,0,101,0,80,0,111,0,116,0,46,0,83,0,76,0,68,0,80,0,82,0,84,0,153,14,28,65,0,0,0,0,2,0,1,0,0,0,0,0,0,0,5,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,234,237,47,63,1,0,0,0,3,128,0,0,5,128,8,0,39,0,0,0,234,237,47,63,2,0,0,0,0,0,0,0,0,0";
            StringtoArray(selection11, ref var11);
            oselect10 = Part.Extension.GetObjectByPersistReference3((var11), out longstatus);
 
            // Create arrays
            object[] varArray1 = {oselect1,oselect3};
            object[] varArray2 = { oselect2 };
            object[] varArray3 = {oselect4,oselect5,oselect6,oselect7};
            object[] varArray4 = {oselect8,oselect9};
            object[] varArray5 = { therm1 };
            object[] varArray6 = { oselect10 };
 
 
            // Set transient thermal study options
            Debug.Print("Setting transient thermal study options...");
            ThermalOptions = Study.ThermalStudyOptions;
            if (ThermalOptions == null)
                ErrorMsg(swApp, "No CWThermalStudyOptions object");
            ThermalOptions.CheckFlowConvectionCoef = 0;
            ThermalOptions.SolutionType = 0;
            ThermalOptions.SolverType = 2;
            ThermalOptions.TotalTime = 3600;
            ThermalOptions.TimeIncrement = 60;
 
            // Apply initial temperature to coffee pot and top
            Debug.Print("Applying initial temperature to coffee pot and top...");
            LBCMgr = Study.LoadsAndRestraintsManager;
            if (LBCMgr == null)
                ErrorMsg(swApp, "No CWLoadsAndRestraintsManager object");
 
            CWTemp = LBCMgr.AddTemperature((varArray1), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add temperature load");
 
            CWTemp.TemperatureBeginEdit();
            CWTemp.TemperatureType = 0;
            CWTemp.Unit = 1;
            CWTemp.TemperatureValue = 72;
 
            errCode = CWTemp.TemperatureEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit temperature load");
 
            // Apply initial temperature to coffee
            Debug.Print("Applying initial temperature to coffee...");
            CWTemp = LBCMgr.AddTemperature((varArray2), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add temperature load");
 
            CWTemp.TemperatureBeginEdit();
            CWTemp.TemperatureType = 0;
            CWTemp.Unit = 1;
            CWTemp.TemperatureValue = 195;
 
            errCode = CWTemp.TemperatureEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit temperature load");
 
            // Create convection for coffee component
            Debug.Print("Creating convection for coffee component...");
            CWConv = LBCMgr.AddConvection((varArray3), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add convection load");
 
            CWConv.ConvectionBeginEdit();
            CWConv.Unit = 1;
            CWConv.ConvectionCoefficient = 8.5E-06;
            CWConv.BulkAmbientTemperature = 72;
 
            errCode = CWConv.ConvectionEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit convection load");
 
            // Create convection for coffee pot component
            Debug.Print("Creating convection for coffee pot component...");
            CWConv = LBCMgr.AddConvection((varArray4), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add convection");
 
            CWConv.ConvectionBeginEdit();
            CWConv.Unit = 1;
            CWConv.ConvectionCoefficient = 6.1E-05;
            CWConv.BulkAmbientTemperature = 72;
 
            errCode = CWConv.ConvectionEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit convection load");
 
            // Add heat power
            Debug.Print("Creating heat power for face...");
            CWHeatPower = LBCMgr.AddHeatPower((varArray6), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add heat power");
            CWHeatPower.HeatPowerBeginEdit();
            CWHeatPower.Unit = 0;
            CWHeatPower.HPValue = 2000;
            CWHeatPower.ReverseDirection = 0;
            Debug.Print("  Setting thermostat to a vertex...");
            CWHeatPower.IncludeThermostat = 1;
            CWHeatPower.SetThermostat(therm1);
            CWHeatPower.ThermostatUnits = 1;
            CWHeatPower.SetCutOffTemperatures(190, 200);
            errCode = CWHeatPower.HeatPowerEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit heat power");
 
            // Add heat flux
            Debug.Print("Creating heat flux for face...");
            heatFlux = LBCMgr.AddHeatFlux((varArray6), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add heat flux");
            heatFlux.HeatFluxBeginEdit();
            heatFlux.HFValue = 100;
            heatFlux.SetThermostat(therm1);
            errCode = heatFlux.HeatFluxEndEdit();
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit heat flux");
            double dval1 = 0;
            double dval2 = 0;
            heatFlux.GetCutOffTemperatures(out dval1, out dval2);
 
            Debug.Print("  Thermostat lower-bound temperature: " + dval1);
            Debug.Print("  Thermostat upper-bound temperature: " + dval2);
            Debug.Print("  Heat flux: " + heatFlux.HFValue);
            Debug.Print("    Reverse direction? (0 = no, 1 = yes) " + heatFlux.ReverseDirection);
            Debug.Print("  Include thermostat effects? (0 = no, 1 = yes) " + heatFlux.IncludeThermostat);
            Debug.Print("  Thermostat units as defined in swsTemperatureUnit_e: " + heatFlux.ThermostatUnits);
            Debug.Print("  Use temperature curve? (0 = no, 1 = yes) " + heatFlux.UseTemperatureCurve);
            Debug.Print("  Use time curve? (0 = no, 1 = yes) " + heatFlux.UseTimeCurve);
            Debug.Print("  Units as defined in swsTemperatureUnit_e: " + heatFlux.Unit);
 

            // Add radiation
            Debug.Print("Creating radiation for face...");
            rad = LBCMgr.AddRadiation((int)swsRadiationType_e.swsRadiationTypeSurfaceToAmbient, (varArray6), out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to add radiation");
            rad.RadiationBeginEdit();
            rad.Emmisivity = 0.5;
            rad.ViewFactor = 0.5;
            errCode = rad.RadiationEndEdit();
            Debug.Print("  Ambient temperature: " + rad.AmbientTemperature);
            Debug.Print("  Emissivity: " + rad.Emmisivity);
            Debug.Print("  View factor: " + rad.ViewFactor);
            Debug.Print("  System as defined in swsRadiationOpenSystem_e: " + rad.OpenSystem);
            Debug.Print("  Use temperature curve? (0 = no, 1 = yes) " + rad.UseTemperatureCurve);
            Debug.Print("  Use time curve? (0 = no, 1 = yes) " + rad.UseTimeCurve);
            Debug.Print("  Units as defined in swsTemperatureUnit_e: " + rad.Unit);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to edit radiation");
 
            // Mesh model
            Debug.Print("Creating mesh...");
            CwMesh = Study.Mesh;
            if (CwMesh == null)
                ErrorMsg(swApp, "No CWMesh object");
 
            CwMesh.Quality = 1;
            CwMesh.GetDefaultElementSizeAndTolerance(0, out el, out tl);
            errCode = Study.CreateMesh(0, el, tl);
            if (errCode != 0)
                ErrorMsg(swApp, "Failed to create mesh");
 
            // Analyze study
            Debug.Print("Running analysis...");
            errCode = Study.RunAnalysis();
            if (errCode != 0)
                ErrorMsg(swApp, "Analysis failed with error code as defined in swsRunAnalysisError_e: " + errCode);
 
            Debug.Print("Getting results...");
            CWResult = Study.Results;
            if (CWResult == null)
                ErrorMsg(swApp, "No CWResults object");
 
            // Get temperature at vertex
            Debug.Print("Getting temperature at vertex...");
            nStep = CWResult.GetMaximumAvailableSteps();
            Temp = CWResult.GetThermalForEntities(0, nStep, null, (varArray5), 2, out errCode);
            if (errCode != 0)
                ErrorMsg(swApp, "No temperature result");
 
            // Save Thermal1 plot as eDrawing
            CWResult.SavePlotsAseDrawings("c:\\temp""ThermalPlot""Thermal1");
 
            // Export this study to the NASTRAN finite-element analysis program
            bApp = Study.ExportSimulationStudy("c:\\temp""ThermalStudyExport", (int)swsNastranExportOption_e.swsNastranExportOption_LongFixed, 0, 0, (int)swsStudyExportOption_e.swsStudyExportOption_Nastran, (int)swsNastranExportUnit_e.swsNastranExportUnit_IPS);
 
            // Rename the study
            bApp = StudyMngr.RenameStudyFromName("Thermal_One""TransientThermal");
 
            Debug.Print("Done!");
 
        }
 
        public void ErrorMsg(SldWorks swApp, string Message)
        {
            swApp.SendMsgToUser2(Message, 0, 0);
            swApp.RecordLine("'*** WARNING - General");
            swApp.RecordLine("'*** " + Message);
            swApp.RecordLine("");
        }
 
 
        public void StringtoArray(string inputSTR, ref byte[] varEntity)
        {
            string[] PIDArray = null;
            byte[] PID = null;
            int i;
 
            // Parse string into an array
            PIDArray = inputSTR.Split(new char[] { ',' });
 
            //Convert string array to byte array
            int sizeArray = PIDArray.Length;
            PID = new byte[sizeArray];
 
            for (i = 0; i < PIDArray.Length; i++)
            {
                PID[i] = Convert.ToByte(PIDArray[i]);
            }
 
            varEntity = PID;
 
        }
 
 
        /// <summary>
        /// The SldWorks swApp variable is pre-assigned for you.
        /// </summary>
 
        public SldWorks swApp;
 
    }
 
}



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Apply Thermostat-controlled Heat Power for Transient Thermal Study Example (C#)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2017 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.