5 Replies Latest reply on Sep 19, 2014 9:24 AM by Jesse Seger

    how to create a Bolt connector for simulation through API

    Vijay Kumar

      Can anyone please explain how to create a bolt connector using macro for a flange. and what is the procedure to create that flange.


      and My code is


      Function boltconnectormain()

      'pre conditions: the circular edges of flange plates were selected.(select an edge directly opposite to the selected an edge)


          Dim swApp           As SldWorks.SldWorks
          Dim Part            As SldWorks.ModelDoc2
          Dim selmgr          As SldWorks.SelectionMgr
          Dim COSMOSWORKS     As Object
          Dim COSMOSObject    As CosmosWorksLib.CwAddincallback
          Dim ActDoc          As CosmosWorksLib.CWModelDoc
          Dim StudyMngr       As CosmosWorksLib.CWStudyManager
          Dim Study           As CosmosWorksLib.CWStudy
          Dim LBCMgr          As CosmosWorksLib.CWLoadsAndRestraintsManager
          Dim CWBolt          As CosmosWorksLib.CWBoltConnector
          Dim CWPin           As CosmosWorksLib.CWPinConnector
          Dim errCode         As Long
          Dim var()           As Variant
          Dim obj             As Object
          Dim pDisp1          As Object
          Dim pDisp2          As Object
          Dim DispArray1      As Variant
          Dim DispArray2      As Variant
          Dim i               As Integer
          Dim m               As Integer
          Dim count           As Integer
          Dim lbcount1        As Integer
          Dim lbcount2        As Integer
          Dim swSelData       As SldWorks.SelectData
          Dim swFace          As SldWorks.Face2
          Set swApp = Application.SldWorks
          Set Part = swApp.ActiveDoc
          Set selmgr = Part.SelectionManager
          count = selmgr.GetSelectedObjectCount
          boltcreat = False
          If count = 0 Then ErrorMsg swApp, "Selection not done", True: GoTo Goout:
          If count = 1 Then ErrorMsg swApp, "Select two edges of a hole", True: GoTo Goout:
          Set COSMOSObject = swApp.GetAddInObject("SldWorks.Simulation")
          If COSMOSObject Is Nothing Then ErrorMsg swApp, "COSMOSObject object not found.", True
          If COSMOSWORKS Is Nothing Then ErrorMsg swApp, "COSMOSWORKS object not found.", True
           Set ActDoc = COSMOSWORKS.ActiveDoc()
          Set StudyMngr = ActDoc.StudyManager()
          Set Study = StudyMngr.GetStudy(0)

          ReDim var(count - 1)
          For i = 0 To (count - 1)
              Set obj = selmgr.GetSelectedObject5(i + 1)
             var(i) = Part.Extension.GetPersistReference3(obj)
              Set obj = Nothing
          Next i
          For i = 0 To ((count / 2) - 1)
              Set pDisp1 = Part.Extension.GetObjectByPersistReference3((var((i * 2))), errCode)
              Set pDisp2 = Part.Extension.GetObjectByPersistReference3((var((i * 2) + 1)), errCode)
              DispArray1 = Array(pDisp1)
              DispArray2 = Array(pDisp2)
              Set LBCMgr = Study.LoadsAndRestraintsManager
              lbcount1 = LBCMgr.count
              Set CWBolt = LBCMgr.AddBoltConnector(swsBoltTypeStandardOrCounterboreNut, (DispArray1), (DispArray2), errCode)
              If CWBolt Is Nothing Then
                  ErrorMsg swApp, "Failed to Create Bolt connector", True:
                  swApp.SendMsgToUser2 "Wrong selection done by user ", 2, 2
                  GoTo Goout:
              End If
              Set CWBolt = Nothing
              lbcount2 = LBCMgr.count
              For m = 0 To (lbcount2 - lbcount1 - 1)
                  Set CWBolt = LBCMgr.GetLoadsAndRestraints((m + lbcount1), errCode)
                  If CWBolt Is Nothing Then ErrorMsg swApp, "Failed to Get Loads and Restraints for bolt connector", True
                  boltcreat = True
                  CWBolt.HeadDiameterUnit = 0
                  CWBolt.BoltShankDiameterUnit = 0
                  CWBolt.BoltShankDiameterValue = Bolt_Connector.TextBox1.Text  'form input

                  CWBolt.HeadDiameterValue = Bolt_Connector.TextBox2.Text 'form input
                  CWBolt.MaterialType = 1
                  CWBolt.SetLibraryMaterial "c:\Program Files\SolidWorks Corp\SolidWorks\lang\english\sldmaterials\solidworks materials.sldmat", "Ductile Iron (SN)"
                  CWBolt.BoltUnit = 0
                  CWBolt.PreLoadForceType = 0
                  CWBolt.PreLoadForceValue = 0.85
                  CWBolt.FrictionValue = 0.2
                  CWBolt.ThermalCoefficient = 0.5 'added
                  errCode = CWBolt.BoltConnectorEndEdit
                  Set CWBolt = Nothing
              Next m
          Next i
          If boltcreat = True Then
              swApp.SendMsgToUser2 "Wrong selection done by user " & vbCr & vbCr & "Select one edge of a hole and then select opposite edge of that hole" & vbCr & vbCr & "For to make the Bolt Connector", 2, 2
          End If

      End Function


      While using this code I had a problem in that red colored code that is in " var(i)

      If the count assigned in var(i) that is PersistReference is same for both circular edges, then it will create a bolt connector

      otherwise it will not create a bolt connector.


      Is there is any condition required for creating the cut extrude (feature) for that flange plates.



      Kindly help in this....