# CATIA V5 Kinematik + Parametrik/Knowledge + Sinematik Kolaylıklar — Araştırma

> Amaç: fikatia-local sisteminin "parametrik, kinematik ve sinematik" olması hedefi için CATIA V5'in
> DMU Kinematics, Knowledge Advisor (Formulas/Parameters/Design Table/Rules) ve DMU animasyon/kamera
> davranışlarını çıkarıp; fikatia mevcut durumu ile karşılaştırıp somut yol haritası önermek.
> KOD YOK — sadece araştırma + envanter + plan.

---

## 1. Kaynaklar (URL + Özet)

### Kinematik (DMU Kinematics)
| Kaynak | URL | Özet |
|--------|-----|------|
| DMU Kinematics Simulator (resmî DS kılavuzu, PDF) | https://d2t1xqejof9utc.cloudfront.net/files/124864/dmu_kinematics_simulator.pdf | Resmî referans: joint tipleri, assembly-constraint dönüşümü, komut/kanun simülasyonu, sensör, çakışma. |
| CATIA V5-6R2015 DMU Kinematics — 14 joint tipi ve DOF | https://cadexperience.blogspot.com/2015/12/catia-v5-6r2015-dmu-kinematics.html | Her joint tipinin DOF açıklaması + Assembly Constraints Conversion, Speed&Acceleration, Mechanism Analysis araçları. |
| Assembly constraints → joints otomatik dönüşüm | https://americanbobcat.blog/2021/06/02/catia-v5-_dmu-kinematics_how-to-convert-the-assembly-constraints-into-joints-for-a-simulation-mechanism/ | Montaj kısıtlarından otomatik joint önerisi ("7 new joints will be created", Auto Create). |
| Simulation with Commands (temel) | https://americanbobcat.blog/2021/03/25/catia-v5-_dmu-kinematics_basics-simulation-with-commands/ | Slider dialog, min/max/spin, Immediate vs On Request, step sayısı, Reset. |
| Simulation with Laws (kanunlu) | https://americanbobcat.blog/2021/03/26/catia-v5-_dmu-kinematics_basics-simulation-with-laws/ | Zaman-tabanlı law: rules+formulas ile hız/ivme profili. |
| DMU Kinematics temel akış | http://mycatiav5.blogspot.com/2017/05/dmu-kinematics.html | 3 zorunlu koşul: en az 1 fixed part + komut + doğru DOF. |
| GoEngineer DMU Kinematics kurs müfredatı | https://www.goengineer.com/training/catia-dmu-kinematics-simulator | Mekanizma kurulumu, joint mantığı, komut/simülasyon eğitim başlıkları. |
| CATIA V5 Digital Mock-Up (DMU) ders PDF | http://ftp.demec.ufpr.br/disciplinas/TMEC035/Profa.Maria_Lucia/DMU_cinematica/V5DMU_1.pdf | Akademik DMU cinematica ders notu. |

### Parametrik / Knowledge Advisor
| Kaynak | URL | Özet |
|--------|-----|------|
| Knowledge Advisor Student Notes (resmî DS eğitim PDF, R19) | http://yvonet.florent.free.fr/SERVEUR/COURS%20CATIA/CATIA%20Product%20Synthesis/KWA_F/Student/EDU_CAT_EN_KWA_FF_V5R19_toprint.pdf | Parameter/Formula/List oluşturma, User Parameters, Rules, Checks, Reactions, Design Tables, Part Families. |
| CATIA Knowledgeware Infrastructure (resmî online help) | http://catiadoc.free.fr/online/cfyugkwr_C2/cfyugkwr3002.htm | Knowledgeware altyapı referansı (ilişkiler, parametre ağacı). |
| Parameters & Formulas Tutorial (PDF) | https://forum.torrecillacatia.com/forum/sites/default/files/foro/archivo/Catia%20v5%20Parameters%20And%20Formulas%20Tutorial(1)_1.pdf | Parametre=değişken/sabit, Formula=ilk relation tipi; adım adım. |
| Formula parameterization — beginner | https://catiav5v6tutorials.com/catia-v5-tutorials/knowledge-advisor/formula-parameterization-in-catia-v5-beginner-tutorial/ | f(x) ikonu, User Parameters dropdown, ölçüye çift-tık bağlama, otomatik update, **birim zorunluluğu** ("20 mm"). |
| Design Tables (i GET IT blog) | http://blog.myigetit.com/2017/03/30/the-hidden-intelligence-of-catia-v5-part-2-design-tables/ | Excel/txt tablo ile parametre sürüşü, konfigürasyon satırları. |
| Knowledge Based Engineering Student Notes (PDF) | https://d2t1xqejof9utc.cloudfront.net/files/24023/EDU_CAT_EN_KBE_FF_V5R18_toprint.pdf | Rule/Check/Reaction ileri seviye KBE. |

