#pragma once #include #include #include "com/fikom_nesne.hpp" #include "com/model/belge_modeli.hpp" #include "com/model/sahne_modeli.hpp" namespace fikatia { // CATIA.Application bağlantı yöneticisi — IFikatia'nın C++ karşılığı. // İlk önce çalışan CATIA'ya bağlanır (GetActiveObject); yoksa isteğe bağlı yeni başlatır. class FikatiaUygulama { public: struct DokumanBilgi { std::wstring ad; std::wstring tamYol; std::wstring tip; // ProgID'den türetilmiş: Part/Product/Process/Drawing... }; [[nodiscard]] bool bagli() const { return uygulama_.gecerli(); } [[nodiscard]] FikomNesne& uygulama() { return uygulama_; } // Boş dönüş = başarı; dolu dönüş = Türkçe hata mesajı (UI'da gösterilir). [[nodiscard]] std::wstring baglan(bool gerekirseBaslat); void kopar() { uygulama_ = {}; } // Bağlantı canlı mı (CATIA kapatıldıysa yakala) — basit Name probu. [[nodiscard]] bool canli(); [[nodiscard]] std::wstring surumBilgisi(); [[nodiscard]] std::vector dokumanlar(); // ---- IFikatia portu: tipli belge modeli erişimi ---- [[nodiscard]] Dokumanlar dokumanlarNesnesi() { return Dokumanlar(uygulama_.nesne(L"Documents")); } [[nodiscard]] Dokuman aktifDokuman() { return Dokuman(uygulama_.nesne(L"ActiveDocument")); } [[nodiscard]] Pencere aktifPencere() { return Pencere(uygulama_.nesne(L"ActiveWindow")); } [[nodiscard]] Pencereler pencereler() { return Pencereler(uygulama_.nesne(L"Windows")); } [[nodiscard]] SistemKonfigurasyonu sistemKonf() { return SistemKonfigurasyonu(uygulama_.nesne(L"SystemConfiguration")); } // ---- IFikatia portu: uygulama özellikleri ---- [[nodiscard]] std::wstring baslik() { return uygulama_.metin(L"Caption"); } void baslikAyarla(const std::wstring& v) { uygulama_.ozellikAyarla(L"Caption", _variant_t(v.c_str())); } [[nodiscard]] std::wstring programYolu() { return uygulama_.metin(L"FullName"); } [[nodiscard]] std::wstring programKlasoru() { return uygulama_.metin(L"Path"); } [[nodiscard]] std::wstring durumCubugu() { return uygulama_.metin(L"StatusBar"); } void durusCubuguAyarla(const std::wstring& v) { uygulama_.ozellikAyarla(L"StatusBar", _variant_t(v.c_str())); } [[nodiscard]] bool gorunur(); void gorunurAyarla(bool v) { uygulama_.ozellikAyarla(L"Visible", _variant_t(v)); } [[nodiscard]] bool ekraniTazele(); void ekraniTazeleAyarla(bool v) { uygulama_.ozellikAyarla(L"RefreshDisplay", _variant_t(v)); } [[nodiscard]] bool interaktif(); void interaktifAyarla(bool v) { uygulama_.ozellikAyarla(L"Interactive", _variant_t(v)); } [[nodiscard]] bool dosyaUyarilari(); void dosyaUyarilariAyarla(bool v) { uygulama_.ozellikAyarla(L"DisplayFileAlerts", _variant_t(v)); } [[nodiscard]] bool hsoSenkronize(); void hsoSenkronizeAyarla(bool v) { uygulama_.ozellikAyarla(L"HSOSynchronized", _variant_t(v)); } // ---- IFikatia portu: workbench + komut + betik ---- [[nodiscard]] std::wstring isAlaniId(); // GetWorkbenchId() metod çağrısı void isAlaniBaslat(const std::wstring& id) { uygulama_.metod(L"StartWorkbench", {_variant_t(id.c_str())}); } void komut(const std::wstring& k) { uygulama_.metod(L"StartCommand", {_variant_t(k.c_str())}); } // SystemService.Evaluate ile VBScript çalıştır (Python IFikatia.eval portu): // Govde "Function donus() ... End Function" içine sarılır. [[nodiscard]] _variant_t evalVb(const std::wstring& govde, const std::wstring& parametreAdlari = {}, std::vector<_variant_t> parametreler = {}); // SystemService.ExecuteScript: catvba kütüphanesindeki makroyu çalıştır. [[nodiscard]] _variant_t scriptCalistir(const std::wstring& kutuphaneYolu, const std::wstring& modul, const std::wstring& makro, std::vector<_variant_t> parametreler = {}); // ---- IFikatia portu: çoklu CATIA + one getirme ---- // ROT'ta (Running Object Table) IDispatch sunan ve Documents özelliği olan tüm // çalışan CATIA örneklerini döndürür (Python acikCatialar portu). static std::vector acikCatialar(); // Pencereyi one getirir: başlık geçici benzersiz yapılır, HWND bulunur, geri yüklenir. [[nodiscard]] bool aktifEt(); private: FikomNesne uygulama_; }; } // namespace fikatia