# -*- coding: utf-8 -*-
#|L_Dimension_Radius

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()

# Функция запроса точки
def pointQ(strP):
    iVr1 = 0
    iVr2 = 0

    iRequestInfo_5 = kapi_5.ksRequestInfo(iKompas_5.GetParamStruct(const_2d.ko_RequestInfo))
    iRequestInfo_5.Init()
    iRequestInfo_5.prompt = strP

    iPhantom_5 = kapi_5.ksPhantom(iKompas_5.GetParamStruct(const_2d.ko_Phantom))
    iPhantom_5.Init()

    iRet = iDocument2D_5.ksCursor (iRequestInfo_5, iVr1, iVr2, iPhantom_5)
    p = [iRet[1], iRet[2]]

    return p

# Размер радиуса в API5

iRDimParam_5 = kapi_5.ksRDimParam(iKompas_5.GetParamStruct(const_2d.ko_RDimParam))
iRDimDrawing_5 = kapi_5.ksRDimDrawingParam(iRDimParam_5.GetDPar())
iRDimDrawing_5.Init()
iRDimDrawing_5.ang = 33.106178447841
iRDimDrawing_5.pt1 = 1
iRDimDrawing_5.pt2 = 0
iRDimDrawing_5.shelfDir = 1
iRDimDrawing_5.textPos = 8
iRDimSource_5 = kapi_5.ksRDimSourceParam(iRDimParam_5.GetSPar())
iRDimSource_5.Init()
iRDimSource_5.rad = 10
iRDimSource_5.xc = 160.875587417194
iRDimSource_5.yc = 160.409374748436
iRDimText_5 = kapi_5.ksDimTextParam(iRDimParam_5.GetTPar())
iRDimText_5.Init(0)
iRDimText_5.bitFlag = 1
##iRDimText_5.sign = 3
##iRDimText_5.style = 3
iRDimText_5.stringFlag = False
obj_5 = iDocument2D_5.ksRadDimension(iRDimParam_5)

# Размер радиуса в API7

iViewsAndLayersManager = iDocument2D_7.ViewsAndLayersManager
iViews_7 = iViewsAndLayersManager.Views
iView_7 = iViews_7.ActiveView
iSymbols2DContainer_7 =  kapi_7.ISymbols2DContainer(iView_7)
iDocument2D1_7 = kapi_7.IKompasDocument2D1(iDocument_7)
iChooseManager_7 = iDocument2D1_7.ChooseManager

iRadialDimensions_7 = iSymbols2DContainer_7.RadialDimensions

iRadialDimension_7 = iRadialDimensions_7.Add()

pointF = pointQ("Укажите дугу")
obj1_7 = iDocument2D1_7.FindObject(pointF[0],pointF[1],20,None)
iChooseManager_7.Choose(obj1_7)

pointT = pointQ("Укажите положение надписи радиуса")
iChooseManager_7.Unchoose(obj1_7)

iRadialDimension_7.BaseObject = obj1_7

iDimensionParams =  kapi_7.IDimensionParams(iRadialDimension_7)

iDimensionParams.TextType = 2
iRadialDimension_7.ShelfX = pointT[0]
iRadialDimension_7.ShelfY = pointT[1]

iRadialDimension_7.Update()