### Sinematik (Kamera / Animasyon / Replay / Video)
| Kaynak | URL | Özet |
|--------|-----|------|
| Compile simulation → Replay + video export | https://americanbobcat.blog/2021/04/06/catia-v5-dmu-kinematics_how-to-compile-simulation-for-replay-and-export-your-file-as-video-format/ | Compile Simulation: "Generate a replay" + skip ratio (hız), Simulation Player ile oynatma. |
| Generating a Video (DMU özel araç, resmî help) | http://catiadoc.free.fr/online/cfyugdmu_C2/cfyugdmu0014.htm | Tools/Simulation/Generate Video, VFW Codec, sequence tabanlı video. |
| DMU Generic Animation Toolbar | https://grabcad.com/tutorials/tutorial-using-dmu-generic-animation-toolbar | Compile simulation ikonu, animasyon dosyası üretme. |
| DMU Fitting ile animasyon (CERN) | https://indico.cern.ch/event/205480/contributions/1493064/attachments/313332/437359/Twisting_Octopus__DMU_Fittings_with_Catia.pdf | Kamera track: kamera görünümüne gir, sahneyi hareket ettir, pozisyon kaydet (tekrarla). |
| Mechanism Design & Animation (Zamani kitap örneği, PDF) | https://static.sdcpublications.com/pdfsample/978-1-58503-652-3-4.pdf | Zaman-tabanlı hareket, movie file üretimi, kinematik grafik çıktıları. |

### Türkçe (cadem.com.tr / cademdigital)
| Kaynak | URL | Özet |
|--------|-----|------|
| CATIA — CADEM ana sayfa | https://www.cadem.com.tr/catia/ | CATIA modül tanıtımı, parametrik + direct modeling. |
| CATIA V5 Infrastructure (Türkçe PDF) | https://www.cadem.com.tr/wp-content/uploads/2021/09/catia-v5-infrastructure.pdf | Named views, compass, görüntü/kamera altyapısı Türkçe. |
| CATIA V5 Part Design (Türkçe PDF) | https://cadem.com.tr/wp-content/uploads/2021/10/catia-v5-part-design.pdf | Parametrik feature ağacı, ölçü/parametre bağı. |
| DPÜ V6 İçten Yanmalı Motor — Kinematik + Yapısal analiz (Türkçe PDF) | https://birimler.dpu.edu.tr/app/views/panel/ckfinder/userfiles/74/files/fkarakoc/cozumlemeler/V6_Motor.pdf | DMU-Kinematics ile piston hız/ivme analizi, joint komut ataması Türkçe örnek. |

---

## 2. KOLAYLIK ENVANTERİ

Sütunlar: **Alan** | **CATIA V5 davranışı** | **fikatia durumu** | **Öneri**

### 2.1 Parametrik / Knowledge

