إضافة نص إلى رسم DWG غالبًا ما تكون جزءًا من عمل هندسي أكبر. في بعض الحالات، قد تحتاج إلى تسمية المعدات، تحديد الغرف، إضافة مراجع مراجعة، أو وضع ملاحظات عند إحداثيات محددة مسبقًا. عندما تأتي هذه التفاصيل من قاعدة بيانات أو جدول بيانات، فإن إضافة كل تسمية يدويًا في محرر CAD يعد عملاً غير ضروري.

Aspose.CAD for Python via .NET يتيح لك تحميل رسم DWG، إضافة كيان نصي إلى مساحة النموذج الخاصة به، وتصدير المحتوى المشروح. في هذا الدرس، ستقوم بإضافة نص إلى رسم DWG باستخدام Python، وتحديد موقعه ومظهره، وحفظ النتيجة كـ DXF و PDF.

تثبيت Aspose.CAD for Python via .NET

تحتاج إلى بيئة Python تعمل، Aspose.CAD package، وملف DWG للتعليق. لا يلزم وجود AutoCAD لتشغيل هذا المثال.

قم بتثبيت الحزمة باستخدام pip:

pip install aspose-cad

لمزيد من تفاصيل الإعداد، راجع دليل تثبيت Aspose.CAD.

ضع ملف DWG باسم sample.dwg في نفس المجلد الذي يحتوي على سكريبت Python الخاص بك. يستخدم المثال إحداثيات مساحة النموذج (100, 100, 0) وارتفاع نص قدره 5.0 وحدة رسم. قد تحتاج إلى تعديل هذه القيم لتتناسب مع الرسم الخاص بك.

إضافة نص إلى رسم DWG باستخدام Python

تخزن رسومات CAD النص ككيانات بدلاً من البكسلات. تمثل الفئة CadText كيان TEXT أحادي السطر، مع خصائص لمحتواها، وموقعها، وارتفاعها، ونمطها، وطبقتها. إضافة مثل هذا الكيان يحافظ على جزء التعليقات التوضيحية من نموذج CAD بدلاً من مجرد رسم الكلمات فوق صورة مُصدَّرة.

سير العمل هو تحميل ملف DWG، وتحديد كتلة مساحة النموذج الخاصة به، وإنشاء كيان CadText، وإضافته إلى تلك الكتلة، وتحديث حدود الرسم، وتصدير النتيجة.

الكود الكامل بلغة Python لإدراج نص في رسم DWG

تم اختبار المثال التالي باستخدام Aspose.CAD for Python via .NET. يضيف التسمية Hello from Aspose.CAD Python إلى الرسم وينتج ملفين إخراجيين.

import aspose.cad as cad
from aspose.pycore import cast

from aspose.cad.fileformats.cad import CadImage
from aspose.cad.fileformats.cad.cadobjects import (
    CadText,
    Cad3DPoint,
)

from aspose.cad.imageoptions import (
    DxfOptions,
    PdfOptions,
    CadRasterizationOptions,
)

# Input and output files
input_file = "sample.dwg"
output_dxf = "drawing_with_text.dxf"
output_pdf = "drawing_with_text.pdf"

# Text properties
text_value = "Hello from Aspose.CAD Python"
text_x = 100.0
text_y = 100.0
text_height = 5.0

# Load the DWG drawing
with cad.Image.load(str(input_file)) as image:

# IMPORTANT: Cast Image to CadImage
    cad_image = cast(CadImage, image)

# Find model space
    model_space = None

for block in cad_image.block_entities.values_typed:
        block_name = block.name or ""
        original_name = block.original_block_name or ""

if (
            block_name.lower() == "*model_space"
            or original_name.lower() == "*model_space"
        ):
            model_space = block
            break

if model_space is None:
        raise RuntimeError(
            "Model space block was not found."
        )

# Create a new TEXT entity
    text_entity = CadText()

text_entity.default_value = text_value
    text_entity.style_type = "Standard"
    text_entity.layer_name = "0"
    text_entity.color_id = 256

text_entity.text_height = text_height
    text_entity.scale_x = 1.0

# Set text position
    text_entity.first_alignment = Cad3DPoint(
        text_x,
        text_y,
        0.0
    )

# Add the text to model space
    model_space.add_entity(text_entity)

# Update drawing bounds
    cad_image.update_size(True)

# Save as editable DXF
    dxf_options = DxfOptions()
    cad_image.save(str(output_dxf), dxf_options)

print(f"DXF created: {output_dxf}")

# Save as PDF for viewing
    raster_options = CadRasterizationOptions()
    raster_options.page_width = 1600.0
    raster_options.page_height = 1200.0

