# -*- coding: utf-8 -*-
#|L_TextOneStr

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
iParagraphParam_5 = kapi_5.ksParagraphParam(iKompas_5.GetParamStruct(const_2d.ko_ParagraphParam))
iParagraphParam_5.Init()
iParagraphParam_5.x = 50
iParagraphParam_5.y = 100
iDocument2D_5.ksParagraph(iParagraphParam_5)

iTextLineParam_5 = kapi_5.ksTextLineParam(iKompas_5.GetParamStruct(const_2d.ko_TextLineParam))
iTextLineParam_5.Init()
iTextItemArray_5 = iKompas_5.GetDynamicArray(LDefin2D.TEXT_ITEM_ARR)
iTextItemParam_5 = kapi_5.ksTextItemParam(iKompas_5.GetParamStruct(const_2d.ko_TextItemParam))
iTextItemParam_5.Init()
iTextItemParam_5.s = "API5 текст"
iTextItemFont_5 = kapi_5.ksTextItemFont(iTextItemParam_5.GetItemFont())
iTextItemFont_5.Init()
iTextItemArray_5.ksAddArrayItem(-1, iTextItemParam_5)

iTextItemParam_5.Init()
iTextItemParam_5.s = "внизу "
iTextItemFont_5.Init()
iTextItemFont_5.bitVector = 5
iTextItemArray_5.ksAddArrayItem(-1, iTextItemParam_5)

iTextItemParam_5.Init()
iTextItemParam_5.s = "текст"
iTextItemFont_5.Init()
iTextItemFont_5.bitVector = 6
iTextItemArray_5.ksAddArrayItem(-1, iTextItemParam_5)

iTextItemParam_5.Init()
iTextItemParam_5.s = "вверху"
iTextItemFont_5.Init()
iTextItemFont_5.bitVector = 4
iTextItemArray_5.ksAddArrayItem(-1, iTextItemParam_5)

iTextLineParam_5.SetTextItemArr(iTextItemArray_5)

iDocument2D_5.ksTextLine(iTextLineParam_5)
obj_5 = iDocument2D_5.ksEndObj()
##iDocument2D_5.ksDeleteObj(obj_5)


# Нанесение строки текста в API7
iViewsAndLayersManager = iDocument2D_7.ViewsAndLayersManager
iViews_7 = iViewsAndLayersManager.Views
iView_7 = iViews_7.ActiveView
iDrawingContainer_7 = kapi_7. IDrawingContainer(iView_7)
iDrawingTexts_7 = iDrawingContainer_7.DrawingTexts

iDrawingText_7 = iDrawingTexts_7.Add()
iDrawingText_7.X = 50
iDrawingText_7.Y = 150

iText_7 = kapi_7.IText(iDrawingText_7)
iTextLine_7 = iText_7.Add()

iTextItem_7 = iTextLine_7.Add()
iTextItem_7.Str = "API7 текст"
iTextItem_7.Update()

iTextItem_7 = iTextLine_7.Add()
iTextItem_7.ItemType = 5
iTextItem_7.Str = "внизу"
iTextItem_7.Update()

iTextItem_7 = iTextLine_7.Add()
iTextItem_7.ItemType = 6
iTextItem_7.Str = "текст"
iTextItem_7.Update()

iTextItem_7 = iTextLine_7.Add()
iTextItem_7.ItemType = 4
iTextItem_7.Str = "вверху"
iTextItem_7.Update()

iDrawingText_7.Update()
