#pragma once // Akıllı seçim: seçili yüz/kenardan topolojik veya ölçüsel olarak yayılan seçim. // Motor (geometri/brep.hpp) bu işi ZATEN yapıyor — burası yalnız "seçili öğeyi al → // motoru çağır → sonucu seçime ekle" köprüsü. Komut olarak kaydedilir (belge_penceresi) // → sağ-tık arama menüsü / radyal menü / komut paletinde otomatik çıkar (SIFIR yeni jest, // klavye kombinasyonu YOK — kullanıcı tercihi). #include "fiko/core/temel.hpp" namespace fiko { class Sahne; enum class AkilliSecim : u8 { TanjantYuz, // G1-teğet komşu yüzler → fillet zinciri / teğet yüzey grubu KoplanarYuz, // kenar-komşuluğuyla yayılan koplanar düz yüzler ParalelYuz, // gövdedeki TÜM paralel düz yüzler (bağsız da dahil) BenzerYuz, // tip+ölçü eşleşen yüzler: "bu çaptaki tüm delikler" KenarZinciri, // teğet-devam eden kenar zinciri (edge loop) BenzerKenar, // tip+ölçü eşleşen kenarlar: "bu R'deki tüm fillet kenarları" AyniRenkYuz, // EFEKTİF rengi (yuzOz → STEP rengi → gövde rengi) aynı olan yüzler }; // Seçili öğeden (son seçilen) genişletir; sonucu seçime EKLER (mevcut seçim korunur). // Dönen: seçime eklenen öğe sayısı. 0 → uygun seçim yok / gövdede brep yok. // Yüz komutları Yüz kipi, kenar komutları Kenar kipi ister (aksi halde 0). int akilliSecimUygula(Sahne& sahne, AkilliSecim tur); // Kullanıcıya gösterilecek kısa ad (bilgi mesajı için). const char* akilliSecimAd(AkilliSecim tur); // Adayları SAYAR, seçime dokunmaz (öneri çipi: "bu çapta 6 delik var — hepsini seç?"). // Zaten seçili olanı saymaz → uygula ile birebir aynı adet. 0 = öneri yok. int akilliSecimPeek(Sahne& sahne, AkilliSecim tur); // TEK öğe seçiliyken en anlamlı akıllı-seçim önerisi (öneri çipi bunu kullanır): // yüzey/kenar tipinden türetilir — silindir/torus → BenzerYuz ("bu çaptaki delikler"), // düz yüz → KoplanarYuz, kenar → BenzerKenar. false = uygun öneri yok (çoklu seçim, // aday ≤1, brep yok). tur+adet doldurulur. bool akilliSecimOner(Sahne& sahne, AkilliSecim& tur, int& adet); // ---- Toleranslar (AyarSistemi "Seçim" kategorisi — ayar_kayitlari bağlar) ---- f32 akilliSecimAciTol(); // tanjant/koplanar/paralel açı toleransı (derece) void akilliSecimAciTolAta(f32 v); f32 akilliSecimKenarTol(); // kenar zinciri teğet toleransı (derece) void akilliSecimKenarTolAta(f32 v); f32 akilliSecimBoyutTol(); // benzer yüz/kenar ölçü toleransı (yarıçapta mm, alanda oran) void akilliSecimBoyutTolAta(f32 v); } // namespace fiko