הוספת טקסט לציור 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 installation guide.

הנח קובץ DWG בשם sample.dwg באותה תיקייה כמו הסקריפט Python שלך. הדוגמה משתמשת בקואורדינטות של מרחב מודל (100, 100, 0) ובגובה טקסט של 5.0 יחידות ציור. ייתכן שתצטרך להתאים ערכים אלה לציור שלך.

הוספת טקסט לציור DWG בפייתון

שרטוטי CAD מאחסנים טקסט כישויות במקום כפיקסלים. המחלקה CadText מייצגת ישות TEXT חד‑שורתית, עם מאפיינים לתוכן, למיקום, לגובה, לסגנון ולשכבה. הוספת ישות כזו משמרת את חלק ההערה של מודל ה‑CAD במקום רק לצייר מילים על תמונה מיוצאת.

תהליך העבודה הוא לטעון את קובץ DWG, לאתר את בלוק המרחב‑מודל שלו, ליצור ישות CadText, להוסיף אותה לבלוק זה, לעדכן את גבולות הציור, ולייצא את התוצאה.

קוד פייתון מלא להוספת טקסט בציור 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 אינו שונה.

איך הקוד בפייתון עובד

כמה פרטים בדוגמה חשובים כאשר עוברים מציור בדיקה פשוט לקובץ ייצור.

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)

הארגומנט הבוליאני נדרש על ידי ה‑API של 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 עבור ByLayer

למשל, שנה את תכונות הטקסט בסקריפט הראשי כדי לתייג שסתום:

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 ישירה אינה מופיעה ב‑API של 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 וב‑ID צבע 256 (ByLayer).

האם אני יכול להוסיף תוויות טקסט מרובות באופן אוטומטי?

כן. צור ישות CadText חדשה עבור כל תווית, הגדר את התוכן והקואורדינטות שלה, והוסף אותה למרחב המודל. תבנית זו יכולה להיות מונעת מרשימת רשומות או ממקור נתונים מובנה אחר.

האם ניתן לשמור את השרטוט המותאם חזרה ל‑DWG?

שמירת DWG ישירה אינה מופיעה ב-Aspose.CAD for Python פורמטים נתמכים. תהליך העבודה שנבדק מייצא את השרטוט המתוקן ל‑DXF ול‑PDF, ומשאיר את קובץ ה‑DWG המקורי ללא שינוי.

קבל רישיון זמני חינמי

אתה יכול לבקש רישיון זמני חינמי ל‑30 יום כדי להעריך את Aspose.CAD for Python via .NET ללא מגבלות הערכה. כדי להחיל את הרישיון ביישום Python שלך, עקוב אחרי מדריך הרישוי של Aspose.CAD.

משאבי למידה חינמיים

חקור משאבים אלה למידע נוסף על עיבוד שרטוטי CAD ב‑Python:

סיכום

הוספת טקסט לציור DWG באמצעות Python היא דרך פרקטית ליצירת תוויות ציוד, מזהי חדרים והערות אחרות מנתוני היישום. הצעדים החיוניים הם לאתר את מרחב המודל, ליצור ישות CadText עם קואורדינטות ועיצוב מתאימים, ולעדכן את גבולות הציור לפני הייצוא.

השלב הבא הוא להחליף את תווית הדוגמה בקואורדינטות ובמזהים מהנתונים של השרטוט שלך. אמת את פלט ה‑DXF בעורך CAD והשתמש ב‑PDF כהעתק ביקורת, במיוחד כאשר מפעילים את זרימת העבודה על שרטוטים עם יחידות, שכבות או גופנים שונים.