| Alan | CATIA V5 davranışı | fikatia | Öneri |
|------|-------------------|---------|-------|
| Sağ-tık → Formül | Herhangi bir ölçü/değer alanında sağ-tık → *Edit Formula*; f(x) ile ilişki kurulur, model otomatik günceller | **EKSİK** | Her sayısal giriş widget'ına bağlam menüsü: "f(x) Formül Ekle". İfade motoruna bağlan. |
| İfade motoru | Formula = ilişki; birim zorunlu (`20mm`, `20deg`), fonksiyonlar (sin, sqrt), diğer parametrelere referans | **PLANLI** (MEMORY: "kendi recursive-descent, birim+Türkçe") | Recursive-descent parser + birim sistemi (mm/deg/rad) + Türkçe fonksiyon adları. Cekirdek'te tekil `IfadeMotoru`. |
| User Parameters | f(x) dialogunda "New Parameter of type" (Length/Angle/Real/Integer/Boolean/String) + yeniden adlandırma | **EKSİK** | `Parametre` nesnesi (tip+değer+birim+ad). Ağaçta "Parametreler" düğümü. |
| Ölçüden parametreye bağ | Ölçüye çift-tık → "Members of Length" → parametre seç; ölçü artık parametreyi izler | **EKSİK** (sketch solver DOF hesaplıyor ama parametre bağı yok) | Sketch kısıt değeri → parametre referansı. `kisit.hpp` değer alanı `double` yerine `İfade` kabul etmeli. |
| Design Table (Excel bağı) | Excel/txt tablo import; her satır bir konfigürasyon; aktif satır parametreleri sürer; part families | **EKSİK** | CSV/Excel içe aktarma → konfigürasyon satırları → parametre atama. Sonraki dalga. |
| Rules / Checks / Reactions | Knowledge Advisor: if-then kuralları, kontrol (uyarı/hata), olay-reaksiyonu | **EKSİK** | Lua makro motoru zaten var (MEMORY) → Rule/Check bunun üzerine kurulabilir; olaya reaksiyon = mevcut olay sistemine abone. |
| Ağaçta Parameters/Relations düğümü | Spec tree'de "Parameters" ve "Relations" düğümleri; formüller görünür/düzenlenebilir | **EKSİK** | Ürün ağacına "Parametreler" + "İlişkiler" kök düğümleri (mevcut ağaç altyapısını genişlet). |
| Update davranışı | Formül değişince otomatik/manuel Update; feature DAG yeniden hesaplanır | **VAR (kısmen)** — `RecomputeMotor` DAG mevcut | Parametre değişimini RecomputeMotor'a dirty-propagation olarak bağla. Otomatik + manuel toggle. |

### 2.2 Kinematik (DMU Kinematics)

CATIA joint tipleri ve DOF (kaynak: cadexperience + udemy müfredatı):

| Joint | DOF | CATIA açıklaması |
|-------|-----|------------------|
| Revolute (Döner) | 1 (rot) | Tek eksende dönme |
| Prismatic (Kızak) | 1 (öteleme) | Eksen yönünde doğrusal |
| Cylindrical (Silindirik) | 2 (rot+öteleme) | Aynı eksende dönme + öteleme |
| Screw (Vida) | 1 (bağlı rot↔öteleme) | Pitch (adım) + eksen; dönme öteleme ile eşlenik |
| Spherical (Küresel) | 3 (sadece rot) | Küresel dönme |
| Planar (Düzlemsel) | 3 (x,y öteleme + z rot) | Düzlem içi hareket |
| Universal (Kardan) | — | İki mil; birinin açısı diğerini sürer |
| CV (Sabit hız) | — | Homokinetik |
| Gear (Dişli) | 1 | İki revolute + gear ratio + yön; diş gereksiz |
| Rack (Kremayer) | 1 | Revolute + prismatic; sonsuz yarıçaplı dişli |
| Cable (Kablo) | 1 | Makara/kablo eşleme |
| Point-Curve / Slide-Curve / Roll-Curve | — | Eğri üzeri nokta / eğri kayma / eğri yuvarlanma |
| Point-Surface | — | Yüzey üzeri nokta |

