Search Results for

    Show / Hide Table of Contents

    Rotating with respect to axis

    This example provides information on rotating targets about their local reference. It expects that the targets are already created. You need to pass a RsTargetCollection object or station.ActiveTask.Targets to this example. The rotation of targets can be seen graphically.

    Solution

    1. Get translation vector of the target

      // Get the translation vector of the target
      Vector3 translation = new Vector3(target.Transform.GlobalMatrix.Translation.x,
                                        target.Transform.GlobalMatrix.Translation.y,
                                        target.Transform.GlobalMatrix.Translation.z);
      
    2. Get the z-axis vector of the target

      // Get the z-axis vector of target
      Vector3 zAxis = new Vector3(target.Transform.GlobalMatrix.z.x,
                                  target.Transform.GlobalMatrix.z.y,
                                  target.Transform.GlobalMatrix.z.z);
      
      Note

      To adjust the rotation axis, you can modify the axis vector directly by accessing target.Transform.GlobalMatrix.x.x for the X-axis, target.Transform.GlobalMatrix.y.x for the Y-axis, and similarly for other parameters. Alternatively, for a more straightforward approach, consider using target.Transform.GlobalMatrix.GetAxisVector(Axis.X) for the X-axis or target.Transform.GlobalMatrix.GetAxisVector(Axis.Y) for the Y-axis.

    3. Get the target's GlobalMatrix and rotate it around the z-axis

      // Get the matrix of target
      Matrix4 tMatrix = target.Transform.GlobalMatrix;
      
      // Rotate the matrix
      tMatrix.Rotate(translation, zAxis, rotationAngle);
      
    4. Set the GlobalMatrix of the target to the rotated matrix

      // Set the new matrix to target matrix
      target.Transform.GlobalMatrix = tMatrix;
      

    Example

    This example provides information on rotating targets based on axis in RobotStudio.

    private static void RSRotateBasedOnAxis(RsTargetCollection targetCollection)
    {
        //Begin UndoStep
        Project.UndoContext.BeginUndoStep("RotateBasedOnAxis");
        try
        {
            foreach (RsTarget target in targetCollection)
            {
                // Convert rotation angle from degrees to radians
                double rotationAngle = Globals.DegToRad(45);
    
                // Get the translation vector of the target
                Vector3 translation = new Vector3(target.Transform.GlobalMatrix.Translation.x,
                                                  target.Transform.GlobalMatrix.Translation.y,
                                                  target.Transform.GlobalMatrix.Translation.z);
    
                // Get the z-axis vector of target
                Vector3 zAxis = new Vector3(target.Transform.GlobalMatrix.z.x,
                                            target.Transform.GlobalMatrix.z.y,
                                            target.Transform.GlobalMatrix.z.z);
    
                // Get the matrix of target
                Matrix4 tMatrix = target.Transform.GlobalMatrix;
    
                // Rotate the matrix
                tMatrix.Rotate(translation, zAxis, rotationAngle);
    
                // Set the new matrix to target matrix
                target.Transform.GlobalMatrix = tMatrix;
            }
        }
        catch
        {
            Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
            throw;
        }
        finally
        {
            Project.UndoContext.EndUndoStep();
        }
    }
    

    Required Namespaces

    ABB.Robotics.RobotStudio.Stations

    ABB.Robotics.Math

    See Also

    • Picking Targets
    • Copying Targets
    In this article
    Back to top Copyright © 2026 ABB Robotics