Robot Structural Analysis Forum
Welcome to Autodesk’s Robot Structural Analysis Forums. Share your knowledge, ask questions, and explore popular Robot Structural Analysis topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

(API) Moment Capacity Curve via API (nonlinear hinge, support, release example)

15 REPLIES 15
SOLVED
Reply
Message 1 of 16
tony.ridley
2446 Views, 15 Replies

(API) Moment Capacity Curve via API (nonlinear hinge, support, release example)

Hi,

 

Is it possible to access the following via API?

 

moment capacity.JPG

 

Thanks,

Tony

15 REPLIES 15
Message 2 of 16
Rafal.Gaweda
in reply to: tony.ridley

Tony,

 

Have fun (these code copies hinges from robot kernel to Robot but it will give you idea how to access data):

 

Public Sub NonLinFunctionsHandle(ByVal r As RobotOM.RobotApplication, ByVal k As KernelOM.RobotKernel)

              FormMain.ProgressBarInit(1, "nonlinear functions")
              FormMain.log.AddComment("definition of nonlinear functions")

              Dim KnlL As KernelOM.RobotNonlinearLink
              Dim nlLP As RobotOM.IRobotNonlinearLinkParams
              Dim nlL As RobotOM.RobotNonlinearLink
              Dim i As Integer
              Dim j As Integer
              Dim q As Integer
              Dim f_ As Integer
              Dim t_ As Integer

              For i = 1 To r.Project.Structure.Nodes.NonlinearLinks.Count
                     nlL = r.Project.Structure.Nodes.NonlinearLinks.Get(i)
                     KnlL = k.Structure.Nodes.NonlinearLinks.Create(nlL.Name)
                     KnlL.ModelType = nlL.ModelType
                     If nlL.Symetry Then
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                     Else
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_POSITIVE
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_NEGATIVE
                     End If

                     For j = f_ To t_
                           nlLP = nlL.GetParams(j)
                           KnlL.SetCurveType(nlLP.CurveType, j)
                           If nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_B_LINEAR Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsBLinear
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsBLinear
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.K1 = nllP_.K1
                                  KnnLP.K2 = nllP_.K2
                                  KnnLP.d1 = nllP_.d1
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_CUSTOM Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsCustom
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsCustom
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  For q = 1 To nllP_.Count
                                         Dim seg As RobotOM.RobotNonlinearLinkParamsCustomSegment
                                         Dim Kseg As KernelOM.RobotNonlinearLinkParamsCustomSegment
                                         seg = nllP_.Get(q)
                                         Kseg = KnnLP.[New]()
                                         Kseg.Constant = seg.Constant
                                         Kseg.Expression = seg.Expression
                                         Kseg.OriginPoint = seg.OriginPoint
                                         KnnLP.Set(q, Kseg)
                                  Next
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_GAP_HOOK Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsGapHook
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsGapHook
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.K = nllP_.K
                                  KnnLP.D = nllP_.D
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_LINEAR Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsLinear
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsLinear
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.K = nllP_.K
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_PARABOLIC Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsParabolic
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsParabolic
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.Dlim = nllP_.Dlim
                                  KnnLP.Dmax = nllP_.Dmax
                                  KnnLP.Flim = nllP_.Flim
                                  KnnLP.K = nllP_.K
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_PARABOLIC_EC2 Then       '?
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsParabolic
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsParabolic
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.Dlim = nllP_.Dlim
                                  KnnLP.Dmax = nllP_.Dmax
                                  KnnLP.Flim = nllP_.Flim
                                  KnnLP.K = nllP_.K
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_PERFECTLY_PLASTIC Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsPlastic
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsPlastic
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.Dlim = nllP_.Dlim
                                  KnnLP.Flim = nllP_.Flim
                                  KnnLP.W = nllP_.W
                                  KnnLP.K = nllP_.K
                                  KnlL.SetParams(KnnLP)
                           ElseIf nlLP.CurveType = RobotOM.IRobotNonlinearLinkCurveType.I_NLCT_PLASTIC_WITH_HARDENING Then
                                  Dim KnnLP As KernelOM.RobotNonlinearLinkParamsPlasticHardening
                                  Dim nllP_ As RobotOM.RobotNonlinearLinkParamsPlasticHardening
                                  KnnLP = KnlL.GetParams(j)
                                  nllP_ = nlL.GetParams(j)
                                  KnnLP.Dlim = nllP_.Dlim
                                  KnnLP.Flim = nllP_.Flim
                                  KnnLP.W = nllP_.W
                                  KnnLP.K0 = nllP_.K0
                                  KnnLP.K1 = nllP_.K1
                                  KnlL.SetParams(KnnLP)
                           Else
                                  'not handled
                           End If

                     Next

              Next

              'non-linear hinge functions
              Dim nlHP As RobotOM.RobotNonlinearHingeModelAxisParams
              Dim KnlHP As KernelOM.RobotNonlinearHingeModelAxisParams
              Dim KnlHM As KernelOM.RobotNonlinearHingeModelPoints
              Dim nlHM As RobotOM.RobotNonlinearHingeModelPoints
              Dim nlH As RobotOM.RobotNonlinearHingeModel
              Dim KnlH As KernelOM.RobotNonlinearHingeModel

              For i = 1 To r.Project.Structure.Bars.NonlinearHingeModels.Count

                     nlH = r.Project.Structure.Bars.NonlinearHingeModels.Get(i)
                     KnlH = k.Structure.Bars.NonlinearHingeModels.Create(nlH.Name)

                     If nlH.Symetry Then
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                     Else
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_POSITIVE
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_NEGATIVE
                     End If

                     KnlH.ModelType = nlH.ModelType
                     KnlH.UnloadingMethod = nlH.UnloadingMethod
                     If KnlH.UnloadingMethod = KernelOM.IRobotNonlinearHingeModelUnloadingType.I_NHMUT_MIXED Then
                           KnlH.MixedUnloadingValue = nlH.MixedUnloadingValue
                     End If
                     KnlH.LimitCoordX = nlH.LimitCoordX
                     If KnlH.LimitCoordX Then
                           KnlH.LimitCoordXValue = nlH.LimitCoordXValue
                     End If
                     KnlH.LimitCoordY = nlH.LimitCoordY
                     If KnlH.LimitCoordY Then
                           KnlH.LimitCoordYValue = nlH.LimitCoordYValue
                     End If

                     For j = f_ To t_
                           nlHP = nlH.GetAxisParams(j)
                           KnlHP = KnlH.GetAxisParams(j)
                           KnlHP.ImmediateOccupancy = nlHP.ImmediateOccupancy
                           KnlHP.LifeSafety = nlHP.LifeSafety
                           KnlHP.StructuralStability = nlHP.StructuralStability
                           KnlH.SetAxisParams(j, KnlHP)

                           KnlHM = KnlH.GetPoints(j)
                           nlHM = nlH.GetPoints(j)
                           For q = 1 To KnlHM.Count
                                  Dim Kgp2d As KernelOM.RobotGeoPoint2D
                                  Kgp2d = k.CmpntFactory.Create(KernelOM.IRobotComponentType.I_CT_GEO_POINT_2D)
                                  Kgp2d.Set(nlHM.Get(j).X, nlHM.Get(j).Y)
                                  KnlHM.Set(q, Kgp2d)
                           Next

                     Next

              Next
              FormMain.ProgressBarNextStep()

       End Sub

 

              'non-linear hinge functions
              Dim nlHP As RobotOM.RobotNonlinearHingeModelAxisParams
              Dim KnlHP As KernelOM.RobotNonlinearHingeModelAxisParams
              Dim KnlHM As KernelOM.RobotNonlinearHingeModelPoints
              Dim nlHM As RobotOM.RobotNonlinearHingeModelPoints
              Dim nlH As RobotOM.RobotNonlinearHingeModel
              Dim KnlH As KernelOM.RobotNonlinearHingeModel

              For i = 1 To r.Project.Structure.Bars.NonlinearHingeModels.Count

                     nlH = r.Project.Structure.Bars.NonlinearHingeModels.Get(i)
                     KnlH = k.Structure.Bars.NonlinearHingeModels.Create(nlH.Name)

                     If nlH.Symetry Then
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY
                     Else
                           f_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_POSITIVE
                           t_ = RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_NEGATIVE
                     End If

                     KnlH.ModelType = nlH.ModelType
                     KnlH.UnloadingMethod = nlH.UnloadingMethod
                     If KnlH.UnloadingMethod = KernelOM.IRobotNonlinearHingeModelUnloadingType.I_NHMUT_MIXED Then
                           KnlH.MixedUnloadingValue = nlH.MixedUnloadingValue
                     End If
                     KnlH.LimitCoordX = nlH.LimitCoordX
                     If KnlH.LimitCoordX Then
                           KnlH.LimitCoordXValue = nlH.LimitCoordXValue
                     End If
                     KnlH.LimitCoordY = nlH.LimitCoordY
                     If KnlH.LimitCoordY Then
                           KnlH.LimitCoordYValue = nlH.LimitCoordYValue
                     End If

                     For j = f_ To t_
                           nlHP = nlH.GetAxisParams(j)
                           KnlHP = KnlH.GetAxisParams(j)
                           KnlHP.ImmediateOccupancy = nlHP.ImmediateOccupancy
                           KnlHP.LifeSafety = nlHP.LifeSafety
                           KnlHP.StructuralStability = nlHP.StructuralStability
                           KnlH.SetAxisParams(j, KnlHP)

                           KnlHM = KnlH.GetPoints(j)
                           nlHM = nlH.GetPoints(j)
                           For q = 1 To KnlHM.Count
                                  Dim Kgp2d As KernelOM.RobotGeoPoint2D
                                  Kgp2d = k.CmpntFactory.Create(KernelOM.IRobotComponentType.I_CT_GEO_POINT_2D)
                                  Kgp2d.Set(nlHM.Get(j).X, nlHM.Get(j).Y)
                                  KnlHM.Set(q, Kgp2d)
                           Next

                     Next

              Next



       Private Function NLHinge(ByRef Klab As KernelOM.RobotLabel, ByVal lab As RobotOM.RobotLabel) As KernelOM.RobotLabel

              'todo - nl function def
              Dim KnlhData As KernelOM.RobotNonlinearHingeData
              Dim nlhData As RobotOM.RobotNonlinearHingeData

              KnlhData = Klab.Data
              nlhData = lab.Data

              KnlhData.NormalStress = nlhData.NormalStress
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FX) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_FX, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FX))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FY) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_FY, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FY))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FZ) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_FZ, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_FZ))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MX) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_MX, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MX))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MY) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_MY, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MY))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MZ) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_MZ, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_MZ))
              End If
              If nlhData.IsActive(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_SX) Then
                     KnlhData.SetModel(KernelOM.IRobotNonlinearHingeComponentType.I_NHCT_SX, nlhData.GetModel(RobotOM.IRobotNonlinearHingeComponentType.I_NHCT_SX))
              End If

              NLHinge = Klab

       End Function

 

 



