Bir DWG çizimine metin eklemek, genellikle daha büyük bir mühendislik çalışmasının parçasıdır. Belirli durumlarda, ekipmanı etiketlemeniz, odaları tanımlamanız, revizyon referansları eklemeniz veya önceden tanımlanmış koordinatlarda notlar yerleştirmeniz gerekebilir. Bu detaylar bir veritabanı veya elektronik tablo üzerinden geldiğinde, CAD editöründe her etiketi manuel olarak eklemek gereksiz bir iştir.

Aspose.CAD for Python via .NET DWG çizimini yüklemenizi, model alanına bir metin varlığı eklemenizi ve açıklamalı içeriği dışa aktarmanızı sağlar. Bu öğreticide, Python kullanarak bir DWG çizimine metin ekleyeceksiniz, konumunu ve görünümünü ayarlayacak ve sonucu DXF ve PDF olarak kaydedeceksiniz.

Kur Aspose.CAD for Python via .NET

Çalışan bir Python ortamına, Aspose.CAD package ve açıklama eklemek için bir DWG dosyasına ihtiyacınız var. Bu örneği çalıştırmak için AutoCAD gerekli değildir.

Paketi pip ile kurun:

pip install aspose-cad

Ek kurulum ayrıntıları için, Aspose.CAD kurulum kılavuzu adresine bakın.

Python betiğinizle aynı klasöre sample.dwg adlı bir DWG dosyası yerleştirin. Örnek, model‑uzayı koordinatları (100, 100, 0) ve 5.0 çizim birimi yüksekliğinde bir metin kullanır. Çiziminize uyacak şekilde bu değerleri ayarlamanız gerekebilir.

Python’da DWG Çizimine Metin Ekle

CAD çizimleri metni pikseller yerine varlıklar olarak depolar. CadText sınıfı, içeriği, konumu, yüksekliği, stili ve katmanı için özelliklere sahip tek satırlık TEXT varlığını temsil eder. Böyle bir varlık eklemek, CAD modelinin açıklama kısmını korur; sadece dışa aktarılan bir resim üzerine kelimeler çizmeyi sağlamaz.

İş akışı, DWG dosyasını yüklemek, model‑uzay bloğunu bulmak, bir CadText varlığı oluşturmak, bu bloğa eklemek, çizim sınırlarını güncellemek ve sonucu dışa aktarmaktır.

DWG Çizimine Metin Eklemek için Tam Python Kodu

Aşağıdaki örnek, Aspose.CAD for Python via .NET ile test edilmiştir. Çizime Hello from Aspose.CAD Python etiketini ekler ve iki çıktı dosyası üretir.

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

Beklenen Çıktı

Komut dosyası başarıyla tamamlandığında, sample.dwg dosyasının yanında aşağıdaki dosyaları oluşturur:

  • drawing_with_text.dxf — yeni metin varlığıyla dışa aktarılan CAD çizimi, DXF yazarı tarafından destekleniyorsa.
  • drawing_with_text.pdf — notlandırılmış çizimin inceleme veya paylaşım için render edilmiş bir kopyası.

Konsol çıktısı:

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

Her iki çıktı dosyasını da açın ve etiketin görünür ve doğru konumlandırılmış olduğunu doğrulayın. Orijinal sample.dwg değiştirilmemiştir.

Python Kodunun Nasıl Çalıştığı

Örnekteki birkaç detay, basit bir test çiziminden üretim dosyasına geçerken önemlidir.

1. DWG Çizimini Yükle ve Dönüştür

cad.Image.load() yöntemi kaynak dosyayı açar. Örnek daha sonra cast(CadImage, image) kullanır, böylece yüklü çizim, block_entities dahil CAD’e özgü özellikler aracılığıyla erişilebilir.

with ifadesi, görüntüyü açık tutar, varlıkları değiştirilip dışa aktarıldıktan sonra, işlem tamamlandığında kaynağı serbest bırakır.

2. Model-Etki Alanı Bloğunu Bul

Bir DWG çizimi birden fazla blok içerebilir. Yeni metin, amaçlanan çizim alanını temsil eden bloğa eklenmelidir.

Örnek, cad_image.block_entities.values_typed üzerinden yineleme yapar ve *Model_Space için hem block.name hem de block.original_block_name değerlerini büyük/küçük harfe duyarsız olarak kontrol eder. Bu, model alanına her zaman doğrudan bir sözlük anahtarıyla erişilebileceği varsayımını önler.

Model alanı bulunamazsa, betik bir RuntimeError hatası fırlatır. Bu, yeni ek açıklama olmadan bir dosyanın sessizce dışa aktarılmasından daha tercih edilir.

3. Metin Varlığını Oluşturma ve Konumlandırma

CadText() yeni tek satırlı açıklamayı oluşturur. default_value özelliği görünen metni depolar. Konum, first_alignment‘a atanan Cad3DPoint(text_x, text_y, 0.0)‘dan gelir.

