bim-4d-engine — محرّك 3D→4D BIM الموحّد (جسر KCPC)
القيمة (الأعلى لـKCPC)
IFC حقيقي من الاستشاري →
محاكاة تنفيذ 4D مرئية (phasing على الموقع) + حصر كميات + ربط آلي عنصر↔نشاط →
ملف HTML مستقل يفتحه المالك/المناقصة في المتصفّح (صفر render سيرفري، GPU المتصفّح client-side). Method Statement مرئي 4D — ميزة تنافسية في المناقصات.
جسر لا تكرار (لا تكديس)
يربط الموجود: bim-model-reader (قراءة IFC + حصر) · ifcopenshell 0.8 (هندسة) · P6 (لاحقاً للمدد الحقيقية). لا يعيد بناء أي أداة.
الأوامر
python3 skills/bim-4d-engine/bim_4d.py analyze <file.ifc> # عناصر+طوابق+أنواع+حصر
python3 skills/bim-4d-engine/bim_4d.py schedule <file.ifc> [--zone-by storey|type]
python3 skills/bim-4d-engine/bim_4d.py build <file.ifc> [out.html] [--zone-by ...] [--xer file.xer] # 4D ويب مستقل (+ لوحة تعارضات مدمجة)
python3 skills/bim-4d-engine/bim_4d.py clash <file.ifc> [--xer file.xer] # 🆕 كاشف تعارضات التسلسل (رصد استباقي)
python3 skills/bim-4d-engine/bim_4d.py evm4d <file.ifc> [out.html] --evm evm.json [--xer file.xer] # 🆕 4D + EVM بصري (SPI/CPI ملوّن)
python3 skills/bim-4d-engine/bim_4d.py claims <file.ifc> --xer planned.xer --actual asbuilt.json
python3 skills/bim-4d-engine/bim_4d.py selftest
المخرج النهائي (build)
HTML مستقل: Three.js (CDN) + timeline slider (سحب → مراحل البناء زمنياً) + جدول أنشطة ملوّن + ألوان حسب النوع. RTL عربي. يفتحه المالك دون Blender/برامج.
الربط الزمني الآلي
عنصر IFC → نشاط عبر (zone=طابق/نوع) + ترتيب منطقي (أساسات→هيكل→إكساء، طوابق بالمنسوب صعوداً) + مدد تقديرية (DUR_RULES، تُستبدل بـP6 الحقيقي).
never-stop
per-element try/except · عنصر بلا هندسة → skipped بأمان · IFC تالف → رسالة واضحة · صفر crash.
مُثبَت حيّاً E2E
2026-10-14: IFC تجريبي (طابقان × بلاطة+أعمدة+جدران) → analyze (10 عناصر) → schedule (6 أنشطة/20 يوم) → build (HTML 9.2KB) → SELFTEST_OK.
التطوير المستقبلي (مرصود)
- ربط P6 حقيقي (XER → مدد/تسلسل فعلي بدل التقديري).
- طبقة سياق Google Maps (المحيط العمراني حول المشروع).
- Gaussian Splatting (نموذج فوتوريالستي من صور الموقع).
🆕 كاشف تعارضات التسلسل (clash-sequence) — 2026-10-14 (مُختبَر E2E ULTIMATE 9/9)
القيمة (رصد استباقي لـ Method Statement): يرصد تعارضات تنفيذ مستحيلة فيزيائياً في الجدول الآلي
قبل التنفيذ:
- أفقي: نشاط يبدأ قبل اكتمال معتمده داخل الطابق (جدار قبل عموده · إكساء قبل هيكله · باب/نافذة قبل جداره).
- عمودي: هيكل طابق علوي يبدأ قبل اكتمال هيكل الطابق الأدنى (استحالة إنشائية).
clash = تقرير JSON (CLEAN/WARNING/CRITICAL).
مدمج تلقائياً كلوحة HUD في أي build/evm4d. never-stop: نشاط غامض → يُتخطّى. صفر تبعيات.
مُختبَر E2E: horizontal+vertical رُصدا · 9/9 ULTIMATE (نشاط واحد/متعدد طوابق/جدول نظيف → CLEAN).
🆕 EVM بصري على 4D (evm4d) — 2026-10-14 (مُختبَر E2E ULTIMATE 9/9)
القيمة (لوحة تحكم تنفيذ للمالك): يربط
evm_kpi.py (الموجود في p6-ai-planner) بالمحرّك البصري:
- كل نشاط → SPI/CPI → تلوين عناصره على النموذج (أخضر ahead / أصفر minor / أحمر behind).
- لوحة EVM مرئية: SPI · CPI · BAC · EAC · VAC · التقدّم (منفّذ/مخطّط).
evm.json = نفس صيغة evm_kpi ({activities:[{name,budget,planned_pct,actual_pct,actual_cost}]}). never-stop: بلا evm.json → يبني 4D عادي · evm.json تالف → يتخطّى بأمان. يستدعي evm_kpi لا يكرّره.
مُختبَر E2E: SPI=0.779 CPI=0.849 evm_matched=6 · تلوين عربي fuzzy · 9/9 ULTIMATE (فارغ/تالف/بلا تكلفة/كله ahead/عربي).
🆕 ربط P6 + سلسلة Claims (2026-10-14 — مُختبَر E2E PASS)
- مدد P6 حقيقية:
bim_4d.py build <ifc> --xer <file.xer> → يقرأ المدد/التسلسل الفعلي من P6 (عبر p6-ai-planner) ويطابقها بأنشطة IFC بالاسم (fuzzy). dur_source=P6+estimated. never-stop: XER فاشل → مدد تقديرية.
- سلسلة Claims الموحّدة:
bim_4d.py claims <ifc> --xer <planned.xer> --actual <asbuilt.json> → as-designed (IFC+P6 planned) vs as-built (actual) → delta → claims-engineering (EOT/disruption/تصنيف FIDIC 8.4/20.1). as-built يُوثّق عبر image-to-3d.
- as-built.json: {activities:[{name, actual_days, cause, critical, excusable, compensable}]}.
- مُختبَر E2E: XER 6/6 طابقت · claims صنّف التأخير (client variation→EOT+cost · weather→non-compensable).