Rafal Gaweda
Message 3 of 16
Rafal.Gaweda
in reply to: Rafal.Gaweda

Nonlinear Support example

 

Private Function Support(ByRef Klab As KernelOM.RobotLabel, ByVal lab As RobotOM.RobotLabel) As KernelOM.RobotLabel

              Dim supData As RobotOM.RobotNodeSupportData
              Dim KsupData As KernelOM.RobotNodeSupportData

              KsupData = Klab.Data
              supData = lab.Data
              KsupData.UX = supData.UX
              KsupData.UY = supData.UY
              KsupData.UZ = supData.UZ
              KsupData.RX = supData.RX
              KsupData.RY = supData.RY
              KsupData.RZ = supData.RZ
              KsupData.HX = supData.HX
              KsupData.HY = supData.HY
              KsupData.HZ = supData.HZ
              KsupData.KX = supData.KX
              KsupData.KY = supData.KY
              KsupData.KZ = supData.KZ
              KsupData.AX = supData.AX
              KsupData.AY = supData.AY
              KsupData.AZ = supData.AZ
              KsupData.BX = supData.BX
              KsupData.BY = supData.BY
              KsupData.BZ = supData.BZ
              KsupData.GlobalCoordSystem = supData.GlobalCoordSystem
              KsupData.Alpha = supData.Alpha
              KsupData.Beta = supData.Beta
              KsupData.Gamma = supData.Gamma
              KsupData.Advanced.B = supData.Advanced.B
              KsupData.Advanced.D = supData.Advanced.D
              KsupData.Advanced.H = supData.Advanced.H
              KsupData.Advanced.Type = supData.Advanced.Type
              If supData.Advanced.IsEquivalentElasticity Then
                     KsupData.Advanced.EquivalentElasticity.E = supData.Advanced.EquivalentElasticity.E
                     KsupData.Advanced.EquivalentElasticity.E = supData.Advanced.EquivalentElasticity.PoissonRatio
              End If
              KsupData.ElasticLinear = supData.ElasticLinear
              KsupData.ElasticSurface = supData.ElasticSurface
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_UX, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_UX))
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_UY, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_UY))
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_UZ, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_UZ))
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_RX, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_RX))
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_RY, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_RY))
              KsupData.SetOneDir(KernelOM.IRobotNodeSupportFixingDirection.I_NSFD_RZ, supData.GetOneDir(RobotOM.IRobotNodeSupportFixingDirection.I_NSFD_RZ))

              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UX, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX))
              End If
              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UY, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY))
              End If
              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UZ, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ))
              End If
              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RX, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX))
              End If
              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RY, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY))
              End If
              If supData.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ) Then
                     KsupData.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RZ, supData.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ))
              End If

              Support = Klab

       End Function

 



