# IDialogCevirici - Batch Mode Kullanım Kılavuzu

## Genel Bakış

IDialogCevirici artık **iki farklı dönüştürme modu** destekliyor:

1. **Normal Mode** (`/convert`) - Mevcut CATIA oturumunu kullanır
2. **Batch Mode** (`/convert_batch`) - Bağımsız CATIA process'i başlatır

---

## 🔄 Dönüştürme Modları Karşılaştırması

| Özellik | Normal Mode | Batch Mode |
|---------|-------------|------------|
| Endpoint | `/convert` | `/convert_batch` |
| CATIA Kullanımı | Mevcut oturum | Yeni process |
| Hız | Hızlı | Yavaş (başlatma süresi) |
| Bağımsızlık | CATIA açık olmalı | Otomatik başlatır |
| Thread Safety | COM marshalling | Process izolasyonu |
| Önerilen | CATPart dosyaları | STP/STEP dosyaları |

---

## 📡 HTTP API Kullanımı

### 1. Normal Mode - `/convert`

Mevcut CATIA oturumunu kullanır, hızlıdır.

**İstek:**
```http
POST http://localhost:1989/convert
Content-Type: application/json

{
    "source_file": "D:\\models\\parca1.CATPart",
    "output_dir": "D:\\output",
    "output_name": "parca1_converted"
}
```

**Yanıt:**
```json
{
    "output_file": "D:\\output\\parca1_converted.wrl",
    "source_file": "D:\\models\\parca1.CATPart",
    "timestamp": "2025-12-01T02:30:45.123456"
}
```

### 2. Batch Mode - `/convert_batch`

Bağımsız CATIA process'i başlatır, STP dosyaları için önerilir.

**İstek:**
```http
POST http://localhost:1989/convert_batch
Content-Type: application/json

{
    "source_file": "D:\\models\\parca1.stp",
    "output_dir": "D:\\output",
    "output_name": "parca1_batch"
}
```

**Yanıt:**
```json
{
    "success": true,
    "output_file": "D:\\output\\parca1_batch.wrl",
    "source_file": "D:\\models\\parca1.stp",
    "method": "batch",
    "file_size": 4234567,
    "timestamp": "2025-12-01T02:35:12.654321"
}
```

---

## 🐍 Python Kullanım Örnekleri

### Normal Mode Örneği

```python
import requests

response = requests.post('http://localhost:1989/convert', json={
    'source_file': r'D:\models\parca1.CATPart',
    'output_dir': r'D:\output',
    'output_name': 'parca1'
}, timeout=120)

if response.status_code == 200:
    result = response.json()
    print(f"✓ WRL oluşturuldu: {result['output_file']}")
else:
    print(f"✗ Hata: {response.status_code}")
```

### Batch Mode Örneği

```python
import requests

response = requests.post('http://localhost:1989/convert_batch', json={
    'source_file': r'D:\models\parca1.stp',
    'output_dir': r'D:\output',
    'output_name': 'parca1_batch'
}, timeout=180)  # Batch mode daha uzun timeout

if response.status_code == 200:
    result = response.json()
    print(f"✓ Batch dönüştürme başarılı!")
    print(f"  Method: {result['method']}")
    print(f"  Output: {result['output_file']}")
    print(f"  Size  : {result['file_size']:,} bytes")
```

---

## 🧪 Test Scriptleri

### Test Script Listesi

1. **test_wrl_1989.py** - Normal mode test (CATPart)
2. **test_batch_mode.py** - Batch mode test (STP)
3. **test_simple_convert.py** - Direkt Python/COM test

### Batch Mode Testi Çalıştırma

```bash
python test_batch_mode.py
```

**Beklenen Çıktı:**
```
======================================================================
  CATIA Batch Mode Test - HTTP Server
======================================================================

Kaynak Dosya: D:\__sistem__\Downloads\C0000638.stp
Çıktı Klasörü: D:\__sistem__\Masaustu\FikatiaV2024\IDialoglar\IDialogCevirici
Çıktı Adı: C0000638_batch.wrl
Mode: BATCH (Bağımsız CATIA Process)

✓ Kaynak dosya mevcut (1,234,567 bytes)

[1/2] Server kontrolü...
----------------------------------------------------------------------
  ✓ Server çalışıyor

[2/2] Batch Mode Dönüştürme...
----------------------------------------------------------------------

  ⚠ BATCH MODE: CATIA yeni bir process olarak başlatılacak
  ⚠ Bu işlem 30-120 saniye sürebilir, lütfen bekleyin...

  İstek gönderiliyor...

  ✓✓✓ BATCH DÖNÜŞTÜRME BAŞARILI! ✓✓✓

  Sonuç:
    - Method      : batch
    - Çıktı Dosyası: D:\output\C0000638_batch.wrl
    - Kaynak Dosya: D:\__sistem__\Downloads\C0000638.stp
    - Dosya Boyutu: 4,234,567 bytes

  ✓ WRL dosyası oluşturuldu
```

