'----------------------------------------------------------------------------
' Preconditions:
' 1. Add the SOLIDWORKS Simulation as an add-in
' (in SOLIDWORKS, click Tools > Add-ins > SOLIDWORKS Simulation).
' 2. Add the SOLIDWORKS Simulation primary interop assembly as
' a reference (in the IDE's Project Explorer, right-click
' the project name, select Add Reference, click the Browse
tab,
' navigate to the install_dir\api\redist\CLR2 folder and
' select SolidWorks.Interop.cosworks.dll).
' 3. The specified file exists.
' 4. Open the Immediate window.
'
' Postconditions: Data for each nonlinear study in the
' active model is printed to the Immediate window.
'
' NOTE: Because the model is used elsewhere, do not
' save any changes when closing it.
'-------------------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
SolidWorks.Interop.cosworks
Imports
System
Imports
System.Diagnostics
Imports
System.Runtime.InteropServices
Partial
Class
SolidWorksMacro
Public
Sub
Main()
Dim
swAddin As
CwAddincallback
Dim
ssApp As
CosmosWorks
Dim
ssModelDoc As
CWModelDoc
Dim
ssStudyMgr As
CWStudyManager
Dim
ssStudy As
CWStudy
Dim
ssStudyOption As
Object
Dim
ssNonLinearStudyOptions As
CWNonLinearStudyOptions
Dim
docName As
String
Dim
errors As
Integer
Dim
warnings As
Integer
Dim
studyCnt As
Integer
Dim
studyName As
String
Dim
studyType As
Integer
Dim
i As
Integer
Dim
maxLoad As
Double
Dim
maxDisplacement As
Double
Dim
unit As
Integer
Dim
selectedEntity As
Object
= Nothing
Dim
maxArcSteps As
Integer
Dim
arcLengthMultiplier As
Double
Dim
displacementComponent As
Integer
Dim
frequency As
Integer
Dim
maximum As
Integer
Dim
convergence As
Double
Dim
tolerance As
Double
Dim
factor As
Double
Dim
swEntity As
Entity
Dim
entityType As
Integer
Dim
selEntityType As
String
'
Open specified document, which has two nonlinear studies
docName =
"c:\Program Files\solidworks
Corp\SOLIDWORKS\Simulation\Examples\Nonlinear\nl_plate.sldprt"
swApp.OpenDoc6(docName,
swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent,
"",
errors, warnings)
' Get SOLIDWORKS Simulation and
its Study Manager object
swAddin = swApp.GetAddInObject("SldWorks.Simulation")
ssApp = swAddin.CosmosWorks
ssModelDoc = ssApp.ActiveDoc
ssStudyMgr = ssModelDoc.StudyManager
' Get data for only nonlinear
types of studies
studyCnt = ssStudyMgr.StudyCount
For
i = 0 To
studyCnt - 1
ssStudy = ssStudyMgr.GetStudy(i)
studyName = ssStudy.Name
Debug.Print("")
Debug.Print("Study name:
" & studyName)
studyType = ssStudy.AnalysisType
If
(studyType = swsAnalysisStudyType_e.swsAnalysisStudyTypeNonlinear)
Then
'
Get nonlinear study's data
ssStudyOption =
ssStudy.NonLinearStudyOptions
Debug.Print(" Study
type: Nonlinear")
ssNonLinearStudyOptions = ssStudyOption
Debug.Print(" Control
method type: " &
ssNonLinearStudyOptions.ControlMethodType)
Debug.Print(" Start
time: " & ssNonLinearStudyOptions.StartTime)
Debug.Print(" End
time: " & ssNonLinearStudyOptions.EndTime)
Debug.Print(" Solution-time
increment: " & ssNonLinearStudyOptions.TimeIncrement)
Debug.Print(" Fixed-time
increment: " & ssNonLinearStudyOptions.FixedTimeIncrement)
Debug.Print(" Integration
method type: " &
ssNonLinearStudyOptions.IntegrationMethodType)
Debug.Print(" Results
folder path: " &
ssNonLinearStudyOptions.ResultFolderPath)
Debug.Print(" Save
data for restarting analysis? " &
ssNonLinearStudyOptions.SaveDataForRestartingAnalysis)
Debug.Print(" Solver
type: " & ssNonLinearStudyOptions.SolverType)
Debug.Print(" Use
large strain formulation? " &
ssNonLinearStudyOptions.UseLargeStrain)
Debug.Print(" Update
direction of load at every solution step with deflection? "
& ssNonLinearStudyOptions.UseUpdateLoadDirection)
ssNonLinearStudyOptions.GetArcLengthCompletionOptions(maxLoad,
maxDisplacement, unit, maxArcSteps, arcLengthMultiplier)
Debug.Print(" Use
large displacement formulation? " &
ssNonLinearStudyOptions.UseLargeDisplacement)
Debug.Print(" Arc-length
completion options (maximum load, maximum displacement, unit, maximum
arc steps, and arc-length multiplier): "
& maxLoad & ", "
& maxDisplacement & ", "
& unit & ", "
& maxArcSteps & ", "
& arcLengthMultiplier)
selEntityType =
"Nothing"
ssNonLinearStudyOptions.GetDisplacementControlOptions2(displacementComponent,
unit, selectedEntity)
If
Not
selectedEntity Is
Nothing
Then
swEntity =
selectedEntity
entityType = swEntity.GetType
Select
Case
entityType
Case
3
selEntityType =
"vertex"
Case
6
selEntityType =
"reference point"
Case
0
selEntityType =
"Nothing"
End
Select
End
If
Debug.Print("
Displacement control options (displacement component, unit, selected
entity): " & displacementComponent &
", "
& unit & ", "
& selEntityType)
Debug.Print(" Iterative
method type: " &
ssNonLinearStudyOptions.IterativeMethodType)
ssNonLinearStudyOptions.GetStepToleranceOptions(frequency,
maximum, convergence, tolerance, factor)
Debug.Print(" Tolerance:
")
Debug.Print(" Frequency
of performing equilibrium in number of solution steps: "
& frequency)
Debug.Print(" Maximum
number of equilibrium iterations for any solution step: "
& maximum)
Debug.Print(" Relative
displacement tolerance used for equilibrium convergence: "
& convergence)
Debug.Print(" Tolerance
for strain increment for models with creep or plasticity: "
& tolerance)
Debug.Print(" Stiffness
singularity elimination factor: " &
factor)
End
If
Next
End
Sub
'''
<summary>
'''
The SldWorks swApp variable is pre-assigned for you.
'''
</summary>
Public
swApp As
SldWorks
End
Class