Create Nonlinear Study and Apply Materials Example (VB.NET)
This example shows how to create a nonlinear study and apply user-defined
and SOLIDWORKS materials to assembly components.
'----------------------------------------------------------------------------
' 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. Verify that the specified material library exists.
' 4. Verify that the specified assembly exists.
'
' Postconditions:
' 1. Opens the assembly.
' 2. Creates a nonlinear study.
' 3. Applies user-defined material to the first component
and
' SOLIDWORKS
material to the remaining components.
' 4. To verify, expand the Parts folder in the Simulation
Study tree,
' which
is located beneath the FeatureManager design tree, and
' observe
the names of the materials applied to holder-1 and pipe-1.
'
' NOTE: Because the assembly document is used elsewhere, do not save
changes.
'----------------------------------------------------------------------------
Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
Imports SolidWorks.Interop.cosworks
Imports System
Imports System.Diagnostics
Imports System.Windows.Forms
Partial Class SolidWorksMacro
Public
Sub main()
Dim
COSMOSWORKS As Object
Dim
COSMOSObject As CwAddincallback
Dim
ActDoc As CWModelDoc
Dim
StudyMngr As CWStudyManager
Dim
Study As CWStudy
Dim
SolidMgr As CWSolidManager
Dim
SolidComponent As CWSolidComponent
Dim
SolidBody As CWSolidBody
Dim
SName As String
Dim
errors As Integer, warnings As Integer
Dim
errorCode As Integer
Dim
errCode As Integer
Dim
CompCount As Integer
Dim
j As Integer
Dim
CWMat As CWMaterial
Dim
bApp As Boolean
'
Get the SOLIDWORKS Simulation object
COSMOSObject
= swApp.GetAddInObject("SldWorks.Simulation")
If
COSMOSObject Is Nothing Then ErrorMsg(swApp, "COSMOSObject object
not found", True)
COSMOSWORKS
= COSMOSObject.COSMOSWORKS
If
COSMOSWORKS Is Nothing Then ErrorMsg(swApp, "COSMOSWORKS object not
found", True)
'
Open and get the active document
swApp.OpenDoc6("C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2017\Simulation Examples\Nonlinear\nl_pipe_holder.sldasm",
swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent,
"", errors, warnings)
ActDoc
= COSMOSWORKS.ActiveDoc()
If
ActDoc Is Nothing Then ErrorMsg(swApp, "No active document",
True)
'
Create new nonlinear study
StudyMngr
= ActDoc.StudyManager()
If
StudyMngr Is Nothing Then ErrorMsg(swApp, "CWStudyManager object not
created",
True)
Study
= StudyMngr.CreateNewStudy("Nonlinear",
swsAnalysisStudyType_e.swsAnalysisStudyTypeNonlinear, swsMeshType_e.swsMeshTypeSolid,
errCode)
If
Study Is Nothing Then ErrorMsg(swApp, "Study not created",
True)
'
Get number of solid components
SolidMgr
= Study.SolidManager
If
SolidMgr Is Nothing Then ErrorMsg(swApp, "CWSolidManager object not created",
True)
CompCount
= SolidMgr.ComponentCount
SolidComponent
= SolidMgr.GetComponentAt(0, errorCode)
If
SolidComponent Is Nothing Then ErrorMsg(swApp, "CWSolidComponent object not
created", True)
'
Get name of solid component
SName
= SolidComponent.ComponentName
'
Apply user-defined material to the first component in the tree
SolidBody
= SolidComponent.GetSolidBodyAt(0,
errCode)
If
errCode <> 0 Then ErrorMsg(swApp, "No solid body", True)
If
SolidBody Is Nothing Then ErrorMsg(swApp, "CWSolidBody object not created",
True)
CWMat
= SolidBody.GetDefaultMaterial
CWMat.MaterialUnits = 0
If
CWMat Is Nothing Then ErrorMsg(swApp, "No default material object",
True)
CWMat.MaterialName = "Alloy Steel"
Call
CWMat.SetPropertyByName("EX",
210000000000.0#, 0)
Call
CWMat.SetPropertyByName("NUXY",
0.28, 0)
Call
CWMat.SetPropertyByName("GXY",
79000000000.0#, 0)
Call
CWMat.SetPropertyByName("DENS",
7700, 0)
Call
CWMat.SetPropertyByName("SIGXT",
723825600, 0)
Call
CWMat.SetPropertyByName("SIGYLD",
620422000, 0)
Call
CWMat.SetPropertyByName("ALPX",
0.000013, 0)
Call
CWMat.SetPropertyByName("KX",
50, 0)
Call
CWMat.SetPropertyByName("C",
460, 0)
errCode
= SolidBody.SetSolidBodyMaterial(CWMat)
If
errCode <> 0 Then ErrorMsg(swApp, "Failed to apply material",
True)
'
Apply SOLIDWORKS library material to rest of components
SolidBody
= Nothing
SolidComponent
= Nothing
For
j = 1 To (CompCount - 1)
SolidComponent
= SolidMgr.GetComponentAt(j, errorCode)
SName
= SolidComponent.ComponentName
SolidBody
= SolidComponent.GetSolidBodyAt(0,
errCode)
If
errCode <> 0 Then ErrorMsg(swApp, "No solid body", True)
bApp
= SolidBody.SetLibraryMaterial("C:\Program
Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\sldmaterials\solidworks
materials.sldmat", "Gray Cast Iron (SN)")
If
bApp = False Then ErrorMsg(swApp, "No material applied", True)
SolidBody
= Nothing
Next
j
End
Sub
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("")
If
EndTest Then
End
If
End
Sub
'''
<summary>
'''
The SldWorks swApp variable is pre-assigned for you.
'''
</summary>
Public
swApp As SldWorks.SldWorks
End Class