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>
92 lines
3.0 KiB
Markdown
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("Спецификация должна быть текущей");
|
|
}
|