| Alan | CATIA V5 davranışı | fikatia | Öneri |
|------|-------------------|---------|-------|
| Mekanizma nesnesi | Ağaçta "Mechanism" düğümü; altında Joints/Commands/Laws/Speed-Accel | **EKSİK** | `Mekanizma` kök nesnesi + alt düğümler. Cekirdek registry'ye ekle. |
| Joint kurma akışı | Manuel: iki geometri (eksen/yüz) seç → joint tipi seç | **EKSİK** | Joint fabrikası: seçili iki geometri → uygun joint tipi öner. |
| **Geometriden otomatik joint önerisi** | Montaj tam kısıtlıysa "Assembly Constraints Conversion" → CATIA joint sayısını hesaplar ("7 new joints") → Auto Create | **EKSİK** (ama sketch solver ve kısıt altyapısı var) | Montaj kısıtları (koaksiyel/temas/mesafe) → joint eşleme kuralları. En yüksek katma-değerli kolaylık. |
| DOF göstergesi | Mechanism Analysis: kalan DOF sayısı; DOF=0 olunca simüle edilebilir | **VAR (kısmen)** — sketch solver 2D DOF hesaplıyor | Aynı DOF mantığını 3D placement zincirine taşı. "Kalan DOF: N" göstergesi. |
| Fixed part | Simülasyon için en az 1 sabit parça zorunlu | **EKSİK** | Mekanizmada "sabit gövde" işaretleme. |
| Command (komut) | Joint'e angle/length komutu; en az 1 komut zorunlu | **EKSİK** | Joint'e sürülebilir komut ekleme (açı/uzunluk). |
| Simulation with Commands | Slider dialog: min/max/spin, Immediate vs On Request, step sayısı, Reset | **EKSİK** | Slider ile canlı mekanizma sürme (mevcut ImGui altyapısına uygun). |
| Simulation with Laws | Zaman-tabanlı law: rules+formulas ile hız/ivme profili | **EKSİK (İfade motoruna bağlı)** | Komut = zaman fonksiyonu (`açı = 30*t`). İfade motoru gelince bedava. |
| Law/Speed-Accel editörü | Nokta seçip hız/ivme/yer değiştirme grafiği | **EKSİK** | İleri dalga: sensör + grafik. |
| Çakışma tespiti (Clash) | Simülasyon sırasında interference/clash + distance analizi | **EKSİK** (OCCT var, collision yok) | OCCT BRep mesafe/kesişim → simülasyon adımında çakışma uyarısı. |
| Placement zinciri | Joint'ler gövde placement'larını zincirleme sürer | **PLANLI** (MEMORY: "placement zinciri") | Rigid/Revolute/Prismatic ile başla; transform zinciri RecomputeMotor'a bağlı. |

### 2.3 Sinematik (Kamera / Animasyon)

| Alan | CATIA V5 davranışı | fikatia | Öneri |
|------|-------------------|---------|-------|
| Named views (kayıtlı görüş) | Isometrik/Front/Top vb. + kullanıcı kaydı; compass ile yönelim | **VAR (kısmen)** — `gorunumeGit` + OrbitKamera | Kullanıcı tanımlı görüş kaydet/geri çağır ("Görüş 1..N"). |
| Smooth geçişler | Görünümler arası yumuşak kamera geçişi | **VAR (kısmen)** — `gorunumeGit` interp olabilir | Görüşler arası eased (smoothstep) geçiş; süre ayarı. |
| Kamera track / animasyon | Kamera görünümüne gir → sahneyi hareket ettir → pozisyon kaydet (tekrarla) → track | **EKSİK** | Keyframe kamera: konum+hedef+zaman anahtarları → yol interpolasyonu. |
| Turntable (döner platform) | Model etrafında sürekli dönüş | **EKSİK** | OrbitKamera'ya "otomatik döndür" modu (basit). |
| Fly / Walkthrough mode | İçinde gezme (WASD tarzı) | **EKSİK** | Serbest uçuş kamera modu (opsiyonel, düşük öncelik). |
| Compile Simulation → Replay | Simülasyonu Replay'e derle; skip ratio=hız; Simulation Player ile oynat | **EKSİK** | Simülasyon kaydı → replay oynatıcı (mekanizma tamamlanınca). |
| Video export | Tools/Simulation/Generate Video, VFW codec, sequence | **EKSİK** | Frame yakalama → PNG dizisi/MP4 (ffmpeg opsiyonel). Son dalga. |

---

## 3. UYGULAMA YOL HARİTASI (fikatia mimarisine uygun)