Rafal Gaweda
Message 4 of 16
Rafal.Gaweda
in reply to: Rafal.Gaweda

Nonlinear Release example

 

       Private Function Release(ByRef Klab As KernelOM.RobotLabel, ByVal lab As RobotOM.RobotLabel) As KernelOM.RobotLabel

              Dim KrelData As KernelOM.RobotBarReleaseData
              Dim relData As RobotOM.RobotBarReleaseData

              KrelData = Klab.Data
              relData = lab.Data

              KrelData.StartNode.AX = relData.StartNode.AX
              KrelData.StartNode.AY = relData.StartNode.AY
              KrelData.StartNode.AZ = relData.StartNode.AZ
              KrelData.StartNode.BX = relData.StartNode.BX
              KrelData.StartNode.BY = relData.StartNode.BY
              KrelData.StartNode.BZ = relData.StartNode.BZ
              KrelData.StartNode.HX = relData.StartNode.HX
              KrelData.StartNode.HY = relData.StartNode.HY
              KrelData.StartNode.HZ = relData.StartNode.HZ
              KrelData.StartNode.KX = relData.StartNode.KX
              KrelData.StartNode.KY = relData.StartNode.KY
              KrelData.StartNode.KZ = relData.StartNode.KZ
              KrelData.StartNode.RX = relData.StartNode.RX
              KrelData.StartNode.RY = relData.StartNode.RY
              KrelData.StartNode.RZ = relData.StartNode.RZ
              KrelData.StartNode.UX = relData.StartNode.UX
              KrelData.StartNode.UY = relData.StartNode.UY
              KrelData.StartNode.UZ = relData.StartNode.UZ

              KrelData.EndNode.AX = relData.EndNode.AX
              KrelData.EndNode.AY = relData.EndNode.AY
              KrelData.EndNode.AZ = relData.EndNode.AZ
              KrelData.EndNode.BX = relData.EndNode.BX
              KrelData.EndNode.BY = relData.EndNode.BY
              KrelData.EndNode.BZ = relData.EndNode.BZ
              KrelData.EndNode.HX = relData.EndNode.HX
              KrelData.EndNode.HY = relData.EndNode.HY
              KrelData.EndNode.HZ = relData.EndNode.HZ
              KrelData.EndNode.KX = relData.EndNode.KX
              KrelData.EndNode.KY = relData.EndNode.KY
              KrelData.EndNode.KZ = relData.EndNode.KZ
              KrelData.EndNode.RX = relData.EndNode.RX
              KrelData.EndNode.RY = relData.EndNode.RY
              KrelData.EndNode.RZ = relData.EndNode.RZ
              KrelData.EndNode.UX = relData.EndNode.UX
              KrelData.EndNode.UY = relData.EndNode.UY
              KrelData.EndNode.UZ = relData.EndNode.UZ

              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RX, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX))
              End If
              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RY, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY))
              End If
              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RZ, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ))
              End If
              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UX, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX))
              End If
              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UY, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY))
              End If
              If relData.StartNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ) Then
                     KrelData.StartNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UZ, relData.StartNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RX, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RX))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RY, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RY))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_RZ, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_RZ))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UX, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UX))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UY, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UY))
              End If
              If relData.EndNode.NonlinearModel.IsDefined(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ) Then
                     KrelData.EndNode.NonlinearModel.Set(KernelOM.IRobotDegreeOfFreedom.I_DOF_UZ, relData.EndNode.NonlinearModel.Get(RobotOM.IRobotDegreeOfFreedom.I_DOF_UZ))
              End If

              Release = Klab

       End Function

 



