This example shows how to apply thermostat-controlled heat power for
a transient thermal study.
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
SolidWorks.Interop.cosworks
Imports
System
Imports
System.Diagnostics
Partial
Class
SolidWorksMacro
Public
Sub main()
Dim
COSMOSWORKS As
CosmosWorks
Dim
CWObject As
CwAddincallback
Dim
ActDoc As
CWModelDoc
Dim
StudyMngr As
CWStudyManager
Dim
Study As
CWStudy
Dim
SolidMgr As
CWSolidManager
Dim
SolidComp As
CWSolidComponent
Dim
SolidBody As
CWSolidBody
Dim
ThermalOptions As
CWThermalStudyOptions
Dim
CWConv As
CWConvection
Dim
CWHeatPower As
CWHeatPower
Dim
CwMesh As
CWMesh
Dim
CWResult As
CWResults
Dim
CWMat As
CWMaterial
Dim
CWTemp As
CWTemperature
Dim
Part As
ModelDoc2
Dim
LBCMgr As
CWLoadsAndRestraintsManager
Dim
oselect1 As
Object,
oselect2 As
Object,
oselect3 As
Object
Dim
oselect4 As
Object,
oselect5 As
Object,
oselect6 As
Object
Dim
oselect7 As
Object,
oselect8 As
Object,
oselect9 As
Object,
oselect10 As
Object
Dim
therm1 As
Object
Dim
var1 As
Object =
Nothing
Dim
var2 As
Object =
Nothing
Dim
var3 As
Object =
Nothing
Dim
var4 As
Object =
Nothing
Dim
var5 As
Object =
Nothing
Dim
var6 As
Object =
Nothing
Dim
var7 As
Object =
Nothing
Dim
var8 As
Object =
Nothing
Dim
var9 As
Object =
Nothing
Dim
var10 As
Object =
Nothing
Dim
var11 As
Object =
Nothing
Dim
Temp As
Object
Dim
bApp As
Boolean
Dim
selection1 As
String,
selection2 As
String,
selection3 As
String
Dim
selection4 As
String,
selection5 As
String,
selection6 As
String
Dim
selection7 As
String,
selection8 As
String,
selection9 As
String
Dim
selection10 As
String,
selection11 As
String
Dim
longstatus As
Integer,
longwarnings As
Integer
Dim
errCode As
Integer
Dim
el As
Double, tl
As
Double
Dim
nStep As
Integer
Dim
res As
Integer
'
Open document
Debug.Print("Opening
document...")
Part = swApp.OpenDoc6("C:\Program
Files\SolidWorks Corp\SolidWorks\Simulation\Examples\Thermal\CoffeeJar.SLDASM",
swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent,
"",
longstatus, longwarnings)
If
Part Is
Nothing
Then
ErrorMsg(swApp, "Failed to open
document.",
True)
' Get the SolidWorks Simulation
add-in object
CWObject = swApp.GetAddInObject("SldWorks.Simulation")
If
CWObject Is
Nothing
Then
ErrorMsg(swApp, "CWObject object not
found. ",
True)
COSMOSWORKS = CWObject.COSMOSWORKS
If
COSMOSWORKS Is
Nothing
Then
ErrorMsg(swApp, "COSMOSWORKS object not
found.",
True)
' Get active document
ActDoc = COSMOSWORKS.ActiveDoc()
If
ActDoc Is
Nothing
Then
ErrorMsg(swApp, "No active document.",
True)
'
Add a default thermal study results plot
res = ActDoc.AddDefaultThermalStudyPlot(swsThermalResultComponentTypes_e.swsThermalResultComponentTypes_TEMP,
True)
' Set default thermal plot options
'
Show maximum value annotation on the plot
bApp = ActDoc.SetSimulationOptionToggle(swsUserPreferenceToggle_e.swsPlotAnnotationShowMaxValue,
True)
Debug.Print("Show maximum value
annotation on the plot? " & ActDoc.GetSimulationOptionToggle(swsUserPreferenceToggle_e.swsPlotAnnotationShowMaxValue))
' Set sub-folder option
bApp = ActDoc.SetSimulationOptionToggle(swsUserPreferenceToggle_e.swsResultFolderUnderSubFolder,
True)
Debug.Print("Set sub-folder
option? " & ActDoc.GetSimulationOptionToggle(swsUserPreferenceToggle_e.swsResultFolderUnderSubFolder))
' Put results in sub-folder, "temp"
bApp = ActDoc.SetSimulationOptionStringValue(swsUserPreferenceStringValue_e.swsSolidWorksDocumentFolderSubFolderLocation,
"temp")
Debug.Print("Results in
sub-folder, " & ActDoc.GetSimulationOptionStringValue(swsUserPreferenceStringValue_e.swsSolidWorksDocumentFolderSubFolderLocation))
' Set boundary settings option to translucent single color
bApp = ActDoc.SetSimulationOptionIntegerValue(swsUserPreferenceIntegerValue_e.swsPlotSettingsBoundaryOption,
swsPlotBoundarySettingsOptionValue_e.swsPlotBoundaryTranslucentSingleColor)
Debug.Print("Boundary
settings option as defined in swsPlotSettingsBoundaryOption is "
& ActDoc.GetSimulationOptionIntegerValue(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
bApp = ActDoc.SetSimulationOptionIntegerValue(swsUserPreferenceIntegerValue_e.swsPlotBoundaryOptionTranslucentSingleColorSetting,
&HFF)
Debug.Print("Boundary
color is " & ActDoc.GetSimulationOptionIntegerValue(swsUserPreferenceIntegerValue_e.swsPlotBoundaryOptionTranslucentSingleColorSetting))
' Set boundary transparency of translucent part color to 50%
' Set boundary transparency of
translucent part color to 50%
bApp = ActDoc.SetSimulationOptionDoubleValue(swsUserPreferenceDoubleValue_e.swsPlotBoundaryTransparency,
50.0#)
Debug.Print("Transparency of
boundary translucent part color is " &
ActDoc.GetSimulationOptionDoubleValue(swsUserPreferenceDoubleValue_e.swsPlotBoundaryTransparency))
' Create new thermal study
Debug.Print("Creating
thermal study...")
StudyMngr = ActDoc.StudyManager()
If
StudyMngr Is
Nothing
Then
ErrorMsg(swApp, "StudyMngr object not
there.",
True)
Study = StudyMngr.CreateNewStudy3("Thermal_One",
swsAnalysisStudyType_e.swsAnalysisStudyTypeThermal,
swsMeshType_e.swsMeshTypeSolid, errCode)
If
Study Is
Nothing
Then
ErrorMsg(swApp, "Study not created.",
True)
' Get first solid component
SolidMgr = Study.SolidManager
If
SolidMgr Is
Nothing
Then
ErrorMsg(swApp, "SolidMgr object not
there.",
True)
SolidComp = SolidMgr.GetComponentAt(0, errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid component.",
True)
SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid body.",
True)
' Add material
CWMat = SolidBody.GetDefaultMaterial
If
CWMat Is
Nothing
Then
ErrorMsg(swApp, "No default material.",
True)
CWMat.MaterialName =
"Coffee"
Call
CWMat.SetPropertyByName("DENS",
1000, 0)
Call
CWMat.SetPropertyByName("KX",
40, 0)
Call
CWMat.SetPropertyByName("C",
4200.0#, 0)
errCode = SolidBody.SetSolidBodyMaterial(CWMat)
If
errCode <> 0 Then
ErrorMsg(swApp, "Solid body material not
set.", True)
' Get second solid component
SolidComp = SolidMgr.GetComponentAt(1,
errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid component.",
True)
SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid body.",
True)
' Add material
bApp = SolidBody.SetLibraryMaterial("C:\Program
Files\SolidWorks Corp\SolidWorks\lang\english\sldmaterials\solidworks
materials.sldmat",
"Glass")
If
bApp = False
Then
ErrorMsg(swApp, "No glass material
applied.",
True)
' Get third solid component
SolidComp = SolidMgr.GetComponentAt(2,
errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid component.",
True)
SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No solid body.",
True)
' Add material
bApp = SolidBody.SetLibraryMaterial("C:\Program
Files\SolidWorks Corp\SolidWorks\lang\english\sldmaterials\solidworks
materials.sldmat",
"Nylon 6/10")
If
bApp = False
Then
ErrorMsg(swApp, " No Nylon 6/10 material
applied.",
True)
'Get components
'
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"
selection1 = selection1 &
",Type=1"
StringtoArray(selection1, var1)
oselect1 = Part.Extension.GetObjectByPersistReference3((var1),
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"
selection2 = selection2 &
",Type=1"
StringtoArray(selection2, var2)
oselect2 = Part.Extension.GetObjectByPersistReference3((var2),
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"
selection3 = selection3 &
",Type=1"
StringtoArray(selection3, var3)
oselect3 = Part.Extension.GetObjectByPersistReference3((var3),
longstatus)
' Get the four coffee faces that
make up the surface of coffee in the coffee pot
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"
selection4 = selection4 &
",Type=1"
StringtoArray(selection4, var4)
oselect4 = Part.Extension.GetObjectByPersistReference3((var4),
longstatus)
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"
selection5 = selection5 &
",Type=1"
StringtoArray(selection5, var5)
oselect5 = Part.Extension.GetObjectByPersistReference3((var5),
longstatus)
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"
selection6 = selection6 &
",Type=1"
StringtoArray(selection6, var6)
oselect6 = Part.Extension.GetObjectByPersistReference3((var6),
longstatus)
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"
selection7 = selection7 &
",Type=1"
StringtoArray(selection7, var7)
oselect7 = Part.Extension.GetObjectByPersistReference3((var7),
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"
selection8 = selection8 &
",Type=1"
StringtoArray(selection8, var8)
oselect8 = Part.Extension.GetObjectByPersistReference3((var8),
longstatus)
' Lower-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"
selection9 = selection9 &
",Type=1"
StringtoArray(selection9, var9)
oselect9 = Part.Extension.GetObjectByPersistReference3((var9),
longstatus)
' Get the selections for heat power
'
Vertex 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"
selection10 = selection10 &
",Type=1"
StringtoArray(selection10, var10)
therm1 = Part.Extension.GetObjectByPersistReference3((var10),
longstatus)
' Vertex where sensor (thermostat)
is located
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"
selection11 = selection11 &
",Type=1"
StringtoArray(selection11, var11)
oselect10 = Part.Extension.GetObjectByPersistReference3((var11),
longstatus)
' Create arrays
Dim
varArray1 As
Object() =
{oselect1, oselect3}
Dim
varArray2 As
Object() =
{oselect2}
Dim
varArray3 As
Object() =
{oselect4, oselect5, oselect6, oselect7}
Dim
varArray4 As
Object() =
{oselect8, oselect9}
Dim
varArray5 As
Object() =
{therm1}
Dim
varArray6 As
Object() =
{oselect10}
' Set transient thermal study with
solver type FFEPlus
Debug.Print("Setting
transient thermal study with solver type FFEPlus...")
ThermalOptions = Study.ThermalStudyOptions
Study.ThermalStudyOptions.SolutionType = 0
If
ThermalOptions Is
Nothing
Then
ErrorMsg(swApp, "No ThermalOptions
object.",
False)
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 Is
Nothing
Then
ErrorMsg(swApp, "No Loads and Restraints
manager.",
False)
CWTemp = LBCMgr.AddTemperature((varArray1), errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No temperature applied.",
True)
Call
CWTemp.TemperatureBeginEdit()
CWTemp.TemperatureType = 0
CWTemp.Unit = 1
CWTemp.TemperatureValue = 72
errCode = CWTemp.TemperatureEndEdit
If
errCode <> 0 Then
ErrorMsg(swApp, "No temperature applied.",
True)
' Apply initial temperature to
coffee
Debug.Print("Applying
initial temperature to coffee...")
CWTemp = LBCMgr.AddTemperature((varArray2), errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No temperature applied.",
True)
Call
CWTemp.TemperatureBeginEdit()
CWTemp.TemperatureType = 0
CWTemp.Unit = 1
CWTemp.TemperatureValue = 195
errCode = CWTemp.TemperatureEndEdit
If
errCode <> 0 Then
ErrorMsg(swApp, "No temperature applied.",
True)
' Create convection for coffee
component
Debug.Print("Creating
convection for coffee component...")
CWConv = LBCMgr.AddConvection((varArray3), errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No convection added.",
True)
Call
CWConv.ConvectionBeginEdit()
CWConv.Unit = 1
CWConv.ConvectionCoefficient = 0.0000085
CWConv.BulkAmbientTemperature = 72
errCode = CWConv.ConvectionEndEdit
If
errCode <> 0 Then
ErrorMsg(swApp, "Convection end-edit
failed for coffee.",
True)
' Create convection for coffee pot
component
Debug.Print("Creating
convection for coffee pot component...")
CWConv = LBCMgr.AddConvection((varArray4), errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No convection added.",
True)
Call
CWConv.ConvectionBeginEdit()
CWConv.Unit = 1
CWConv.ConvectionCoefficient = 0.000061
CWConv.BulkAmbientTemperature = 72
errCode = CWConv.ConvectionEndEdit
If
errCode <> 0 Then
ErrorMsg(swApp, "Convection end-edit
failed for coffee pot.",
True)
' Create heat power for face
Debug.Print("Creating
heat power for face...")
CWHeatPower = LBCMgr.AddHeatPower((varArray6), errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No heat power created.",
True)
Call
CWHeatPower.HeatPowerBeginEdit()
CWHeatPower.Unit = 0
CWHeatPower.HPValue = 2000
' Set thermostat to a vertex
Debug.Print("Setting
thermostat to a vertex...")
CWHeatPower.IncludeThermostat =
True
Call
CWHeatPower.SetThermostat(therm1)
CWHeatPower.ThermostatUnits = 1
Call
CWHeatPower.SetCutOffTemperatures(190, 200)
errCode = CWHeatPower.HeatPowerEndEdit
If
errCode <> 0 Then
ErrorMsg(swApp, "Heat power not updated.",
True)
' Create mesh
Debug.Print("Creating
mesh...")
CwMesh = Study.Mesh
If
CwMesh Is
Nothing
Then
ErrorMsg(swApp, "No mesh object.",
False)
CwMesh.Quality = 1
Call
CwMesh.GetDefaultElementSizeAndTolerance(0, el, tl)
errCode = Study.CreateMesh(0, el, tl)
If
errCode <> 0 Then
ErrorMsg(swApp, "Mesh failed.",
True)
' Run analysis
Debug.Print("Running
analysis...")
errCode = Study.RunAnalysis
If
errCode <> 0 Then
ErrorMsg(swApp, "Analysis failed.",
True)
' Get results
Debug.Print("Getting
results...")
CWResult = Study.Results
If
CWResult Is
Nothing
Then
ErrorMsg(swApp, "No result object.",
False)
' Get temperature at vertex
Debug.Print("Getting
temperature at vertex...")
nStep = CWResult.GetMaximumAvailableSteps
Temp = CWResult.GetThermalForEntities(0, nStep,
Nothing,
(varArray5), 2, errCode)
If
errCode <> 0 Then
ErrorMsg(swApp, "No temperature result.",
True)
Dim
varVals As
Object() =
{1264}
' View surfaces in the Thermal1
plot at 1264 Kelvin
res = CWResult.AddIsoClippingToPlot("Thermal1",
1, varVals, False,
True)
' Save plots as eDrawings
CWResult.SavePlotsAseDrawings("c:\temp",
"ThermalPlot",
"Thermal1")
' Export this study to the NASTRAN
finite-element analysis program
res = Study.ExportSimulationStudy("c:\temp",
"ThermalStudyExport",
swsNastranExportOption_e.swsNastranExportOption_LongFixed, 0, 0,
swsStudyExportOption_e.swsStudyExportOption_Nastran,
swsNastranExportUnit_e.swsNastranExportUnit_IPS)
' Rename the study
res = StudyMngr.RenameStudyFromName("Thermal_One",
"TransientThermal")
Debug.Print("Done!")
End
Sub
'
Error routine
Private
Sub
ErrorMsg(ByVal
swApp As
SldWorks,
ByVal
Message As
String,
ByVal
EndTest As
Boolean)
swApp.SendMsgToUser2(Message, 0, 0)
swApp.RecordLine("'***
WARNING - General")
swApp.RecordLine("'*** "
& Message)
swApp.RecordLine("")
End
Sub
'
Parse string into array
Private
Sub
StringtoArray(ByVal
inputSTR As
String,
ByRef
varEntity As
Object)
Dim
PID() As
Byte
Dim
i As
Integer
varEntity = Split(inputSTR,
",")
ReDim
PID(UBound(varEntity))
For
i = 0 To (UBound(varEntity)
- 1)
PID(i) = varEntity(i)
Next
i
varEntity = PID
End
Sub
Public
swApp As
SldWorks
End
Class