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

92 lines
3.0 KiB
Markdown

---
title: "ksGetSpcDocumentPagesCount - Получить количество листов документа-спецификации"
type: guide
api: [api7]
tags: [guide, api7, ksgetspcdocumentpagescount]
sources:
- ksgetspcdocumentpagescount.html
---
*API экспортных функций > Функции работы с документом-спецификацией *
## ksGetSpcDocumentPagesCount - Получить количество листов документа-спецификации
Пример...
Аналог данной функции при использовании Automation - метод ksSpcDocument::ksGetSpcDocumentPagesCount.
Синтаксис:
```
int ksGetSpcDocumentPagesCount (reference spcDoc);
Входные параметры:
spcDoc - указатель на документ-спецификацию (если spcDoc = 0, функция работает для текущей спецификации).
Возвращаемое значение:
количество листов документа-спецификации.
```
## ksGetSpcDocumentPagesCount - пример использования
//функция для декомпозирования текущей спецификации и помещения ее во фрагмент
//найдем текущий документ спецификацию
reference iDoc = CreateIterator (SPC_DOCUMENT_OBJ , 0);
if (iDoc)
{
reference pDoc = MoveIterator (iDoc, 'F');
if (pDoc)
{
do
{
int state;
if (GetObjParam (pDoc, &state, sizeof (state), DOCUMENT_STATE)
&& state == stACTIVE)
break;
pDoc = MoveIterator(iDoc, 'N');
}
while (pDoc);
}
DeleteIterator(iDoc); //указатель на итератор
if (pDoc)
{
//найдем количество листов спецификации
int pageCount = ksGetSpcDocumentPagesCount (pDoc);
//найдем габариты одного листа спецификации
RectParam spcGabarit;
GetObjGabaritRect (pDoc, &spcGabarit);
//создадим фрагмент
DocumentParam doc;
memset (&doc, 0, sizeof (doc));
doc.regim = 0;
doc.type = 3;
CreateDocument (&doc);
for (int i = 0; i < pageCount; i)
{
//получили временную группу i-го листа спецификации
reference group = DecomposeObj (pDoc, //указатель на объект
0, //уровень разбиения:
//отрезки,дуги,тексты,точки;
0.4, //стрелка прогиба
uint8(i1));// 0 - разбиение объекта
// в СК вида,
// 1- в СК листа
if (group)
{
int column=i%3;
double x = (spcGabarit.pTop.x-spcGabarit.pBot.x 5)*column;
int row = i/3;
double y = (spcGabarit.pTop.y-spcGabarit.pBot.y 5)*row;
//сдвинули группу
MoveObj (group, x, -y);
//поставили в модель
StoreTmpGroup (group); //указатель группы
ClearGroup (group);
DeleteObj(group);
}
}
char buf[128];
sprintf (buf, "Преобразовано %d листов СП", pageCount);
Message (buf);
}
else
Error("Спецификация должна быть текущей");
}