إضافة نص إلى رسم 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 | موضع النص في إحداثيات CAD | Cad3DPoint(150.0, 80.0, 0.0) |
text_height | ارتفاع النص بوحدات الرسم | 3.0 |
scale_x | عامل مقياس النص الأفقي | 1.0 |
style_type | اسم نمط النص | "Standard" |
layer_name | الطبقة المرتبطة بالنص | "0" |
color_id | قيمة فهرس لون AutoCAD | 1 للأحمر؛ 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:
- Aspose.CAD for Python Developer Guide – تعلم كيفية تحميل ومعالجة ملفات CAD.
- Aspose.CAD Python API Reference – استعراض الفئات والخصائص والطرق المستخدمة في الأمثلة.
- Work with Text in CAD Drawings – تعرف على أنواع الكيانات التي تحمل نصًا في رسومات CAD.
- Supported CAD File Formats – تأكد من تنسيقات الإدخال والإخراج المتاحة.
- Free Online CAD Applications – اعرض أو حوّل ملفات CAD باستخدام أدوات المتصفح.
- Aspose.CAD Support Forum – اطرح أسئلة حول رسومات معينة أو سلوك واجهة برمجة التطبيقات.
الخاتمة
إضافة نص إلى رسم DWG باستخدام Python هي طريقة عملية لإنشاء ملصقات المعدات، ومعرفات الغرف، وغيرها من التعليقات التوضيحية من بيانات التطبيق. الخطوات الأساسية هي تحديد مساحة النموذج، وإنشاء كيان CadText بالإحداثيات والتنسيق المناسبين، وتحديث حدود الرسم قبل التصدير.
الخطوة التالية هي استبدال تسمية المثال بالإحداثيات والمعرفات من بيانات الرسم الخاصة بك. تحقق من مخرجات DXF في محرر CAD واستخدم ملف PDF كنسخة مراجعة، خاصةً عند نشر سير العمل عبر الرسومات ذات الوحدات أو الطبقات أو الخطوط المختلفة.