pdf_options = PdfOptions()
    pdf_options.vector_rasterization_options = raster_options

cad_image.save(str(output_pdf), pdf_options)

print(f"PDF created: {output_pdf}")

print("Text added successfully.")

الناتج المتوقع

عند اكتمال تشغيل البرنامج النصي بنجاح، يتم إنشاء الملفات التالية بجانب sample.dwg:

  • drawing_with_text.dxf — ملف CAD المُصدَّر مع كيان النص الجديد، حيث يدعم ذلك كاتب DXF.
  • drawing_with_text.pdf — نسخة مُصدَّرة من الرسم المشروح للمراجعة أو المشاركة.

إخراج وحدة التحكم هو:

DXF created: drawing_with_text.dxf
PDF created: drawing_with_text.pdf
Text added successfully.

افتح كلا ملفي الإخراج للتأكد من أن التسمية مرئية وموضوعة بشكل صحيح. الملف الأصلي sample.dwg لم يتم تعديله.

كيف يعمل كود Python

بعض التفاصيل في المثال مهمة عندما تنتقل من رسم اختبار بسيط إلى ملف إنتاج.

1. تحميل وتحويل رسم DWG

طريقة cad.Image.load() تفتح ملف المصدر. ثم يستخدم المثال cast(CadImage, image) بحيث يمكن الوصول إلى الرسم المحمَّل عبر خصائص خاصة بـ CAD، بما في ذلك block_entities.

يحتفظ بيان with بالصورة مفتوحة بينما يتم تعديل كياناتها وتصديرها، ثم يحرر المورد عند انتهاء المعالجة.

2. العثور على كتلة مساحة النموذج

يمكن أن يحتوي رسم DWG على عدة كتل. يجب إضافة النص الجديد إلى الكتلة التي تمثل مساحة الرسم المقصودة.

يتكرر المثال عبر cad_image.block_entities.values_typed ويتحقق من كل من block.name و block.original_block_name بالنسبة إلى *Model_Space مع تجاهل حالة الأحرف. هذا يتجنب الافتراض بأن مساحة النموذج يمكن دائمًا الوصول إليها باستخدام مفتاح القاموس المباشر.

إذا لم يتم العثور على مساحة النموذج، يرفع البرنامج النصي استثناء RuntimeError. هذا مفضَّل على تصدير ملف بصمت دون التعليق الجديد.

3. إنشاء وتحديد موضع كيان النص

CadText() ينشئ التعليق التوضيحي أحادي السطر الجديد. خاصية default_value تخزن النص الظاهر. الموضع يأتي من Cad3DPoint(text_x, text_y, 0.0)، المخصص إلى first_alignment.

في هذا المثال، text_height = 5.0 يحدد الارتفاع بوحدات الرسم، و scale_x = 1.0 يضبط عامل المقياس الأفقي. الكيان يستخدم نمط النص Standard والطبقة 0. معرف اللون 256 يعني ByLayer، لذا تتحكم الطبقة في لونه.

بعد تعيين هذه الخصائص، model_space.add_entity(text_entity) يدرج التعليق في مساحة النموذج.

4. إعادة حساب حدود الرسم

إضافة النص يمكن أن تغير المنطقة التي يشغلها محتوى الرسم. الاستدعاء أدناه يقوم بتحديث حدود الرسم قبل التصدير:

cad_image.update_size(True)

المعامل البولياني مطلوب من قبل واجهة برمجة التطبيقات Python المستخدمة في هذا المثال المختبر. استدعاء update_size() بدونها قد ينتج عنه خطأ نقص في المعامل.

5. تصدير الرسم المشروح

DxfOptions يُستخدم لحفظ الرسم كـ DXF. CadRasterizationOptions يتحكم في أبعاد الصفحة عند العرض، و PdfOptions ينتج ملف PDF.

لاحظ أن أبعاد PDF مكتوبة كـ 1600.0 و 1200.0، وليس كأعداد صحيحة. ربطات Python المختبرة تتوقع قيمًا رقمية بهذا الشكل لهذه الدوال.

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

تغيير موضع النص والارتفاع واللون والنمط

يمكنك تخصيص كيان CadText عن طريق تغيير خصائصه قبل استدعاء add_entity().

الخاصيةما يتحكم فيهمثال
default_valueالنص المعروض في الرسم"VALVE V-101"
first_alignmentموضع النص في إحداثيات CADCad3DPoint(150.0, 80.0, 0.0)
text_heightارتفاع النص بوحدات الرسم3.0
scale_xعامل مقياس النص الأفقي1.0
style_typeاسم نمط النص"Standard"
layer_nameالطبقة المرتبطة بالنص"0"
color_idقيمة فهرس لون AutoCAD1 للأحمر؛ 256 للطبقة

