Přidání textu do výkresu DWG je často součástí většího inženýrského projektu. V některých případech můžete potřebovat označit zařízení, identifikovat místnosti, přidat odkazy na revize nebo umístit poznámky na předdefinované souřadnice. Když tyto údaje pocházejí z databáze nebo tabulky, ruční přidávání každého popisku v CAD editoru je zbytečná práce.
Aspose.CAD for Python via .NET vám umožňuje načíst výkres DWG, přidat textový prvek do jeho modelového prostoru a exportovat anotovaný obsah. V tomto tutoriálu přidáte text do výkresu DWG pomocí Pythonu, nastavíte jeho polohu a vzhled a výsledek uložíte jako DXF a PDF.
Instalace Aspose.CAD for Python via .NET
Potřebujete fungující prostředí Python, Aspose.CAD package, a DWG soubor k anotaci. AutoCAD není vyžadován pro spuštění tohoto příkladu.
Nainstalujte balíček pomocí pip:
pip install aspose-cad
Pro další podrobnosti o nastavení viz Aspose.CAD instalační průvodce.
Umístěte soubor DWG s názvem sample.dwg do stejné složky jako váš Python skript. Příklad používá souřadnice modelového prostoru (100, 100, 0) a výšku textu 5.0 výkresových jednotek. Možná bude potřeba upravit tyto hodnoty, aby odpovídaly vašemu výkresu.
Přidání textu do výkresu DWG v Pythonu
CAD výkresy ukládají text jako entity místo pixelů. Třída CadText představuje jednorázovou (jednořádkovou) entitu TEXT s vlastnostmi pro její obsah, umístění, výšku, styl a vrstvu. Přidání takové entity zachovává část anotace CAD modelu místo pouhého vykreslení slov na exportovaný obrázek.
Pracovní postup je načíst soubor DWG, najít jeho blok modelového prostoru, vytvořit entitu CadText, přidat ji do tohoto bloku, aktualizovat hranice výkresu a exportovat výsledek.
Kompletní kód v Pythonu pro vložení textu do výkresu DWG
Následující příklad byl testován s Aspose.CAD for Python via .NET. Přidá štítek Hello from Aspose.CAD Python do výkresu a vytvoří dva výstupní soubory.
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.")
Očekávaný výstup
Když skript úspěšně dokončí, vytvoří následující soubory vedle sample.dwg:
drawing_with_text.dxf— exportovaný CAD výkres s novým textovým prvkem, pokud to podporuje DXF writer.drawing_with_text.pdf— vygenerovaná kopie anotovaného výkresu pro revizi nebo sdílení.
Výstup konzole je:
DXF created: drawing_with_text.dxf
PDF created: drawing_with_text.pdf
Text added successfully.
Otevřete oba výstupní soubory a potvrďte, že popisek je viditelný a správně umístěný. Původní sample.dwg není upraven.
Jak funguje Python kód
Několik detailů v příkladu má význam, když přecházíte z jednoduchého testovacího kreslení na produkční soubor.
1. Načíst a převést DWG výkres
Metoda cad.Image.load() otevře zdrojový soubor. Příklad pak používá cast(CadImage, image), aby bylo možné přistupovat k načtenému výkresu prostřednictvím specifických vlastností CAD, včetně block_entities.
Příkaz with udržuje obrázek otevřený, dokud jsou jeho entity upravovány a exportovány, a poté uvolní prostředek, když zpracování skončí.
2. Najít blok modelového prostoru
DWG výkres může obsahovat více bloků. Nový text musí být přidán do bloku, který představuje zamýšlený výkresový prostor.
Příklad prochází cad_image.block_entities.values_typed a kontroluje jak block.name, tak block.original_block_name na výskyt *Model_Space, přičemž ignoruje velikost písmen. Tím se vyhýbá předpokladu, že modelový prostor lze vždy přistupovat pomocí přímého klíče slovníku.
Pokud nelze najít modelový prostor, skript vyvolá RuntimeError. To je vhodnější než tiše exportovat soubor bez nové anotace.
3. Vytvoření a umístění textové entity
CadText() vytváří novou jednořádkovou anotaci. Jeho vlastnost default_value ukládá viditelný text. Pozice pochází z Cad3DPoint(text_x, text_y, 0.0), přiřazená k first_alignment.
V tomto příkladu, text_height = 5.0 definuje výšku v jednotkách výkresu, a scale_x = 1.0 nastavuje horizontální měřítkový faktor. Entita používá textový styl Standard a vrstvu 0. Její ID barvy 256 znamená ByLayer, takže vrstva řídí její barvu.
Po nastavení těchto vlastností se model_space.add_entity(text_entity) vloží anotaci do modelového prostoru.
4. Přepočítat ohraničení kresby
Přidání textu může změnit oblast obsazenou kresleným obsahem. Níže uvedené volání aktualizuje ohraničení kresby před exportem:
cad_image.update_size(True)
Boolean argument je požadován API Pythonu použitého v tomto testovaném příkladu. Volání update_size() bez něj může vyvolat chybu chybějícího argumentu.
5. Exportovat anotovaný výkres
DxfOptions se používá k uložení výkresu jako DXF. CadRasterizationOptions řídí rozměry stránky pro vykreslování a PdfOptions vytváří PDF soubor.
Všimněte si, že rozměry PDF jsou zapsány jako 1600.0 a 1200.0, nikoli jako celá čísla. Testované vazby pro Python očekávají číselné hodnoty v tomto formátu pro tato nastavení.
Rozměry stránky řídí rozložení exportu; nejsou výškou textu ani skutečnými rozměry kresby.
Změňte pozici textu, výšku, barvu a styl
Můžete přizpůsobit entitu CadText změnou jejích vlastností před voláním add_entity().
| Vlastnost | Co ovládá | Příklad |
|---|---|---|
default_value | Text zobrazený v výkresu | "VALVE V-101" |
first_alignment | Pozice textu v CAD souřadnicích | Cad3DPoint(150.0, 80.0, 0.0) |
text_height | Výška textu v jednotkách výkresu | 3.0 |
scale_x | Horizontální měřítko textu | 1.0 |
style_type | Název textového stylu | "Standard" |
layer_name | Vrstva spojená s textem | "0" |
color_id | Hodnota AutoCAD Color Index | 1 pro červenou; 256 pro ByLayer |
Například změňte vlastnosti textu v hlavním skriptu, aby označovaly ventil:
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
Spusťte tento úryvek nastavení vlastností před model_space.add_entity(text_entity) v hlavním příkladu.
Používejte souřadnice, které odpovídají skutečnému výkresu. CAD výkresy často používají jednotky nebo souřadnicové systémy specifické pro projekt, takže (150, 80) může být uvnitř jednoho výkresu a daleko od geometrie v jiném. Stejně tak výška 3.0 není velikost písma tři body; je měřena v jednotkách výkresu.
Měli byste také použít textový styl a vrstvu, které existují ve zdrojovém výkresu. Příklad používá běžné výchozí hodnoty, ale výkresy s vlastním standardem mohou vyžadovat odlišné názvy.
Přidat více textových popisků do výkresu DWG
Jakmile funguje jeden štítek, můžete stejný přístup rozšířit na několik anotací. To je užitečné, když jsou identifikátory zařízení, názvy místností nebo odkazy na inspekce již uloženy jako strukturovaná data.
Například definujte popisky a jejich souřadnice vložení:
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)
Umístěte tento úryvek uvnitř bloku with, po nalezení modelového prostoru a před exporty DXF/PDF. Používá stejný vzor vytváření entit jako fungující příklad s jedním textem; varianta s více štítky zde nebyla samostatně testována.
Ve skutečné aplikaci by mohly být labels naplněny z CSV souboru, registru zařízení nebo databáze. Hlavní odpovědností vaší aplikace je poskytnout platné souřadnice a vhodné textové vlastnosti. Knihovna vloží entity na pozice, které určíte; automaticky nebrání překrývání popisků.
Uložit výkres s textem jako DXF nebo PDF
Formát, který si vyberete, závisí na tom, co se stane po anotaci.
Uložit jako DXF pro úpravy v CAD
Hlavní příklad používá DxfOptions k exportu výkresu:
dxf_options = DxfOptions()
cad_image.save("drawing_with_text.dxf", dxf_options)
DXF je užitečný, když další krok zahrnuje CAD aplikaci nebo jiný systém, který spotřebovává výkresové entity. Nicméně, Aspose.CAD’s supported-format table popisuje zápis DXF jako částečně podporovaný. Ověřte důležité anotace, vrstvy a geometrii v exportovaném souboru, než jej použijete v inženýrském pracovním postupu.
Uložit jako PDF pro prohlížení a sdílení
Pro designové revize, zprávy nebo distribuci dokumentů příklad také exportuje 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 je určeno pro prohlížení výsledného výkresu spíše než pro úpravu jeho CAD entit. Pokud potřebujete aktualizovaný soubor DWG, použijte samostatný kompatibilní CAD workflow k jeho vytvoření z vhodného meziformátu; přímé ukládání DWG není v Python API uvedeno.
Řešení problémů s vkládáním textu do souborů DWG
Vložený text není viditelný. Nejprve zkontrolujte souřadnice textu. Štítek mohl být umístěn mimo viditelnou geometrii. Také zkontrolujte viditelnost vrstvy, výšku textu a vybraný styl textu. Porovnejte výstupy DXF a PDF, abyste zjistili, zda se problém vyskytuje během vkládání entity nebo při vykreslování.
Skript nemůže najít modelový prostor. Příklad vyvolá Model space block was not found. pokud žádný název bloku neodpovídá *Model_Space. Prozkoumejte bloky ve zdrojovém souboru a potvrďte, že obsahuje data modelového prostoru ve očekávané struktuře. Nepokračujte s odkazem na chybějící blok.
update_size() hlásí chybějící argument. Použijte cad_image.update_size(True) jak je ukázáno v pracovním příkladu. Tento podpis je důležitý pro Python binding použité zde.
Rozměry stránky PDF vyvolávají typovou chybu. Předejte hodnoty s plovoucí desetinnou čárkou, například 1600.0 a 1200.0, do page_width a page_height v tomto pořadí.
Text vypadá jinak než v editoru CAD. Zkontrolujte styl textu výkresu a zda jsou odpovídající písma k dispozici v prostředí zpracování. Rendering se může lišit, pokud chybí očekávané písmo nebo je nahrazeno.
DXF obsahuje neočekávané rozdíly. Zápis DXF je podporován jen částečně. Otestujte s reprezentativními výkresy a zkontrolujte výsledné entity v CAD prohlížeči, než začleníte výstup do automatizovaného procesu.
Často kladené otázky
Mohu přidat text do souboru DWG pomocí Pythonu bez AutoCADu?
Ano. Aspose.CAD for Python via .NET může načíst výkres DWG a přidat entitu CadText bez AutoCADu. Příklad pak exportuje upravený výkres do formátů DXF a PDF.
Jak zadat pozici textu v DWG výkresu?
Nastavte first_alignment na objektu CadText pomocí Cad3DPoint(x, y, z). Vyberte hodnoty, které odpovídají vhodnému umístění v původním výkresu.
Mohu přidat text do konkrétní vrstvy?
Ano. Nastavte layer_name na název zamýšlené vrstvy. V hlavním příkladu anotace používá vrstvu 0 a ID barvy 256 (ByLayer).
Mohu automaticky přidat více textových popisků?
Ano. Vytvořte novou entitu CadText pro každé označení, nastavte její obsah a souřadnice a přidejte ji do modelového prostoru. Tento vzor může být řízen seznamem záznamů nebo jiným strukturovaným zdrojem dat.
Mohu upravený výkres uložit zpět do DWG?
Přímé ukládání DWG není uvedeno v Aspose.CAD for Python podporované formáty. Testovaný pracovní postup exportuje upravený výkres do DXF a PDF, přičemž zdrojový DWG zůstane nezměněn.
Získejte bezplatnou dočasnou licenci
Můžete požádat o bezplatnou 30‑denní dočasnou licenci, abyste mohli vyhodnotit Aspose.CAD for Python via .NET bez omezení vyhodnocování. Pro použití licence ve vaší Python aplikaci postupujte podle průvodce licencováním Aspose.CAD.
Bezplatné výukové zdroje
Prozkoumejte tyto zdroje pro více informací o zpracování CAD výkresů v Pythonu:
- Aspose.CAD for Python Developer Guide – Zjistěte, jak načíst a zpracovat CAD soubory.
- Aspose.CAD Python API Reference – Prohlédněte si třídy, vlastnosti a metody použité v příkladech.
- Work with Text in CAD Drawings – Zjistěte více o typech entit CAD obsahujících text.
- Supported CAD File Formats – Ověřte dostupné vstupní a výstupní formáty.
- Free Online CAD Applications – Prohlédněte nebo převádějte CAD soubory pomocí nástrojů v prohlížeči.
- Aspose.CAD Support Forum – Ptejte se na konkrétní výkresy nebo chování API.
Závěr
Přidání textu do výkresu DWG pomocí Pythonu je praktický způsob, jak generovat štítky zařízení, identifikátory místností a další anotace z dat aplikace. Základní kroky jsou najít modelový prostor, vytvořit entitu CadText s odpovídajícími souřadnicemi a stylem a aktualizovat hranice výkresu před exportem.
Dalším krokem je nahradit ukázkový štítek souřadnicemi a identifikátory z vašich vlastních výkresových dat. Ověřte výstup DXF v CAD editoru a použijte PDF jako revizní kopii, zejména při nasazování pracovního postupu napříč výkresy s různými jednotkami, vrstvami nebo fonty.
