انتقل إلى المحتوى
PDF

سطر الأوامر و MCP

كل ما تفعله في BIMopen هو أمر. فالنقر على جدار ثم نقطتين في المسقط ينفذ الأمر wall نفسه الذي يمكنك كتابته بنفسك. يصف هذا الفصل سطر الأوامر في النافذة، وبرنامج bimopen-cli الذي ينفذ الأوامر نفسها دون نافذة، وخادم MCP الذي يستطيع من خلاله وكيل ذكاء اصطناعي أن ينمذج مشروعًا ويفحصه ويعرضه صورةً.

سطر الأوامر في النافذة

يقع سطر الأوامر تحت منطقة الرسم. جزؤه العلوي هو السجل؛ وصفه الأخير هو حيث تكتب.

  • لا تحتاج إلى النقر عليه أولًا: فكل ما تكتبه ما دام لا يُحرَّر حقل آخر يذهب إليه.
  • ينفذ Enter السطر. ويُعاد عرض الأمر في السجل بعد >، متبوعًا بنتيجته؛ ويُعرض الخطأ بالأحمر ولا يغيّر شيئًا.
  • يستعيد Up وDown الأسطر المكتوبة من قبل.
  • على يمين الصف، تقول المطالبة ما هو منتظر: Command: حين لا تكون هناك أداة نشطة، أو طلب الأداة النشطة، مثل WALL next point [Esc to finish]:.
  • يسرد help كل أمر مع سطر من الوصف؛ ويعرض help wall طريقة استخدام أمر واحد. ويقوم ? ▸ الأوامر في شريط العنوان بما يقوم به help.

الاختصارات المكتوبة تبدأ الأدوات

الأمر المكتوب دون وسائط يبدأ الأداة التفاعلية، كما لو نقرت زرها: WA (أو wall) يبدأ أداة الجدار، وDR أداة الباب، وVG يفتح الرؤية/الرسومات. والأمر نفسه مع وسائط ينجز العمل فورًا، دون الأداة: wall 0,0 5,0 يرسم جدارًا من نقطة الأصل حتى 5 m على امتداد x.

أسماء الأوامر وصيغها المختصرة ووسائطها واحدة في كل لغات الواجهة؛ ويقبل معظمها أيضًا اسمًا إيطاليًا، مثل muro بدل wall. أما أسماء المعاملات وأسماء الأنواع وأسماء العروض فتتبع لغة الواجهة: ففي الإنجليزية تكتب set Unconnected Height 2.7m، وفي الإيطالية set Altezza non collegata 2.7m. ويسرد فصل اختصارات لوحة المفاتيح كل صيغة مختصرة.

النقاط والأطوال

تكتب المعنى
3,4 النقطة x = 3 m، y = 4 m
@2,0 2 m على امتداد x و0 على امتداد y من النقطة السابقة
@4<90 4 m من النقطة السابقة، بزاوية 90° (الزوايا عكس اتجاه عقارب الساعة من المحور x)
2.7m، 270cm، 2700mm طول مع وحدته
2.7 أو 2,7 طول بالأمتار: في سطر الأوامر الرقم بلا وحدة يكون بالأمتار

مثلًا، يرسم wall 0,0 @6,0 @4<90 0,4 c مستطيلًا مقاسه 6 × 4 m؛ والحرف c في النهاية يغلقه.

Warning

في سطر الأوامر يعني set Unconnected Height 2700 ارتفاعًا قدره 2700 متر. اكتب الوحدة: 2700mm. أما في لوحة الخصائص فالرقم بلا وحدة يكون بوحدات المشروع، أي المليمترات في مشروع جديد.

الوسائط بصيغة JSON

يقبل كل أمر وسائطه أيضًا ككائن JSON، ما يتيح الوصول إلى كل خياراته. ويسردها سطر الاستخدام في help:

wall 0,0 10,0 {"height":3.2,"location":"Linea d'asse del muro"}
roof walls {"slope":30,"overhang":0.5}
sheet A102 Plans {"title_block":"A3"}
export doors.csv {"schedule":"doors"}

أوامر ستستخدمها كثيرًا

الأمر ما يفعله
new، sample مشروع جديد، المشروع النموذجي
open house.bimopen، save house.bimopen يفتح مشروعًا ويحفظه
undo، redo يتراجع عن آخر تعديل ويعيده
view 3d، view Ground Floor يفتح العرض ثلاثي الأبعاد الافتراضي، أو مسقط منسوب
wall، door، window، floor، roof عناصر النموذج: اطّلع على طريقة الاستخدام عبر help
select walls، select all، deselect يحدد حسب الفئة، أو كل شيء، أو لا شيء
set <parameter> <value> يضبط معاملًا من معاملات التحديد، كما في لوحة الخصائص
type <type name> يغيّر نوع التحديد، أو نوع العنصر التالي
move 1,0، copy 0,3، rotate 90 يعدّل التحديد
delete يحذف التحديد
list walls، params 102، info يسرد العناصر، أو معاملات أحدها، أو ملخصًا للمشروع
schedule doors يعرض جدولًا في سطر الأوامر
export house.ifc يصدّر IFC أو SVG أو PNG أو CSV، حسب امتداد الملف

لكل عنصر رقم، هو معرّفه، يُعرض بين قوسين بعد إنشائه: Door «Single swing door 80x210» in wall 102 (106). وتقبله الأوامر حيث تحتاج إلى عنصر: params 106، delete 106.

