Menambahkan teks ke gambar DWG sering menjadi bagian dari pekerjaan teknik yang lebih besar. Dalam beberapa kasus, Anda mungkin perlu memberi label pada peralatan, mengidentifikasi ruangan, menambahkan referensi revisi, atau menempatkan catatan pada koordinat yang telah ditentukan. Ketika detail tersebut berasal dari basis data atau spreadsheet, menambahkan setiap label secara manual di editor CAD merupakan pekerjaan yang tidak perlu.

Aspose.CAD for Python via .NET memungkinkan Anda memuat gambar DWG, menambahkan entitas teks ke ruang modelnya, dan mengekspor konten yang diberi anotasi. Dalam tutorial ini, Anda akan menambahkan teks ke gambar DWG menggunakan Python, mengatur posisinya dan penampilannya, serta menyimpan hasilnya sebagai DXF dan PDF.

Instal Aspose.CAD for Python via .NET

Anda memerlukan lingkungan Python yang berfungsi, Aspose.CAD package, dan file DWG untuk dianotasi. AutoCAD tidak diperlukan untuk menjalankan contoh ini.

Instal paket dengan pip:

pip install aspose-cad

Untuk detail pengaturan tambahan, lihat panduan instalasi Aspose.CAD.

Tempatkan file DWG bernama sample.dwg di folder yang sama dengan skrip Python Anda. Contoh ini menggunakan koordinat model‑space (100, 100, 0) dan tinggi teks 5.0 satuan gambar. Anda mungkin perlu menyesuaikan nilai‑nilai ini agar sesuai dengan gambar Anda.

Menambahkan Teks ke Gambar DWG dengan Python

Gambar CAD menyimpan teks sebagai entitas bukan sebagai piksel. Kelas CadText mewakili entitas TEXT satu baris, dengan properti untuk kontennya, lokasi, tinggi, gaya, dan lapisan. Menambahkan entitas semacam itu mempertahankan bagian anotasi dari model CAD alih‑alih hanya menggambar kata‑kata di atas gambar yang diekspor.

Alur kerja adalah memuat file DWG, menemukan blok model‑space‑nya, membuat entitas CadText, menambahkannya ke blok tersebut, memperbarui batas gambar, dan mengekspor hasilnya.

Kode Python Lengkap untuk Menyisipkan Teks dalam Gambar DWG

Contoh berikut telah diuji dengan Aspose.CAD for Python via .NET. Ini menambahkan label Hello from Aspose.CAD Python ke gambar dan menghasilkan dua file output.

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

Output yang Diharapkan

Ketika skrip selesai dengan sukses, ia membuat file‑file berikut di sebelah sample.dwg:

  • drawing_with_text.dxf — gambar CAD yang diekspor dengan entitas teks baru, bila didukung oleh penulis DXF.
  • drawing_with_text.pdf — salinan yang dirender dari gambar yang diberi anotasi untuk ditinjau atau dibagikan.

Output konsol adalah:

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

Buka kedua file output untuk memastikan bahwa label terlihat dan diposisikan dengan benar. File sample.dwg asli tidak dimodifikasi.

Cara Kerja Kode Python

Beberapa detail dalam contoh penting ketika Anda beralih dari gambar uji sederhana ke file produksi.

1. Muat dan Cast Gambar DWG

Metode cad.Image.load() membuka file sumber. Contohnya kemudian menggunakan cast(CadImage, image) sehingga gambar yang dimuat dapat diakses melalui properti khusus CAD, termasuk block_entities.

Pernyataan with menjaga gambar tetap terbuka sementara entitasnya dimodifikasi dan diekspor, kemudian melepaskan sumber daya ketika pemrosesan selesai.

2. Temukan Blok Model-Space

Sebuah gambar DWG dapat berisi beberapa blok. Teks baru harus ditambahkan ke blok yang mewakili ruang gambar yang dimaksud.

Contoh ini mengiterasi cad_image.block_entities.values_typed dan memeriksa baik block.name maupun block.original_block_name untuk *Model_Space, mengabaikan huruf besar/kecil. Ini menghindari asumsi bahwa ruang model selalu dapat diakses menggunakan kunci kamus langsung.

Jika ruang model tidak dapat ditemukan, skrip akan mengeluarkan RuntimeError. Ini lebih disukai daripada mengekspor file secara diam‑diam tanpa anotasi baru.

3. Buat dan Tempatkan Entitas Teks

CadText() membuat anotasi baris tunggal baru. Properti default_value-nya menyimpan teks yang terlihat. Posisi berasal dari Cad3DPoint(text_x, text_y, 0.0), yang ditetapkan ke first_alignment.

