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