e1337e4016
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>
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
---
|
|
title: "ksWriteGroupToClip, ksReadGroupFromClip - пример использования"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, kswritereadgroup]
|
|
sources:
|
|
- kswritereadgroup_clip_example.html
|
|
---
|
|
|
|
//делаем активным документ 1.cdw
|
|
OpenDocument("c:\\1.cdw", 0);
|
|
double x, y, x1,y1;
|
|
RequestInfo info;
|
|
memset(&info, 0, sizeof(info));
|
|
info.prompt = "Укажите начальную точку окна";
|
|
if (Cursor(&info, &x, &y, 0)) {
|
|
info.prompt = "Укажите конечную точку окна";
|
|
Phantom phantom; // ltdefine.h
|
|
memset(&phantom, 0, sizeof(phantom));
|
|
//Задаем тип резиноыой нити - прямоугольник и передаем в Cursor, чтобы ввести область выделения
|
|
phantom.phType = 3; //прямоугольник
|
|
phantom.type3.xBase = x;
|
|
phantom.type3.yBase = y;
|
|
if (Cursor(&info, &x1, &y1, &phantom)) {
|
|
//создадим пустую рабочую группу
|
|
reference gr = NewGroup(0);
|
|
EndGroup();
|
|
//помещаем в группу геометрию, которая попала в область выделения
|
|
if (SelectGroup(gr, 1, x, y, x1, y1)) {
|
|
// группу выделения записываем в буфер обмена
|
|
int rez = ksWriteGroupToClip(gr, // указатель на группу
|
|
1); // 1 - с копированием; 0 - с удалением из текущего документа
|
|
if (rez) {
|
|
//делаем активным другой документ, например 1.frw, куда нужно перенести геометрию из буфера обмена
|
|
OpenDocument("d:\\0\\1.frw", 0);
|
|
//обнулить структуру info;
|
|
memset(&info, 0, sizeof(info));
|
|
memset(&phantom, 0, sizeof(phantom));
|
|
int j = 1;
|
|
//группу считываем из буфера обмена
|
|
phantom.type1.gr = ksReadGroupFromClip();
|
|
phantom.phType = 1; //сдвиг группы
|
|
phantom.type1.scale = 1; //сдвиг группы
|
|
while (j) {
|
|
j = Cursor(&info, &x ,&y, &phantom);
|
|
if ( j == -1) {
|
|
MoveObj(phantom.type1.gr, x, y); //смещаем группу в новый цетр
|
|
StoreTmpGroup(phantom.type1.gr); //временную группу делаем постоянной
|
|
ClearGroup(phantom.type1.gr);
|
|
DeleteObj(phantom.type1.gr);
|
|
//группу считываем из буфера обмена
|
|
phantom.type1.gr = ksReadGroupFromClip(); //временная группа
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|