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>
4.5 KiB
title, type, api, tags, sources
| title | type | api | tags | sources | |||||
|---|---|---|---|---|---|---|---|---|---|
| CreateSpcIterator - Создать итератор для перебора объектов спецификации | guide |
|
|
|
*API экспортных функций > Функции работы с документом-спецификацией *
CreateSpcIterator - Создать итератор для перебора объектов спецификации
Пример... Аналог данной функции при использовании Automation - метод ksIterator::ksCreateSpcIterator. Синтаксис:
reference CreateSpcIterator (char * nameLib,
unsigned int styleNumb,
int spcObjType);
Входные параметры:
nameLib - имя библиотеки стилей спецификации,
styleNumb - номер стиля спецификации в библиотеке,
spcObjType - тип объектов: 0 - базовые, 1 - вспомогательные, 2 - базовые и вспомогательные из сортированного массива, 3 - все объекты.
Возвращаемое значение:
1 - в случае успешного завершения,
0 - в случае неудачи.
Примечание:
- Если функция вызывается в графическом документе, то итератор создается для объектов, образованных по описанию, определяемому именем библиотеки стилей спецификации и номером стиля.
- В документе-спецификации параметры nameLib и styleNumb не используются (т.к. все объекты в ней создаются по единственному описанию, однозначно определяемому текущим стилем).
- При использовании 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); } }