> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/almyzat-alreysyh/create-plugins-with-designer-window.md).

# إنشاء الإضافات (Plugins)

![](/files/ju9EwpPGyiIzOujOWSQ8)

Designer Window هو أسرع طريق من "أحتاج إلى عقدة خاصة" → "أستطيع استخدامها في المشهد".

تكتب (أو تولد) فئة Python صغيرة (كـ `Block`)، تضغط على **CREATE BLOCK**، وتظهر في قائمة **Custom Blocks**.

{% hint style="info" %}
إذا أحببت البدء من قالب جاهز يعمل، افتح [Coding Reference](/arabic/almyzat-alreysyh/create-plugins-with-designer-window/coding-reference.md) وانسخ عينة الـ block.
{% endhint %}

### بداية سريعة <a href="#generate-block-script-button" id="generate-block-script-button"></a>

اتبع هذه الخطوات مرة واحدة، ثم عُد لاستكشاف التفاصيل.

![](/files/f5hMJC5XEmqFl7b9oqva)

1. افتح **Designer Window**.
2. احتفظ بالسكريبت الافتراضي، أو الصق سكريبتك الخاص أو اطلب من وكيل الذكاء الاصطناعي توليده.
3. تأكد أن السكريبت ينتهي بـ `add_block(...)`.
4. اضغط **CREATE BLOCK**.
5. ابحث عن البلوك في قائمة **Custom Blocks** واسحبه إلى المشهد.

{% hint style="success" %}
نصيحة: اجعل أسماء المقابس (sockets) ثابتة. هذا يجعل تحديث البلوك أكثر سلاسة.
{% endhint %}

### محرر الكود <a href="#code-editor" id="code-editor"></a>

منطقة المحرر الكبيرة هي مصدر الحقيقة لبلوكك.

يجب أن يتضمن سكريبتك (على الأقل):

* `from studio.custom_block import *`
* فئة ترث من `Block`
* `op_code` مطابق
* السطر النهائي `add_block(MyBlock.op_code, MyBlock)`

{% hint style="warning" %}
عند الإنشاء، يقوم AugeLab Studio بتوحيد المسافات البادئة عن طريق استبدال التاب بمسافات طولها 4 قبل الحفظ.
{% endhint %}

### مساعد الذكاء الاصطناعي <a href="#parameter-settings-section" id="parameter-settings-section"></a>

![](/files/F9Whfc9cpyf1iKGz0zn8)

أسفل Designer Window يمكنك:

* كتابة موجه (مثال: “Write a block that converts a BGR image to grayscale”)
  * كن وصفياً للحصول على أفضل النتائج.
  * حتى الآن، مساعد البلوكات المخصصة مجاني للاستخدام.
* اختيار نموذج من القائمة المنسدلة
* الضغط على **Submit** لتوليد الكود في المحرر

هذا مخصص لمساعدتك على البدء بسرعة. أنت دائماً تتحكم — راجع وحرّر الكود قبل الضغط على **CREATE BLOCK**.

{% hint style="info" %}
وكيل الذكاء الاصطناعي يتذكر مطالباتك السابقة، يمكنك طلب تحسينات أو تغييرات.
{% endhint %}

{% hint style="warning" %}
ميزة الذكاء الاصطناعي قد تكون غير متوفرة حسب الترخيص أو الاتصال أو حالة الخادم.
{% endhint %}

### تحديث بلوك موجود <a href="#block-configuration" id="block-configuration"></a>

عند الضغط على **CREATE BLOCK** مرة أخرى:

* يتم استبدال الملف.
* يتم تحديث الإدخال في قائمة **Custom Blocks**.
* يحاول Studio استبدالاً آمناً قدر الإمكان في المشاهد المفتوحة (يحاول الحفاظ على الاتصالات).

{% hint style="info" %}
إذا قمت بإعادة تسمية المقابس، قد يعيد Studio الاتصال حسب الفهرس كخيار احتياطي. لهذا السبب تهم ثبات أسماء المقابس.
{% endhint %}

<details>

<summary><strong>متقدم: ماذا يفعل CREATE BLOCK فعلياً</strong></summary>

* يقوم Studio بالبحث عن أول فئة ترث من `Block` ويأخذ اسم الفئة كاسم البلوك.
* يُحفظ سكريبتك كـ `<BlockName>.py` تحت مجلد Marketplace الخاص بالـ custom blocks.
* يستورد Studio `custom_blocks.<BlockName>` وينشئ منه مثيلاً مرةً واحدة للتحقق منه.
* إذا بدا كل شيء سليماً، يصبح البلوك متاحاً في قائمة **Custom Blocks**.

{% hint style="info" %}
موقع الملف: `.../AugeLab Studio/marketplace/custom_blocks/<BlockName>.py`
{% endhint %}

{% hint style="warning" %}
إذا فشل الاستيراد/التحقق، يعرض Studio الخطأ ويزيل الملف. صحح السكريبت وحاول مجدداً.
{% endhint %}

</details>

### إعادة تحميل البلوكات في Designer Window <a href="#reloading-blocks-into-designer-window" id="reloading-blocks-into-designer-window"></a>

لتحرير بلوك موجود، انقر بزر الفأرة الأيمن على اسمه في قائمة **Custom Blocks** واختر **Load into Designer Window**.

{% hint style="warning" %}
تحميل بلوك إلى Designer Window يعمل فقط على السكريبتات القابلة للتحرير للمستخدم (`.py`). البلوكات المترجمة/المشفرة (مثل `.pyd` أو سكربتات محمية بواسطة PyArmor) محظورة عمداً.
{% endhint %}

!\[Load Existing Block]\(../../../.assets/gitbook/image (7).png)\
*Load Existing Block*

{% hint style="info" %}
"Reload" يحدث قائمة **Custom Blocks** (يضيف ملفات جديدة / يزيل الملفات المحذوفة). لا يقوم بتحديث العقد الموضوعة بالفعل في المشاهد بشكل فوري. ![Refresh Block List](/files/YMRw078xnzQgy1dj9mlA)\
*Refresh Block List*
{% endhint %}
