# -*- coding: utf-8 -*-
#|44

import pythoncom
from win32com.client import Dispatch, gencache


#  Подключим константы API Компас
const = 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 = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
iKompasObject = KAPI.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI.KompasObject.CLSID, pythoncom.IID_IDispatch))

#  Подключим описание интерфейсов API7
KAPI7 = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
iApplication = KAPI7.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(KAPI7.IApplication.CLSID, pythoncom.IID_IDispatch))


#  Получим активный документ
iKompasDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iKompasDocument)
iDocument3D = iKompasObject.ActiveDocument3D()

#создадим эскиз
iPart = iDocument3D.GetPart(const_3d.pTop_Part)
iSketch = iPart.NewEntity(const_3d.o3d_sketch)
iSketchDefinition = iSketch.GetDefinition()
iPlane = iPart.GetDefaultEntity(const_3d.o3d_planeXOY)
iSketchDefinition.SetPlane(iPlane)
iSketch.Create()

#создадим в эскизе прямоугольник
iDocument2D = iSketchDefinition.BeginEdit()
obj = iDocument2D.ksLineSeg(0, 0, 30, 0, 1)
obj = iDocument2D.ksLineSeg(30, 0, 30, 20, 1)
obj = iDocument2D.ksLineSeg(30, 20, 0, 20, 1)
obj = iDocument2D.ksLineSeg(0, 20, 0, 0, 3)
iSketchDefinition.EndEdit()

#выполним операцию вращения
iRotated = iPart.NewEntity(const_3d.o3d_bossRotated)
iBossRotatedDefinition = iRotated.GetDefinition()
iBossRotatedDefinition.SetSketch(iSketch)
iBossRotatedDefinition.toroidShapeType = 0
iRotatedParam = iBossRotatedDefinition.RotatedParam()
iRotatedParam.direction = 0
iRotatedParam.angleNormal = 360
iRotated.Create()
