from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IMfgOperasyon.IOprYardimciSiniflar import *
from IParametre import IParametre


class IAktivite: pass


class IOprPunta(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IFikomObject=None):
        super(IOprPunta, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IOprPunta"
        self.__aktivite = IAktivite.IAktivite(obj=self.catNesne, sahip=self.sahip.sahip)

    @property
    def baslamaNoktasi(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_CLEAR_TIP"), self.__aktivite.parametreler)

    @baslamaNoktasi.setter
    def baslamaNoktasi(self, value):
        self.baslamaNoktasi.degeri = value

    @property
    def beklemeModu(self):
        rslt = self.catNesne.GetAttribute("MFG_DWELL_MODE").ValueAsString()
        if rslt == "MfgDwellDefault":
            cvr = BeklemeModu.yok
        elif rslt == "MfgDwellRound":
            cvr = BeklemeModu.devreGore
        elif rslt == "MfgDwellTime":
            cvr = BeklemeModu.zamanaGore
        return cvr

    @beklemeModu.setter
    def beklemeModu(self, value):
        if isinstance(value, str):
            self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString(value)
        elif isinstance(value, NoktalamaTipi):
            if value == BeklemeModu.yok:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgDwellDefault")
            elif value == BeklemeModu.devreGore:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgDwellRound")
            else:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgPlungeDiameter")
        elif isinstance(value, int):
            if value == 0:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgDwellDefault")
            elif value == 1:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgDwellRound")
            else:
                self.catNesne.GetAttribute("MFG_DWELL_MODE").ValuateFromString("MfgDwellTime")

    @property
    def derinlikModu(self):
        """ depth mode  MfgDepthShoulder <-> MfgDepthTip"""
        rslt = self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValueAsString()
        if rslt == "MfgDepthTip":
            cvr = DerinlikTipi.ucaGore
        else:
            cvr = DerinlikTipi.kesmeYerineGore
        return cvr

    @derinlikModu.setter
    def derinlikModu(self, value):
        if isinstance(value, str):
            self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValuateFromString(value)
        elif isinstance(value, DerinlikTipi):
            if value == DerinlikTipi.ucaGore:
                self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValuateFromString("MfgDepthTip")
            else:
                self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValuateFromString("MfgDepthShoulder")
        elif isinstance(value, int):
            if value == 0:
                self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValuateFromString("MfgDepthTip")
            else:
                self.catNesne.GetAttribute("MFG_DEPTH_MODE").ValuateFromString("MfgDepthShoulder")

    @property
    def noktalamaModu(self):
        """ depth mode  MfgPlungeDefault <-> MfgPlungeTip <-> MfgPlungeDiameter"""
        rslt = self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValueAsString()
        if rslt == "MfgPlungeDefault":
            cvr = NoktalamaTipi.yok
        elif rslt == "MfgPlungeTip":
            cvr = NoktalamaTipi.ucaGore
        else:
            cvr = NoktalamaTipi.capaGore
        return cvr

    @noktalamaModu.setter
    def noktalamaModu(self, value):
        if isinstance(value, str):
            self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString(value)
        elif isinstance(value, NoktalamaTipi):
            if value == NoktalamaTipi.yok:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeDefault")
            elif value == NoktalamaTipi.ucaGore:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeTip")
            else:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeDiameter")
        elif isinstance(value, int):
            if value == 0:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeDefault")
            elif value == 1:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeTip")
            else:
                self.catNesne.GetAttribute("MFG_PLUNGE_MODE").ValuateFromString("MfgPlungeDiameter")

    @property
    def noktalamaMiktari(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_PLUNGE_TIP"), self.__aktivite.parametreler)

    @noktalamaMiktari.setter
    def noktalamaMiktari(self, value):
        self.noktalamaMiktari.degeri = value

    @property
    def noktalamaOffset(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_PLUNGE_OFFST"), self.__aktivite.parametreler)

    @noktalamaOffset.setter
    def noktalamaOffset(self, value):
        self.noktalamaOffset.degeri = value

    @property
    def noktalamaCapi(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_PLUNGE_DIAMETER"), self.__aktivite.parametreler)

    @noktalamaCapi.setter
    def noktalamaCapi(self, value):
        self.noktalamaCapi.degeri = value

    @property
    def aciKodlari(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_ROTABL_OUTPUT"), self.__aktivite.parametreler)

    @aciKodlari.setter
    def aciKodlari(self, value):
        self.aciKodlari.degeri = value

    @property
    def cevrimKodlari(self) -> IParametre:
        """ Approach Distance """
        return IParametre(self.catNesne.GetAttribute("MFG_CYCLE_OUTPUT"), self.__aktivite.parametreler)

    @cevrimKodlari.setter
    def cevrimKodlari(self, value:bool):
        self.cevrimKodlari.degeri = value

    @property
    def yaklasmaHizi(self) -> IParametre:
        return self.__aktivite.parametreler["Approach feedrate"]

    @yaklasmaHizi.setter
    def yaklasmaHizi(self, value:float):
        self.yaklasmaHizi.degeri = value

    @property
    def yaklasmaHiziG0(self) -> IParametre:
        return self.__aktivite.parametreler["Rapid approach feedrate"]

    @yaklasmaHiziG0.setter
    def yaklasmaHiziG0(self, value:bool):
        self.yaklasmaHiziG0.degeri = value

    @property
    def gagalamaHizi(self) -> IParametre:
        return self.__aktivite.parametreler["Plunge feedrate"]

    @gagalamaHizi.setter
    def gagalamaHizi(self, value:IParametre):
        self.gagalamaHizi.degeri = value

    @property
    def gagalamaHiziG0(self) -> IParametre:
        return self.__aktivite.parametreler["Rapid plunge feedrate"]

    @gagalamaHiziG0.setter
    def gagalamaHiziG0(self, value:bool):
        self.gagalamaHiziG0.degeri = value

    @property
    def islemeHizi(self) -> IParametre:
        return self.__aktivite.parametreler["Machining feedrate"]

    @islemeHizi.setter
    def islemeHizi(self, value:float):
        self.islemeHizi.degeri = value

    @property
    def uzaklasmaHizi(self) -> IParametre:
        return self.__aktivite.parametreler["Retract feedrate"]

    @uzaklasmaHizi.setter
    def uzaklasmaHizi(self, value:float):
        self.uzaklasmaHizi.degeri = value

    @property
    def uzaklasmaHiziG0(self) -> IParametre:
        return self.__aktivite.parametreler["Rapid retract feedrate"]

    @uzaklasmaHiziG0.setter
    def uzaklasmaHiziG0(self, value:bool):
        self.uzaklasmaHiziG0.degeri = value

    @property
    def gecisHiziModuAktif(self) -> IParametre:
        return self.__aktivite.parametreler["MFG_FEED_SELECT_TRANSITION"]

    @gecisHiziModuAktif.setter
    def gecisHiziModuAktif(self, value:bool):
        self.uzaklasmaHiziG0.degeri = value

    @property
    def gecisHiziModu(self) -> IParametre:
        return self.__aktivite.parametreler["MFG_FEED_TYPE_TRANSITION"]

    @gecisHiziModu.setter
    def gecisHiziModu(self, value:str):
        self.gecisHiziModu.degeriStr = value

    @property
    def gecisHiziLokal(self) -> IParametre:
        return self.__aktivite.parametreler["MFG_LOCAL_FEED_TRANSITION_VALUE"]

    @gecisHiziLokal.setter
    def gecisHiziLokal(self, value:float):
        self.gecisHiziLokal.degeri = value

    @property
    def hizBirimi(self) -> IParametre:
        return self.__aktivite.parametreler["Feedrate unit"]

    @hizBirimi.setter
    def hizBirimi(self, value:str):
        self.hizBirimi.degeriStr = value

    @property
    def hizOtomatikAktif(self) -> IParametre:
        return self.__aktivite.parametreler["Automatic compute from tooling Feeds and Speeds"]

    @hizOtomatikAktif.setter
    def hizOtomatikAktif(self, value:bool):
        self.hizOtomatikAktif.degeri = value

    @property
    def devirOtomatikAktif(self) -> IParametre:
        return self.__aktivite.parametreler["Automatic compute from tooling Feeds and Speeds"]

    @devirOtomatikAktif.setter
    def devirOtomatikAktif(self, value:bool):
        self.devirOtomatikAktif.degeri = value

    @property
    def devirAktif(self) -> IParametre:
        return self.__aktivite.parametreler["Spindle output"]

    @devirAktif.setter
    def devirAktif(self, value:bool):
        self.devirAktif.degeri = value

    @property
    def devirSayisi(self) -> IParametre:
        return self.__aktivite.parametreler["Machining spindle"]

    @devirSayisi.setter
    def devirSayisi(self, value:float):
        self.devirSayisi.degeri = value

    @property
    def devirBirimi(self) -> IParametre:
        return self.__aktivite.parametreler["Spindle unit"]

    @devirBirimi.setter
    def devirBirimi(self, value:str):
        self.devirBirimi.degeriStr = value

    @property
    def delikSiralamasiTersCevir(self) -> IParametre:
        return self.__aktivite.parametreler["Inverse pattern ordering"]

    @delikSiralamasiTersCevir.setter
    def delikSiralamasiTersCevir(self, value:bool):
        self.delikSiralamasiTersCevir.degeri = value

    @property
    def delikMerkeziYenidenLimitle(self) -> IParametre:
        return self.__aktivite.parametreler["Relimit hole origin"]

    @delikMerkeziYenidenLimitle.setter
    def delikMerkeziYenidenLimitle(self, value:bool):
        self.delikMerkeziYenidenLimitle.degeri = value


from IAktiviteler import IAktivite