على سبيل المثال، قم بتغيير خصائص النص في البرنامج الرئيسي لتسمية صمام:

text_entity.default_value = "VALVE V-101"
text_entity.first_alignment = Cad3DPoint(
    150.0, 80.0, 0.0
)
text_entity.text_height = 3.0
text_entity.scale_x = 1.0
text_entity.style_type = "Standard"
text_entity.layer_name = "0"
text_entity.color_id = 1

قم بتشغيل مقتطف إعداد الخصائص هذا قبل model_space.add_entity(text_entity) في المثال الرئيسي.

استخدم الإحداثيات التي تتطابق مع الرسم الفعلي. غالبًا ما تستخدم رسومات CAD وحدات أو أنظمة إحداثيات خاصة بالمشروع، لذا قد يكون (150, 80) داخل رسم واحد وبعيدًا عن الهندسة في رسم آخر. بالمثل، الارتفاع 3.0 ليس حجم خط بثلاث نقاط؛ إنه يُقاس بوحدات الرسم.

يجب عليك أيضًا استخدام نمط النص والطبقة اللذين موجودين في الرسم المصدر. يستخدم المثال الإعدادات الافتراضية الشائعة، ولكن الرسومات التي تتبع معايير مخصصة قد تتطلب أسماء مختلفة.

إضافة تسميات نصية متعددة إلى رسم DWG

بمجرد أن تعمل تسمية واحدة، يمكنك توسيع نفس النهج إلى عدة تعليقات توضيحية. هذا مفيد عندما تكون معرفات المعدات أو أسماء الغرف أو مراجع الفحص مخزنة بالفعل كبيانات منظمة.

على سبيل المثال، حدد التسميات وإحداثيات إدراجها:

labels = [
    ("VALVE V-101", 40.0, 80.0),
    ("VALVE V-102", 70.0, 80.0),
    ("PUMP P-201", 100.0, 80.0),
    ("CONTROL PANEL", 130.0, 80.0),
]

for label, x, y in labels:
    text = CadText()
    text.default_value = label
    text.first_alignment = Cad3DPoint(x, y, 0.0)
    text.text_height = 2.5
    text.scale_x = 1.0
    text.style_type = "Standard"
    text.layer_name = "0"
    text.color_id = 256

model_space.add_entity(text)

cad_image.update_size(True)

ضع هذا المقتطف داخل كتلة with، بعد العثور على مساحة النموذج وقبل تصدير DXF/PDF. يستخدم نفس نمط إنشاء الكيانات كما في مثال النص الفردي العامل؛ لم يتم اختبار تنوع الملصق المتعدد بشكل منفصل هنا.

في تطبيق حقيقي، يمكن تعبئة labels من ملف CSV أو سجل المعدات أو قاعدة بيانات. المسؤولية الرئيسية لتطبيقك هي تزويد إحداثيات صالحة وخصائص نصية مناسبة. تقوم المكتبة بإدراج الكيانات في المواقع التي تحددها؛ فهي لا تمنع تداخل التسميات تلقائيًا.

حفظ الرسم مع النص كـ DXF أو PDF

يعتمد التنسيق الذي تختاره على ما يحدث بعد التعليق.

حفظ كملف DXF لتعديل CAD

المثال الرئيسي يستخدم DxfOptions لتصدير الرسم:

dxf_options = DxfOptions()
cad_image.save("drawing_with_text.dxf", dxf_options)

DXF مفيدة عندما تكون الخطوة التالية تتضمن تطبيق CAD أو نظام آخر يستهلك كيانات الرسم. ومع ذلك، جدول الصيغ المدعومة من Aspose.CAD يصف كتابة DXF بأنها مدعومة جزئياً. تحقق من التعليقات التوضيحية المهمة والطبقات والهندسة في الملف المُصدّر قبل استخدامه في سير عمل هندسي.

حفظ كملف PDF للعرض والمشاركة

للمراجعات التصميمية أو التقارير أو توزيع المستندات، يُصدّر المثال أيضًا ملف PDF:

raster_options = CadRasterizationOptions()
raster_options.page_width = 1600.0
raster_options.page_height = 1200.0

pdf_options = PdfOptions()
pdf_options.vector_rasterization_options = raster_options

cad_image.save("drawing_with_text.pdf", pdf_options)

PDF مخصص لعرض الرسم الناتج بدلاً من تعديل كيانات CAD الخاصة به. إذا كنت بحاجة إلى ملف DWG محدث، استخدم سير عمل CAD متوافق منفصل لإنتاجه من تنسيق وسيط مناسب؛ حفظ DWG مباشرة غير مدرج في واجهة برمجة تطبيقات Python.

