from win32com.client import CDispatch

# from IAktiviteler.IAktivite import IAktivite
from IFikomObject import IFikomObject
from IMfgTakim.IMfgTakim import IMfgTakim
from IYardimciSiniflar import XYZ, XYZO


class IKacmaDegerleri:pass
class IFikoSaltAci:pass
class IFikoACAci : pass
class IFikoAcisalOffset:pass
class IFikoBCAci:pass

class IFikoAcilar(IFikomObject):
    def __init__(self, obj:CDispatch, sahip=None):
        super(IFikoAcilar, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IFikoAcilar"
        # self.ismi = "IFikoAcilar"
        # --->
        self.__aktivite = sahip
        self.__takimYonu = None#self.__aktivite.takimYonu
        self.__takim = None#self.__aktivite.takim
        self.__eksenVektor = None#self.__aktivite.po.eksen

    @property
    def aktivite(self):
        return self.__aktivite

    @aktivite.setter
    def aktivite(self, value):
        self.__aktivite = value

    @property
    def takimYonu(self) -> XYZ:
        if not self.__takimYonu:
            self.__takimYonu = self.__aktivite.takimYonu
        return self.__takimYonu

    @takimYonu.setter
    def takimYonu(self, value:XYZ):
        self.__takimYonu = value

    @property
    def takim(self) -> IMfgTakim:
        if not self.__takim:
            self.__takim = self.__aktivite.takim
        return self.__takim

    @takim.setter
    def takim(self, value:IMfgTakim):
        self.takim = value

    @property
    def eksenVektor(self) -> XYZO:
        if not self.__eksenVektor:
            self.__eksenVektor = self.__aktivite.po.eksen
        return self.__eksenVektor

    @eksenVektor.setter
    def eksenVektor(self, value:XYZO):
        self.__eksenVektor = value

    @property
    def kacmaDegerleri(self)->IKacmaDegerleri:
        return IKacmaDegerleri(obj=self.catNesne, sahip=self)

    @property
    def saltAcilar(self)->IFikoSaltAci:
        return IFikoSaltAci(obj=self.catNesne, sahip = self)

    @property
    def AC_Acisi(self)->IFikoACAci:
        return IFikoACAci(obj = self.catNesne, sahip = self)

    @property
    def BC_Acisi(self)->IFikoBCAci:
        return IFikoBCAci(obj = self.catNesne, sahip = self)

    @property
    def acisalOffset(self)->IFikoAcisalOffset:
        return IFikoAcisalOffset(obj=self.catNesne, sahip=self)


from IFikoAcilar.IKacmaDegerleri import IKacmaDegerleri
from IFikoAcilar.IFikoSaltAci import IFikoSaltAci
from IFikoAcilar.IFikoACAci import IFikoACAci
from IFikoAcilar.IFikoAcisalOffset import IFikoAcisalOffset
from IFikoAcilar.IFikoBCAci import IFikoBCAci