Hide Table of Contents

Add Cyclic Symmetry Restraint Example (VBA)

This example shows how to add a cyclic symmetry restraint 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 > OK).
' 2. Add the SOLIDWORKS Simulation type library as a reference (in the IDE,
'    click Tools > References > SOLIDWORKS Simulation version type library).
' 3. Ensure that the specified model document exists.
'
' Postconditions:
' 1. Opens the specified model document.
' 2. Gets study, Partial-Solids.
' 3. Adds the Cyclic Symmetry-1 fixture to Partial-Solids.
' 4. Meshes the model.
' 5. Analyzes Partial-Solids.
' 6. Inspect the Simulation study tree and the graphics area.
'
' NOTE: Because the model is used elsewhere, do not save changes.
' ---------------------------------------------------------------------------
Option Explicit

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 LBCMgr          As CosmosWorksLib.CWLoadsAndRestraintsManager
Dim Restraint       As CosmosWorksLib.CWRestraint
Dim errCode         As Long
Dim longstatus      As Long, longwarnings As Long
Dim Axis1           As Object, Face1 As Object, Face2 As Object

Const MeshEleSize   As Double = 4.48279654351123
Const MeshTol       As Double = 0.224139827175561
Const Tol1          As Double = 0.05

Sub main()

    Set SwApp = Application.SldWorks

    Set Part = SwApp.OpenDoc6("C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2019\samples\Simulation Examples\pressurevessel.sldprt", swDocPART, swOpenDocOptions_Silent, "", longstatus, longwarnings)
    Set Part = SwApp.ActiveDoc
   

    Dim PIDCollection   As New Collection
    Set PIDCollection = PIDInitializer()
   

    Set Axis1 = SelectByPID(Part, "selection1", PIDCollection) ' axis of revolution
    Set Face1 = SelectByPID(Part, "selection2", PIDCollection) ' first face
    Set Face2 = SelectByPID(Part, "selection3", PIDCollection) ' second face
 

    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"
   

    'Get the static study
    Set StudyMngr = ActDoc.StudyManager()
    If StudyMngr Is Nothing Then ErrorMsg SwApp, "No CWStudyManager object"
    Set Study = StudyMngr.GetStudy(1)
    If Study Is Nothing Then ErrorMsg SwApp, "Failed to get study"
    StudyMngr.ActiveStudy = 1
  

    'Add a cyclic symmetric restraint
    Set LBCMgr = Study.LoadsAndRestraintsManager
    If LBCMgr Is Nothing Then ErrorMsg SwApp, "No CWLoadsAndRestraintsManager object"
   

    Set Restraint = LBCMgr.AddCyclicSymmetryRestraint(Face1, Face2, Axis1, errCode)
    If errCode <> 0 Then ErrorMsg SwApp, "Adding cyclic symmetry restraint failed with error as defined in swsCyclicRestraintError_e: " & errCode
     

    'Mesh the model
    Dim CWMeshObj As CosmosWorksLib.CWMesh
    Set CWMeshObj = Study.Mesh
    If CWMeshObj Is Nothing Then ErrorMsg SwApp, "No CWMesh object"
    CWMeshObj.MesherType = 0
    CWMeshObj.Quality = 0
    errCode = Study.CreateMesh(0, MeshEleSize, MeshTol)
    If errCode <> 0 Then ErrorMsg SwApp, "Failed to create 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

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 selection1 As String
    Dim selection2 As String
    Dim selection3 As String
 

    'Axis1
    selection1 = "234,35,0,0,1,0,0,0,255,254,255,0,0,0,0,0,49,0,0,0"
    selection1 = selection1 & ",Type=1"

   
    'First face
    selection2 = "234,35,0,0,3,0,0,0,255,254,255,0,0,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,10,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,20,0,109,111,69,110,100,70,97,99,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,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,85,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,112,0,114,0,101,0,115,0,115,0,117,0,114,0,101,0,118,0,101,0,115,0,115,0,101,0,108,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,9,128,255,254,255,14,112,0,114"
    selection2 = selection2 & ",0,101,0,115,0,115,0,117,0,114,0,101,0,118,0,101,0,115,0,115,0,101,0,108,0,2,0,0,148,98,134,61,255,254,255,0,255,254,255,0,0,224,22,28,65,1,0,0,0,0,0,0,0,1,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,224,22,28,65,44,0,0,0,178,133,134,61,0,0,0,0,2,0,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,5,128,8,0,44,0,0,0,178,133,134,61,3,0,0,0,3,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,1,0,0,0,2,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,33,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,32,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,31,0,0,0,3,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,1,0,0,0,2,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,29,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
    selection2 = selection2 & ",Type=1"

    'Second Face
    selection3 = "234,35,0,0,3,0,0,0,255,254,255,0,0,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,10,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,20,0,109,111,69,110,100,70,97,99,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,17,0,109,111,67,83,116,114,105,110,103,72,97,110,100,108,101,95,99,255,254,255,85,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,112,0,114,0,101,0,115,0,115,0,117,0,114,0,101,0,118,0,101,0,115,0,115,0,101,0,108,0,46,0,115,0,108,0,100,0,112,0,114,0,116,0,9,128,255,254,255,14,112,0,114"
    selection3 = selection3 & ",0,101,0,115,0,115,0,117,0,114,0,101,0,118,0,101,0,115,0,115,0,101,0,108,0,2,0,0,148,98,134,61,255,254,255,0,255,254,255,0,0,224,22,28,65,1,0,0,0,0,0,0,0,1,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,224,22,28,65,44,0,0,0,178,133,134,61,1,0,0,0,2,0,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,5,128,8,0,44,0,0,0,178,133,134,61,3,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,2,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,29,0,0,0,3,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,0,0,0,0,2,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,31,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,32,0,0,0,12,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,33,0,0,0,3,128,0,0,5,128,8,0,44,0,0,0,178,133,134,61,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
    selection3 = selection3 & ",Type=1"

  
    'Store constants in a collection
    PIDCollection.Add selection1, "selection1"
    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 Cyclic Symmetry Restraint 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) 2019 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.