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>
80 lines
2.9 KiB
Markdown
80 lines
2.9 KiB
Markdown
---
|
|
title: "CreateAttrIterator - Создать итератор для перебора атрибутов объекта"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, createattriterator]
|
|
sources:
|
|
- createattriterator.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с прикладной библиотекой > Функции работы с атрибутами *
|
|
|
|
|
|
## CreateAttrIterator - Создать итератор для перебора атрибутов объекта
|
|
|
|
Пример...
|
|
Аналог данной функции при использовании Automation - метод ksIterator::ksCreateAttrIterator.
|
|
Синтаксис:
|
|
```
|
|
reference CreateAttrIterator(reference obj,
|
|
unsigned int key1,
|
|
unsigned int key2,
|
|
unsigned int key3,
|
|
unsigned int key4,
|
|
double numb);
|
|
Входные параметры:
|
|
obj - указатель на объект,
|
|
key1, key2, key3, key4 - ключи для поиска по ключам,
|
|
numb - номер типа атрибута для поиска по номеру.
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. Если obj = 0, то производится перемещение по объектам с заданным атрибутом внутри графического документа.
|
|
2. Если obj не равен 0, то объектом может быть объект вида, вид, группа, слой, тогда движение будет происходить по атрибутам этого объекта.
|
|
3. Если obj не равен 0, то объектом может быть документ, тогда движение будет происходить по атрибутам документа.
|
|
4. Итератор работает с атрибутами активного документа.
|
|
|
|
|
|
## CreateAttrIterator - Пример использования
|
|
|
|
double x, y;
|
|
reference pObj;
|
|
char password[11];
|
|
int j;
|
|
RequestInfo info;
|
|
memset (&info, 0, sizeof(info));
|
|
info.prompt = "Укажите объект";
|
|
do
|
|
{
|
|
j = Cursor (&info, &x, &y, 0);
|
|
if (j)
|
|
{
|
|
if (ExistObj(pObj = FindObj (x, y, 1e6)))
|
|
{
|
|
LightObj (pObj, 1);
|
|
//создадим итератор для хождения по атрибутам объекта
|
|
reference iter = CreateAttrIterator (pObj, 0,0,0,0,0);
|
|
//встали на первый атрибут
|
|
reference attr = MoveAttrIterator (iter, 'F', 0);
|
|
if (attr)
|
|
{
|
|
j = ReadString ("Ввести пароль типа атрибута", password, 10);
|
|
if (j)
|
|
{
|
|
//удалить атрибут
|
|
if (!DeleteAttr (pObj, attr, password))
|
|
MessageBoxResult(); // неудачное завершение -
|
|
// выдадим результат работы
|
|
// нашей функции
|
|
}
|
|
}
|
|
else
|
|
Message("атрибут не найден");
|
|
LightObj (pObj, 0);
|
|
}
|
|
}
|
|
}
|
|
while (j);
|