Dalam contoh ini, text_height = 5.0 mendefinisikan tinggi dalam satuan gambar, dan scale_x = 1.0 mengatur faktor skala horizontal. Entitas menggunakan gaya teks Standard dan lapisan 0. ID warna 256 berarti ByLayer, sehingga lapisan mengontrol warnanya.

Setelah properti‑properti ini diatur, model_space.add_entity(text_entity) menyisipkan anotasi ke dalam model space.

4. Hitung Ulang Batas Gambar

Menambahkan teks dapat mengubah area yang ditempati oleh konten gambar. Panggilan di bawah ini memperbarui batas gambar sebelum diekspor:

cad_image.update_size(True)

Argumen Boolean diperlukan oleh API Python yang digunakan dalam contoh yang diuji ini. Memanggil update_size() tanpa argumen tersebut dapat menghasilkan kesalahan argumen yang hilang.

5. Ekspor Gambar yang Diberi Anotasi

DxfOptions digunakan untuk menyimpan gambar sebagai DXF. CadRasterizationOptions mengontrol dimensi halaman untuk rendering, dan PdfOptions menghasilkan file PDF.

Perhatikan bahwa dimensi PDF ditulis sebagai 1600.0 dan 1200.0, bukan integer. Binding Python yang diuji mengharapkan nilai numerik dalam bentuk ini untuk setter tersebut.

Dimensi halaman mengontrol tata letak ekspor; mereka bukan tinggi teks atau dimensi dunia nyata dari gambar.

Ubah Posisi Teks, Tinggi, Warna, dan Gaya

Anda dapat menyesuaikan entitas CadText dengan mengubah propertinya sebelum memanggil add_entity().

PropertiApa yang dikendalikanContoh
default_valueTeks yang ditampilkan dalam gambar"VALVE V-101"
first_alignmentPosisi teks dalam koordinat CADCad3DPoint(150.0, 80.0, 0.0)
text_heightTinggi teks dalam satuan gambar3.0
scale_xFaktor skala teks horizontal1.0
style_typeNama gaya teks"Standard"
layer_nameLapisan yang terkait dengan teks"0"
color_idNilai Indeks Warna AutoCAD1 untuk merah; 256 untuk ByLayer

Misalnya, ubah properti teks dalam skrip utama untuk memberi label pada katup:

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

Jalankan potongan kode pengaturan properti ini sebelum model_space.add_entity(text_entity) dalam contoh utama.

Gunakan koordinat yang sesuai dengan gambar sebenarnya. Gambar CAD sering menggunakan satuan atau sistem koordinat khusus proyek, sehingga (150, 80) mungkin berada di dalam satu gambar dan jauh dari geometri di gambar lain. Demikian pula, tinggi 3.0 bukan ukuran font tiga poin; itu diukur dalam satuan gambar.

Anda juga harus menggunakan gaya teks dan lapisan yang ada dalam gambar sumber. Contohnya menggunakan nilai default umum, tetapi gambar dengan standar khusus mungkin memerlukan nama yang berbeda.

Tambahkan Beberapa Label Teks ke Gambar DWG

Setelah satu label berfungsi, Anda dapat memperluas pendekatan yang sama ke beberapa anotasi. Ini berguna ketika pengidentifikasi peralatan, nama ruangan, atau referensi inspeksi sudah disimpan sebagai data terstruktur.

Sebagai contoh, definisikan label dan koordinat penyisipannya:

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)

Letakkan potongan kode ini di dalam blok with, setelah ruang model ditemukan dan sebelum ekspor DXF/PDF. Ini menggunakan pola pembuatan entitas yang sama seperti contoh teks tunggal yang berfungsi; variasi multi‑label belum diuji secara terpisah di sini.

Dalam aplikasi nyata, labels dapat diisi dari file CSV, register peralatan, atau basis data. Tanggung jawab utama aplikasi Anda adalah menyediakan koordinat yang valid dan properti teks yang sesuai. Perpustakaan menyisipkan entitas pada posisi yang Anda tentukan; ia tidak secara otomatis mencegah tumpang tindih label.

Simpan Gambar dengan Teks sebagai DXF atau PDF

Format yang Anda pilih tergantung pada apa yang terjadi setelah anotasi.

Simpan sebagai DXF untuk Penyuntingan CAD

Contoh utama menggunakan DxfOptions untuk mengekspor gambar:

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

DXF berguna ketika langkah selanjutnya melibatkan aplikasi CAD atau sistem lain yang mengonsumsi entitas gambar. Namun, Aspose.CAD’s supported-format table menjelaskan penulisan DXF sebagai sebagian didukung. Validasi anotasi penting, lapisan, dan geometri dalam file yang diekspor sebelum menggunakannya dalam alur kerja rekayasa.

Simpan sebagai PDF untuk Dilihat dan Dibagikan

