Files
kompas3d-mcp/docs/Kompas3D_SDK/guides/rab.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

5.4 KiB

title, type, api, tags, sources
title type api tags sources
Пример использования функций для редактирования таблицы guide
api7
guide
api7
rab
rab_with_tab_example.html

// редактирование таблицы reference pObj; RequestInfo info; double x, y; memset(&info, 0, sizeof(info)); info.prompt = "Укажите таблицу"; // взять таблицу на чертеже int j = Cursor(&info, &x ,&y, 0); if (j) { if (ExistObj (pObj = FindObj (x, y, MAXDOUBLE))) { //узнаем тип объекта int type =GetObjParam( pObj,0,0,0); //указатель на графический объект //проверить, таблица ли полученный объект if (type == TABLE_OBJ) { unsigned int numb; reference p; char buf[128]; //открыть таблицу для редактирования ksOpenTable(pObj); TextParam par; //в цикле будем брать все существующие ячейки while ((ksGetTableColumnText(&numb, &par))!=0) { sprintf(buf, "numb =%d ", numb); Message(buf); p=par.pTextLine; TextLineParam par2; for (int i=0; i < GetArrayCount(p); i) { GetArrayItem (p, i, &par2, sizeof(TextLineParam)); sprintf(buf, "i =%d style=%d ", i, par2.style); Message(buf); TextItemParam par3; for (int j=0; j< GetArrayCount(par2.pTextItem); j) { GetArrayItem (par2.pTextItem, j, &par3, sizeof(TextItemParam)); if (!par3.tip) sprintf(buf, "компонента=%d h=%5.1f\ns=%s\n fontName=%s\nбитвектор =%d ",j, par3.font.height, par3.s, par3.font.fontName, par3.font.bitVector); else sprintf (buf, "компонента=%d тип = %d номер спецзнака=%d ",j,par3.tip,par3.iSNumb); Message(buf); } //очистим массив компонент DeleteArray(par2.pTextItem); } //очистим массив текстовых строк DeleteArray(p); } //берем ячейку 2 ColumnNumber(2); Text(0, 0, 0, 5, 1 ,0,"вторая ячейка"); ksDivideTableItem(3, 1, 2); ColumnNumber(4); Text(0, 0, 0, 5, 1 ,0,"4"); EndObj();//закрыли объект "таблица" } else Error("это не таблица"); } else Error("нет объекта"); } Пример редактирования допуска формы // редактирование допуска формы reference pObj; RequestInfo info; double x, y; memset(&info, 0, sizeof(info)); info.prompt = "Укажите допуск формы"; //взять допуск формы на чертеже int j = Cursor(&info, &x ,&y, 0); if (j) { if (ExistObj(pObj = FindObj(x, y, MAXDOUBLE))) { //узнаем тип объекта int type =GetObjParam( pObj,0,0,0); //указатель на графический объект //проверим,является ли пришедший объект допуском фомы if (type == TOLERANCE_OBJ) { unsigned int numb; reference p; char buf[128]; //открыть допуск формы для редактирования ksOpenTolerance(pObj); ToleranceParam par; //возьмем параметры допуска формы GetObjParam (pObj, //указатель на графический объект &par, //указатель на структуру параметров sizeof (ToleranceParam), //размер //структуры параметров ALLPARAM); //тип считывания параметров sprintf (buf, "базовая точка=%d стиль=%d расположение-%s\nx=%5.1f y=%5.1f", par.tBase, par.style, par.type ? "вертикальное":"горизонтальное", par.x, par.y); Message(buf); //в цикле будем брать все существующие ячейки while ((p=ksGetToleranceColumnText(&numb))!=0) { sprintf(buf, "numb =%d ", numb); Message(buf); TextLineParam par2; for (int i=0; i < GetArrayCount(p); i) { GetArrayItem(p , i, &par2, sizeof(TextLineParam)); sprintf(buf, "i =%d style=%d ", i, par2.style); Message(buf); TextItemParam par3; for (int j=0; j< GetArrayCount(par2.pTextItem); j) { GetArrayItem (par2.pTextItem, j, &par3, sizeof(TextItemParam)); if (!par3.tip) sprintf (buf, "компонента=%d h=%5.1f\ns=%s\n fontName=%s\nбитвектор =%d ",j,par3.font.height,par3.s par3.font.fontName, par3.font.bitVector); else sprintf (buf, "компонента=%d тип = %d номер спецзнака=%d ",j,par3.tip,par3.iSNumb); Message(buf); } DeleteArray(par2.pTextItem); //очистим массив компонент } //очистим массив текстовых строк DeleteArray(p); } //заменим параметры допуска формы par.x = 10; par.y = 10; int rez = SetObjParam (pObj, //указатель на графический объект &par, //указатель на структуру параметров sizeof(ToleranceParam), //размер структуры параметров ALLPARAM); //тип считывания параметров // заменим текст в ячейке 2 ColumnNumber(2); TextLine (NEW_LINE ,0,0 ,"вторая ячейка"); //разделим ячейку 3 вертикальным ребром с типом " тонкая" ksDivideTableItem(3, 1, 2); //перестроим виртуальную сетку ksRebuildTableVirtualGrid(); // введем текст в ячейку 4 ColumnNumber(4); TextLine (NEW_LINE ,0,0 ,"4"); EndObj();//закрыли объект "допуск формы" } else Error("это не допуск формы"); } else Error("нет объекта"); }