Rafal Gaweda
Message 5 of 16
tony.ridley
in reply to: Rafal.Gaweda

oh ****
Message 6 of 16
Maciej_R
in reply to: tony.ridley

Thanks man :]

Message 7 of 16
jokiller70
in reply to: tony.ridley

I saw your code and at last made a function that enters the release functions into robot.

 

But they get jerky and Robot doesen´t calculate correctly. Tryed iterating more values but still wrong values at calculate.

 

Any ideas on what I am missing?

 

Dim segments As Integer
Dim segment(15, 2) As Double
Dim i As Integer
Dim n As Integer
Dim vinkel(15) As Double
Dim värdet(15) As Double
Dim KnlL As RobotOM.RobotNonlinearLink
Dim KnnLP As RobotOM.RobotNonlinearLinkParamsCustom
Dim Kseg As RobotOM.RobotNonlinearLinkParamsCustomSegment
Const I_NLCT_CUSTOM = 8

robapp.Project.Structure.Nodes.NonlinearLinks.Remove(robapp.Project.Structure.Nodes.NonlinearLinks.Find("AHMyD"))
KnlL = robapp.Project.Structure.Nodes.NonlinearLinks.Create("AHMyD")
KnlL.SetCurveType(I_NLCT_CUSTOM, RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY)
KnlL.ModelType = RobotOM.IRobotNonlinearLinkModelType.I_NLMT_MOMENT_ROTATION
KnnLP = KnlL.GetParams(RobotOM.IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY)
n = 0
segments = 5
värdet(1) = 0
vinkel(1) = 0.0257
värdet(2) = 0.375
vinkel(2) = 0.0463
värdet(3) = 0.465
vinkel(3) = 0.0515
värdet(4) = 0.555
vinkel(4) = 0.0582
värdet(5) = 0.629
vinkel(5) = 0.0654
For i = 1 To segments - 1
For j = 1 To 1
Kseg = KnnLP.[New]()
Kseg.Expression = Str$((värdet(i) + (värdet(i + 1) - värdet(i)) / 10 * j) * 1000)
Kseg.OriginPoint = (vinkel(i) + (vinkel(i + 1) - vinkel(i)) / 10 * j)
n = n + 1
KnnLP.Set(n, Kseg)
KnlL.SetParams(KnnLP, IRobotNonlinearLinkSemiAxisType.I_NLSAT_ANY)
Next
Next
KnlL = Nothing
KnnLP = Nothing
Kseg = Nothing

 

