---
title: "Интерфейс управления положением компонентов в сборке (Интерфейсы ksComponentPositioner, IComponentPositioner)"
type: interface
api: [api7]
domain: [3d, assembly]
tags: [interface, api7, 3d, assembly, kscomponentpositioner]
sources:
  - kscomponentpositioner.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D ) *


## Интерфейс управления положением компонентов в сборке (Интерфейсы ksComponentPositioner, IComponentPositioner)

Интерфейс управления положением компонентов в сборке.
| ksComponentPositioner | - интерфейс Automation |
| --- | --- |
| IComponentPositioner | - интерфейс COM |
Описание:
Сдвиг проводится в плоскости, которая определена относительно сборки. Для сдвига точка захвата должна быть определена в системе координат сдвигаемого компонента, а точка сдвига должна быть в системе координат сборки и преобразована в проекцию на плоскость сдвига. Перед началом сдвига нужно задать плоскость и точку захвата.
Вращение проводится относительно оси, которая задается относительно сборки. Перед началом вращения нужно задать ось вращения. Это может быть ось или прямолинейное ребро. Начало перемещения определяется вызовом метода Prepare. Окончание перемещения определяется вызовом метода Finish. Между ними может быть сколько угодно вызовов MoveComponent или RotateComponent в зависимости от указанного типа перемещения.
Примечание:
Данный интерфейс может быть получен с использованием метода интерфейса ksDocument3D::ComponentPositioner.


## Finish - Завершить перемещение компонента

Синтаксис Automation:
```
BOOL Finish();
```
Синтаксис COM:
```
BOOL Finish();
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Начало перемещения определяется вызовом метода Prepare. Между ними может быть сколько угодно вызовов MoveComponent или RotateComponent в зависимости от указанного типа перемещения.


## MoveComponent - Переместить компонент

Синтаксис Automation:
```
BOOL MoveComponent (double x, double y, double z);
```
Синтаксис COM:
```
BOOL MoveComponent (double x, double y, double z);
Входные параметры:
x, y, z    - координаты точки сдвига.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Перед началом сдвига нужно задать плоскость и точку захвата. Сдвиг проводится в плоскости, которая определена относительно сборки. Начало перемещения определяется вызовом метода Prepare с типом pnMove. Окончание перемещения определяется вызовом метода Finish. Между ними может быть сколько угодно вызовов MoveComponent.


## Prepare - Подготовиться к перемещению компонента

Синтаксис Automation:
```
long Prepare(ksPart * part, Positioner_Type positionerType);
```
Синтаксис COM:
```
long Prepare(LPPART part, Positioner_Type positionerType);
Входные параметры:
part    - указатель на интерфейс компоненты ksPart или IPart,
positionerType    - тип перемещения.
Возвращаемое значение:
0    - в случае успешного завершения,
1    - в случае неудачи.
```
Примечание:
Окончание перемещения определяется вызовом метода Finish. Между ними может быть сколько угодно вызовов MoveComponent или RotateComponent в зависимости от указанного типа перемещения.


## RotateComponent - Повернуть компонент

Синтаксис Automation:
```
BOOL RotateComponent (double angl);
```
Синтаксис COM:
```
BOOL RotateComponent (double angl);
Входные параметры:
angl    - угол поворота компоненты, рад.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Перед началом вращения нужно задать ось вращения. Это может быть ось или прямолинейное ребро. Начало перемещения определяется вызовом метода Prepare с типом pnRotate. Окончание перемещения определяется вызовом метода Finish. Между ними может быть сколько угодно вызовов RotateComponent.


## SetAxis - Задать ось

Синтаксис Automation:
```
BOOL SetAxis (LPDISPATCH axis);
```
Синтаксис COM:
```
BOOL SetAxis (LPUNKNOWN axis);
Входные параметры:
axis    - указатель на интерфейс конструктивной оси или прямолинейного ребра.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```


## SetAxisByPoints - Задать ось по точкам

Синтаксис Automation:
```
BOOL SetAxisByPoints (double x1,
double y1,
double z1,
double x2,
double y2,
double z2);
```
Синтаксис COM:
```
BOOL SetAxisByPoints (double x1,
double y1,
double z1,
double x2,
double y2,
double z2);
Входные параметры:
x1, y1, z1    - координаты первой точки оси,
x2, y2, z2    - координаты второй точки оси.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Координаты точек, задающих ось, должны быть определены относительно сборки.


## SetDragPoint - Задать точку захвата (ручка)

Синтаксис Automation:
```
BOOL SetDragPoint (double x, double y, double z);
```
Синтаксис COM:
```
BOOL SetDragPoint (double x, double y, double z);
Входные параметры:
x, y, z    - координаты точки захвата.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Точка захвата должна быть определена в системе координат сдвигаемого компонента.


## SetPlane - Задать плоскость

Синтаксис Automation:
```
BOOL SetPlane (LPDISPATCH plane);
```
Синтаксис COM:
```
BOOL SetPlane (LPUNKNOWN plane);
Входные параметры:
plane    - указатель на интерфейс конструктивной плоскости или плоской поверхности.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```


## SetPlaneByPlacement - Задать плоскость по системе координат

Синтаксис Automation:
```
BOOL SetPlaneByPlacement (ksPlacement * plane);
```
Синтаксис COM:
```
BOOL SetPlaneByPlacement (LPPLACEMENT plane);
Входные параметры:
plane    - указатель на интерфейс ksPlacement или IPlacement системы координат, задающей плоскость.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Система координат, задающая плоскость, должна быть определена относительно сборки.


## SetPlaneByPoints - Задать плоскость по точкам

Синтаксис Automation:
```
BOOL SetPlaneByPoints (double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3);
```
Синтаксис COM:
```
BOOL SetPlaneByPoints (double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3);
Входные параметры:
x1, y1, z1    - координаты первой точки на плоскости,
x2, y2, z2    - координаты второй точки на плоскости,
x3, y3, z3    - координаты третьей точки на плоскости.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Координаты точек, задающих плоскость, должны быть определены относительно сборки.
