5.2.10. cemIxArcPStart


SYNOPSIS

VT_I4 cemIxArcPStart(
  VT_I4 MapIndex,
  VT_R8 XCentOffset,
  VT_R8 YCentOffset,
  VT_R8 XEndPointDist,
  VT_R8 YEndPointDist,
  VT_I4 Direction
)

DESCRIPTION

  • 중심 좌표와 종점 좌표를 매개변수로 하여 원호 보간 이송을 수행합니다. 이때 각 좌표는 상대 좌표로 표현됩니다

  • 모션을 시작시킨 후에 바로 반환됩니다.

  • (자세한 내용은 SW 메뉴얼 참고)

PARAMETER

  • MapIndex : 맵 번호(Map index). 이 맵 번호를 사용하기 전에 먼저 cemIxMapAxes 함수를 통하여. 해당 맵 번호에 유효한 축들이 맵핑 되어 있어야 합니다.

  • XCentOffset : 현재 위치(시작 위치)로부터 원의 중심까지 X 축 상대 좌표 값.

  • YCentOffset : 현재 위치(시작 위치)로부터 원의 중심까지 Y 축 상대 좌표 값.

  • XEndPointDist : 원호 보간 이송을 완료할 목표 지점의 현재 위치로부터 X 축상의 거리를 설정합니다.

  • YEndPointDist : 원호 보간 이송을 완료할 목표 지점의 현재 위치로부터 Y 축상의 거리를 설정합니다.

  • Direction : 회전 방향을 지정합니다.

Value

Meaning

0 (cemARC_CW)

시계 방향(CW)으로 회전

1 (cemARC_CCW)

반 시계 방향(CCW)으로 회전.

RETURN VALUE

Note

cemIxArcPStart 함수를 사용하는 경우에는 cemIxIsDone 함수나 cemIxWaitDone 함수를 사용하여

모션의 완료를 확인할 수 있습니다.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 C/C++
 #include “ceSDK.h”
 #include “ceSDKDef.h”
long nIxMap = 0; // 보간 맵 설정
long nNodeID = 1; // 해당 원격 노드 ID
void OnSetIxConfig ()
{
// 0 번 축과 1 번 축을 보간 맵으로 설정합니다.
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );
// 각 축의 속도를 설정합니다.
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}
void OnIxArcP_Move ()
{
// 맵에 포함된 축의 속도 비율을 설정합니다.
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );
double fDistList[2] = {0.0f, 0.0f};

// P1 에서 P2 로 이송합니다.
fDistList[0] = 1000; fDistList[1] = 0;
cemIxLine ( nIxMap, fDistList, CE_FALSE );
// P2 에서 P3 로 이송합니다.
cemIxArcP ( nIxMap, 0, 500, 500, 500, cemARC_CCW, CE_FALSE );
// P3 에서 P4 로 이송합니다.
fDistList[0] = 0; fDistList[1] = 1000;
cemIxLine ( nIxMap, fDistList, CE_FALSE );
// P4 에서 P5 로 이송합니다.
cemIxArcP ( nIxMap, -500, 0, -500, 500, cemARC_CCW, CE_FALSE );
// P5 에서 P6 로 이송합니다.
fDistList[0] = -1000; fDistList[1] = 0;
cemIxLine ( nIxMap, fDistList, CE_FALSE );
// P6 에서 P7 로 이송합니다.
cemIxArcP ( nIxMap, 0, -500, -500, -500, cemARC_CCW, CE_FALSE );
// P7 에서 P8 로 이송합니다.
fDistList[0] = 0; fDistList[1] = -1000;
cemIxLine ( nIxMap, fDistList, CE_FALSE );
// P8 에서 P1 로 이송합니다.
cemIxArcP ( nIxMap, 500, 0, 500, -500, cemARC_CCW, CE_FALSE );
}