And this is what i get 😞

release.jpg

Tags (1)
Message 8 of 16
Rafal.Gaweda
in reply to: jokiller70

What do you expect to get ?


Rafal Gaweda
Message 9 of 16
jokiller70
in reply to: Rafal.Gaweda

I am expecting a curve that robot uses. like when i input the values manually and not from api

release.jpg

Message 10 of 16
Rafal.Gaweda
in reply to: jokiller70

Kseg.Constant = False 

 then :

 

apinon.jpg



Rafal Gaweda
Message 11 of 16
jokiller70
in reply to: Rafal.Gaweda

Super, many thanks!

Message 12 of 16
betadine
in reply to: jokiller70

Hi All

 

I need to create a nonlinear release in a excel sheet to simulate headed studs in a composite beam but I'm not succeeding in...

 

I am not an advance programmer, and these codes are a little bit confused for me.

 

I tried to copie yours codes into my excel but they didn't work. When i 'm setting the curve type the line code stays red and it shows a worning saying :"Expected :="

 

What i'm doing wrong?

Message 13 of 16
betadine
in reply to: betadine

Hi All Again,

 

I've been trying some codes and the best was this one:

 

    Dim RLabel As RobotLabel
    Dim relData As RobotBarReleaseData
    Dim EndData As RobotBarEndReleaseData
    Dim KnlL As RobotNonlinearLink
    Dim KnnLP As RobotNonlinearLinkParamsBLinear
    Set KnlL = str.Nodes.NonlinearLinks.Create("ConectorBiLinear")
    Const I_NLCT_B_LINEAR = 2
    KnlL.ModelType = IRobotNonlinearLinkModelType.I_NLMT_FORCE_DISPLACEMENT
    KnlL.SetCurveType (I_NLCT_B_LINEAR)
    Set KnnLP = KnlL.GetParams(I_NLSAT_POSITIVE)
    KnnLP.d1 = 1
    KnnLP.K1 = 54000
    KnnLP.K2 = 10000

    Set RLabel = str.labels.Create(I_LT_BAR_RELEASE, "CONECTOR")
    Set relData = RLabel.Data