Bu örnekte, text_height = 5.0 çizim birimlerinde yüksekliği tanımlar ve scale_x = 1.0 yatay ölçek faktörünü ayarlar. Varlık Standard metin stilini ve katman 0‘ı kullanır. 256 renk kimliği ByLayer anlamına gelir, bu yüzden katman rengini kontrol eder.

Bu özellikler ayarlandıktan sonra, model_space.add_entity(text_entity) ek açıklamayı model alanına ekler.

4. Çizim Sınırlarını Yeniden Hesapla

Metin eklemek, çizim içeriğinin kapladığı alanı değiştirebilir. Aşağıdaki çağrı, dışa aktarmadan önce çizim sınırlarını günceller:

cad_image.update_size(True)

Boolean argümanı, bu test edilen örnekte kullanılan Python API’si tarafından gereklidir. update_size()‘i argümansız çağırmak eksik argüman hatasına neden olabilir.

5. İşaretlenmiş Çizimi Dışa Aktar

DxfOptions çizimi DXF olarak kaydetmek için kullanılır. CadRasterizationOptions render için sayfa boyutlarını kontrol eder ve PdfOptions PDF dosyasını üretir.

PDF boyutlarının 1600.0 ve 1200.0 olarak yazıldığını, tam sayı olmadığını unutmayın. Test edilen Python bağlamaları, bu ayarlayıcılar için değerlerin bu biçimde sayısal olmasını bekler.

Sayfa boyutları dışa aktarma düzenini kontrol eder; değil metin yüksekliği ya da çizimin gerçek dünya boyutlarıdır.

Metin Konumunu, Yüksekliğini, Rengini ve Stilini Değiştir

Bir CadText varlığını, add_entity() çağırmadan önce özelliklerini değiştirerek özelleştirebilirsiniz.

ÖzellikNe kontrol ederÖrnek
default_valueÇizimde gösterilen metin"VALVE V-101"
first_alignmentCAD koordinatlarındaki metin konumuCad3DPoint(150.0, 80.0, 0.0)
text_heightÇizim birimlerindeki metin yüksekliği3.0
scale_xYatay metin ölçek faktörü1.0
style_typeMetin stilinin adı"Standard"
layer_nameMetinle ilişkili katman"0"
color_idAutoCAD Renk Dizini değeri1 kırmızı için; 256 ByLayer için

Örneğin, bir valf etiketlemek için ana betikteki metin özelliklerini değiştirin:

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

Bu özellik ayarlama kod parçacığını ana örnekte model_space.add_entity(text_entity) öncesinde çalıştırın.

Gerçek çizime uyan koordinatları kullanın. CAD çizimleri genellikle proje‑özel birimler veya koordinat sistemleri kullanır, bu nedenle (150, 80) bir çizimde içinde olabilirken başka birinde geometriden uzakta olabilir. Benzer şekilde, 3.0 yüksekliği üç puanlık bir yazı tipi boyutu değildir; çizim birimlerinde ölçülür.

Kaynak çizimde mevcut olan bir metin stilini ve katmanı da kullanmalısınız. Örnek yaygın varsayılanları kullanır, ancak özel standartlara sahip çizimler farklı adlar gerektirebilir.

DWG Çizimine Birden Çok Metin Etiketi Ekle

Tek bir etiket çalıştığında, aynı yaklaşımı birden fazla açıklamaya genişletebilirsiniz. Bu, ekipman tanımlayıcıları, oda adları veya denetim referansları zaten yapılandırılmış veri olarak depolandığında faydalıdır.

Örneğin, etiketleri ve ekleme koordinatlarını tanımlayın:

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)

Bu kod parçacığını with bloğunun içinde, model alanı bulunduktan ve DXF/PDF dışa aktarımları öncesinde yerleştirin. Çalışan tek metin örneğiyle aynı varlık oluşturma desenini kullanır; çoklu etiket varyasyonu burada ayrı ayrı test edilmemiştir.

Gerçek bir uygulamada, labels bir CSV dosyasından, bir ekipman kaydından veya bir veritabanından doldurulabilir. Uygulamanızın temel sorumluluğu geçerli koordinatlar ve uygun metin özellikleri sağlamaktır. Kütüphane, belirttiğiniz konumlara varlıkları ekler; etiket çakışmalarını otomatik olarak önlemez.

Metinli Çizimi DXF veya PDF Olarak Kaydet

Seçtiğiniz format, eklemeden sonra ne olacağına bağlıdır.

DXF olarak kaydetme CAD düzenleme için

Ana örnek, çizimi dışa aktarmak için DxfOptions kullanır:

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

DXF, bir sonraki adım bir CAD uygulaması veya çizim varlıklarını tüketen başka bir sistem içerdiğinde faydalıdır. Ancak, Aspose.CAD’ın desteklenen format tablosu DXF yazımını kısmen destekleniyor olarak tanımlar. Mühendislik iş akışında kullanmadan önce dışa aktarılan dosyadaki önemli açıklamaları, katmanları ve geometrileri doğrulayın.

Görünüm ve Paylaşım için PDF olarak Kaydet

