#include "lisans_kimlikler.hpp" #include namespace fiko { namespace { struct Kayit { const char* grup; const char* ad; const char* kimlik; }; // Kimlik şeması: .. Alan = satılabilir modül (paket jokeri: "cam.*"). // Sketch alt alanları ayrı: sketch.cizim.* / sketch.duzenle.* / sketch.kisit.* const Kayit kTablo[] = { // ---- Dosya ---- {"Dosya", "Yeni Belge", "dosya.yeni"}, {"Dosya", "Aç (.fikocad)...", "dosya.ac"}, {"Dosya", "Kaydet (.fikocad)...", "dosya.kaydet"}, {"Dosya", "STEP İçe Aktar...", "dosya.step_ice"}, {"Dosya", "STEP Dışa Aktar...", "dosya.step_disa"}, {"Dosya", "Dışa Aktar (STL/OBJ/IGES)...", "dosya.mesh_disa"}, {"Dosya", "APT Aç...", "dosya.apt_ac"}, {"Dosya", "Web CAD Aç (.FikoOp/.wrl)...", "dosya.webcad_ac"}, {"Dosya", "APT Aktar...", "dosya.apt_disa"}, {"Dosya", "Olay Günlüğü Yaz (.fikolog)", "dosya.olay_gunluk"}, // ---- Geometri (temel primitifler) ---- {"Geometri", "Kutu", "geometri.kutu"}, {"Geometri", "Silindir", "geometri.silindir"}, {"Geometri", "Küre", "geometri.kure"}, {"Geometri", "Koni", "geometri.koni"}, {"Ekle", "Body", "geometri.body"}, // ---- Doğrudan Modelleme (Değiştir) ---- {"Değiştir", "Kabuk", "dm.kabuk"}, {"Değiştir", "Yuvarlat", "dm.yuvarlat"}, {"Değiştir", "Pah", "dm.pah"}, {"Değiştir", "Dairesel Dizi", "dm.dizi_dairesel"}, {"Değiştir", "Doğrusal Dizi", "dm.dizi_dogrusal"}, {"Değiştir", "Draft", "dm.draft"}, {"Değiştir", "Parça Ayır", "dm.parca_ayir"}, {"Değiştir", "Ayna", "dm.ayna"}, {"Değiştir", "Kalınlık", "dm.kalinlik"}, {"Değiştir", "Yüz Taşı", "dm.yuz_tasi"}, {"Değiştir", "Blok Kaydır", "dm.blok_kaydir"}, {"Değiştir", "Kesit", "dm.kesit"}, {"Değiştir", "Sketch Kabart", "dm.sketch_kabart"}, {"Değiştir", "Sketch Oy", "dm.sketch_oy"}, {"Değiştir", "Sketch Pad", "dm.sketch_pad"}, {"Değiştir", "Sketch Cep", "dm.sketch_cep"}, {"Değiştir", "Yüz Kaldır", "dm.yuz_kaldir"}, {"Değiştir", "Yüz Sil", "dm.yuz_sil"}, {"Değiştir", "Yüz Kopyala", "dm.yuz_kopyala"}, {"Değiştir", "Yüzey Kalınlaştır", "dm.yuzey_kalinlastir"}, {"Değiştir", "Kabuktan Katı", "dm.kabuktan_kati"}, {"Değiştir", "Yüzey Offset", "dm.yuzey_offset"}, {"Değiştir", "Yüzey ile Böl", "dm.yuzey_bol"}, {"Değiştir", "Yüz İt/Çek", "dm.yuz_itcek"}, {"Part Design", "Push/Pull (Yüz İt/Çek)", "dm.pushpull"}, // ---- Boolean ---- {"Boolean", "Birleştir", "boolean.birlestir"}, {"Boolean", "Çıkar (A−B)", "boolean.cikar"}, {"Boolean", "Kesişim", "boolean.kesisim"}, {"Boolean", "Add (Gövde Birleştir)", "boolean.govde_ekle"}, {"Boolean", "Remove (Gövde Çıkar)", "boolean.govde_cikar"}, {"Boolean", "Intersect (Gövde Kesişim)", "boolean.govde_kesisim"}, {"Boolean", "Union Trim (Birleşim-Kırp)", "boolean.union_trim"}, {"Boolean", "Remove Lump (Parça Ayıkla)", "boolean.remove_lump"}, // ---- Montaj Kısıtları (CATIA/SolidWorks "mate" karşılığı) ---- {"Montaj", "Sabit", "montaj.sabit"}, {"Montaj", "Eş Eksenli", "montaj.es_eksenli"}, {"Montaj", "Çakışık", "montaj.cakisik"}, {"Montaj", "Mesafe", "montaj.mesafe"}, {"Montaj", "Açı", "montaj.aci"}, // ---- Part Design feature ağacı ---- {"Feature", "Pad (Kabartma)", "feature.pad"}, {"Feature", "Pocket (Cep)", "feature.pocket"}, {"Feature", "Shaft (Döndür)", "feature.shaft"}, {"Feature", "Groove (Oyuk)", "feature.groove"}, {"Feature", "Rib (Kaburga)", "feature.rib"}, {"Feature", "Slot (Kanal)", "feature.slot"}, {"Feature", "Stiffener (Nervür)", "feature.stiffener"}, {"Feature", "Loft (Çok-Kesitli)", "feature.loft"}, {"Feature", "Removed Loft (Çıkar)", "feature.loft_cikar"}, {"Feature", "Solid Combine (Kesişim)", "feature.solid_combine"}, {"Feature", "Hole (Delik)", "feature.hole"}, {"Feature", "Fillet (Kenar Yuvarlat)", "feature.fillet"}, {"Feature", "Chamfer (Pah)", "feature.chamfer"}, {"Feature", "Variable Fillet (Değişken)", "feature.fillet_degisken"}, {"Feature", "Face-Face Fillet (Yüz-Yüz)", "feature.fillet_yuzyuz"}, {"Feature", "Tritangent Fillet (Üç-Teğet)", "feature.fillet_uctegat"}, {"Feature", "Shell (İçi Boşalt)", "feature.shell"}, {"Feature", "Draft (Yüz Açısı)", "feature.draft"}, {"Feature", "Draft Reflect Line (Yansıma)", "feature.draft_yansima"}, {"Feature", "Remove Face (Yüz Kaldır)", "feature.remove_face"}, {"Feature", "Dik Dizi", "feature.dizi_dik"}, {"Feature", "Dairesel Dizi", "feature.dizi_dairesel"}, {"Feature", "Kullanıcı Dizi", "feature.dizi_kullanici"}, {"Feature", "Ayna (Mirror)", "feature.ayna"}, {"Feature", "Translation (Öteleme)", "feature.otele"}, {"Feature", "Rotation (Döndürme)", "feature.dondur"}, {"Feature", "Symmetry (Simetri)", "feature.simetri"}, {"Feature", "Scaling (Ölçekleme)", "feature.olcekle"}, {"Feature", "Thickness (Kalınlık)", "feature.kalinlik"}, // ---- Yüzey / GSD ---- {"Yüzey", "Sew Surface (Yüzey Dik)", "yuzey.sew"}, {"Yüzey", "Replace Face (Yüz Değiştir)", "yuzey.replace_face"}, {"Yüzey", "Yüzey Extrude", "yuzey.extrude"}, {"Yüzey", "Yüzey Revolve", "yuzey.revolve"}, {"Yüzey", "Yüzey Fill", "yuzey.fill"}, {"Yüzey", "Yüzey Offset", "yuzey.offset"}, {"Yüzey", "Yüzey Uzat", "yuzey.uzat"}, {"Yüzey", "Yüzey Kalınlaştır", "yuzey.kalinlastir"}, {"Yüzey", "Yüzey Sınırı", "yuzey.sinir"}, {"Yüzey", "Afin (Non-uniform)", "yuzey.afin"}, {"Yüzey", "Onar (Heal)", "yuzey.onar"}, {"Yüzey", "Yüzey Şişir", "yuzey.sisir"}, {"Yüzey", "Yüzey Yumuşat", "yuzey.yumusat"}, {"Yüzey", "Yüzeye Çıkar", "yuzey.cikar"}, {"Yüzey", "Kesişim Eğrisi", "yuzey.kesisim_egrisi"}, {"Yüzey", "Köprüle", "yuzey.koprule"}, {"Yüzey", "Süpürme Yüzey", "yuzey.supurme"}, {"Yüzey", "Loft Yüzey", "yuzey.loft"}, {"Yüzey", "Kılavuzlu Loft", "yuzey.loft_kilavuzlu"}, {"Yüzey", "Yüzey Kırp", "yuzey.kirp"}, {"Yüzey", "Yama Yüzey", "yuzey.yama"}, {"Yüzey", "Eğri Birleştir", "yuzey.egri_birlestir"}, // ---- Tel-Kafes (GSD wireframe) ---- {"Tel-Kafes", "Nokta", "tel.nokta"}, {"Tel-Kafes", "Çizgi", "tel.cizgi"}, {"Tel-Kafes", "Çember", "tel.cember"}, {"Tel-Kafes", "Spline", "tel.spline"}, {"Tel-Kafes", "Polyline", "tel.polyline"}, {"Tel-Kafes", "Helis", "tel.helis"}, {"Tel-Kafes", "Konik", "tel.konik"}, {"Tel-Kafes", "Köşe", "tel.kose"}, // ---- Referans geometri (datum) ---- {"Referans", "Nokta", "referans.nokta"}, {"Referans", "Çizgi", "referans.cizgi"}, {"Referans", "Düzlem", "referans.duzlem"}, // ---- Analiz ---- {"Analiz", "Çekme Açısı", "analiz.cekme_acisi"}, {"Analiz", "Undercut", "analiz.undercut"}, {"Analiz", "Et Kalınlığı", "analiz.et_kalinligi"}, {"Analiz", "Radius", "analiz.radius"}, {"Analiz", "Kurvatür", "analiz.kurvatur"}, {"Analiz", "Süreklilik", "analiz.sureklilik"}, {"Analiz", "Zebra", "analiz.zebra"}, {"Analiz", "Yansıma Hattı", "analiz.yansima_hatti"}, {"Analiz", "CAD Fark", "analiz.cad_fark"}, {"Doğrudan", "Web Fark (CAD Karşılaştırma)", "analiz.web_fark"}, {"Analiz", "Kesit Düzlemi", "analiz.kesit_duzlemi"}, {"Analiz", "Kesit Listesi", "analiz.kesit_listesi"}, // ---- Döküm / Strafor ---- {"Döküm", "Döküm Sim Oluştur", "dokum.sim_olustur"}, {"Döküm", "Döküm Sim Çalıştır", "dokum.sim_calistir"}, {"Döküm", "Strafor Kesici", "dokum.strafor"}, // ---- 3B işlem (kenar operasyonları) ---- {"İşlem", "Pah (3B)", "islem.pah3b"}, {"İşlem", "Kenar Yuvarlat (3B)", "islem.yuvarlat3b"}, {"İşlem", "Kenarı Taşı", "islem.kenar_tasi"}, // ---- Araçlar (WTEC açılı kafa) ---- {"Araçlar", "🔧 FikoYT Diagonal Kafa", "arac.diagonal_kafa"}, {"Araçlar", "🔩 FikoYT Ozmo Kafa", "arac.ozmo_kafa"}, {"Araçlar", "⚙ Ayarlar…", "arac.ayarlar"}, {"Araçlar", "🧹 Geçici dosyaları temizle", "arac.gecici_temizle"}, {"Araçlar", "🔒 Komut Denetim", "arac.komut_denetim"}, // Üretim aracı — müşteride zaten KAYDEDİLMEZ (lisansUreticiModu). Kimliği olmalı ki // görüntüleyici kipinin izinli listesine girebilsin: aksi hâlde lisans dosyası // yokken kendi lisans üreticimiz gizlenir ve kilitlenme oluşur (yaşandı). {"Araçlar", "🏭 Lisans Üretici", "arac.lisans_uretici"}, {"Araçlar", "🖧 Süreç Yöneticisi", "arac.surec_yonetici"}, {"Araçlar", "🔄 Güncellemeleri Denetle", "arac.guncelleme"}, {"Yardım", "💬 Geri Bildirim Gönder", "arac.geri_bildirim"}, // ---- Görünüm ---- {"Görünüm", "💡 Işıklar", "gorunum.isiklar"}, {"Görünüm", "🎨 Malzeme", "gorunum.malzeme"}, {"Görünüm", "Malzeme Uygula", "gorunum.malzeme_uygula"}, {"Görünüm", "Malzemeyi Kaldır", "gorunum.malzeme_kaldir"}, {"Görünüm", "Seçimi Çerçevele", "gorunum.secimi_cercevele"}, {"Görünüm", "Tümünü Sığdır", "gorunum.tumunu_sigdir"}, {"Görünüm", "İzometrik", "gorunum.izometrik"}, {"Görünüm", "Üst", "gorunum.ust"}, {"Görünüm", "Ön", "gorunum.on"}, {"Görünüm", "Ortografik (O)", "gorunum.ortografik"}, {"Görünüm", "✨ FikoUi Galerisi", "gorunum.ui_galeri"}, {"Görünüm", "Hover Bilgi Kartı", "gorunum.hover_kart"}, {"Görünüm", "Bağlam İpucu (HUD)", "gorunum.baglam_hud"}, {"Görünüm", "Perf HUD (FPS/Draw-call)", "gorunum.perf_hud"}, // ---- Düzenle (3B sahne) ---- {"Düzenle", "Seçileni Sil", "duzenle.sil"}, {"Düzenle", "Gövdeyi Çoğalt", "duzenle.cogalt"}, {"Düzenle", "Seçimi Temizle", "duzenle.secim_temizle"}, // ---- Seçim kipleri + akıllı seçim ---- {"Seçim", "◼ Gövde kipi (1)", "secim.kip_govde"}, {"Seçim", "▢ Yüz kipi (2)", "secim.kip_yuz"}, {"Seçim", "╱ Kenar kipi (3)", "secim.kip_kenar"}, {"Seçim", "• Nokta kipi (4)", "secim.kip_nokta"}, {"Seçim", "⌾ Teğet yüzleri seç (fillet zinciri)", "secim.akilli_tanjant_yuz"}, {"Seçim", "▱ Koplanar yüzleri seç", "secim.akilli_koplanar_yuz"}, {"Seçim", "∥ Paralel yüzleri seç", "secim.akilli_paralel_yuz"}, {"Seçim", "⊘ Aynı ölçüdeki yüzleri seç (bu çaptaki delikler)", "secim.akilli_benzer_yuz"}, {"Seçim", "◠ Teğet kenar zincirini seç (loop)", "secim.akilli_kenar_zinciri"}, {"Seçim", "◯ Aynı ölçüdeki kenarları seç (bu R'deki filletler)", "secim.akilli_benzer_kenar"}, // ---- Jest (radyal menü) inline eylemleri — registry'de YOK, sanal MenuOge ile // merkezi dispatch'ten geçerler (baglam_menu.cpp). Katalogda görünsünler diye // burada listelenirler. "Seçileni Sil (jest)" kasıtlı olarak duzenle.sil // kimliğini paylaşır (aynı iş, iki giriş yolu) → tabloda tekrarlanmaz. {"Seçim", "Nesne Seç (jest)", "secim.nesne"}, {"Görünüm", "Nesneye Yakınlaş (jest)", "gorunum.nesneye_yakinlas"}, {"Görünüm", "Hızlı 3B Menü (jest)", "gorunum.hizli3d"}, {"Görünüm", "Gizle/Göster (jest)", "gorunum.gizle"}, {"Sketch", "Kısıt Paneli (jest)", "sketch.kisit_paneli"}, // ---- Ölçüm ---- {"Ölçüm", "Ölçüm Penceresi (M)", "olcum.pencere"}, {"Ölçüm", "Kumpas (Tekli)", "olcum.kumpas"}, {"Ölçüm", "Cetvel (İkili)", "olcum.cetvel"}, {"Ölçüm", "Zincir (Ardışık)", "olcum.zincir"}, {"Ölçüm", "Ölçümleri Temizle", "olcum.temizle"}, // ---- Makro / eklenti ---- {"Makro", "Makro Konsolu", "makro.konsol"}, {"Makro", "Eklenti Yöneticisi", "makro.eklenti_yonetici"}, // Kullanıcı-tanımlı dinamik komutlar ve eklenti DLL komutları KASITLI olarak tabloda // yoktur (grup/ad runtime'da doğar) → "Grup/Ad" fallback kimliğiyle lisanslanırlar. // ---- CAM 2.5D / 3D ---- {"CAM", "Profil", "cam.profil"}, {"CAM", "Cep", "cam.cep"}, {"CAM", "Delik", "cam.delik"}, {"CAM", "3D Kaba", "cam.kaba3d"}, {"CAM", "Kabadan Kalan", "cam.kaba_kalan"}, {"CAM", "3D Finiş", "cam.finis3d"}, {"CAM", "Sweep Finiş", "cam.finis_sweep"}, {"CAM", "Advanced Finiş", "cam.finis_advanced"}, {"CAM", "Kontur Güdümlü", "cam.kontur_gudumlu"}, {"CAM", "Kalan Finiş (Pencil)", "cam.finis_pencil"}, {"CAM", "⭳ G-Kod (NC)", "cam.gkod"}, {"CAM", "Tümünü Hesapla", "cam.tumunu_hesapla"}, {"CAM", "🎬 Simülasyon", "cam.simulasyon"}, {"CAM", "⭳ APT Aktar", "cam.apt_aktar"}, {"CAM", "🔧 Takım Tanımla", "cam.takim_tanimla"}, {"CAM", "◫ Part Operation Ekle", "cam.part_operation"}, {"CAM", "Üretim Ağacı", "cam.uretim_agaci"}, {"CAM", "Yüzey Tarama (Facing)", "cam.facing"}, {"CAM", "Cep (Pocketing)", "cam.pocketing"}, {"CAM", "Profil (Contouring)", "cam.contouring"}, {"CAM", "Eğri Takip", "cam.egri_takip"}, {"CAM", "Dairesel Freze", "cam.dairesel_freze"}, {"CAM", "Delme (Drilling)", "cam.drilling"}, {"CAM", "Punta (Spot Drill)", "cam.spot_drill"}, {"CAM", "Derin Delik (Peck)", "cam.peck"}, {"CAM", "Kılavuz (Tapping)", "cam.tapping"}, {"CAM", "Rayba (Reaming)", "cam.reaming"}, // ---- Sketcher (workbench) ---- {"Sketch", "Sketch Oluştur", "sketch.olustur"}, {"Sketch", "Sketch'ten Çık", "sketch.cik"}, {"Sketch", "Sketch Analizi", "sketch.analiz"}, // ---- Sketcher çizim ---- {"Çizim", "Çizgi", "sketch.cizim.cizgi"}, {"Çizim", "Sonsuz Çizgi", "sketch.cizim.sonsuz_cizgi"}, {"Çizim", "Açıortay", "sketch.cizim.aciortay"}, {"Çizim", "İki-Teğet Çizgi", "sketch.cizim.iki_tegat_cizgi"}, {"Çizim", "Dikdörtgen", "sketch.cizim.dikdortgen"}, {"Çizim", "Merkezli Dikdörtgen", "sketch.cizim.dikdortgen_merkez"}, {"Çizim", "Yönlü Dikdörtgen", "sketch.cizim.dikdortgen_yonlu"}, {"Çizim", "Paralelkenar", "sketch.cizim.paralelkenar"}, {"Çizim", "Daire", "sketch.cizim.daire"}, {"Çizim", "Daire (3N)", "sketch.cizim.daire_3n"}, {"Çizim", "Daire (Koord)", "sketch.cizim.daire_koord"}, {"Çizim", "Yay (3N)", "sketch.cizim.yay_3n"}, {"Çizim", "Merkez Yay", "sketch.cizim.yay_merkez"}, {"Çizim", "Elips", "sketch.cizim.elips"}, {"Çizim", "Slot", "sketch.cizim.slot"}, {"Çizim", "Eğrisel Slot", "sketch.cizim.slot_egrisel"}, {"Çizim", "Anahtar Deliği", "sketch.cizim.anahtar_deligi"}, {"Çizim", "Çokgen", "sketch.cizim.cokgen"}, {"Çizim", "Nokta", "sketch.cizim.nokta"}, {"Çizim", "Nokta (Koord)", "sketch.cizim.nokta_koord"}, {"Çizim", "Kesişim Noktası", "sketch.cizim.nokta_kesisim"}, {"Çizim", "İzdüşüm Noktası", "sketch.cizim.nokta_izdusum"}, // ---- Sketcher düzenleme (grup adı "Düzenle" ile ÇAKIŞMAZ: 3B Düzenle ayrı) ---- {"Düzenle", "Hızlı Kırp (Silgi)", "sketch.duzenle.hizli_kirp"}, {"Düzenle", "Kırp", "sketch.duzenle.kirp"}, {"Düzenle", "Uzat", "sketch.duzenle.uzat"}, {"Düzenle", "Böl", "sketch.duzenle.bol"}, {"Düzenle", "Kapat", "sketch.duzenle.kapat"}, {"Düzenle", "Tümleyen", "sketch.duzenle.tumleyen"}, {"Düzenle", "Köşe", "sketch.duzenle.kose"}, {"Düzenle", "Pah", "sketch.duzenle.pah"}, {"Düzenle", "Ayna", "sketch.duzenle.ayna"}, {"Düzenle", "Simetri", "sketch.duzenle.simetri"}, {"Düzenle", "Ötele", "sketch.duzenle.otele"}, {"Düzenle", "Döndür", "sketch.duzenle.dondur"}, {"Düzenle", "Ölçekle", "sketch.duzenle.olcekle"}, {"Düzenle", "Ofset", "sketch.duzenle.ofset"}, // ---- Sketcher kısıt ---- {"Kısıt", "Yatay", "sketch.kisit.yatay"}, {"Kısıt", "Dikey", "sketch.kisit.dikey"}, {"Kısıt", "Dik", "sketch.kisit.dik"}, {"Kısıt", "Paralel", "sketch.kisit.paralel"}, {"Kısıt", "Eşit", "sketch.kisit.esit"}, {"Kısıt", "Çakışık", "sketch.kisit.cakisik"}, {"Kısıt", "Temas", "sketch.kisit.temas"}, {"Kısıt", "Mesafe", "sketch.kisit.mesafe"}, {"Kısıt", "Yarıçap", "sketch.kisit.yaricap"}, {"Kısıt", "Oto Ölçü", "sketch.kisit.oto_olcu"}, {"Kısıt", "Oto Kısıt", "sketch.kisit.oto_kisit"}, {"Kısıt", "Animasyon", "sketch.kisit.animasyon"}, // ---- Teknik resim (pafta) ---- {"Teknik Resim", "Teknik Resim Oluştur", "pafta.olustur"}, {"Teknik Resim", "Teknik Resimden Çık", "pafta.cik"}, }; // (grup + '\x1f' + ad) → kimlik. İlk çağrıda kurulur (tablo statik, yarış yok: // komut kaydı ana iş parçacığında). const std::unordered_map& harita() { static const std::unordered_map h = [] { std::unordered_map m; m.reserve(sizeof(kTablo) / sizeof(kTablo[0]) * 2); for (const Kayit& k : kTablo) m.emplace(std::string(k.grup) + '\x1f' + k.ad, k.kimlik); return m; }(); return h; } } // namespace const char* lisansKimlik(const std::string& grup, const std::string& ad) { const auto& h = harita(); const auto it = h.find(grup + '\x1f' + ad); return it == h.end() ? "" : it->second; } int lisansKimlikSayisi() { return (int)(sizeof(kTablo) / sizeof(kTablo[0])); } bool lisansKimlikKaydi(int i, const char*& grup, const char*& ad, const char*& kimlik) { if (i < 0 || i >= lisansKimlikSayisi()) return false; grup = kTablo[i].grup; ad = kTablo[i].ad; kimlik = kTablo[i].kimlik; return true; } } // namespace fiko