from win32com import client

from IFikatia import IFikatia

# if __name__ == '__main__':
#    fikatia = IFikatia(client.Dispatch("Catia.Application"))
#    fikatia.aktifDokuman.asPartDokuman.part.resim2sketch("F:\\aaa.jpg")
# fikatia.aktifDokuman.secililer.ara("Name='Main View';all")
# print(fikatia.aktifDokuman.secililer)


from PyQt6.QtWidgets import QApplication, QMainWindow
import sys
from win32com import client
from win32com import client
from IFikatia import IFikatia
import time
#
if __name__ == '__main__':
    fikatia = IFikatia(client.Dispatch("Catia.Application"))
    fikatia.baslik = "<---Budur--->"
    fikatia.aktifDokuman.asPartDokuman.processOlustur()
    sys.exit()
    fikatia = IFikatia(client.Dispatch("Catia.Application"))
    fikatia.baslik = "<---Budur--->"
    seciliObjeler=fikatia.aktifDokuman.asProcessDokuman.secililer()
    toplam = len(seciliObjeler)
    for akt in  range(toplam):
        # seciliObjeler[akt].nesne.parametreler["Automatic compute from tooling Feeds and Speeds"].degeriStr="false"
        # time.sleep(1)
        seciliObjeler[akt].nesne.parametreler["Approach feedrate"].degeriStr="3000mm_mn"
        seciliObjeler[akt].nesne.parametreler["Machining feedrate"].degeriStr="5000mm_mn"
        seciliObjeler[akt].nesne.parametreler["Retract feedrate"].degeriStr="10000mm_mn"
        # seciliObjeler[akt].nesne.parametreler["Offset on Contour"].degeri=0
        
        # seciliObjeler[akt].nesne.parametreler["Machining feedrate"].degeriStr=7000.0
        # seciliObjeler[akt].nesne.parametreler["Step distance"].degeri=0.1
        # seciliObjeler[akt].nesne.parametreler["Maximum width to machine"].degeri=8
        # seciliObjeler[akt].nesne.parametreler["Stepover mode"].degeriStr="M3xStepOverModeConstantOnPart"
        # if not seciliObjeler[akt].nesne.parametreler["Offset side"].degeriStr == "M3xSideRight":
        #     seciliObjeler[akt].nesne.parametreler["Offset side"].degeriStr = "M3xSideRight"
        # else:
        #     seciliObjeler[akt].nesne.parametreler["Offset side"].degeriStr = "M3xSideLeft"
        # seciliObjeler[akt].nesne.parametreler["Offset side"].degeriStr="M3xSideRight"
        fikatia.durumCubugu=" Program Yapılıyor "+seciliObjeler[akt].nesne.ismi+"---->"+ str(akt+1)+" / "+str(toplam)
        # time.sleep(10)
        print("FikoYT Program Yapılıyor "+seciliObjeler[akt].nesne.ismi,"---->", akt+1," / ",toplam)
    print("Program Yapımı Tamamlandı")
    print("Catiadan Programların Hesaplatılması İstendi")
    # fikatia.aktifDokuman.asProcessDokuman.kaydet()
    fikatia.komut("Replay Tool Path")
# 
    fikatia = IFikatia(client.Dispatch("Catia.Application"))
    fikatia.baslik = "<---Budur--->"
    # process = fikatia.aktifDokuman.asProcessDokuman
    # FikoAcilar = process.partOperasyonlari[1].programlar[0].aktiviteler[1].fikoAcilar
    #arkaAci = input("Arka Açıyı Giriniz.")
    #onAci = input("Ön Açıyı Giriniz.")
    # FikoAcilar = process.seciliProgramlar[0].aktiviteler[1].fikoAcilar
    # print(FikoAcilar.BC_Acisi)
    
    # print(FikoAcilar.BC_Acisi.aciDuzelt(340, 80))
    #print(FikoAcilar.BC_Acisi.eksenAktar(
    #    arkaAci, onAci, poAyarla=False, takimDik=False))
#     print(FikoAcilar.acisalOffset.degerleriAl(5))
#     # print(process.partOperasyonlari[0].programlar[0].aktiviteler[1].takim.parametre("MFG_CUT_ANGLE").birim.ismi)
#     # print(FikoAcilar.saltAcilar)
#     # print(FikoAcilar.kacmaDegerleri.kacmaDegerleri)


# from tkinter import Tk
# from win32gui import SetParent, FindWindow, SetWindowPos, FindWindowEx, SetWindowLong, ShowWindow
# from win32con import GWL_STYLE, WS_EX_APPWINDOW, SWP_ASYNCWINDOWPOS, SW_SHOW, WS_MAXIMIZE, WS_EX_CLIENTEDGE, WS_THICKFRAME
# import time
# import subprocess


# def listele_pencereler():
#     import ctypes

#     EnumWindows = ctypes.windll.user32.EnumWindows
#     EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(
#         ctypes.c_int), ctypes.POINTER(ctypes.c_int))
#     GetWindowText = ctypes.windll.user32.GetWindowTextW
#     GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
#     IsWindowVisible = ctypes.windll.user32.IsWindowVisible

#     titles = []

#     def foreach_window(hwnd, lParam):
#         if IsWindowVisible(hwnd):
#             length = GetWindowTextLength(hwnd)
#             buff = ctypes.create_unicode_buffer(length + 1)
#             GetWindowText(hwnd, buff, length + 1)
#             titles.append(buff.value)
#         return True
#     EnumWindows(EnumWindowsProc(foreach_window), 0)

#     print(titles)


# def attach_window(parent, mdiframe=None):
#     child = FindWindow(None, "CATIA V5")
#     print(child)
#     if mdiframe:
#         mdi = FindWindowEx(child, None, "MDIClient", "")
#         mdiForm = FindWindowEx(mdi, None, None, mdiframe)
#         # mdiForm1=FindWindowEx(mdiForm, None,None,"5021-004-_-REV1-ISL.CATPart" )
#         # mdiForm2=FindWindowEx(mdiForm1, None,"Afx:0000000140000000:88:0000000000010003:0000000000000000:0000000000000000",None )
#         # mdiForm3=FindWindowEx(mdiForm2, None,"Afx:0000000140000000:0:0000000000010003:0000000000000000:0000000000000000",None )
#         # mdiForm4=FindWindowEx(mdiForm3, None,"l_CATDlgMfcWindows",None )
#         print(mdiForm)
#     SetParent(child, parent)
#     SetWindowLong(mdiForm, 0, WS_THICKFRAME)
#     # SetWindowPos(mdiForm, 0, 0, 0, 600, 1000, 0)
#     ShowWindow(mdiForm, SW_SHOW)

#     return mdi, mdiForm


# def main():
#     root = Tk()
#     fikatia = IFikatia(client.Dispatch("Catia.Application"))
#     # subprocess.Popen('C:\\Program Files\\Dassault Systemes\\B20\\win_b64\\code\\bin\\CNEXT.exe')
#     # subprocess.Popen('C:\\Windows\\system32\\calc.exe')

#     # Give child processes enough time to launch
#     time.sleep(0.5)

#     # Get the HWND of the parent window
#     parent = int(root.frame(), 16)

#     # attach_window('chrome', parent, 0, 0, 400, 200)
#     wnds = attach_window(parent, fikatia.aktifPencere.baslik)
#     # fikatia.aktifPencere.gosterimler.item(0).ekranaSigdir()

#     root.geometry('500x500')
#     root.mainloop()

#     fikatia.aktifPencere.dokuman.kapat()


# if __name__ == '__main__':
#     main()
