Files
kompas3d-mcp/docs/Kompas3D_SDK/guides/ksiscursororplacementdocument.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK
и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало
docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор
tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается.

- .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным
  (safety-net на случай повторной локальной выгрузки).
- CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 20:00:05 +03:00

107 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "ksIsCursorOrPlacementDocument - Проверить, запущен ли в текущем графическом документе процесс Cursor или Placement"
type: guide
api: [api7]
tags: [guide, api7, ksiscursororplacementdocument]
sources:
- ksiscursororplacementdocument.html
---
*API экспортных функций > Функции работы с прикладной библиотекой  > Функции ввода параметров *
## ksIsCursorOrPlacementDocument - Проверить, запущен ли в текущем графическом документе процесс Cursor или Placement
Пример...
Аналог данной функции при использовании Automation - метод ksDocument2D::ksIsCursorOrPlacementDocument.
Синтаксис:
```
int ksIsCursorOrPlacementDocument ();
Возвращаемое значение:
1 - процесс запущен,
0 - процесс не запущен.
См также процессы Cursor и Placement
```
## ksIsCursorOrPlacementDocument - Пример использования
{
#ifndef __LIBTOOL_H
#include <libtool.h>
#endif
int type, flag=0;
//функция обратной связи для выполнения цикла в Cursor
int far __export pascal CallBackC (int com, double *x, double *y, RequestInfo *info,
void *phantom, int/* dynamic */) {
Phantom *valueub = (Phantom *)phantom;
rub->type1.ang = 90;
ksChangeObjectInLibRequest (&info, &rub);
switch (com) {
case 1:
case 2:
type = com;
break;
case -1: //поставить в модель
if (ksIsCursorOrPlacementDocument () == 1)
{
MoveObj(rub->type1.gr, *x, *y);
StoreTmpGroup(rub->type1.gr); //поставить временную группу в вид
ClearGroup(rub->type1.gr);
}
break;
}
//группа для фантома должна быть временная и обновляться при изменении вида
//отрисовки
if (rub->type1.gr)
DeleteObj(rub->type1.gr);
rub->type1.gr = NewGroup(1); // временная группа
if((flag==1 && com==1)||(flag==2 && com==2))
type = 3;
//обновляется не только изображение но и меню для запроса
switch (type ) {
case 1:
Circle (0, 0, 20, 1);
info->commands = !Квадрат !Треугольник ;
flag = 1;
break;
case 2:
LineSeg(-10, 0, 10, 0, 1);
LineSeg(10, 0, 0, 20, 1);
LineSeg(0, 20, -10, 0, 1);
info->commands = !Окружность !Квадрат;
flag = 2;
break;
case 3:
LineSeg(-10, 0, 10, 0, 1);
LineSeg(10, 0, 10, 20, 1);
LineSeg(10, 20, -10, 20, 1);
LineSeg(-10, 20, -10, 0, 1);
info->commands = !Окружность !Треугольник;
flag = 0;
break;
}
EndGroup();
return 1;
}
void Cursor_Example (void) {
type = 1;
int j = 1;
struct Phantom rub;
rub.type1.xBase = 0;
rub.type1.yBase = 0;
rub.type1.scale = 1;
rub.phType = 1;
rub.type1.ang = 0;
double x, y;
rub.type1.gr = NewGroup(1); // временная группа
Circle (0, 0, 20, 1);
EndGroup();
RequestInfo info;
memset(&info, 0, sizeof(info));
info.commands = "!Квадрат !Треугольник";
info.callBack = CallBackС;//указываем адрес функции обратной связи для Cursor,
Cursor(&info , &x, &y, &rub);
}; /* Cursor*/
}