Files
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

4.5 KiB
Raw Permalink Blame History

title, type, api, tags, sources
title type api tags sources
CreateSpcIterator - Создать итератор для перебора объектов спецификации guide
api7
guide
api7
createspciterator
createspciterator.html

*API экспортных функций > Функции работы с документом-спецификацией *

CreateSpcIterator - Создать итератор для перебора объектов спецификации

Пример... Аналог данной функции при использовании Automation - метод ksIterator::ksCreateSpcIterator. Синтаксис:

reference CreateSpcIterator (char * nameLib,
unsigned int styleNumb,
int spcObjType);
Входные параметры:
nameLib    - имя библиотеки стилей спецификации,
styleNumb    - номер стиля спецификации в библиотеке,
spcObjType    - тип объектов: 0 - базовые, 1 - вспомогательные, 2 - базовые и вспомогательные из сортированного массива, 3 - все объекты.
Возвращаемое значение:
1    - в случае успешного завершения,
0    - в случае неудачи.

Примечание:

  1. Если функция вызывается в графическом документе, то итератор создается для объектов, образованных по описанию, определяемому именем библиотеки стилей спецификации и номером стиля.
  2. В документе-спецификации параметры nameLib и styleNumb не используются (т.к. все объекты в ней создаются по единственному описанию, однозначно определяемому текущим стилем).
  3. При использовании Unicode следует использовать функцию CreateSpcIteratorW.

CreateSpcIterator, ksGetSpcObjectColumnText, ksSetSpcObjectColumnText - пример использования

reference spcObj = 0; double numbObj; //уникальный номер объекта //создадим объект спецификации if( ::ksSpcObjectCreate("graphic.lyt", //имя библиотеки типов 1, // номер типа спецификации 20, 0, //номер раздела и подраздела 0, //тип атрибута 0)) { //базовый объект spcObj = ::ksSpcObjectEnd(); //запомним номер объекта numbObj = ::ksGetSpcObjectNumber ( spcObj); } //создадим итератор для навигации по объектам спецификации reference iter = ::CreateSpcIterator("graphic.lyt", 1, 0); if (!iter) ::MessageBoxResult(); // неудачное завершение - выдадим результат работы нашей функции else { reference spcObj; char buf[120]; // найдем первый объект spcObj = ::MoveIterator(iter, 'F'); if (spcObj && ::ExistObj(spcObj)) { //у всех объектов в обозначении добавим "-01" //а у объекта с номером numbObj - "-02" do { //возьмем текст обозначения ::ksGetSpcObjectColumnText (spcObj SPC_CLM_MARK, //тип колонки SPC_CLM_FORMAT...SPC_CLM_USER 1, //номер колонки данного типа начиная с 1 buf, 120); //указатель double n = ::ksGetSpcObjectNumber (spcObj); //добавим к обозначению нужную добавку strcat(buf, n == numbObj ? "-02" : "-01"); //откроем объект на редактирование ::ksSpcObjectEdit(spcObj); //в этом блоке можно редактировать все колонки спецификации, //подключать или отключать ассоциированную геометрию //в нашем случае заменим обозначение ::kSetSpcObjectColumnText (SPC_CLM_MARK, //тип колонки SPC_CLM_FORMAT...SPC_CLM_USER 1, //номер колонки данного типа начиная с 1 buf); //указатель //закроем объет после редактирования ::ksSpcObjectEnd(); //найдем следующий объект spcObj = ::MoveIterator(iter, 'N'); } while(spcObj && ::ExistObj(spcObj)); } //удалим итератор ::DeleteIterator(iter); } }