---

## 🔧 CMD/Batch Kullanımı

Batch mode HTTP server'dan bağımsız olarak da kullanılabilir:

### Tek Dosya Dönüştürme

```cmd
cd D:\__sistem__\Masaustu\FikatiaV2024\IDialoglar\IDialogCevirici\CatiaBatch
convert_stp_to_wrl.bat "C:\models\parca1.stp"
```

### Toplu Dönüştürme

```cmd
cd D:\__sistem__\Masaustu\FikatiaV2024\IDialoglar\IDialogCevirici\CatiaBatch
convert_all_stp.bat "C:\models"
```

**Detaylı bilgi için:** `CatiaBatch\README.md`

---

## 🎯 Hangi Modu Kullanmalıyım?

### Normal Mode (`/convert`) Kullan:

✅ CATPart dosyaları için
✅ Hızlı dönüştürme gerektiğinde
✅ CATIA zaten açıkken
✅ Çok sayıda küçük dosya için

### Batch Mode (`/convert_batch`) Kullan:

✅ STP/STEP dosyaları için
✅ CATIA kapalıyken otomatik dönüştürme
✅ Scheduled task/automation scriptlerinde
✅ Thread safety problemlerinde
✅ Büyük dosyalarda (izolasyon için)

---

## 📋 Sistem Gereksinimleri

### Normal Mode
- Çalışan CATIA instance
- Python pywin32 desteği
- COM thread marshalling

### Batch Mode
- CATIA yüklü olmalı (otomatik başlar)
- `CatiaBatch/ConvertMacro.catvbs` dosyası
- CATSTART.exe erişimi

---

## 🐛 Sorun Giderme

### Batch Mode Hataları

**Problem:** "CATIA bulunamadı"
```
Çözüm:
1. IDialogCevirici.py dosyasını aç
2. convert_to_wrl_batch metodunda catia_path değişkenini düzenle
3. Kendi CATIA yolunuzu yazın
```

**Problem:** "Macro bulunamadı"
```
Çözüm:
1. CatiaBatch klasörünün varlığını kontrol edin
2. ConvertMacro.catvbs dosyasının olduğundan emin olun
```

**Problem:** "Timeout"
```
Çözüm:
1. Timeout süresini artırın (varsayılan 120s)
2. Büyük dosyalar için 180-300s deneyin
3. conversion.log dosyasını kontrol edin
```

**Problem:** "WRL dosyası oluşturulamadı"
```
Çözüm:
1. CatiaBatch/conversion.log dosyasını açın
2. CATIA hatalarını kontrol edin
3. STP dosyasının CATIA'da açılabilir olduğunu test edin
```

### Log Dosyaları

**Batch Mode Logları:**
- `CatiaBatch/conversion.log` - Detaylı CATIA işlem logu
- Dialog penceresi - Gerçek zamanlı server logları

---

## 💡 İpuçları

1. **STP Dosyaları**: Batch mode kullanın, normal mode STP'de sorun yaşayabilir
2. **CATPart Dosyaları**: Normal mode daha hızlıdır
3. **Çok Dosya**: Batch mode her dosya için CATIA'yı yeniden başlatır
4. **Paralel İşlem**: Aynı anda birden fazla batch request gönderebilirsiniz
5. **Monitoring**: Dialog penceresindeki logları takip edin

---

## 📚 İlgili Dokümantasyon

- `README.md` - Ana sistem dokümantasyonu
- `CatiaBatch/README.md` - Batch sistem detayları
- `CatiaBatch/HIZLI_BASLANGIC.txt` - Hızlı başlangıç kılavuzu
- `KULLANIM.md` - Genel kullanım kılavuzu

---

**Son Güncelleme:** 01.12.2025
**Versiyon:** 2.0.0 (Batch Mode Support)