Untuk tinjauan desain, laporan, atau distribusi dokumen, contoh ini juga mengekspor 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 dimaksudkan untuk melihat gambar yang dihasilkan daripada mengedit entitas CAD‑nya. Jika Anda memerlukan file DWG yang diperbarui, gunakan alur kerja CAD yang kompatibel terpisah untuk menghasilkan file tersebut dari format perantara yang sesuai; penyimpanan DWG langsung tidak tercantum untuk API Python.

Memecahkan Masalah Penyisipan Teks dalam File DWG

Teks yang dimasukkan tidak terlihat. Periksa koordinat teks terlebih dahulu. Label mungkin telah ditempatkan di luar geometri yang terlihat. Juga periksa visibilitas lapisan, tinggi teks, dan gaya teks yang dipilih. Bandingkan output DXF dan PDF untuk mengidentifikasi apakah masalah terjadi selama penyisipan entitas atau rendering.

Skrip tidak dapat menemukan ruang model. Contoh ini menghasilkan Model space block was not found. jika tidak ada nama blok yang cocok dengan *Model_Space. Periksa blok-blok dalam file sumber dan pastikan bahwa file tersebut berisi data ruang model dalam struktur yang diharapkan. Jangan melanjutkan dengan referensi blok yang hilang.

update_size() melaporkan argumen yang hilang. Gunakan cad_image.update_size(True) seperti yang ditunjukkan dalam contoh yang berfungsi. Tanda tangan ini penting untuk binding Python yang digunakan di sini.

Dimensi halaman PDF memicu kesalahan tipe. Berikan nilai floating-point seperti 1600.0 dan 1200.0 ke page_width dan page_height, masing-masing.

Teks terlihat berbeda dari editor CAD. Periksa gaya teks gambar dan apakah font yang sesuai tersedia di lingkungan pemrosesan. Rendering dapat berbeda jika font yang diharapkan hilang atau diganti.

DXF berisi perbedaan yang tidak terduga. Penulisan DXF hanya didukung sebagian. Uji dengan gambar representatif dan tinjau entitas yang dihasilkan di penampil CAD sebelum mengintegrasikan output ke dalam proses otomatis.

Pertanyaan yang Sering Diajukan

Bisakah saya menambahkan teks ke file DWG dengan Python tanpa AutoCAD?

Ya. Aspose.CAD for Python via .NET dapat memuat gambar DWG dan menambahkan entitas CadText tanpa AutoCAD. Contoh tersebut kemudian mengekspor gambar yang telah dimodifikasi ke DXF dan PDF.

Bagaimana cara menentukan posisi teks dalam gambar DWG?

Set first_alignment pada objek CadText menggunakan Cad3DPoint(x, y, z). Pilih nilai yang sesuai dengan lokasi yang tepat dalam gambar asli.

Bisakah saya menambahkan teks ke lapisan tertentu?

Ya. Setel layer_name ke nama lapisan yang dimaksud. Dalam contoh utama, anotasi menggunakan lapisan 0 dan ID warna 256 (ByLayer).

Bisakah saya menambahkan beberapa label teks secara otomatis?

Ya. Buat entitas CadText baru untuk setiap label, atur kontennya dan koordinatnya, lalu tambahkan ke ruang model. Pola ini dapat didorong oleh daftar catatan atau sumber data terstruktur lainnya.

Apakah saya dapat menyimpan gambar yang dimodifikasi kembali ke DWG?

Direct DWG saving is not listed in the Aspose.CAD for Python format yang didukung. Alur kerja yang diuji mengekspor gambar yang dimodifikasi ke DXF dan PDF, meninggalkan DWG sumber tidak berubah.

Dapatkan Lisensi Sementara Gratis

Anda dapat meminta lisensi sementara gratis selama 30 hari untuk mengevaluasi Aspose.CAD for Python via .NET tanpa batasan evaluasi. Untuk menerapkan lisensi dalam aplikasi Python Anda, ikuti panduan lisensi Aspose.CAD.

Sumber Belajar Gratis

Jelajahi sumber daya ini untuk informasi lebih lanjut tentang pemrosesan gambar CAD di Python:

Kesimpulan

Menambahkan teks ke gambar DWG menggunakan Python adalah cara praktis untuk menghasilkan label peralatan, pengidentifikasi ruangan, dan anotasi lainnya dari data aplikasi. Langkah‑langkah pentingnya adalah menemukan model space, membuat entitas CadText dengan koordinat dan gaya yang sesuai, serta memperbarui batas gambar sebelum diekspor.

Langkah selanjutnya adalah mengganti label contoh dengan koordinat dan pengidentifikasi dari data gambar Anda sendiri. Verifikasi output DXF di editor CAD dan gunakan PDF sebagai salinan tinjauan, terutama saat menerapkan alur kerja pada gambar dengan satuan, lapisan, atau font yang berbeda.