**Mimari ilke (MEMORY zorunlu):** Eklenen HER sistem doğduğu an makro (Lua) + plugin (DLL) + olay erişilebilir olmalı.
Merkezi Cekirdek registry'ye ekle → üçü bedavaya gelir. Yeni olay struct'ı `OlayTuru` enum **SONUNA**.
İfade motoru ve RecomputeMotor mevcut DAG altyapısını kullan; yeni sistem modülü yalın+OOP+minimal.

### DALGA 1 — Parametre + İfade Motoru (temel, her şeyin altı)
1. `motor/parametre/` modülü: `Parametre` nesnesi (tip: Length/Angle/Real/Integer/Bool/String; değer; birim; ad).
2. `IfadeMotoru`: recursive-descent parser, birim sistemi (mm/deg/rad), Türkçe+standart fonksiyonlar, parametre referansı çözümleme.
3. Cekirdek registry'ye `ParametreDeposu` + ağaca "Parametreler" / "İlişkiler" düğümleri.
4. RecomputeMotor'a parametre-dirty propagation (değişince bağlı feature'lar yeniden hesaplanır; otomatik/manuel toggle).
5. Olaylar: `ParametreEklendi`, `ParametreDegisti`, `IliskiKuruldu` (enum sonuna).
6. Makro/plugin API: `fiko.parametre.olustur/oku/yaz`, olay dinleme.

### DALGA 2 — Parametrik UI kolaylıkları
1. Her sayısal giriş widget'ına sağ-tık bağlam menüsü: "f(x) Formül Ekle" / "Parametreye Bağla".
2. f(x) dialogu (ImGui): parametre listesi, tip filtresi, yeni parametre, formül düzenleyici + canlı doğrulama.
3. Sketch kısıt değeri (`kisit.hpp`) → `İfade`/parametre referansı kabul etsin (sabit `double` yerine).
4. Ölçü→parametre bağlama akışı.

### DALGA 3 — Kinematik çekirdek (joints + placement zinciri)
1. `motor/kinematik/` modülü: `Mekanizma` + `Joint` (Rigid, Revolute, Prismatic ile başla → Cylindrical, Spherical, Screw).
2. Placement transform zinciri; RecomputeMotor'a bağlı (joint komutu değişince gövdeler güncellenir).
3. 3D DOF hesabı (sketch solver DOF mantığını placement zincirine taşı) + "Kalan DOF: N" göstergesi.
4. Sabit gövde işaretleme + Command (açı/uzunluk).
5. Ağaç: Mekanizma → Joints / Commands düğümleri. Cekirdek registry + olaylar (`JointEklendi`, `KomutDegisti`...).
6. Makro/plugin API doğuştan.

### DALGA 4 — Kinematik kolaylık + simülasyon
1. **Geometriden otomatik joint önerisi**: montaj kısıtları (koaksiyel/temas/mesafe) → joint eşleme kuralları ("N joint oluşturulacak → Otomatik Oluştur"). En yüksek katma değer.
2. Simulation with Commands: slider dialog (min/max/spin, Immediate/On Request, step, Reset).
3. Simulation with Laws: komut = zaman fonksiyonu (İfade motoru — Dalga 1 sayesinde bedava).
4. OCCT tabanlı çakışma tespiti (simülasyon adımında clash/distance uyarısı).

### DALGA 5 — Sinematik
1. Named views: kullanıcı görüş kaydet/geri çağır + görüşler arası eased geçiş (mevcut `gorunumeGit`/OrbitKamera genişlet).
2. Turntable modu (OrbitKamera otomatik döndürme).
3. Keyframe kamera: konum+hedef+zaman anahtarları → yol interpolasyonu.
4. Replay: simülasyon kaydı → oynatıcı (skip ratio/hız).
5. (Opsiyonel/son) Video export: frame yakalama → PNG dizisi / ffmpeg MP4. Fly/Walkthrough modu.

### Bağımlılık sırası
```
DALGA 1 (Parametre+İfade)
   ├─→ DALGA 2 (Parametrik UI)
   └─→ DALGA 3 (Kinematik çekirdek) ─→ DALGA 4 (Otomatik joint + Simülasyon)
                                              └─→ DALGA 5 (Sinematik: replay/kamera)
```
İfade motoru (Dalga 1) hem parametrik hem kinematik "law" için ortak temel — önce o.
