Das Hinzufügen von Text zu einer DWG Zeichnung ist oft Teil einer größeren ingenieurtechnischen Arbeit. In bestimmten Fällen müssen Sie möglicherweise Geräte beschriften, Räume identifizieren, Revisionsverweise hinzufügen oder Notizen an vordefinierten Koordinaten platzieren. Wenn diese Details aus einer Datenbank oder einer Tabellenkalkulation stammen, ist das manuelle Hinzufügen jeder Beschriftung in einem CAD-Editor unnötige Arbeit.

Aspose.CAD for Python via .NET ermöglicht das Laden einer DWG‑Zeichnung, das Hinzufügen eines Textelements zu ihrem Modellraum und das Exportieren des annotierten Inhalts. In diesem Tutorial werden Sie Text zu einer DWG‑Zeichnung mit Python hinzufügen, seine Position und sein Aussehen festlegen und das Ergebnis als DXF und PDF speichern.

Installieren Aspose.CAD for Python via .NET

Sie benötigen eine funktionierende Python‑Umgebung, Aspose.CAD package, und eine DWG‑Datei zum Annotieren. AutoCAD ist nicht erforderlich, um dieses Beispiel auszuführen.

Installieren Sie das Paket mit pip:

pip install aspose-cad

Für weitere Einrichtungsdetails siehe die Aspose.CAD Installationsanleitung.

Platzieren Sie eine DWG‑Datei mit dem Namen sample.dwg im selben Ordner wie Ihr Python‑Skript. Das Beispiel verwendet Modell‑Raum‑Koordinaten (100, 100, 0) und eine Texthöhe von 5.0 Zeichen­einheiten. Möglicherweise müssen Sie diese Werte an Ihre Zeichnung anpassen.

Text zu einer DWG-Zeichnung in Python hinzufügen

CAD-Zeichnungen speichern Text als Entitäten statt als Pixel. Die Klasse CadText stellt eine einzeilige TEXT‑Entität dar und verfügt über Eigenschaften für ihren Inhalt, ihre Position, Höhe, Stil und Ebene. Das Hinzufügen einer solchen Entität bewahrt den Anmerkungsteil des CAD‑Modells, anstatt lediglich Wörter über ein exportiertes Bild zu zeichnen.

Der Arbeitsablauf besteht darin, die DWG‑Datei zu laden, ihren Model‑Space‑Block zu finden, ein CadText‑Entität zu erstellen, sie zu diesem Block hinzuzufügen, die Zeichenbereichsgrenzen zu aktualisieren und das Ergebnis zu exportieren.

Vollständiger Python-Code zum Einfügen von Text in eine DWG-Zeichnung

Das folgende Beispiel wurde mit Aspose.CAD for Python via .NET getestet. Es fügt der Zeichnung das Label Hello from Aspose.CAD Python hinzu und erzeugt zwei Ausgabedateien.

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.")

Erwartete Ausgabe

Wenn das Skript erfolgreich abgeschlossen ist, erstellt es die folgenden Dateien neben sample.dwg:

  • drawing_with_text.dxf — die exportierte CAD‑Zeichnung mit dem neuen Textelement, sofern vom DXF‑Writer unterstützt.
  • drawing_with_text.pdf — eine gerenderte Kopie der annotierten Zeichnung zur Überprüfung oder zum Teilen.

Die Konsolenausgabe ist:

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

Öffnen Sie beide Ausgabedateien, um zu bestätigen, dass das Label sichtbar und korrekt positioniert ist. Die Originaldatei sample.dwg wird nicht geändert.

Wie der Python-Code funktioniert

Einige Details im Beispiel sind wichtig, wenn Sie von einer einfachen Testzeichnung zu einer Produktionsdatei wechseln.

1. Laden und Casten der DWG-Zeichnung

Die Methode cad.Image.load() öffnet die Quelldatei. Das Beispiel verwendet dann cast(CadImage, image), damit auf die geladene Zeichnung über CAD‑spezifische Eigenschaften zugegriffen werden kann, einschließlich block_entities.

