#pragma once #include #include #include #include #include "com/model/belge_modeli.hpp" // CATIA imalat/CAM sarmalayicilari — FikatiaV2024'un IAktiviteler/IMfgOperasyon/ // IMfgTakim/IPartOperasyonlari/IMfgGorunum/IProgram/IMakine/IMfgProcess portu. // "I" oneki kaldirildi (IAktivite → Aktivite). Koleksiyon indeksleri 0-tabanli // (COM'a gecerken +1). PyQt/dosya-sistemi/VBA-eval yan etkili uyeler port edilmedi; // GetToolAxis benzeri out-parametreli cagrilar VT_BYREF ile dogrudan yapilir. namespace fikatia { class Aktivite; class Aktiviteler; class Makine; class MakineIslemeEkseni; class MfgGorunum; class MfgOperasyon; class MfgOzellik; class MfgOzellikler; class MfgProcess; class MfgProcessler; class MfgTakim; class MfgTakimDogrulayicisi; class OprBeklemeliDelik; class OprCapDonme; class OprDelik; class OprGagalamaliDelik; class OprM3xHardMaterial; class OprPPInstruction; class OprPunta; class OprRayba; class PartOperasyonlari; class PartOperasyonu; class PPRDokuman; class ProcessDokuman; class Program; class Programlar; // ---- Ortak deger tipleri ---------------------------------------------------- struct XYZ { double x = 0.0, y = 0.0, z = 0.0; bool operator==(const XYZ&) const = default; }; // MachiningTime portu — tum degerler saniye cinsinden. struct IslemeSuresi { double toplamIslemeSuresi = 0.0; // CalculatedCycleTime double toplamGecisSuresi = 0.0; // CycleTime double islemeSuresi = 0.0; // MachiningTime * 60 double toplamSure = 0.0; // TotalTime * 60 }; // ---- Modlar (IModlar / IOprYardimciSiniflar portu) --------------------------- enum class IlerlemeGecisModu { Isleme, // MfgTransitionMachiningFeedrate Yaklasma, // MfgTransitionApproachFeedrate YatayDonus, // MfgTransitionLeadInFeedrate Uzaklasma, // MfgTransitionRetractFeedrate DikeyDonus, // MfgTransitionLiftOffFeedrate Hizli, // MfgTransitionRapidFeedrate Lokal, // MfgTransitionLocalFeedrate Finis, // MfgTransitionFinishingFeedrate HavaKesme, // MfgTransitionAirCuttingFeedrate Bilinmiyor }; enum class HatveModu { DalmaMiktari, // MfgMaxDepthOfCut Tekrarli, // MfgNumberOfLevels TekrarliDalmaMiktarli, // MfgNumberOfLevelsNoTop Bilinmiyor }; enum class CapIslemeModu { Helisel, Standart, Bilinmiyor }; // MfgCircularMillingHelical/Standard enum class HelisModu { Acisal, Adimsal, Bilinmiyor }; // MfgHelixAngle/MfgHelixPitch enum class CokluHatveModu { TekrarliHatve, // M3xMultiPassModeByNumberAndDepth TekrarliDerinlik, // M3xMultiPassModeByNumberAndTotal HatveliDerinlik, // M3xMultiPassModeByDepthAndTotal Bilinmiyor }; enum class DikeyHatveModu { Sabit, // M3xStepOverModeZLevelConstant Tarak, // M3xStepOverModeZLevelViaScallopHeight KonturUzaklik, // M3xStepOverModeZLevelContour MaksimumUzaklik, // M3xStepOverModeZLevelMaximum Bilinmiyor }; enum class YanalAdimModu { MaksimumUzaklik, // MfgMaxDistance CapOrani, // MfgToolDiameterRatio AdimOrani, // MfgStepoverRatio Bilinmiyor }; enum class DerinlikTipi { UcaGore, KesmeYerineGore }; // MfgDepthTip / MfgDepthShoulder enum class NoktalamaTipi { Yok, UcaGore, CapaGore }; // MfgPlungeDefault/Tip/Diameter enum class BeklemeModu { Yok, DevreGore, ZamanaGore }; // MfgDwellDefault/Round/Time enum class KesmeYonu { Tirmanma, Konvensiyonel }; // MfgClimb / MfgConventional enum class CapDonmeTipi { Helisel, Standart }; // MfgCircularMillingHelical/Standard enum class TalasVermeModu { TalasMiktarinaGore, // MfgMaxDepthOfCut TekrarSayisinaGore, // MfgNumberOfLevels UstOlmadanTekrarSayisinaGore // MfgNumberOfLevelsNoTop }; enum class IslemSirasiModu { IlkYatay, IlkDikey }; // MfgRadialFirst / MfgAxialFirst enum class IslemModu3D { Duzlemler, // M3xHardMachiningModeByPlane SadeceCepler, // M3xHardMachiningModePocketsOnly SadeceDisHat, // M3xHardMachiningModeExternalOnly CeplerVeDisHat, // M3xHardMachiningModeExternalPockets DuzlemeGoreSadeceCepler, // M3xHardMachiningModeByPlPocketsOnly DuzlemeGoreSadeceDisHat, // M3xHardMachiningModeByPlExternalOnly DuzlemeGoreCeplerVeDisHat, // M3xHardMachiningModeByPlExternalPockets Bilinmiyor }; enum class HizTipi { Yok, Isleme, Yaklasma, Uzaklasma, Hizli, Lokal }; // None/Machining/Approach/Retract/RAPID/Local enum class TakimTuru { Normal, // MfgEndMillTool Yuzey, // MfgFaceMillTool Konik, // MfgConicalMillTool Matkap, // MfgDrillTool Nokta, // MfgSpotDrillTool Punta, // MfgCenterDrillTool CiftCapMatkap, // MfgMultiDiamDrillTool Havsa, // MfgCountersinkTool Tap, // MfgTapTool CiftTarafPah, // MfgTwoSidesChamferingTool DelikPah, // MfgBoringAndChamferingTool Bara, // MfgBoringBarTool Rayba, // MfgReamerTool TCakisi, // MfgTSlotterTool Kilavuz, // MfgThreadMillTool KafaMatkabi, // MfgCounterboreMillTool VarilTakimi, // MfgBarrelMillTool TopTakimi, // MfgBallStylusTool SilindirTakim, // MfgCylinderStylusTool Bilinmiyor }; const wchar_t* takimTuruKodu(TakimTuru tur); // CATIA ToolType dizgisi const wchar_t* takimTuruIsmi(TakimTuru tur); // Turkce gorunen ad TakimTuru takimTuruCoz(const std::wstring& kod); const wchar_t* ilerlemeGecisModuKodu(IlerlemeGecisModu mod); IlerlemeGecisModu ilerlemeGecisModuCoz(const std::wstring& kod); const wchar_t* hizTipiKodu(HizTipi tip); // ---- Takim ------------------------------------------------------------------ class MfgTakimDogrulayicisi : public FikomSarmal { public: MfgTakimDogrulayicisi() = default; explicit MfgTakimDogrulayicisi(FikomNesne com) : FikomSarmal(std::move(com)) {} double capi() const; void capiAyarla(double v) { com_.ozellikAyarla(L"Diameter", _variant_t(v)); } long uzunlukNumarasi() const { return com_.sayi(L"LengthNumber"); } void uzunlukNumarasiAyarla(long v) { com_.ozellikAyarla(L"LengthNumber", _variant_t(v)); } long numarasi() const { return com_.sayi(L"Number"); } void numarasiAyarla(long v) { com_.ozellikAyarla(L"Number", _variant_t(v)); } std::wstring nokta() const { return com_.metin(L"Point"); } void noktaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Point", _variant_t(v.c_str())); } long radiusNumarasi() const { return com_.sayi(L"RadiusNumber"); } void radiusNumarasiAyarla(long v) { com_.ozellikAyarla(L"RadiusNumber", _variant_t(v)); } void degerleriAyarla(const std::wstring& nokta, long numara, long uzunlukNo, long radiusNo, double cap); }; class MfgTakim : public FikomSarmal { public: MfgTakim() = default; explicit MfgTakim(FikomNesne com) : FikomSarmal(std::move(com)) {} std::wstring aciklama() const { return com_.metin(L"Comment"); } void aciklamaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Comment", _variant_t(v.c_str())); } long dogrulayiciSayisi() const { return com_.sayi(L"CorrectorCount"); } void dogrulayiciSayisiAyarla(long v) { com_.ozellikAyarla(L"CorrectorCount", _variant_t(v)); } long ozellikSayisi() const { return com_.sayi(L"NumberOfAttributes"); } std::wstring resimDosyasi() const { return com_.metin(L"Picture"); } void resimDosyasiAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Picture", _variant_t(v.c_str())); } long takimNo() const { return com_.sayi(L"ToolNumber"); } void takimNoAyarla(long v) { com_.ozellikAyarla(L"ToolNumber", _variant_t(v)); } TakimTuru turu() const { return takimTuruCoz(com_.metin(L"ToolType")); } void turuAyarla(TakimTuru v) { com_.ozellikAyarla(L"ToolType", _variant_t(takimTuruKodu(v))); } std::wstring turIsmi() const { return takimTuruIsmi(turu()); } std::wstring nlsIsmi(const std::wstring& oznitelik); Parametre parametre(const std::wstring& oznitelik); MfgTakimDogrulayicisi yeniDogrulayici(); MfgTakimDogrulayicisi dogrulayici(long indeks); Parametre anmaCapi() { return parametre(L"MFG_NOMINAL_DIAM"); } Parametre radius() { return parametre(L"MFG_CORNER_RAD"); } Parametre tamBoyu() { return parametre(L"MFG_OVERALL_LGTH"); } Parametre kesmeBoyu() { return parametre(L"MFG_CUT_LENGTH"); } Parametre boyu() { return parametre(L"MFG_LENGTH"); } Parametre disCapi() { return parametre(L"MFG_BODY_DIAM"); } Parametre bosCap() { return parametre(L"MFG_TOOL_CORE_DIAMETER"); } std::wstring toStr(); // "Ø10 R2 Frezeleme Takımı (T5)" tarzi tanim std::wstring toStr2(); // kisa tanim }; // ---- Operasyon sarmalayicilari (IMfgOperasyon + IOpr* portu) ------------------ // Delik tipi operasyonlarin ortak yuzeyi (IOprDelik/Punta/Rayba/Beklemeli/Gagalamali). class OprDelikTabani : public FikomSarmal { public: OprDelikTabani() = default; explicit OprDelikTabani(FikomNesne com) : FikomSarmal(std::move(com)) {} Parametre oznitelik(const std::wstring& ad); // GetAttribute sarmasi Parametreler parametreler() const; Parametre baslamaNoktasi() { return oznitelik(L"MFG_CLEAR_TIP"); } DerinlikTipi derinlikModu(); void derinlikModuAyarla(DerinlikTipi v); NoktalamaTipi noktalamaModu(); void noktalamaModuAyarla(NoktalamaTipi v); Parametre noktalamaMiktari() { return oznitelik(L"MFG_PLUNGE_TIP"); } Parametre noktalamaOffset() { return oznitelik(L"MFG_PLUNGE_OFFST"); } Parametre noktalamaCapi() { return oznitelik(L"MFG_PLUNGE_DIAMETER"); } Parametre aciKodlari() { return oznitelik(L"MFG_ROTABL_OUTPUT"); } Parametre cevrimKodlari() { return oznitelik(L"MFG_CYCLE_OUTPUT"); } Parametre yaklasmaHizi(); Parametre yaklasmaHiziG0(); Parametre gagalamaHizi(); Parametre gagalamaHiziG0(); Parametre islemeHizi(); Parametre uzaklasmaHizi(); Parametre uzaklasmaHiziG0(); Parametre gecisHiziModuAktif(); Parametre gecisHiziModu(); Parametre gecisHiziLokal(); Parametre hizBirimi(); Parametre hizOtomatikAktif(); Parametre devirOtomatikAktif(); Parametre devirAktif(); Parametre devirSayisi(); Parametre devirBirimi(); Parametre delikSiralamasiTersCevir(); Parametre delikMerkeziYenidenLimitle(); Parametre farkliDerinlikleriDikkateAl(); Parametre korDerinlikleriDikkateAl(); }; class OprDelik : public OprDelikTabani { public: OprDelik() = default; explicit OprDelik(FikomNesne com) : OprDelikTabani(std::move(com)) {} }; class OprPunta : public OprDelikTabani { public: OprPunta() = default; explicit OprPunta(FikomNesne com) : OprDelikTabani(std::move(com)) {} BeklemeModu beklemeModu(); void beklemeModuAyarla(BeklemeModu v); }; class OprBeklemeliDelik : public OprDelikTabani { public: OprBeklemeliDelik() = default; explicit OprBeklemeliDelik(FikomNesne com) : OprDelikTabani(std::move(com)) {} BeklemeModu beklemeModu(); void beklemeModuAyarla(BeklemeModu v); Parametre beklemeSuresi() { return oznitelik(L"MFG_DWELL_TIME"); } Parametre beklemeTekrari() { return oznitelik(L"MFG_DWELL_REVOL_DOUBLE"); } }; class OprGagalamaliDelik : public OprBeklemeliDelik { public: OprGagalamaliDelik() = default; explicit OprGagalamaliDelik(FikomNesne com) : OprBeklemeliDelik(std::move(com)) {} Parametre gagalamaMiktari() { return oznitelik(L"MFG_AXIAL_DEPTH"); } Parametre gagalamaCikisMiktari() { return oznitelik(L"MFG_OFFSET_RET"); } // talas kirma mesafesi Parametre eksiltmeOrani() { return oznitelik(L"MFG_DEPTH_REC"); } Parametre eksiltmeLimiti() { return oznitelik(L"MFG_DEPTH_LIM"); } }; class OprRayba : public OprDelikTabani { public: OprRayba() = default; explicit OprRayba(FikomNesne com) : OprDelikTabani(std::move(com)) {} }; class OprCapDonme : public OprDelikTabani { public: OprCapDonme() = default; explicit OprCapDonme(FikomNesne com) : OprDelikTabani(std::move(com)) {} Parametre islemeToleransi() { return oznitelik(L"MfgMachiningTolerance"); } KesmeYonu kesmeYonu(); void kesmeYonuAyarla(KesmeYonu v); Parametre takimIslemeYuzdesi() { return oznitelik(L"MfgOverhang"); } CapDonmeTipi capDonmeTipi(); void capDonmeTipiAyarla(CapDonmeTipi v); Parametre yanalAdim() { return oznitelik(L"MfgDistanceBetweenPaths"); } Parametre yanalAdimTekrari() { return oznitelik(L"MfgNumberOfRadialPaths"); } TalasVermeModu talasVermeModu(); void talasVermeModuAyarla(TalasVermeModu v); Parametre talasMiktari() { return oznitelik(L"MfgMaxDepthOfCut"); } Parametre talasTekrari() { return oznitelik(L"MfgNumberOfLevels"); } IslemSirasiModu islemSirasiModu(); void islemSirasiModuAyarla(IslemSirasiModu v); Parametre koniklikAcisi() { return oznitelik(L"MfgAutoDraftAngle"); } Parametre yayHareketi() { return oznitelik(L"MFG_SPR_PATH"); } Parametre farkliCaplariDikkateAl() { return oznitelik(L"MFG_MACHINE_DIFFERENT_DIAMETERS"); } }; class OprM3xHardMaterial : public FikomSarmal { public: OprM3xHardMaterial() = default; explicit OprM3xHardMaterial(FikomNesne com) : FikomSarmal(std::move(com)) {} Parametreler parametreler() const; Parametre islemeModuParametre(); IslemModu3D islemeModu(); void islemeModuAyarla(IslemModu3D v); }; class OprPPInstruction : public FikomSarmal { public: OprPPInstruction() = default; explicit OprPPInstruction(FikomNesne com) : FikomSarmal(std::move(com)) {} Parametre kodlar(); // "PP words syntax" }; class MfgOperasyon : public FikomSarmal { public: MfgOperasyon() = default; explicit MfgOperasyon(FikomNesne com) : FikomSarmal(std::move(com)) {} std::wstring aciklama() const { return com_.metin(L"Comment"); } void aciklamaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Comment", _variant_t(v.c_str())); } void makroEkseneDikMesafeEkle(const std::wstring& ismi, double degeri); void makroEkseneDikMesafeHizEkle(const std::wstring& ismi, double degeri, HizTipi hizTipi = HizTipi::Yaklasma); void makroEkseneYatayMesafeEkle(const std::wstring& ismi, double mesafe = 5.0, double aci1 = 0.0, double aci2 = 90.0); OprDelik asDelik() const { return OprDelik(com_); } OprPunta asPunta() const { return OprPunta(com_); } OprBeklemeliDelik asBeklemeliDelik() const { return OprBeklemeliDelik(com_); } OprGagalamaliDelik asGagalamaliDelik() const { return OprGagalamaliDelik(com_); } OprRayba asRayba() const { return OprRayba(com_); } OprCapDonme asCapDonme() const { return OprCapDonme(com_); } OprM3xHardMaterial asKaba() const { return OprM3xHardMaterial(com_); } OprPPInstruction asPPInstruction() const { return OprPPInstruction(com_); } }; // ---- Aktivite ---------------------------------------------------------------- class Aktivite : public FikomSarmal { public: Aktivite() = default; explicit Aktivite(FikomNesne com) : FikomSarmal(std::move(com)) {} std::wstring processID() const { return com_.metin(L"ProcessID"); } std::wstring turu() const { return com_.metin(L"Type"); } bool gecerliTur() const; // ToolChange/Start/Stop/PPInstruction disi bool aktif() const; void aktifAyarla(bool v) { com_.ozellikAyarla(L"Active", _variant_t(v)); } std::wstring aciklama() const { return com_.metin(L"Description"); } void aciklamaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Description", _variant_t(v.c_str())); } void kilitle() { com_.metod(L"LockActivty"); } // CATIA API yazimi boyle void kilidiAc() { com_.metod(L"UnLockActivty"); } MfgTakim takim() const { return MfgTakim(com_.nesne(L"Tool")); } void takimAyarla(const MfgTakim& t); XYZ takimYonu(); // GetToolAxis; hata durumunda (-1,-1,-1) void takimYonuAyarla(const XYZ& yon); std::array takimBoyu(); // GetToolGage; hata durumunda {-1,-1} bool hesaplatilmis() const; // CalculatedCycleTime != 0 IslemeSuresi islemeSuresi() const; bool ucBoyutluMu() const; // turu M3X* ile baslar bool besEksenMi() const; // turu MFG5AXIS* ile baslar bool ikiBoyutluMu() const { return !ucBoyutluMu() && !besEksenMi(); } double devir(); void devirAyarla(double v); double ilerlemeIsleme(); // "Machining feedrate" (hata → 0.0) void ilerlemeIslemeAyarla(double v); double ilerlemeYaklasma(); // "Approach feedrate" void ilerlemeYaklasmaAyarla(double v); double ilerlemeUzaklasma(); // "Retract feedrate" void ilerlemeUzaklasmaAyarla(double v); double ilerlemeFinis(); // yalniz Pocketing/ProfileContouring/Facing void ilerlemeFinisAyarla(double v); bool ilerlemeGecisAktif(); void ilerlemeGecisAktifAyarla(bool v); IlerlemeGecisModu ilerlemeGecisModu(); void ilerlemeGecisModuAyarla(IlerlemeGecisModu v); double ilerlemeGecis(); // parametre yoksa 0.0 Parametreler parametreler() const; MfgOperasyon asOperasyon() const { return MfgOperasyon(com_); } // Operasyon-tipine gore parametre tablosu (IMfgOperasyonlar modullerinin portu). // hatve/yanalAdim birden fazla parametre dondurebilir; bilinmeyen tipte bos doner. std::vector hatve(); Parametre cevreOffset(); // yalniz 2B operasyonlarda Parametre yuzeyOffset(); // yalniz 3B operasyonlarda std::vector yanalAdim(); }; class Aktiviteler : public FikomSarmal { public: Aktiviteler() = default; explicit Aktiviteler(FikomNesne com) : FikomSarmal(std::move(com)) {} long adet() const; Aktivite ekle(const std::wstring& aktiviteIsmi); // AppendOperation(ismi, 1) Aktivite eleman(long indeks) const; // 0-tabanli std::vector hepsi() const; bool farkliAciVarmi(); }; // ---- Program ----------------------------------------------------------------- class Program : public FikomSarmal { public: Program() = default; explicit Program(FikomNesne com) : FikomSarmal(std::move(com)) {} ProcessDokuman processDokuman() const; bool aktif() const; void aktifAyarla(bool v) { com_.ozellikAyarla(L"Active", _variant_t(v)); } std::wstring aciklama() const { return com_.metin(L"Comment"); } void aciklamaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Comment", _variant_t(v.c_str())); } bool bos() const; bool isimsiz() const; // ismi "Manufacturing " icerir bool aciklamali() const; // aciklama dolu ve "No Description" degil void kilitle() { com_.metod(L"LockActivitesWithinProgram"); } void kilidiAc() { com_.metod(L"UnlockActivitesWithinProgram"); } Aktiviteler aktiviteler() const { return Aktiviteler(com_); } std::vector aktiviteTurleri() const; bool hesaplatilmamisVarMi() const; double toplamIslemeSuresi() const; Parametreler parametreler() const; FikomNesne ekleKod(const std::wstring& kod); // AddPPInstruction void nesneTasi(const FikomNesne& referans, const FikomNesne& tasinacak); Aktivite operasyonEkle(const std::wstring& opIsmi, long oto = 1); long indexPo() const; // programin bagli oldugu PartOperation sirasi PartOperasyonu poTespit() const; std::vector takimlar(); // ToolChange aktivitelerinin toStr'lari std::vector takimlar2(); // diger aktivitelerin toStr2'leri bool magazinli() const; // 1'den fazla ToolChange std::vector operasyonBoyutlari(); // "2D"/"3D"/"5D" bool gonderilmismi(); // "Gonderilmismi" parametresi var mi double enBuyukTakimBoyu(); double enYuksekIlerleme(); double enYuksekDevir(); double enYuksekHatve(); double enDusukCevreOffset(); double enDusukYuzeyOffset(); bool farkliAciVarMi(); std::wstring hataKodlari(); // "[M]"/"[A]"/"[H]" ya da "Yok" void magazinKodlariEkle(); // takim listesi PPInstruction'i programa yazar }; class Programlar : public FikomSarmal { public: Programlar() = default; explicit Programlar(FikomNesne com) : FikomSarmal(std::move(com)) {} long adet() const; Program eleman(long indeks) const; // 0-tabanli std::vector hepsi() const; void tumunuAktifYap(); void tumunuDeaktifYap(); void tumunuKilitle(); void tumKilidiAc(); std::vector aktifProgramlar() const; std::vector deAktifProgramlar() const; std::vector isimliProgramlar() const; std::vector isimsizProgramlar() const; }; // ---- Makine / isleme ekseni --------------------------------------------------- class Makine : public FikomSarmal { public: Makine() = default; explicit Makine(FikomNesne com) : FikomSarmal(std::move(com)) {} std::wstring makineIsmi(); // MFG_NAME ozniteligi (Name degil) void makineIsmiAyarla(const std::wstring& v); std::wstring kuralDosyasi() const { return com_.metin(L"PostProcessorFile"); } void kuralDosyasiAyarla(const std::wstring& v) { com_.ozellikAyarla(L"PostProcessorFile", _variant_t(v.c_str())); } std::wstring tezgahDosyasi() const { return com_.metin(L"PPTableName"); } void tezgahDosyasiAyarla(const std::wstring& v) { com_.ozellikAyarla(L"PPTableName", _variant_t(v.c_str())); } std::wstring postTuru(); void postTuruAyarla(const std::wstring& v); std::wstring interpolasyonDairesel2d(); void interpolasyonDairesel2dAyarla(const std::wstring& v); std::wstring interpolasyonDuzlemsel3d(); void interpolasyonDuzlemsel3dAyarla(const std::wstring& v); std::wstring maksIslemeHizi(); void maksIslemeHiziAyarla(double v); std::wstring maksBostakiHizi(); void maksBostakiHiziAyarla(double v); std::wstring turu() const { return com_.metin(L"MachineType"); } std::wstring aciklama() const { return com_.metin(L"Comment"); } void aciklamaAyarla(const std::wstring& v); // MFG_COMMENT ozniteligi }; class MakineIslemeEkseni : public FikomSarmal { public: MakineIslemeEkseni() = default; explicit MakineIslemeEkseni(FikomNesne com) : FikomSarmal(std::move(com)) {} XYZ merkez(); void merkezAyarla(const XYZ& v); XYZ x(); void xAyarla(const XYZ& v); XYZ y(); void yAyarla(const XYZ& v); XYZ z(); void zAyarla(const XYZ& v); void eksenSec(const FikomNesne& eksen, const FikomNesne& product); // SetPartAxisSystem }; // ---- Part operasyonu ---------------------------------------------------------- class PartOperasyonu : public FikomSarmal { public: PartOperasyonu() = default; explicit PartOperasyonu(FikomNesne com) : FikomSarmal(std::move(com)) {} std::wstring aciklama() const { return com_.metin(L"Comment"); } void aciklamaAyarla(const std::wstring& v) { com_.ozellikAyarla(L"Comment", _variant_t(v.c_str())); } bool aktif() const; void aktifAyarla(bool v) { com_.ozellikAyarla(L"Active", _variant_t(v)); } ProcessDokuman processDokuman() const; // Parent.Parent long dizaynGeometriSayisi(); // DesignGeometriesCount long fiksturGeometriSayisi(); // FixtureGeometriesCount long islemModelSayisi(); // InProcessModelBodiesCount long kutukSayisi(); // StockGeometriesCount std::wstring partIsmi(); // GetPartName (hata → bos) Makine makine() const { return Makine(com_.nesne(L"Machine")); } Makine makineYarat(const std::wstring& ismi, const std::wstring& postTuru = L"APT", const std::wstring& tezgah = L"IMSPPCC_MILL.pptable"); MakineIslemeEkseni islemeEkseni() const { return MakineIslemeEkseni(com_.nesne(L"MachiningAxisSystem")); } std::wstring eksenIsmi() const; void eksenIsmiAyarla(const std::wstring& v); Programlar programlar() const { return Programlar(com_); } Parametreler parametreler() const; Product urunDokumani(); // GetProductInstance void urunDokumaniAyarla(const FikomNesne& product); // SetProductAndReconciliate void urunDokumaniAyarla(const FikomSarmal& product) { urunDokumaniAyarla(product.com()); } bool carpmaKontrolu(); void carpmaKontroluAyarla(bool v); bool carpmaDizaynKontrolu(); void carpmaDizaynKontroluAyarla(bool v); bool carpmaFiksturKontrolu(); void carpmaFiksturKontroluAyarla(bool v); bool carpmaKutukKontrolu(); void carpmaKutukKontroluAyarla(bool v); double carpmaTakimOffset(); void carpmaTakimOffsetAyarla(double v); double carpmaTutucuOffset(); void carpmaTutucuOffsetAyarla(double v); bool kutukTakibi(); void kutukTakibiAyarla(bool v); double kutukTakibiGecis(); void kutukTakibiGecisAyarla(double v); XYZ takimDegisimKoordinatlari(); void takimDegisimKoordinatlariAyarla(const XYZ& v); bool takimDegisimKoordinatlariAktif(); void takimDegisimKoordinatlariAktifAyarla(bool v); XYZ referansKoordinatlari(); void referansKoordinatlariAyarla(const XYZ& v); XYZ referansYonu(); // I/J/K → x/y/z void referansYonuAyarla(const XYZ& v); bool referansKoordinatlariAktif(); void referansKoordinatlariAktifAyarla(bool v); XYZ tablaMerkezKoordinatlari(); void tablaMerkezKoordinatlariAyarla(const XYZ& v); double simulasyonKutukHassasiyeti(); void simulasyonKutukHassasiyetiAyarla(double v); double dizaynHassasiyeti(); void dizaynHassasiyetiAyarla(double v); MfgGorunum mfgGorunum(); // GetManufacturingView }; class PartOperasyonlari : public FikomSarmal { public: PartOperasyonlari() = default; explicit PartOperasyonlari(FikomNesne com) : FikomSarmal(std::move(com)) {} // ChildrenActivities icinden yalniz ManufacturingSetup olanlar sayilir. long adet() const; PartOperasyonu eleman(long indeks) const; // 0-tabanli; bulunamazsa gecersiz std::vector hepsi() const; Parametreler parametreler() const; }; // ---- Process / dokuman -------------------------------------------------------- class MfgProcess : public FikomSarmal { public: MfgProcess() = default; explicit MfgProcess(FikomNesne com) : FikomSarmal(std::move(com)) {} PartOperasyonlari partOperasyonlari() const { return PartOperasyonlari(com_); } Parametreler parametreler() const; }; class MfgProcessler : public FikomSarmal { public: MfgProcessler() = default; explicit MfgProcessler(FikomNesne com) : FikomSarmal(std::move(com)) {} long adet() const { return com_.adet(); } MfgProcess eleman(long indeks) const { return MfgProcess(com_.eleman(indeks + 1)); } }; class PPRDokuman : public FikomSarmal { public: PPRDokuman() = default; explicit PPRDokuman(FikomNesne com) : FikomSarmal(std::move(com)) {} // PPRDocument nesnesi MfgProcessler processler() const { return MfgProcessler(com_.nesne(L"Processes")); } FikomNesne productlar() const { return com_.nesne(L"Products"); } FikomNesne kaynaklar() const { return com_.nesne(L"Resources"); } }; class ProcessDokuman : public Dokuman { public: ProcessDokuman() = default; explicit ProcessDokuman(FikomNesne com) : Dokuman(std::move(com)) {} PPRDokuman asPPR() const { return PPRDokuman(com_.nesne(L"PPRDocument")); } PartOperasyonlari partOperasyonlari(long process = 0) const; bool seciliProgramVarMi() const; std::vector seciliProgramlar() const; std::vector tumProgramlar() const; std::vector tumProgramlarListe() const; long tumProgramSayisi() const; }; // ---- Imalat gorunumu (ManufacturingView) --------------------------------------- class MfgOzellik : public FikomSarmal { public: MfgOzellik() = default; explicit MfgOzellik(FikomNesne com) : FikomSarmal(std::move(com)) {} Parametre alCizimselDegerler(const std::wstring& ismi); // GetAGeometricAttribute }; class MfgOzellikler : public FikomSarmal { public: MfgOzellikler() = default; explicit MfgOzellikler(FikomNesne com) : FikomSarmal(std::move(com)) {} long adet() const { return com_.adet(); } FikomNesne ekle(const std::wstring& tip); MfgOzellik eleman(long indeks) const { return MfgOzellik(com_.eleman(indeks + 1)); } }; class MfgGorunum : public FikomSarmal { public: MfgGorunum() = default; explicit MfgGorunum(FikomNesne com) : FikomSarmal(std::move(com)) {} MfgOzellikler mfgOzellikler() const { return MfgOzellikler(com_.nesne(L"ManufacturingFeatures")); } void udfSonucundanIslenebilirAlanYarat(const FikomNesne& referansProduct); }; } // namespace fikatia