bimopen-cli

يشغّل bimopen-cli برنامج BIMopen دون نافذة: لتحويل الملفات، أو لبناء مشروع من برنامج نصي، أو لفحص نموذج، أو لخدمة الوكلاء عبر MCP. ابنِه بالأمر cargo build --release -p bimopen-cli.

bimopen-cli info <file>
bimopen-cli convert <in> <out> [--level NAME] [--view 3d] [--schedule walls|doors|windows|floors|rooms|materials]
bimopen-cli run [<file> | --sample] [--cmd LINE]… [--script FILE] [--save FILE] [--export FILE]…
bimopen-cli commands
bimopen-cli mcp [<file> | --sample]
الأمر الفرعي ما يفعله
info <file> ملخص للمشروع، وبصيغة JSON مناسيبه وأعداد عناصره وعرضه النشط
convert <in> <out> يفتح <in> (.bimopen أو .rvt) ويكتب <out>: .ifc، أو .svg أو .png لمسقط (أدنى منسوب، أو --level)، أو .png للعرض ثلاثي الأبعاد (--view 3d)، أو .csv لجدول (--schedule)، أو .bimopen
run يفتح ملفًا، أو النموذج، أو مشروعًا جديدًا، ثم ينفذ الخيارات بالترتيب: --cmd سطرًا واحدًا، و--script ملفًا من الأسطر (تُتخطى الأسطر الفارغة والأسطر التي تبدأ بـ #)، و--save و--export ملفًا
commands كل أمر، مع وصفه وطريقة استخدامه
mcp خادم MCP على الدخل والخرج القياسيين
--version الإصدار

تكون الرسائل بلغة متغير البيئة BIMOPEN_LANG (it، en، de، fr، es، ar)، أو بلغة النظام (LANG)، أو بالإيطالية. وينتهي bimopen-cli بالرمز 0 حين ينجح كل شيء، و1 حين يفشل أمر (وتقول الرسالة أيّها)، و2 حين تكون الوسائط خاطئة (فيطبع طريقة الاستخدام).

export BIMOPEN_LANG=en
bimopen-cli run --script house.txt --save house.bimopen --export house.ifc
bimopen-cli convert house.bimopen plan.svg
bimopen-cli convert house.bimopen doors.csv --schedule doors
bimopen-cli convert house.bimopen first.png --level "First Floor"
bimopen-cli convert house.bimopen house-3d.png --view 3d
bimopen-cli convert project.rvt project.bimopen

البرنامج النصي ملف نصي فيه أمر واحد في كل سطر، تمامًا كما يُكتب في سطر الأوامر:

# a small house
wall 0,0 10,0 10,6 0,6 c
door 5,0
window 10,3
floor walls
roof walls

تُكتب الجداول بصيغة CSV مع ; بين الأعمدة، والعناوين بلغة الرسائل، وصف للإجمالي في النهاية.

MCP: BIMopen لوكلاء الذكاء الاصطناعي

يتيح بروتوكول سياق النموذج (MCP) لوكيل الذكاء الاصطناعي أن يستخدم البرامج كأدوات. وbimopen-cli mcp خادم MCP: يتحدث JSON-RPC 2.0 على الدخل والخرج القياسيين، رسالة واحدة في كل سطر، ويُبقي مشروعًا واحدًا مفتوحًا طوال المحادثة. ودون ملف يبدأ من مشروع جديد؛ أما --sample فيبدأ من المنزل النموذجي.

لإضافته إلى وكيل، أعطِ الوكيل الأمر الذي يشغّله. مثلًا، في Claude Code:

claude mcp add bimopen -- bimopen-cli mcp --sample

أو، في عميل يُهيَّأ بصيغة JSON:

{ "mcpServers": { "bimopen": { "command": "bimopen-cli", "args": ["mcp", "--sample"] } } }

يقدّم الخادم سبع أدوات:

الأداة الوسائط ما تفعله
command_line line تكتب سطرًا في سطر الأوامر، تمامًا كما يفعل الشخص
execute command، args تنفذ أمرًا مع وسائطه بصيغة JSON
inspect_model – ملخص: المناسيب، وأعداد العناصر، والعرض النشط، والتحديد
query_elements category (اختياري) العناصر، مع المعرّف والفئة والاسم: walls، doors، windows، floors، rooms، roomseps، grids، levels، types
get_params id كل معاملات عنصر
schedule kind جدول: walls أو doors أو windows أو floors أو rooms أو materials
render view، width، height، yaw، pitch صورة PNG لعرض: 3d، أو اسم منسوب لمسقطه، أو اسم مقطع أو واجهة أو عرض تفصيلي مستدعى أو عرض رسم، أو رقم لوحة أو اسمها؛ ويديران yaw وpitch كاميرا العرض ثلاثي الأبعاد، بالدرجات

تحمل الإجابات رسالة الأمر، وبياناته بصيغة JSON حين توجد، مثل معرّفات العناصر المنشأة. ويستطيع الوكيل أن يفحص عمله بنفسه بطلب صورة.

Tip

اطلب من الوكيل أن يعرض المسقط والعرض ثلاثي الأبعاد صورةً بعد كل خطوة: فيرى ما بناه ويصحّح نفسه.