Die with-Anweisung hält das Bild geöffnet, während seine Entitäten geändert und exportiert werden, und gibt dann die Ressource frei, wenn die Verarbeitung abgeschlossen ist.

2. Finden Sie den Modellbereich-Block

Eine DWG‑Zeichnung kann mehrere Blöcke enthalten. Der neue Text muss zu dem Block hinzugefügt werden, der den beabsichtigten Zeichenbereich darstellt.

Das Beispiel iteriert durch cad_image.block_entities.values_typed und prüft sowohl block.name als auch block.original_block_name auf *Model_Space, wobei die Groß‑/Kleinschreibung ignoriert wird. Dadurch wird vermieden, anzunehmen, dass der Modellraum immer über einen direkten Wörterbuchschlüssel zugänglich ist.

Wenn der Modellbereich nicht gefunden werden kann, löst das Skript einen RuntimeError aus. Dies ist vorzuziehen, anstatt stillschweigend eine Datei ohne die neue Anmerkung zu exportieren.

3. Erstellen und Positionieren des Textelements

CadText() erstellt die neue einzeilige Annotation. Die default_value‑Eigenschaft speichert den sichtbaren Text. Die Position stammt von Cad3DPoint(text_x, text_y, 0.0), zugewiesen zu first_alignment.

In diesem Beispiel definiert text_height = 5.0 die Höhe in Zeichnungseinheiten, und scale_x = 1.0 legt den horizontalen Skalierungsfaktor fest. Das Entity verwendet den Textstil Standard und die Ebene 0. Seine Farb‑ID von 256 bedeutet ByLayer, sodass die Ebene ihre Farbe steuert.

Nachdem diese Eigenschaften festgelegt wurden, fügt model_space.add_entity(text_entity) die Annotation in den Modellbereich ein.

4. Zeichnungsgrenzen neu berechnen

Das Hinzufügen von Text kann den von Zeicheninhalten belegten Bereich ändern. Der untenstehende Aufruf aktualisiert die Zeichenbegrenzungen vor dem Export:

cad_image.update_size(True)

Das boolesche Argument ist für die in diesem getesteten Beispiel verwendete Python‑API erforderlich. Der Aufruf von update_size() ohne dieses Argument kann einen Fehler wegen fehlender Argumente verursachen.

5. Exportieren der annotierten Zeichnung

DxfOptions wird verwendet, um die Zeichnung als DXF zu speichern. CadRasterizationOptions steuert die Seitenabmessungen für das Rendern, und PdfOptions erzeugt die PDF‑Datei.

Beachten Sie, dass die PDF‑Abmessungen als 1600.0 und 1200.0 geschrieben sind, nicht als Ganzzahlen. Die getesteten Python‑Bindings erwarten numerische Werte in dieser Form für diese Setter.

Die Seitenabmessungen steuern das Exportlayout; sie sind nicht die Texthöhe oder die realen Abmessungen der Zeichnung.

Textposition, Höhe, Farbe und Stil ändern

Sie können eine CadText-Entität anpassen, indem Sie ihre Eigenschaften ändern, bevor Sie add_entity() aufrufen.

EigenschaftWas es steuertBeispiel
default_valueIm Zeichen gezeigter Text"VALVE V-101"
first_alignmentTextposition in CAD-KoordinatenCad3DPoint(150.0, 80.0, 0.0)
text_heightTexthöhe in Zeichen­einheiten3.0
scale_xHorizontaler Textskalierungsfaktor1.0
style_typeName des Textstils"Standard"
layer_nameMit dem Text verbundene Ebene"0"
color_idAutoCAD-Farbindexwert1 für Rot; 256 für ByLayer

Zum Beispiel ändern Sie die Texteigenschaften im Hauptskript, um ein Ventil zu beschriften:

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

Führen Sie diesen Property‑Einstellungs‑Snippet vor model_space.add_entity(text_entity) im Hauptbeispiel aus.

Verwenden Sie Koordinaten, die mit der tatsächlichen Zeichnung übereinstimmen. CAD‑Zeichnungen verwenden häufig projektspezifische Einheiten oder Koordinatensysteme, sodass (150, 80) in einer Zeichnung innerhalb liegen kann und in einer anderen weit von der Geometrie entfernt ist. Ebenso ist eine Höhe von 3.0 keine Schriftgröße von drei Punkten; sie wird in Zeichnungseinheiten gemessen.

