import math
import os

import numpy
from win32com.client import CDispatch

from IFikoAcilar.IFikoAcilar import IFikoAcilar

from IFikomObject import IFikomObject
from IYardimciSiniflar import XYZ
import vector3d


__author__ = 'CAM'


class IFikoAcisalOffset(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikoAcilar=None):
        super(IFikoAcisalOffset, self).__init__(obj, sahip)
        self.tipi = "IFikoAcisalOffset"
        self.ismi = "IFikoAcisalOffset"
        # --->
        numpy.seterr(all="ignore")
        # --->Sabit Degiskenler
        self.__aktivite = sahip.aktivite
        self.__saltAcilar = sahip.saltAcilar
        # --->
        self.__dosya = os.path.realpath(os.path.join(self.anaProgram.scriptYolu, "Prg", "FikoDosya"))
        # --->
        self.__offsetMiktari = 0.0
        # --->

    @property
    def sahip(self) -> IFikoAcilar:
        return self.sahip

    @sahip.setter
    def sahip(self, value:IFikoAcilar):
        self.sahip = value

    @property
    def offsetMiktari(self) -> float:
        return self.__offsetMiktari

    @offsetMiktari.setter
    def offsetMiktari(self, value:float):
        self.__offsetMiktari = value

    def degerleriAl(self, offset:float=None) -> XYZ:
        if offset is not None:
            self.__offsetMiktari = offset

        __aktivite= self.__aktivite

        __aktivite.anaProgram.dosyaUyarilariniGoster = False

        # __aktivite.anaProgram.durumCubugu = "Yürü Git Lan"

        dok = __aktivite.anaProgram.dokumanlar.oku(
            os.path.join(self.__dosya, "FikoOffset.FikoDll"))
        # __aktivite.anaProgram.durumCubugu = "Yürü Git Lan"
        part = dok.asPartDokuman.part
        parametreler = part.parametreler

        __saltAcilar = self.__saltAcilar
        parametreler.item(u"Ust").degeri = __saltAcilar.ustAci
        parametreler.item(u"Alt").degeri = __saltAcilar.altAci

        parametreler.item(u"offsetMiktari").degeri = self.offsetMiktari

        part.guncelle()

        self.__sonuc = XYZ(parametreler.item(u"OffsetX").degeri, parametreler.item(u"OffsetY").degeri, parametreler.item(u"OffsetZ").degeri*-1)

        dok.kapat()
        self.anaProgram.dosyaUyarilariniGoster = True
        return self.__sonuc





