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.
| Özellik | Ne kontrol eder | Örnek |
|---|---|---|
default_value | Çizimde gösterilen metin | "VALVE V-101" |
first_alignment | CAD koordinatlarındaki metin konumu | Cad3DPoint(150.0, 80.0, 0.0) |
text_height | Çizim birimlerindeki metin yüksekliği | 3.0 |
scale_x | Yatay metin ölçek faktörü | 1.0 |
style_type | Metin stilinin adı | "Standard" |
layer_name | Metinle ilişkili katman | "0" |
color_id | AutoCAD Renk Dizini değeri | 1 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:
- Aspose.CAD for Python Developer Guide – CAD dosyalarını nasıl yükleyeceğinizi ve işleyeceğinizi öğrenin.
- Aspose.CAD Python API Reference – Örneklerde kullanılan sınıfları, özellikleri ve yöntemleri inceleyin.
- Work with Text in CAD Drawings – CAD metin içeren varlık türleri hakkında bilgi edinin.
- Supported CAD File Formats – Mevcut giriş ve çıkış formatlarını doğrulayın.
- Free Online CAD Applications – Tarayıcı tabanlı araçları kullanarak CAD dosyalarını görüntüleyin veya dönüştürün.
- Aspose.CAD Support Forum – Belirli çizimler veya API davranışıyla ilgili sorular sorun.
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.
