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 Zeicheneinheiten. 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.
| Eigenschaft | Was es steuert | Beispiel |
|---|---|---|
default_value | Im Zeichen gezeigter Text | "VALVE V-101" |
first_alignment | Textposition in CAD-Koordinaten | Cad3DPoint(150.0, 80.0, 0.0) |
text_height | Texthöhe in Zeicheneinheiten | 3.0 |
scale_x | Horizontaler Textskalierungsfaktor | 1.0 |
style_type | Name des Textstils | "Standard" |
layer_name | Mit dem Text verbundene Ebene | "0" |
color_id | AutoCAD-Farbindexwert | 1 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 Zeichenentitä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:
- Aspose.CAD for Python Developer Guide – Erfahren Sie, wie Sie CAD-Dateien laden und verarbeiten.
- Aspose.CAD Python API Reference – Überprüfen Sie Klassen, Eigenschaften und Methoden, die in den Beispielen verwendet werden.
- Work with Text in CAD Drawings – Erfahren Sie mehr über CAD-Entitätstypen, die Text enthalten.
- Supported CAD File Formats – Bestätigen Sie die verfügbaren Eingabe- und Ausgabeformate.
- Free Online CAD Applications – Betrachten oder konvertieren Sie CAD-Dateien mit browserbasierten Tools.
- Aspose.CAD Support Forum – Stellen Sie Fragen zu bestimmten Zeichnungen oder dem API-Verhalten.
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.
