# kernelv_ch_get_total_cs_def()

## Prototype

KERNELV_RETURN | kernelv_ch_get_total_cs_def(unsigned long int chanIndex, double *vector, unsigned long int bufferSize, unsigned long int *retBytes);

## Description

Returns the shift and rotation angle of the coordinate system resulting from concatenating all active coordinate systems.

A vector with six elements is returned. The first three elements contain the shift of the coordinate system origin to the origin of the basic coordinate system. The three following vector elements contain the rotation angle in degrees required to generate the coordinate system from the basic coordinate system. Similar to the documentation of the #CS documentation, the sequence to execute the rotations is ϕ3, . ϕ2, ϕ1 in this order.

#CS DEF [CS1] [ <v1>,<v2>,<v3>,<ϕ1>,<ϕ2>,<ϕ3> ]

Index | Meaning in the #CS command
0 | <v1>
1 | <v2>
2 | <v3>
3 | <ϕ1>
4 | <ϕ2>
5 | <ϕ3>

If no coordinate system is active, a zero vector is returned.

## Parameter

Name | Type | Meaning
chanIndex | unsigned long | Channel index of the channel.
vector | double* | Pointer to the memory location for the translation vector.
bufferSize | unsigned long | Length of the memory area for the rotation matrix must be at least 3 x sizeof(double).
returnLength | unsigned long* | Pointer to the value to which the actually returned number of bytes is to be written. If the transferred memory is too small for the return value, the return value ERR_CNC_RET_MEMORY is returned and this parameter returns the required memory size.

## Return values

Symbol | Value | Meaning
RET_FINISHED | 0 | The function was executed without error.
ERR_INVALID_CHAN | -1 | The transferred channel index is higher than the number of configured channels –1
ERR_CNC_NOT_INIT | -3 | The simulation CNC kernel was not yet initialised.
ERR_CNC_RET_MEMORY | -4 | The return value(s) does/do not fit into the memory provided. In this case, the minimum size required for the return is returned in returnLength.