Sie sollten außerdem einen Textstil und eine Ebene verwenden, die im Quellzeichnung existieren. Das Beispiel verwendet gängige Vorgaben, aber Zeichnungen mit benutzerdefinierten Standards können unterschiedliche Namen erfordern.

Mehrere Textbeschriftungen zu einer DWG‑Zeichnung hinzufügen

Sobald ein einzelnes Label funktioniert, können Sie denselben Ansatz auf mehrere Anmerkungen ausweiten. Dies ist nützlich, wenn Gerätekennungen, Raumnamen oder Inspektionsreferenzen bereits als strukturierte Daten gespeichert sind.

Zum Beispiel definieren Sie die Beschriftungen und deren Einfügekoordinaten:

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)

Platzieren Sie diesen Ausschnitt innerhalb des with-Blocks, nachdem der Modellraum gefunden wurde und vor den DXF/PDF-Exporten. Er verwendet dasselbe Muster zur Entitätserstellung wie das funktionierende Einzeltext‑Beispiel; die Multi‑Label‑Variante wurde hier nicht separat getestet.

In einer realen Anwendung könnten labels aus einer CSV‑Datei, einem Geräteregister oder einer Datenbank befüllt werden. Die Hauptverantwortung Ihrer Anwendung besteht darin, gültige Koordinaten und geeignete Texteigenschaften bereitzustellen. Die Bibliothek fügt die Entitäten an den von Ihnen angegebenen Positionen ein; sie verhindert nicht automatisch Label‑Überlappungen.

Zeichnung mit Text als DXF oder PDF speichern

Das gewählte Format hängt davon ab, was nach der Annotation geschieht.

Als DXF speichern für CAD-Bearbeitung

Das Hauptbeispiel verwendet DxfOptions, um die Zeichnung zu exportieren:

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

DXF ist nützlich, wenn der nächste Schritt eine CAD‑Anwendung oder ein anderes System beinhaltet, das Zeichen­entitäten verarbeitet. Allerdings beschreibt die Aspose.CAD unterstützte Format‑Tabelle das Schreiben von DXF als teilweise unterstützt. Validieren Sie wichtige Anmerkungen, Ebenen und Geometrie in der exportierten Datei, bevor Sie sie in einem Engineering‑Workflow verwenden.

Als PDF speichern zum Anzeigen und Teilen

Für Design‑Reviews, Berichte oder die Dokumentenverteilung exportiert das Beispiel ebenfalls ein 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 ist zum Anzeigen der resultierenden Zeichnung gedacht und nicht zum Bearbeiten ihrer CAD‑Entitäten. Wenn Sie eine aktualisierte DWG‑Datei benötigen, verwenden Sie einen separaten kompatiblen CAD‑Workflow, um sie aus einem geeigneten Zwischenformat zu erzeugen; das direkte Speichern von DWG wird für die Python‑API nicht aufgeführt.

Fehlerbehebung bei der Texteinfügung in DWG-Dateien

Der eingefügte Text ist nicht sichtbar. Überprüfen Sie zuerst die Textkoordinaten. Das Etikett könnte außerhalb der sichtbaren Geometrie platziert worden sein. Prüfen Sie außerdem die Sichtbarkeit der Ebene, die Texthöhe und den ausgewählten Textstil. Vergleichen Sie die DXF- und PDF-Ausgaben, um festzustellen, ob das Problem beim Einfügen des Elements oder bei der Darstellung auftritt.

Das Skript kann den Modellbereich nicht finden. Das Beispiel löst Model space block was not found. aus, wenn kein Blockname *Model_Space entspricht. Überprüfen Sie die Blöcke in der Quelldatei und bestätigen Sie, dass sie Modelldaten im erwarteten Aufbau enthält. Fahren Sie nicht fort, wenn ein Block fehlt.

update_size() meldet ein fehlendes Argument. Verwenden Sie cad_image.update_size(True) wie im funktionierenden Beispiel gezeigt. Diese Signatur ist für die hier verwendete Python‑Bindung wichtig.

