# -*- coding: utf-8 -*-
#|L_Iterator

import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import MiscellaneousHelpers as MH

#  Подключим константы API Компас
const_2d = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
const_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
kapi_5 = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
iKompas_5 = kapi_5.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kapi_5.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject = iKompas_5

#  Подключим описание интерфейсов API7
kapi_7 = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
iApplication_7 = kapi_7.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kapi_7.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication = iApplication_7


iDocuments_7 = iApplication_7.Documents
#  Получим активный документ
iDocument_7 = iApplication_7.ActiveDocument
iDocument2D_7 = kapi_7.IKompasDocument2D(iDocument_7)
iDocument2D_5 = iKompas_5.ActiveDocument2D()
iDocument2D1_7 = kapi_7.IKompasDocument2D1(iDocument_7)
iChooseManager_7 = iDocument2D1_7.ChooseManager

# Перебор окружностей в документе

# В API5

# Создаем указатель на итератор
iIterator_5 = iKompas_5.GetIterator()
# Получаем итератор для хождения по окружностям
iIterator_5.ksCreateIterator(const_2d.ksDrCircle, 0)

# Перемещаемся на первую окружность
refObj_5 = iIterator_5.ksMoveIterator("F")
iCount_5 = 0

# Обходим все окружности в цикле
while refObj_5 > 0:
    iDocument2D_5.ksLightObj(refObj_5, 1)
    iCount_5 = iCount_5 + 1
    strMes = '{0:d}'.format(iCount_5) + " окружность"
    iKompas_5.ksMessage (strMes)
    iDocument2D_5.ksLightObj(refObj_5, 0)
    refObj_5 = iIterator_5.ksMoveIterator("N")

# В API7
iViewsAndLayersManager = iDocument2D_7.ViewsAndLayersManager
iViews_7 = iViewsAndLayersManager.Views
iView_7 = iViews_7.ActiveView

# Получаем контейнер графических объектов
iDrawingContainer_7 = kapi_7.IDrawingContainer(iView_7)

# Получаем контейнер окружностей
iCircles_7 = iDrawingContainer_7.Circles

# Обходим все окружности в цикле
for i in range(len(iCircles_7)):
    iCircle_7 = iCircles_7.Circle(i)
    iChooseManager_7.Choose(iCircle_7)
    strMes = '{0:d}'.format(i+1) + " окружность"
    iKompas_5.ksMessage (strMes)
    iChooseManager_7.Unchoose(iCircle_7)