Tasarım incelemeleri, raporlar veya belge dağıtımı için örnek ayrıca bir PDF dışa aktarır:

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, ortaya çıkan çizimi düzenlemekten ziyade görüntülemek için tasarlanmıştır. Güncellenmiş bir DWG dosyasına ihtiyacınız varsa, uygun bir ara format üzerinden üretmek için ayrı bir uyumlu CAD iş akışı kullanın; doğrudan DWG kaydetme Python API’si için listelenmemiştir.

DWG Dosyalarında Metin Ekleme Sorun Giderme

Eklenen metin görünür değil. İlk olarak metin koordinatlarını kontrol edin. Etiket, görünür geometri dışına yerleştirilmiş olabilir. Ayrıca katmanın görünürlüğünü, metin yüksekliğini ve seçilen metin stilini inceleyin. Sorunun varlık ekleme sırasında mı yoksa renderleme sırasında mı ortaya çıktığını belirlemek için DXF ve PDF çıktıları karşılaştırın.

Betik model alanını bulamıyor. Örnek, blok adlarından hiçbiri *Model_Space ile eşleşmezse Model space block was not found. hatasını verir. Kaynak dosyadaki blokları inceleyin ve beklenen yapıda model-uzayı verisi içerdiğini doğrulayın. Eksik bir blok referansı ile devam etmeyin.

update_size() eksik bir argüman bildiriyor. Çalışan örnekte gösterildiği gibi cad_image.update_size(True) kullanın. Bu imza burada kullanılan Python bağlaması için önemlidir.

PDF sayfa boyutları bir tip hatası tetikler. page_width ve page_height parametrelerine sırasıyla 1600.0 ve 1200.0 gibi kayan nokta değerleri geçin.

Metin CAD düzenleyicisinden farklı görünüyor. Çizimin metin stilini ve ilgili yazı tiplerinin işleme ortamında mevcut olup olmadığını kontrol edin. Beklenen yazı tipi eksik veya yerine başka bir yazı tipi konulmuşsa renderleme farklılık gösterebilir.

DXF beklenmeyen farklılıklar içeriyor. DXF yazımı yalnızca kısmen desteklenir. Temsilci çizimlerle test edin ve çıktıyı otomatik bir sürece entegre etmeden önce bir CAD görüntüleyicide oluşan varlıkları inceleyin.

Sıkça Sorulan Sorular

Python ile AutoCAD olmadan bir DWG dosyasına metin ekleyebilir miyim?

Evet. Aspose.CAD for Python via .NET, bir DWG çizimini yükleyebilir ve AutoCAD olmadan bir CadText varlığı ekleyebilir. Örnek daha sonra değiştirilmiş çizimi DXF ve PDF olarak dışa aktarır.

DWG çiziminde metnin konumunu nasıl belirlerim?

CadText nesnesinde first_alignment özelliğini Cad3DPoint(x, y, z) kullanarak ayarlayın. Orijinal çizimde uygun bir konuma karşılık gelen değerleri seçin.

Belirli bir katmana metin ekleyebilir miyim?

Evet. layer_name değişkenini hedef katmanın adı olarak ayarlayın. Ana örnekte, açıklama katman 0 ve renk kimliği 256 (ByLayer) kullanır.

Metin etiketlerini otomatik olarak birden fazla ekleyebilir miyim?

Evet. Her etiket için yeni bir CadText varlığı oluşturun, içeriğini ve koordinatlarını ayarlayın ve model alanına ekleyin. Bu desen, kayıtların bir listesi veya başka bir yapılandırılmış veri kaynağı tarafından yönlendirilebilir.

Değiştirilmiş çizimi DWG’ye geri kaydedebilir miyim?

Doğrudan DWG kaydetme, Aspose.CAD for Python desteklenen formatları içinde listelenmemiştir. Test edilen iş akışı, değiştirilmiş çizimi DXF ve PDF olarak dışa aktarır ve kaynak DWG’yi değiştirmez.

Ücretsiz Geçici Lisans Alın

Değerlendirme kısıtlamaları olmadan Aspose.CAD for Python via .NET’yi değerlendirmek için ücretsiz 30 günlük geçici lisansı isteyebilirsiniz. Lisansı Python uygulamanıza uygulamak için, Aspose.CAD lisanslama kılavuzu izleyin.

Ücretsiz Öğrenme Kaynakları

Python’da CAD çizimlerini işleme hakkında daha fazla bilgi için bu kaynakları keşfedin:

Sonuç

Python kullanarak bir DWG çizimine metin eklemek, uygulama verilerinden ekipman etiketleri, oda tanımlayıcıları ve diğer açıklamaları oluşturmanın pratik bir yoludur. Temel adımlar, model alanını bulmak, uygun koordinatlar ve stil ile bir CadText varlığı oluşturmak ve dışa aktarmadan önce çizim sınırlarını güncellemektir.

Bir sonraki adım, örnek etiketi kendi çizim verilerinizdeki koordinatlar ve tanımlayıcılarla değiştirmektir. DXF çıktısını bir CAD düzenleyicisinde doğrulayın ve özellikle farklı birimler, katmanlar veya yazı tipleri içeren çizimler arasında iş akışını dağıtırken PDF’yi bir inceleme kopyası olarak kullanın.