استكشاف أخطاء إدراج النص في ملفات DWG

النص المُدرج غير مرئي. تحقق أولاً من إحداثيات النص. قد يكون التسمية وضعت خارج الهندسة المرئية. تحقق أيضًا من رؤية الطبقة، وارتفاع النص، ونمط النص المحدد. قارن مخرجات DXF و PDF لتحديد ما إذا كانت المشكلة تحدث أثناء إدراج الكيان أو أثناء العرض.

البرنامج النصي لا يمكنه العثور على مساحة النموذج. المثال يرفع الخطأ Model space block was not found. إذا لم يتطابق أي اسم كتلة مع *Model_Space. تحقق من الكتل في ملف المصدر وتأكد من أنه يحتوي على بيانات مساحة النموذج بالهيكل المتوقع. لا تستمر مع إشارة كتلة مفقودة.

update_size() يُبلغ عن وجود وسيط مفقود. استخدم cad_image.update_size(True) كما هو موضح في المثال العملي. هذا التوقيع مهم للربط Python المستخدم هنا.

أبعاد صفحة PDF تسبب خطأً في النوع. مرّر قيمًا ذات نقطة عائمة مثل 1600.0 و 1200.0 إلى page_width و page_height على التوالي.

النص يبدو مختلفًا عن محرر CAD. تحقق من نمط نص الرسم وما إذا كانت الخطوط المقابلة متاحة في بيئة المعالجة. قد يختلف العرض إذا كان الخط المتوقع مفقودًا أو تم استبداله.

ملف DXF يحتوي على اختلافات غير متوقعة. كتابة DXF مدعومة جزئياً فقط. اختبر باستخدام رسومات تمثيلية وراجع الكيانات الناتجة في عارض CAD قبل دمج المخرجات في عملية آلية.

الأسئلة المتكررة

هل يمكنني إضافة نص إلى ملف DWG باستخدام Python دون AutoCAD؟

نعم. يمكن لـ Aspose.CAD for Python via .NET تحميل رسم DWG وإضافة كيان CadText دون الحاجة إلى AutoCAD. ثم يقوم المثال بتصدير الرسم المعدل إلى DXF و PDF.

كيف يمكنني تحديد موضع النص في رسم DWG؟

قم بتعيين first_alignment لكائن CadText باستخدام Cad3DPoint(x, y, z). اختر القيم التي تتطابق مع موقع مناسب في الرسم الأصلي.

هل يمكنني إضافة نص إلى طبقة محددة؟

نعم. قم بتعيين layer_name إلى اسم الطبقة المقصودة. في المثال الرئيسي، يستخدم التعليق الطبقة 0 ومعرف اللون 256 (ByLayer).

هل يمكنني إضافة عدة تسميات نصية تلقائيًا؟

نعم. أنشئ كيان CadText جديد لكل تسمية، واضبط محتواه وإحداثياته، وأضفه إلى مساحة النموذج. يمكن أن يتم توجيه هذا النمط بواسطة قائمة من السجلات أو مصدر بيانات منظم آخر.

هل يمكنني حفظ الرسم المعدل مرة أخرى إلى DWG؟

حفظ DWG مباشرة غير مدرج في Aspose.CAD for Python supported formats. تدفق العمل المختبر يصدر الرسم المعدل إلى DXF و PDF، مع ترك مصدر DWG دون تغيير.

احصل على ترخيص مؤقت مجاني

يمكنك طلب ترخيص مؤقت مجاني لمدة 30 يومًا لتقييم Aspose.CAD for Python via .NET دون قيود التقييم. لتطبيق الترخيص في تطبيق Python الخاص بك، اتبع دليل ترخيص Aspose.CAD.

موارد التعلم المجانية

استكشف هذه الموارد لمزيد من المعلومات حول معالجة رسومات CAD في Python:

الخاتمة

إضافة نص إلى رسم DWG باستخدام Python هي طريقة عملية لإنشاء ملصقات المعدات، ومعرفات الغرف، وغيرها من التعليقات التوضيحية من بيانات التطبيق. الخطوات الأساسية هي تحديد مساحة النموذج، وإنشاء كيان CadText بالإحداثيات والتنسيق المناسبين، وتحديث حدود الرسم قبل التصدير.

الخطوة التالية هي استبدال تسمية المثال بالإحداثيات والمعرفات من بيانات الرسم الخاصة بك. تحقق من مخرجات DXF في محرر CAD واستخدم ملف PDF كنسخة مراجعة، خاصةً عند نشر سير العمل عبر الرسومات ذات الوحدات أو الطبقات أو الخطوط المختلفة.