Hide Table of Contents

Add Centrifugal Load Example (VBA)

This example shows how to add a centrifugal force load to a static study.

NOTE: To get persistent reference identifiers (PIDs) for model selections, you can use pidcollector.exe or IModelDocExtension::GetPersistReference3.

'----------------------------------------------------------------------------
' Preconditions:
'  1. Add the SOLIDWORKS Simulation as an add-in
'     (in SOLIDWORKS, click Tools > Add-ins > SOLIDWORKS Simulation).
'  2. Add the SOLIDWORKS Simulation type library as a reference
'     (in the IDE, select Tools > References > SOLIDWORKS
'      Simulation
version type library).
'  3. Ensure that the specified model document exists.
'  4. Ensure that the specified materials library exists.
'  5. Open an Immediate window.
'
' Postconditions:
'  1. Opens the specified model document.
'  2. Creates new study, Static1.
'  3. Prints the study options of Static1 to the Immediate window.
'  4. Adds AISI 1020 steel to the solid bodies in the model.
'  5. Adds Fixed-1 restraint to Static1.
'  6. Adds Centrifugal-1 load to Static1.
'  7. Sets the properties of Centrifugal-1.
'  8. Prints the properties of Centrifugal-1 to the Immediate window.
'  9. Meshes the model.
' 10. Analyzes Static1.
' 11. Creates and activates a von Mises stress plot of the results.
' 12. Inspect the Immediate window, the Simulation study tree, and the
'     graphics area.
'
' NOTE: Because the model is used elsewhere, do not save changes.
' ---------------------------------------------------------------------------
Dim SwApp           As SldWorks.SldWorks
Dim Part            As SldWorks.ModelDoc2
Dim COSMOSWORKS     As CosmosWorksLib.COSMOSWORKS
Dim CWAddinCallBack As CosmosWorksLib.CWAddinCallBack
Dim ActDoc          As CosmosWorksLib.CWModelDoc
Dim StudyMngr       As CosmosWorksLib.CWStudyManager
Dim Study           As CosmosWorksLib.CWStudy
Dim SolidMgr        As CosmosWorksLib.CWSolidManager
Dim SolidComp       As CosmosWorksLib.CWSolidComponent
Dim SolidBody       As CosmosWorksLib.CWSolidBody
Dim LBCMgr          As CosmosWorksLib.CWLoadsAndRestraintsManager
Dim CWCentrifugalLoad  As CosmosWorksLib.CWCentriFugalForce
Dim errCode         As Long
Dim boolstatus      As Boolean
Dim longstatus      As Long, longwarnings As Long
Dim DispArray2      As Object
Dim DispArray3      As Variant
Const MeshEleSize   As Double = 4.48279654351123
Const MeshTol       As Double = 0.224139827175561
Const Tol1          As Double = 0.05
Option Explicit
Sub main()

    Set SwApp = Application.SldWorks
   

    Set Part = SwApp.OpenDoc6("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\Simulation\Examples\Educational Examples\spider.sldasm", 2, 0, "", longstatus, longwarnings)
    Set Part = SwApp.ActiveDoc
   

    Dim PIDCollection   As New Collection
    Set PIDCollection = PIDInitializer()
   

    Dim strMaterialLib  As String
    strMaterialLib = SwApp.GetExecutablePath & "\lang\english\sldmaterials\solidworks materials.sldmat"
   

    Set DispArray2 = SelectByPID(Part, "selection2", PIDCollection) ' shaft
    DispArray3 = Array(SelectByPID(Part, "selection3", PIDCollection)) ' arm
  

    Set CWAddinCallBack = SwApp.GetAddInObject("SldWorks.Simulation")
    If CWAddinCallBack Is Nothing Then ErrorMsg SwApp, "Failed to get Simulation add-in"
    Set COSMOSWORKS = CWAddinCallBack.COSMOSWORKS
    If COSMOSWORKS Is Nothing Then ErrorMsg SwApp, "Failed to get COSMOSWORKS"

    Set ActDoc = COSMOSWORKS.ActiveDoc()
    If ActDoc Is Nothing Then ErrorMsg SwApp, "Failed to get active document"
   

    'Create new static study
    Set StudyMngr = ActDoc.StudyManager()
    If StudyMngr Is Nothing Then ErrorMsg SwApp, "Failed to get the study manager"
    Set Study = StudyMngr.CreateNewStudy3("Static1", swsAnalysisStudyType_e.swsAnalysisStudyTypeStatic, 0, errCode)
    If Study Is Nothing Then ErrorMsg SwApp, "Failed to create new study"
   

    'Static study options
    Dim bsOptions As CosmosWorksLib.CWStaticStudyOptions
    Set bsOptions = Study.StaticStudyOptions
    Debug.Print "Static study options"
    Dim zeroStrainTemp As Double
    Dim tempUnit As Long
    bsOptions.GetZeroStrainTemperature zeroStrainTemp, tempUnit
    Debug.Print "  Zero strain temperature: " & zeroStrainTemp
    Debug.Print "  Result folder: " & bsOptions.ResultFolder
    Debug.Print "  Solver type as defined in swsSolverType_e: " & bsOptions.SolverType
    Debug.Print "  Use soft spring to stabilize the model? (1 = yes, 0 = no): " & bsOptions.UseSoftSpring
   

    'Add materials
    Set SolidMgr = Study.SolidManager
    If SolidMgr Is Nothing Then ErrorMsg SwApp, "Failed to get solid manager"
    Set SolidComp = SolidMgr.GetComponentAt(0, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get component"
    Set SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get solid body"
    boolstatus = SolidBody.SetLibraryMaterial(strMaterialLib, "AISI 1020")
    If boolstatus = False Then ErrorMsg SwApp, "Failed to apply material"
   

    Set SolidComp = SolidMgr.GetComponentAt(1, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get component"
    Set SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get solid body"
    boolstatus = SolidBody.SetLibraryMaterial(strMaterialLib, "AISI 1020")
    If boolstatus = False Then ErrorMsg SwApp, "Failed to apply material"
   

    Set SolidComp = SolidMgr.GetComponentAt(2, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get component"
    Set SolidBody = SolidComp.GetSolidBodyAt(0, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to get solid body"
    boolstatus = SolidBody.SetLibraryMaterial(strMaterialLib, "AISI 1020")
    If boolstatus = False Then ErrorMsg SwApp, "Failed to apply material"
  

    Set LBCMgr = Study.LoadsAndRestraintsManager
    If LBCMgr Is Nothing Then ErrorMsg SwApp, "Failed to get the loads and restraints manager"

    'Add a restraint
    Dim restraint As CosmosWorksLib.CWRestraint
    Set restraint = LBCMgr.AddRestraint(swsRestraintTypeFixed, (DispArray3), Nothing, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to add a restraint"
  

    'Add a centrifugal force to the shaft
    Set CWCentrifugalLoad = LBCMgr.AddCentrifugalForce(DispArray2, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to create a centrifugal force load"
   

    CWCentrifugalLoad.CFForceBeginEdit
    CWCentrifugalLoad.AngularAcceleration = 5
    CWCentrifugalLoad.AngularVelocity = 5
    CWCentrifugalLoad.Unit = swsUnitSystemSI
    CWCentrifugalLoad.CFForceEndEdit
   

    Debug.Print ""
    Debug.Print "Centrifugal force:"
    Debug.Print "  Angular acceleration: " & CWCentrifugalLoad.AngularAcceleration
    Debug.Print "  Angular velocity: " & CWCentrifugalLoad.AngularVelocity
    Debug.Print "  Units as defined in swsUnitSystem_e: " & CWCentrifugalLoad.Unit

    'Create mesh
    Dim CWMeshObj As CosmosWorksLib.CWMesh
    Set CWMeshObj = Study.Mesh
    If CWMeshObj Is Nothing Then ErrorMsg SwApp, "Failed to get the mesh object"
    CWMeshObj.MesherType = 0
    CWMeshObj.Quality = 0
    errCode = Study.CreateMesh(0, MeshEleSize, MeshTol)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to create the mesh"
    Set CWMeshObj = Nothing
   

    'Run analysis
    errCode = Study.RunAnalysis
    If errCode <> 0 Then ErrorMsg SwApp, "Analysis failed with error as defined in swsRunAnalysisError_e: " & errCode
   

    Dim CWResult As CosmosWorksLib.CWResults
    Set CWResult = Study.Results
   

    'Plot von Mises stresses
    Dim CWPlot As CosmosWorksLib.CWPlot
    Set CWPlot = CWResult.CreatePlot(swsResultStress, swsStaticNodalStress_VON, swsUnitSI, False, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to create plot"
   

    CWPlot.ActivatePlot
   

End Sub

Sub ErrorMsg(SwApp As SldWorks.SldWorks, Message As String)
    SwApp.SendMsgToUser2 Message, 0, 0
    SwApp.RecordLine "'*** WARNING - General"
    SwApp.RecordLine "'*** " & Message
    SwApp.RecordLine ""
End Sub

Function SelectByPID(Part As SldWorks.ModelDoc2, PIDName As String, PIDCollection As Collection) As Object
    Dim PID()       As Byte
    Dim PIDVariant  As Variant
    Dim PIDString   As String
    Dim i           As Long
    Dim SelObj      As Object
   

    'Get the string from the collection
    PIDString = ""
    PIDString = PIDCollection.Item(PIDName)
   

    'Parse the string into an array
    PIDVariant = Split(PIDString, ",")
    ReDim PID(UBound(PIDVariant))
   

    'Change to a byte array
    For i = 0 To (UBound(PIDVariant) - 1)
        PID(i) = PIDVariant(i)
    Next i
   

    'Select the entity
    Set SelObj = Part.Extension.GetObjectByPersistReference3((PID), errCode)
    Set SelectByPID = SelObj
    Set SelObj = Nothing
End Function

Function PIDInitializer() As Collection

    Dim PIDCollection As New Collection
    Dim selection2 As String
    Dim selection3 As String

    'Shaft face
    selection2 = "64,31,0,0,3,0,0,0,255,254,255,14,115,0,104,0,97,0,102,0,116,0,45,0,49,0,64,0,115,0,112,0,105,0,100,0,101,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,10,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,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,97,67,0,58,0,92,0,80,0,114,0,111,0,103,0,114,0,97,0,109,0,32,0,70,0,105,0,108,0,101,0,115,0,92,0,83,0,79,0,76,0,73,0,68,0,87,0,79,0,82,0,75,0,83,0,32,0,67,0,111,0,114,0,112,0,92,0,83,0,79,0,76,0,73,0,68,0,87,0,79,0,82,0,75,0,83,0,92,0,83,0,105,0,109,0,117,0,108,0,97,0,116,0,105,0,111,0,110,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,92,0,69,0,100,0,117,0,99,0,97,0,11"
    selection2 = selection2 & "6,0,105,0,111,0,110,0,97,0,108,0,32,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,92,0,115,0,104,0,97,0,102,0,116,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,9,128,255,254,255,5,115,0,104,0,97,0,102,0,116,0,2,0,0,155,126,163,53,0,165,25,208,59,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,63,0,0,0,0,0,0,0,7,50,149,70,12,0,0,0,171,126,163,53,1,0,0,0,255,255,1,0,20,0,109,111,69,110,100,70,97,99,101,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,12,0,0,0,171,126,163,53,1,0,0,0,255,255,255,255,0,0,12,128,0,0,5,128,8,0,12,0,0,0,171,126,163,53,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0"
    selection2 = selection2 & ",Type=1"

    'Arm
    selection3 = "64,31,0,0,3,0,0,0,255,254,255,15,115,0,112,0,105,0,100,0,101,0,114,0,45,0,49,0,64,0,115,0,112,0,105,0,100,0,101,0,114,0,4,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,9,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,8,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,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,98,67,0,58,0,92,0,80,0,114,0,111,0,103,0,114,0,97,0,109,0,32,0,70,0,105,0,108,0,101,0,115,0,92,0,83,0,79,0,76,0,73,0,68,0,87,0,79,0,82,0,75,0,83,0,32,0,67,0,111,0,114,0,112,0,92,0,83,0,79,0,76,0,73,0,68,0,87,0,79,0,82,0,75,0,83,0,92,0,83,0,105,0,109,0,117,0,108,0,97,0,116,0,105,0,111,0,110,0,92,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,92,0,69,0,100,0,117,0,99,0,9"
    selection3 = selection3 & "7,0,116,0,105,0,111,0,110,0,97,0,108,0,32,0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,115,0,92,0,115,0,112,0,105,0,100,0,101,0,114,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,9,128,255,254,255,6,115,0,112,0,105,0,100,0,101,0,114,0,2,0,0,149,119,163,53,0,73,0,71,0,1,0,0,0,0,0,0,0,3,0,0,0,255,254,255,7,68,0,101,0,102,0,97,0,117,0,108,0,116,0,142,0,0,0,0,0,0,0,13,50,149,70,28,0,0,0,119,124,163,53,10,0,0,0,255,255,1,0,20,0,109,111,69,110,100,70,97,99,101,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,107,0,0,0,227,104,166,53,1,0,0,0,255,255,255,255,255,255,1,0,19,0,109,111,70,105,108,108,101,116,83,117,114,102,73,100,82,101,112,95,99,0,0,5,128,8,0,139,0,0,0,68,107,166,53,4,0,0,0,15,128,0,0,5,128,8,0,141,0,0,0,83,107,166,53,4,0,0,0,15,128,0,0,5,128,8,0,139,0,0,0,68,107,166,53,3,0,0,0,0,0,12,128,0,0,5,128,8,0,48,0,0,0,82,125,163,53,1,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0"
    selection3 = selection3 & ",Type=1"

    'Store constants in a collection
    PIDCollection.Add selection2, "selection2"
    PIDCollection.Add selection3, "selection3"
  

    Set PIDInitializer = PIDCollection
End Function

 

 



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:   Add Centrifugal Load Example (VBA)
*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) 2015 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.