AnsweredAssumed Answered

How to rotate robot joints synchronously ?

Question asked by Chiao Yang Chang on Jul 26, 2018
Latest reply on Aug 16, 2018 by Sergio Monti

I can use CreateTransformRotateAxis function to rotate a joint of the robot.(see the codes and video below)

However,it seems that the function just only rotate one component separately.

I want to rotate all joints at the same time.

How to rotate robot joints synchronously like the example in YouTube? (synchronous motion)

https://www.youtube.com/watch?v=6B8Iq9L2Eu4

================================================

【Code】

Private Sub MySub1()

       Dim swModel As ModelDoc2

       Dim swModelDocExt As ModelDocExtension

       Dim swAssy As AssemblyDoc

       Dim swDragOp As DragOperator

       Dim swSelMgr As SelectionMgr

       Dim swXform As MathTransform

       Dim swMathUtil As MathUtility

       Dim nPts(2) As Double

       Dim bRet As Boolean       
       swModel = swApp.ActiveDoc
      
       swAssy = swModel
      
       swDragOp = swAssy.GetDragOperator
      
       swSelMgr = swModel.SelectionManager
      
       swMathUtil = swApp.GetMathUtility
      
       swModelDocExt = swModel.Extension

 

       Dim strRefPlaneName As String

       Dim swRefPlane As RefPlane

       Dim swRefPlaneTransform As MathTransform

 

       'Get Reference Plane      
       strRefPlaneName = swFeature(0).Name
      
       swRefPlane = swFeature(0).GetSpecificFeature2
      
       swRefPlaneTransform = swRefPlane.Transform

 

       '===[Origin Point]===

       Dim aPointData(2) As Double      
      aPointData(0) = 0#
      
      aPointData(1) = 0#
      
      aPointData(2) = 0#

       ' Turn into a Variant

       Dim vPointData As Object = aPointData

       ' Create a math point

       Dim swOriginPoint As MathPoint      
       swOriginPoint = swMathUtil.CreatePoint(vPointData)

       ' Transform the reference plane origin from its canonical position to its actual position

       Dim swOriginPointOnRefPlane As MathPoint      
       swOriginPointOnRefPlane =swOriginPoint.MultiplyTransform(swRefPlaneTransform)

       ' Get point data      
       vPointData = swOriginPointOnRefPlane.ArrayData

 

       '===[Vector]===

       Dim aVectorData(2) As Double      
       aVectorData(0) = 0#
      
       aVectorData(1) = 0#
      
       aVectorData(2) = 1.0#

 

       Dim vVectorData As Object      
       vVectorData = aVectorData

       Dim swNormalVector As MathVector     
       swNormalVector = swMathUtil.CreateVector(vVectorData)

       Dim swNormalVectorRefPlane As MathVector      
       swNormalVectorRefPlane =swNormalVector.MultiplyTransform(swRefPlaneTransform)

       vVectorData = swNormalVectorRefPlane.ArrayData       
       swDragOp.DynamicClearanceEnabled =
False

       swDragOp.TransformType = 1

       swDragOp.DragMode = 1

     
       bRet = swDragOp.AddComponent(swComp(0),
False)     
       swXform = swMathUtil.CreateTransformRotateAxis(swOriginPointOnRefPlane, swNormalVectorRefPlane, 1 * RadPerDeg)

      
bRet = swDragOp.BeginDrag

       Dim nNow As Single

       For i = 0 To 44

        bRet = swDragOp.DragAsUI(swXform)  
        nNow =Microsoft.VisualBasic.Timer

            While Microsoft.VisualBasic.Timer < nNow +0.01

                DoEvents()

            End While

       Next i      
bRet = swDragOp.EndDrag

    
swModel.EditRebuild3()
    
swModel.ClearSelection2(
True)

End Sub

Attachments

Outcomes