# -*- coding: utf-8 -*-
#|L_Draw

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()

# Черчение примитивов в API5

### Отрезок
obj_5 = iDocument2D_5.ksLineSeg(50, 250, 150, 270, 1)

# Окружность
obj_5 = iDocument2D_5.ksCircle(100, 200, 20, 1)

# Прямоугольник
iRectangleParam_5 = kapi_5.ksRectangleParam(iKompas_5.GetParamStruct(const_2d.ko_RectangleParam))
iRectangleParam_5.Init()
iRectangleParam_5.x = 50
iRectangleParam_5.y = 150
iRectangleParam_5.ang = 0
iRectangleParam_5.height = 20
iRectangleParam_5.width = 100
iRectangleParam_5.style = 1
obj_5 = iDocument2D_5.ksRectangle(iRectangleParam_5)

# Эллипс
iEllipseParam_5 = kapi_5.ksEllipseParam(iKompas_5.GetParamStruct(const_2d.ko_EllipseParam))
iEllipseParam_5.Init()
iEllipseParam_5.xc = 100
iEllipseParam_5.yc = 100
iEllipseParam_5.A = 50
iEllipseParam_5.B = 20
iEllipseParam_5.angle = 0
iEllipseParam_5.style = 1
obj_5 = iDocument2D_5.ksEllipse(iEllipseParam_5)

# Черчение примитивов в API7

iViewsAndLayersManager = iDocument2D_7.ViewsAndLayersManager
iViews_7 = iViewsAndLayersManager.Views
iView_7 = iViews_7.ActiveView
iDrawingContainer_7 = kapi_7.IDrawingContainer(iView_7)

# Отрезок
iLineSegments_7 = iDrawingContainer_7.LineSegments
iLineSegment_7 = iLineSegments_7.Add()
iLineSegment_7.X1 = 50
iLineSegment_7.Y1 = 250
iLineSegment_7.X2 = 150
iLineSegment_7.Y2 = 270
iLineSegment_7.Style = 1
iLineSegment_7.Update()

# Окружность
iCircles_7 = iDrawingContainer_7.Circles
iCircle_7 = iCircles_7.Add()
iCircle_7.Radius = 20
iCircle_7.Xc = 100
iCircle_7.Yc = 200
iCircle_7.Style = 1
iCircle_7.Update()

# Прямоугольник
iRectangles_7 = iDrawingContainer_7.Rectangles
iRectangle_7 = iRectangles_7.Add()
iRectangle_7.X = 50
iRectangle_7.Y = 150
iRectangle_7.Height = 20
iRectangle_7.Width = 100
iRectangle_7.Style = 1
iRectangle_7.Update()

# Эллипс
iEllipses_7 = iDrawingContainer_7.Ellipses
iEllipse_7 = iEllipses_7.Add()
iEllipse_7.Xc = 100
iEllipse_7.Yc = 100
iEllipse_7.SemiAxisA = 50
iEllipse_7.SemiAxisB = 20
iEllipse_7.Angle = 0
iEllipse_7.Style = 1
iEllipse_7.Update()


