---
title: "Итератор (Интерфейс ksIterator)"
type: interface
api: [api7]
domain: [2d]
tags: [interface, api7, 2d, ksiterator]
sources:
  - ksiterator.html
---

*API интерфейсов. Версия 5 > Графический документ (Интерфейсы - ksDocument2D и IDocument2D) *


## Итератор (Интерфейс ksIterator)

Интерфейс итератора.
Примечание:
Указатель на интерфейс можно получить при помощи метода KompasObject::GetIterator.
Смотрите также: KompasObject


## ksCreateAttrIterator - Создать итератор для перебора атрибутов объекта

Аналог данного метода при использовании API экспортных функций - CreateAttrIterator.
Синтаксис Automation:
```
BOOL ksCreateAttrIterator(long obj,
long key1,
long key2,
long key3,
long key4,
double numb);
Входные параметры:
obj    - указатель на объект,
key1, key2, key3, key4    - ключи для поиска по ключам,
numb    - номер типа атрибута для поиска по номеру.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
1. Если obj = 0, то производится перемещение по объектам с заданным атрибутом внутри графического документа.
2. Если obj не равен 0, то объектом может быть объект вида, вид, группа, слой, тогда движение будет происходить по атрибутам этого объекта.
3. Если obj не равен 0, то объектом может быть документ, тогда движение будет происходить по атрибутам документа.
4. Итератор работает с атрибутами активного документа.


## ksCreateIterator - Cоздать итератор для перемещения по объектам документа

Аналог данного метода при использовании API экспортных функций - CreateIterator.
Синтаксис Automation:
```
BOOL ksCreateIterator (long tipSearch,
long parent);
Входные параметры:
tipSearch    - тип объекта,
parent    - указатель на объект (для движения по группе, внутри макроэлемента, по слою).
Типы объектов и интерфейсы...
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
1. Для перемещения по документам, видам, группам, слоям parent = 0.
2. Передвижение по объектам документа ("навигация") производится в соответствии с условиями, заданными в специальном блоке параметров. Он содержит тип объектов tipSearch, определяющий режим перемещения (например, по видам, по слоям, по всем объектам, по объектам заданного типа) и указатель комплексного объекта (макроэлемента, контура, группы) при перемещении по составляющим его объектам. Итератор "привязан" к конкретному режиму графического редактора (например, документу, виду), поэтому невозможно использовать один и тот же итератор для навигации в разных видах, штампах и т.п. Итератор сохраняет свое действие до окончания сеанса работы с библиотекой. При переходе внутри библиотечной функции под управление КОМПАС-ГРАФИК после возврата значение всех итераторов будет "сброшено".
3. Итератор работает с атрибутами активного документа.


## ksCreateQualityIterator - Создать итератор для перемещения по квалитетам

Аналог данного метода при использовании API экспортных функций - ksCreateQualityIterator.
Синтаксис Automation:
```
BOOL ksCreateQualityIterator (short system,
short withLimitation);
Входные параметры:
system    - система допуска 1 - система отверстия, 0 - система вала,
withLimitation    - признак учета ограничений, наложенных в системе: 0 - без учёта ограничений, 1 - с учётом ограничений.
Возвращаемое значение:
указатель на итератор    - в случае успешного завершения,
0    - в случае неудачи.
```


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

Аналог данного метода при использовании API экспортных функций - CreateSpcIterator.
Синтаксис Automation:
```
BOOL ksCreateSpcIterator (BSTR nameLib,
long styleNumb,
long spcObjType);
Входные параметры:
nameLib    - имя библиотеки стилей спецификации,
styleNumb    - номер стиля спецификации в библиотеке,
spcObjType    - тип объектов: 0 - базовые, 1 - вспомогательные, 2 - базовые и вспомогательные из сортированного массива, 3 - все объекты.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Если функция вызывается в графическом документе, то итератор создается для объектов, образованных по описанию, определяемому именем библиотеки стилей спецификации и номером стиля.
В документе-спецификации параметры nameLib и styleNumb не используются (т.к. все объекты в ней создаются по единственному описанию, однозначно определяемому текущим стилем).


## ksDeleteIterator - Удалить блок параметров навигации по модели

Аналог данного метода при использовании API экспортных функций - DeleteIterator.
Синтаксис Automation:
```
long ksDeleteIterator();
Возвращаемое значение:
1    - в случае успешного завершения,
0    - в случае неудачи.
```


## ksMoveAttrIterator - Перемещаться по атрибутам

Аналог данного метода при использовании API экспортных функций - MoveAttrIterator.
Синтаксис Automation:
```
long ksMoveAttrIterator (BSTR ch,
long* pObj);
Входные параметры:
ch    - направление перемещения итератора: F - первый атрибут, N - следующий атрибут,
pObj    - указатель на группу.
Возвращаемое значение:
указатель на атрибут    - в случае успешного завершения,
0    - в случае неудачи.
```
Примечание:
Если итератор создан для движения по элементам с определенным атрибутом, то pObj - указатель на объект с данным атрибутом.


## ksMoveIterator - Переместить итератор (позиционироваться на объекте)

Аналог данного метода при использовании API экспортных функций - MoveIterator.
Синтаксис Automation:
```
long ksMoveIterator (BSTR ch);
Входной параметр:
ch    - направление перемещения итератора: F - первый объект, N - следующий объект.
Возвращаемое значение:
указатель на объект    - в случае успешного завершения,
0    - в случае неудачи.
```
Примечание:
Функция перемещает текущий указатель итератора (блока параметров навигации) на очередной объект модели. Режим позиционирования (тип объектов, участвующих в поиске) определяется при создании итератора методом ksCreateIterator.
При позиционировании на именованную группу она автоматически становится текущей (рабочей). К ней будут относиться операции добавления и исключения объектов (при исключении всех объектов из именованной группы она автоматически удаляется).


## ksMoveQualityIterator - Перемещаться по квалитетам

Аналог данного метода при использовании API экспортных функций - ksMoveQualityIterator.
Синтаксис Automation:
```
BOOL ksMoveQualityIterator (LPDISPATCH param,
short inMM,
BSTR ch);
Входные параметры:
param    - указатель на интерфейс параметров квалитета ksQualityContensParam,
inMM    - размерность параметров интервала квалитета minLimit, maxLimit, high, low: 1 - миллиметры, 0 - единицы измерения текущего документа.
ch    - направление перемещения итератора: F - предыдущий квалитет, N - следующий квалитет.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```


## reference - Указатель на итератор

Тип данных: long
Синтаксис Automation:
```
ref = iIterator.reference    Получить свойство (* )
iIterator.reference = ref    Установить свойство (* )
ref = iIterator.GetReference()    Получить свойство (**)
iIterator.SetReference(ref)    Установить свойство (**)
```
