#pragma once // Doğrudan Modelleme workbench ayarları — AyarSistemi'ne kayıtlı (CLAUDE.md: sihirli sayı // gömme yok, her özellik ayarlanabilir). push_pull.hpp / kenar_fillet.hpp / gizmo bu global'i // okur; ayarlar penceresi (ayar_kayitlari.cpp kaydetDogrudan) değiştirir. namespace fiko { // ---- Dokunmatik hedef büyütme (gizmo hit-test) ---- // Parmak ucu ~40px, tutamaç hit yarıçapı 11px → parmakla ıskalanır. PARMAK girdisi // aktifken hit yarıçapı bu çarpanla büyür. ÇİZİM boyu DEĞİŞMEZ (görsel aynı kalır, // yalnız vurma alanı büyür) — büyük simge sahneyi kapatırdı. // KALEM HARİÇ: uç hassas (~1px); büyütmek yanlış tutamacı yakalatır. // Fare için carpani()=1 → fare davranışı BİREBİR korunur. // dokunmaParmakAktif'i platform geri çağrısı sürer (parmak inince true, kalkınca false). inline bool& dokunmaParmakAktif() { static bool b = false; return b; } inline float& dokunmaHedefCarpan() { static float c = 2.2f; return c; } // AyarSistemi inline float dokunmaHedefCarpani() { return dokunmaParmakAktif() ? dokunmaHedefCarpan() : 1.0f; } struct DogrudanAyar { float okBoyOran = 0.09f; // Push/Pull ok uzunluğu = kamera mesafesi × oran bool glowAcik = true; // Gizmo neon glow efekti (tutamaç/ok hover) float glowGuc = 1.0f; // Glow parıltı şiddeti (alfa çarpanı) float filletHassas = 1.0f; // Kenar fillet/pah sürükleme çarpanı (1.0=1:1 gerçek mm) float silindirMinR = 0.05f; // Silindirik push/pull en küçük yarıçap (çap-offset sınırı) float secimTolDeg = 1.0f; // Alt+click koplanar/paralel yüz seçimi açı toleransı (derece) float tutamacBoy = 1.0f; // Gizmo tutamaç (fillet R/C simge, ok daire) boyut çarpanı float kabukKalinlik = 2.0f; // Kabuk/Shell varsayılan et kalınlığı (mm) float kalinlikMesafe = 1.0f; // Kalınlık/Thickness varsayılan offset mesafesi (mm) float filletYaricap = 2.0f; // Yuvarlat/Pah komutu varsayılan yarıçap/mesafe (mm) float diziAdet = 6.0f; // Dairesel Dizi varsayılan kopya adedi float diziAci = 360.0f; // Dairesel Dizi varsayılan toplam açı (derece) float diziLinMesafe = 20.0f; // Doğrusal Dizi varsayılan kopya aralığı (mm) float draftAci = 5.0f; // Draft (kalıp açısı) varsayılan açı (derece) float embossMesafe = 1.0f; // Sketch Kabart/Oy (sketch-on-surface emboss) varsayılan mesafe (mm) float itCekMesafe = 5.0f; // Yüz İt/Çek (numeric push/pull) varsayılan mesafe (mm; + dışa, − içe) bool aramaMenu = true; // DM'de yüze sağ-tık → arama kutulu bağlam menüsü (kapalı → radyal halka) bool oneriCipi = true; // tek yüz/kenar seçince viewport altında akıllı-seçim öneri çipi // ("+6 aynı ölçüde yüz seç") — menü açmadan tek dokunuş bool aramaMenuOzellik = true; // arama menüsünde filtre boşken kutunun altında kompakt grafik // özellik bandı (renk/alfa/görünürlük + KYA kimlik satırı) bool asyncApply = true; // Fillet/pah/it-çek OCCT hesabı arka planda (bırakışta UI donmaz; // hayalet önizleme sonuç inene dek kalır). Kapalı → eski senkron yol. bool zincirOnizleme = true; // Fillet/pah penceresinde teğet zincir ETKİ önizlemesi: OCCT'nin // zincire yayılacağı kenarlar turuncu gösterilir (kıracağı her yer // baştan belli). Kapalı → yalnız seçilen kenar vurgusu (eski görünüm). bool tekWorkbench = true; // DM TEK WORKBENCH (Fikri kararı 2026-07-22): DM bağlamı part // zenginliğiyle sunulur; workbench kavramı kademeli söner. // Kapalı → eski çoklu-workbench davranışı birebir (kaçış kapısı). bool mevcutFeatureIptal = true; // MEVCUT feature'i push/pull ile düzenlerken de hayalete × iptal // butonu koy (async inmeden param eski değere döner, geometri hala // eski → güvenli). Kapalı → yalnız YENİ feature'da × (eski davranış). float cokluKonturMax = 64.0f; // Çoklu it/çek önizlemesinde kontur örneklenen en çok yüz sayısı // (üstünde önizleme konturisiz — apply yine TÜM seçili yüzlere) bool silYuzKaldir = true; // DM'de yüz seçiliyken Delete = Yüz Kaldır (Defeaturing + heal). // Kapalı → eski davranış (Delete gövdeyi siler). bool datumArkada = true; // DM kipinde datum (düzlem/eksen/origin) pick'i ARKAYA alınır → // datum seçilebilir kalır ama üstünden geçen model kenarı önce gelir. bool secimiKoru = true; // İt/çek sonrası ötelenen yüz(ler) yeni gövdede yeniden seçilir // (ok hemen belirir — aynı yüzü art arda itip çekme akışı). float tasiMesafe = 5.0f; // Yüz Taşı (Move Face) varsayılan öteleme mesafesi (mm; yön = // seçili kenar, yoksa yüz normali — eğik hareket duvarları esnetir) bool yuzTasiGizmo = true; // Yüz Taşı komutu → interaktif 3-eksen (X/Y/Z) sürükle tutamacı // açar. Kapalı → eski sabit-mesafe (tasiMesafe) tek-atış davranışı. float blokKaydirMesafe = 10.0f; // Blok Kaydır (Move Region) komutu varsayılan kaydırma mesafesi // (mm; yön = seçili kenar taban-düzlemine izdüşürülür, yoksa taban U) float snapAci = 15.0f; // Transform gizmosu döndürme SNAP adımı (Shift basılıyken, derece) float snapMesafe = 1.0f; // Transform gizmosu eksen-translate SNAP adımı (Shift basılıyken, mm) bool gizmoCompassOncelik = true; // Birleşik gizmo bir gövdeyi yönetirken CATIA compass obje- // taşımayı ona bırakır (redundant çift-manipülatör olmasın). bool importAyriBody = false; // STEP import: çok top-level solid → HER biri AYRI PartBody // (CATIA assembly). Kapalı → hepsi tek import-body'de (varsayılan). bool dondurRijit = true; // Gizmo döndürme yayı (yüz modu): çıkıntıyı keyfi eksende RİJİT // döndür (geometri::yuzDondur; önizleme ile eşleşir). Kapalı → // eski draft (kalıp çıkış açısı, duvar açılandırma; nötr=taban). bool pushPullOtoOk = true; // Seçilen her yüzde push/pull oku OTOMATİK belirsin. Kapalı → // ok zıplamaz; sürükleme yalnız Ctrl basılıyken tetiklenir // (yüz seçimi serbest kalır, kazara it/çek olmaz). bool yuzTasiOto = true; // Transform (döndür/taşı) gizmosu seçilen yüze/gövdeye OTOMATİK // belirsin. Kapalı → gizmo zıplamaz; yalnız Ctrl basılıyken // görünür (seçim serbest kalır, kazara transform olmaz). bool yuzTasiDondurmeYay = true; // Yüz Taşı döndürme yaylarını (U/V/N eksenleri) gizle. Kapalıysa sadece oklar/gösteri. int gizmoYonMod = 0; // Transform (döndür/taşı) gizmosu yönelim modu: 0=Yüz (U/V/N) · 1=Dünya (X/Y/Z). // W tuşuyla değiştirilir, sisteme anında kaydedilir. bool gsdGizmoAcik = true; // GSD Yüzey düğümü seçiliyken normal boyunca OFFSET oku belirsin // (tut-sürükle → canlı paralel yüzey → bırak = parametrik Offset // feature). Kapalı → yalnız menü/pencere yolu (eski davranış). float gsdOffsetMesafe = 5.0f; // GSD gizmo offset varsayılan mesafesi (mm; sürükleme override eder) float gsdSisirGridBol = 5.0f; // GSD Şişir modu ızgara çözünürlüğü (nu=nv, 2-64). Yüzeye bu // kadar×bu kadar pick edilebilir nokta atılır (Plasticity çok-noktalı // şişirme); tıklanan nokta(lar) şişirme hedefi olur (yoksa merkez). float kenarEgAci = 10.0f; // Kenardan Eğ varsayılan açısı (°; feature panelden düzenlenir) bool kenarGizmo = true; // kenar seçilince ⟀ yay + ⇱ ok gizmosu (Fikri 07-22; kapalı=yok) bool gizmoCevreOnizleme = false; // Gizmo etrafındaki önizleme çemberleri (toggle: Ctrl+G) - BAŞLANGIÇ KAPALI bool yuzTasiCevreGoster = false; // Yüz Taşı oklarının arka plan çemberi (toggle) - BAŞLANGIÇ KAPALI bool filletCevreGoster = false; // Fillet tutamaç çember önizlemesi (toggle: Ctrl+F) - BAŞLANGIÇ KAPALI bool kenarFilletCevre = false; // Kenar fillet gizmo çemberleri (varsayılan kapalı) bool kenarUzatDuzlemde = true; // Kenardan Uzat: SADECE çekilen kenar hareket eder (kenar_tasi — // seçili yüz düzleminde uzar, öteki komşu menteşesinden eğilir; // Fikri 07-22). Kapalı = eski: komşu yüz normaliyle KOMPLE itilir. bool gsdSisirSinirKilit = true; // Şişir: sınır pole halkası sabit → bağlı kenarlar kopmaz (Fikri 07-22) float gsdSisirKilitDerinlik = 1.0f; // sabit halka sayısı (1=C0 bağlılık, 2=+yaklaşık teğetlik) float gsdSisirYaricapOran = 1.1f; // Şişir etki yarıçapı = dünyaYarıçap × oran. 1.1 = tüm yüzey (tek // büyük kubbe, eski davranış). Çok-nokta için düşür (~0.3) → her // hedef AYRI yerel tepe olur (bumps birleşmez). bool gsdTekFeature = true; // Aynı yüzeyde aynı-tip gizmo op'u → YENİ feature yığmak yerine // MEVCUT feature'ı güncelle (şişir: hedef ekle; offset/uzat: // mesafe topla). Kapalı → her sürükleme yeni feature (eski). bool gsdKaynakGizle = true; // Kaynağı değiştiren GSD op'u (şişir/offset/uzat/...) sonuç // üretince kaynak yüzeyi otomatik gizle (üst üste yığılmasın); // iptal/sil geri gösterir. Kapalı → kaynak görünür kalır (eski). bool altKopyalaTasi = true; // Transform gizmosunda GÖVDE modunda Alt+sürükle = önce KOPYALA // sonra kopyayı taşı (SW/Fusion kalıbı). Kapalı → Alt etkisiz. bool tegetYayilim = true; // Push/Pull "Grow: Moving" (CATIA/Creo tangency propagation): // seçili yüzün G1-teğet komşularından EŞDEĞER olanları hedefe // otomatik kat (düzlem→aynı yöne bakan düzlemler; silindir→eş // eksenli+eş yarıçaplı silindirler) → seam/kenar ile bölünmüş // yüzey tek parça gibi hareket eder. Kapalı → yalnız seçili yüz(ler). // ⚠️ Fillet/pah komşuları BİLEREK dahil edilmez: yuzItCek her yüzü // KENDİ normali boyunca öteler, fillet'te bu yarıçapı değiştirir // (öteleme değil) → blend'i korumak OCCT-tarafı yeniden-inşa ister. bool tegetBlendKorur = true; // Teğet yayılımı AÇIKKEN: hareket eden yüze teğet yuvarlak // blend'i (fillet) SÖK → ötele → AYNI yarıçapla yeniden KUR // (motor: yuzItCekBlendKorur). Böylece fillet öteleme boyunca // korunur; kapalıyken blend hedefe hiç katılmaz (esner). // Herhangi bir adım başarısızsa düz it/çek'e düşer. float tegetAciTol = 1.0f; // Teğet yayılımı açı toleransı (derece; normal hizalama eşiği) bool pushPullHizaSnap = true; // Push/Pull SNAP'İNİN TAMAMI (tek anahtar): komşu PARALEL yüz // düzlemlerine + sıfıra mıknatıslanma, ve Shift'le kademe // (snapMesafe) snap'i. Adaylar sürükleme başında bir kez // kurulur (paralelYuzler — her kare tarama yasak); yazılan // sayı her ikisini de ezer. Kapalı → mesafe tamamen serbest // (eski davranış birebir; Shift de etkisiz). float pushPullSnapPx = 8.0f; // Hizalama snap'i yakalama toleransı (PİKSEL — zoom'dan // bağımsız his; mm tolerans yakınlaşınca yapışkan oluyordu) float tegetYaricapTol = 0.001f; // Silindirik teğet yayılımında "eş yarıçap" ve "eksen çakışık" // sayılma toleransı (mm). Parçalanmış tek silindiri toplar. float tegetTohumMax = 8.0f; // Teğet yayılımı en çok bu kadar seçili yüz için koşar (üstünde // atlanır — tanjantYuzler her tohum için ancestors haritası kurar) bool dmCiftTikAkilli = true; // Bağlam-duyarlı çift-tık (profesyonel CAD): YÜZ kipinde çift-tık // yüz → o yüzde Sketch başlat; KENAR kipinde çift-tık kenar → teğet // kenar zinciri seç. Kapalı → eski davranış (çift-tık = seç+odakla). }; inline DogrudanAyar& dogrudanAyar() { static DogrudanAyar a; return a; } } // namespace fiko