'    Set EndData = relData.StartNode
'    EndData.UX = I_BERV_NONLINEAR
'    EndData.UX = I_BERV_STD

    Set EndData = relData.EndNode
    EndData.UX = I_BERV_NONLINEAR
    EndData.UX = I_BERV_STD
    

    str.labels.Store RLabel
    str.Bars.SetLabel selectionBars, I_LT_BAR_RELEASE, "CONECTOR"

 

By the way, when i try to set the parameters d1 K1 and K2, the code doesn't assume that.

 

What i'm doing wrong?

Message 14 of 16
marcinrakus
in reply to: betadine

1. Try set params after definition

KnlL.SetParams KnnLP

and

2. Assign nonlinear model to desired direction

EndData.NonlinearModel.Set I_DOF_UX, "ConectorBiLinear"

 

fuul code:

 

Dim robapp As RobotApplication
Set robapp = New RobotApplication
Dim RLabel As RobotLabel
Dim relData As RobotBarReleaseData
Dim EndData As RobotBarEndReleaseData
Dim KnlL As RobotNonlinearLink
Dim KnnLP As RobotNonlinearLinkParamsBLinear
Set KnlL = robapp.Project.Structure.Nodes.NonlinearLinks.Create("ConectorBiLinear")
Const I_NLCT_B_LINEAR = 2
KnlL.ModelType = IRobotNonlinearLinkModelType.I_NLMT_FORCE_DISPLACEMENT
KnlL.SetCurveType (I_NLCT_B_LINEAR)
Set KnnLP = KnlL.GetParams(I_NLSAT_POSITIVE)
KnnLP.d1 = 1
KnnLP.K1 = 54000
KnnLP.K2 = 10000
KnlL.SetParams KnnLP

Set RLabel = robapp.Project.Structure.Labels.Create(I_LT_BAR_RELEASE, "CONECTOR")
Set relData = RLabel.Data
Set EndData = relData.StartNode
EndData.UX = I_BERV_NONLINEAR
EndData.NonlinearModel.Set I_DOF_UX, "ConectorBiLinear"
EndData.UX = I_BERV_STD

Set EndData = relData.EndNode
EndData.UX = I_BERV_NONLINEAR
EndData.UX = I_BERV_STD

robapp.Project.Structure.Labels.Store RLabel

Message 15 of 16
marcinrakus
in reply to: betadine

I tried to copie yours codes into my excel but they didn't work. When i 'm setting the curve type the line code stays red and it shows a worning saying :"Expected :="

 

What i'm doing wrong?

 

Try without brackets

Message 16 of 16
betadine
in reply to: marcinrakus

Thank you very much!

 

It works fine..

 

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report