PDF-Seitenabmessungen lösen einen Typfehler aus. Übergeben Sie Fließkommawerte wie 1600.0 und 1200.0 an page_width und page_height jeweils.

Der Text sieht anders aus als im CAD-Editor. Überprüfen Sie den Textstil der Zeichnung und ob die entsprechenden Schriftarten in der Verarbeitungsumgebung verfügbar sind. Das Rendering kann abweichen, wenn die erwartete Schriftart fehlt oder ersetzt wird.

Das DXF enthält unerwartete Unterschiede. Das Schreiben von DXF wird nur teilweise unterstützt. Testen Sie mit repräsentativen Zeichnungen und überprüfen Sie die resultierenden Entitäten in einem CAD‑Viewer, bevor Sie die Ausgabe in einen automatisierten Prozess integrieren.

Frequently Asked Questions

Kann ich Text zu einer DWG-Datei mit Python hinzufügen, ohne AutoCAD?

Ja. Aspose.CAD for Python via .NET kann eine DWG‑Zeichnung laden und eine CadText‑Entität hinzufügen, ohne AutoCAD zu verwenden. Das Beispiel exportiert dann die modifizierte Zeichnung nach DXF und PDF.

Wie kann ich die Position von Text in einer DWG‑Zeichnung festlegen?

Setzen Sie first_alignment im CadText‑Objekt mithilfe von Cad3DPoint(x, y, z). Wählen Sie Werte, die einem geeigneten Ort in der ursprünglichen Zeichnung entsprechen.

Kann ich Text zu einer bestimmten Ebene hinzufügen?

Ja. Setzen Sie layer_name auf den Namen der gewünschten Ebene. Im Hauptbeispiel verwendet die Anmerkung die Ebene 0 und die Farb‑ID 256 (ByLayer).

Kann ich mehrere Textbeschriftungen automatisch hinzufügen?

Ja. Erstellen Sie für jedes Label eine neue CadText‑Entität, setzen Sie deren Inhalt und Koordinaten und fügen Sie sie dem Modellraum hinzu. Dieses Muster kann durch eine Liste von Datensätzen oder eine andere strukturierte Datenquelle gesteuert werden.

Kann ich die geänderte Zeichnung wieder als DWG speichern?

Direktes DWG‑Speichern ist nicht in den Aspose.CAD for Python unterstützten Formaten aufgeführt. Der getestete Workflow exportiert die modifizierte Zeichnung nach DXF und PDF, wobei die ursprüngliche DWG unverändert bleibt.

Kostenlose temporäre Lizenz erhalten

Sie können eine kostenlose 30‑tägige temporäre Lizenz anfordern, um Aspose.CAD for Python via .NET ohne Evaluierungsbeschränkungen zu evaluieren. Um die Lizenz in Ihrer Python‑Anwendung anzuwenden, folgen Sie dem Aspose.CAD-Lizenzierungsleitfaden.

Kostenlose Lernressourcen

Entdecken Sie diese Ressourcen für weitere Informationen zur Verarbeitung von CAD‑Zeichnungen in Python:

Fazit

Das Hinzufügen von Text zu einer DWG‑Zeichnung mit Python ist eine praktische Methode, um Gerätebeschriftungen, Raumkennzeichnungen und andere Anmerkungen aus Anwendungsdaten zu erzeugen. Die wesentlichen Schritte bestehen darin, den Modellbereich zu finden, ein CadText‑Entität mit geeigneten Koordinaten und Stil zu erstellen und die Zeichenbegrenzungen vor dem Export zu aktualisieren.

Der nächste Schritt besteht darin, das Beispiel‑Label durch Koordinaten und Bezeichner aus Ihren eigenen Zeichnungsdaten zu ersetzen. Überprüfen Sie die DXF‑Ausgabe in einem CAD‑Editor und verwenden Sie das PDF als Prüfexemplar, insbesondere wenn Sie den Workflow über Zeichnungen mit unterschiedlichen Einheiten, Ebenen oder Schriftarten hinweg einsetzen.