Bir DWG çiziminde belirli bir etiketi veya notu aramak, dosyayı bir CAD düzenleyicisinde açıp her açıklamayı manuel olarak kontrol etmek anlamına gelmemelidir. Python ile çizimin metin varlıklarını inceleyebilir ve eşleşen oda adlarını, ekipman etiketlerini veya diğer açıklamaları belirleyebilirsiniz.
Bu makale, Python kullanarak bir DWG dosyasında metin arama işlemini Aspose.CAD for Python via .NET ile gösterir. Bir DWG dosyası yükleyecek, tek satır ve çok satırlı metinleri arayacak, eşleşen içeriği ve katmanını yazdıracak ve isteğe bağlı olarak aramayı tek bir katmanla sınırlayacaksınız. Örnek, çizimi değiştirmeden veya dışa aktarmadan okur.
Kur Aspose.CAD for Python via .NET
Örneği takip etmek için Aspose.CAD tarafından desteklenen bir Python ortamına, metin açıklamaları içeren bir DWG dosyasına ve Aspose.CAD paketine ihtiyacınız var. Aspose.CAD Python ürün sayfası gereksinimleri arasında Python 3.9 veya daha yenisini listeler.
Paketi PyPI’dan yükleyin:
pip install aspose-cad
Ayrıca paket kurulum detayları için Aspose.CAD kurulum kılavuzu inceleyebilirsiniz.
Bu öğreticide, çalışma dizininize
drawing.dwgadlı bir dosya koyun. Mümkünse, hem tek satırTEXThem de çok satırlıMTEXTaçıklamaları içeren bir çizim kullanın, böylece her iki durumu da kontrol edebilirsiniz.
Python Kullanarak DWG Dosyasında Metin Arama
DWG dosyaları çizim içeriğini varlıklar olarak depolar. Metin araması için iki yararlı varlık türü şunlardır:
- TEXT (
CadText): Genellikle tek satırlı bir açıklamayı temsil eder.default_valueözelliği metin değerini sağlar. - MTEXT (
CadMText): Çok satırlı metni temsil eder.full_clear_textözelliği, CAD biçimlendirme kodları olmadan metni döndürür.
Bu varlıkları, çizimi önce bir görüntüye veya PDF dönüştürmeden arayabilirsiniz. İş akışı basittir:
- DWG dosyasını
Image.load()ile yükleyin veCadImageolarak erişin. - Çizimin
entitieskoleksiyonunda yineleyin. TEXTveMTEXTvarlıklarını tanımlayın ve içeriklerini okuyun.- Her bir değeri arama teriminizle karşılaştırın.
- Her eşleşmeyi ve varlığın ait olduğu katmanı gösterin.
Aşağıdaki örnek bu adımları uygular. Çizimin üst düzey TEXT ve MTEXT varlıklarını arar; iç içe bloklar ve öznitelikler içindeki metin aşağıda ayrı ayrı ele alınmıştır.
DWG Çiziminde Metni Programlı Şekilde Bul
Diyelim ki bir mühendislik çiziminde valve kelimesini içeren tüm açıklamaları bulmanız gerekiyor. Aşağıdaki kod, bu kelimeyi büyük/küçük harf duyarsız bir şekilde arar ve eşleşen her varlığın katmanını raporlar.
import aspose.cad as cad
from aspose.pycore import cast
# Path to the source drawing and the text to find.
dwg_path = "drawing.dwg"
keyword = "valve"
if not keyword:
raise ValueError("The search keyword must not be empty.")
# Load the DWG as a CAD image.
image = cad.Image.load(dwg_path)
cad_image = cast(cad.fileformats.cad.CadImage, image)
entity_types = cad.fileformats.cad.cadconsts.CadEntityTypeName
matches = 0
# Search top-level text entities.
for entity in cad_image.entities:
text_value = None
if entity.type_name == entity_types.TEXT:
text_entity = cast(
cad.fileformats.cad.cadobjects.CadText, entity
)
text_value = text_entity.default_value
elif entity.type_name == entity_types.MTEXT:
mtext_entity = cast(
cad.fileformats.cad.cadobjects.CadMText, entity
)
text_value = mtext_entity.full_clear_text
# Match a word or phrase without case sensitivity.
if text_value and keyword.casefold() in text_value.casefold():
matches += 1
print(f"Match: {text_value}")
print(f"Layer: {entity.layer_name}")
print("---")
print(f"Total matches: {matches}")
Kod Nasıl Çalışır
Image.load() yöntemi DWG dosyasını açar. cast() yardımcı işlevi daha sonra CadImage üyelerine, özellikle entities koleksiyonuna erişim sağlar.
Her varlığın, temsil ettiği çizim nesnesinin türünü belirten bir type_name özelliği vardır. Bu tür TEXT olduğunda, kod CadText.default_value değerini okur. Tür MTEXT olduğunda, okunabilir çok satırlı değeri elde etmek için CadMText.full_clear_text kullanılır.
Python’un casefold() yöntemi karşılaştırmayı büyük/küçük harf duyarsız hâle getirir, bu yüzden valve, Valve ve VALVE hepsi potansiyel eşleşmelerdir. Koşul ayrıca kısmi eşleşmeleri de destekler: valve aramak, Main Valve gibi bir açıklamayı eşleştirir.
Son olarak, entity.layer_name her sonucun bulunduğu CAD katmanını tanımlar. Bu, çizimde ekipman, boyutlar ve açıklamalar için ayrı katmanlar bulunduğunda eşleşen bir notu bulmanıza yardımcı olabilir.
Beklenen Çıktı
İki eşleşen açıklama içeren örnek bir çizim için çıktı şu şekilde görünebilir:
Match: Main Valve
Layer: Plumbing
---
Match: VALVE CONTROL ROOM
Layer: Annotations
---
Total matches: 2
Bu bir örnek çıktı. Sonuçlarınız DWG dosyanızdaki gerçek metin varlıklarına bağlıdır. Arama, eşleşen üst düzey TEXT veya MTTEXT varlıklarını bulamazsa, son satır Total matches: 0 raporlayacaktır.
Belirli bir DWG Katmanında Metin Arama
Bazı çizimler, içeriği Annotations, Equipment veya Plumbing gibi özel katmanlara düzenler. İhtiyacınız olan metni içeren katmanı zaten biliyorsanız, değerlerini kontrol etmeden önce varlıkları filtreleyebilirsiniz.
Ana örnekte, döngüden önce hedef katmanı tanımlayın:
target_layer = "Annotations"
Ardından bu koşulu for entity in cad_image.entities: satırının hemen sonrasına ekleyin:
if entity.layer_name.casefold() != target_layer.casefold():
continue
Arama kodunun geri kalanı değişmeden kalır. Yalnızca katman adı Annotations ile eşleşen varlıklar anahtar kelime için incelenecektir. Bu karşılaştırma katman adındaki büyük/küçük harf duyarlılığını da göz ardı eder.
Filtre, her varlığın atanmış katmanında çalışır; kendiliğinden iç içe blok içeriğini genişletmez veya dış referansları aramaz.
DWG’den Tam Metni Bulma veya Metin Çıkarma
Ana örnek, büyük/küçük harfe duyarsız bir alt dize araması kullanır. Karşılaştırmayı görevinize uyacak şekilde uyarlayabilirsiniz.
Tam bir metin değeri bulun: Eşleşen koşulu, yalnızca anahtar kelimeyi içeren daha uzun açıklamaları hariç tutmak için aşağıdaki ifadeyle değiştirin:
if text_value and text_value.casefold() == keyword.casefold():
Büyük/küçük harfe duyarlı bir arama kullanın: Karşılaştırmanın her iki tarafında da orijinal büyük/küçük harf kullanımını koruyun:
if text_value and keyword in text_value:
Tüm üst düzey TEXT ve MTEXT değerlerini çıkarın: Anahtar kelime karşılaştırmasını kaldırın ve her boş olmayan text_value öğesini işleyin. Örneğin, ana döngüdeki varlık‑tipi kontrollerinden sonra, anahtar kelimeyi test etmek yerine bir listeye metin ekleyebilirsiniz:
if text_value:
extracted_text.append(text_value)
Bu varyasyonu kullanıyorsanız, döngüden önce extracted_text = [] değişkenini başlatın. Ardından toplanan dizeleri bir metin dosyasına yazabilir veya ayrı bir arama veya indeksleme iş akışında kullanabilirsiniz. Bu varyasyon hâlâ yalnızca döngü tarafından işlenen varlık türlerini kapsar.
Neden Bazı DWG Metinleri Arama Sonuçlarında Görünmeyebilir
Bir DWG çizimi, üst düzey TEXT ve MTEXT koleksiyonundan daha fazla yerde metin içerebilir. Kod beklenenden daha az eşleşme döndürüyorsa, aşağıdaki olasılıkları kontrol edin:
- Metin blokları içinde: Bir blok kendi varlıklarını içerebilir. Bu varlıkları incelemek için ek bir dolaşım gerekir.
- Blok öznitelikleri: Bazı metin değerleri, eklenen bloklarla ilişkili
CadAttribveyaCadAttDefvarlıklarında saklanır. Bunlar ana örnekte yer almaz. - Harici referanslar: Harici olarak referans verilen bir çizimdeki metin, referans verilen içeriğin ayrı ayrı işlenmesini gerektirebilir.
- Raster içerik: Ekli bir görüntüde yalnızca piksel olarak görünen harfler CAD metin varlıkları değildir. Bu kelimeleri bulmak, bu varlık tabanlı yaklaşımdan ziyade OCR gerektirir.
- Diğer açıklama türleri: Ölçüler, liderler ve özel CAD nesneleri metni farklı şekilde saklayabilir veya oluşturabilir ve ayrı bir işleme ihtiyaç duyar.
Aspose.CAD metinle çalışma belgeleri CadText, CadMText, CadAttrib ve CadAttDef ilgili metin taşıyan varlık türleri olarak tanımlar. Daha geniş bir arama için, gezinmeyi bu ek nesneleri içerecek şekilde genişletin ve çizimlerinizin yapısına karşı test edin.
Eğer Image.load() başarısız olursa, önce dosya yolunu kontrol edin, ardından DWG dosyasının geçerli olduğunu ve desteklenen bir format kullandığını doğrulayın. Beklenmeyen sonuçlar için, ek açıklama değerlerini ve katmanlarını bir CAD görüntüleyicide doğrulayabileceğiniz küçük bir çizimle başlayın.
Sıkça Sorulan Sorular
Python, AutoCAD olmadan bir DWG dosyasındaki metni arayabilir mi?
Evet. Aspose.CAD for Python via .NET ile, desteklenen bir DWG dosyasını açabilir ve metin varlıklarını programlı olarak inceleyebilirsiniz. Bu iş akışı için AutoCAD’in kurulmuş olması gerekmez.
Python kullanarak bir DWG çiziminde belirli bir kelimeyi nasıl bulabilirim?
Dosyayı bir CadImage olarak yükleyin, varlıkları arasında yineleyin, TEXT ve MTEXT değerlerini okuyun ve her bir değeri anahtar kelimenizle karşılaştırın. Yukarıdaki örnek, büyük/küçük harfe duyarsız kısmi eşleşmeleri bulmak için casefold() ve Python’un in operatörünü kullanır.
Python kullanarak bir DWG dosyasından tüm metni çıkarabilir miyim?
Desteklenen varlık türlerinden, CadText ve CadMText dahil, metin toplayabilirsiniz. Kapsamlı bir çıkarma süreci, yalnızca üst düzey varlık döngüsüne güvenmek yerine ilgili blok içeriklerini, öznitelikleri ve diğer açıklama nesnelerini de incelemelidir.
Ücretsiz Geçici Lisans Al
Aspose.CAD for Python via .NET’i değerlendirmek için değerlendirme kısıtlamaları olmadan ücretsiz 30 günlük geçici lisans isteyin. Geçici lisans talep süreci geçerli bir iş e-posta adresi gerektirir.
Python uygulamanızda bir lisans uygulama hakkında bilgi için Aspose.CAD lisans kılavuzu sayfasına bakın.
Ücretsiz Öğrenme Kaynakları
DWG çizimlerini işleme ve Python’da CAD varlıklarıyla çalışma hakkında daha fazla bilgi için bu kaynakları inceleyin:
- Aspose.CAD for Python via .NET Documentation – Kurulum talimatları, çizim işlemleri ve geliştirme kılavuzları.
- Work with Text in CAD Drawings – DWG ve DXF dosyalarındaki metin içeren varlıklar hakkında bilgi.
- Aspose.CAD Python API Reference – Sınıflar, varlık türleri, özellikler ve yöntemler.
- Aspose.CAD for Python Downloads – Ürün sürümleri ve paket kaynakları.
- Aspose.CAD Free Support Forum – CAD dosya işleme ve API davranışı hakkında sorular sorun.
Sonuç
Python kullanarak bir DWG dosyasında metin aramak için çizimi yükleyebilir, TEXT ve MTEXT varlıklarını inceleyebilir ve değerlerini bir anahtar kelimeyle karşılaştırabilirsiniz. Aynı iş akışı eşleşen katmanları raporlayabilir, aramaları belirli bir katmana daraltabilir veya metni daha ileri işleme için toplayabilir. Blok öznitelikleri veya iç içe geçmiş açıklamalar içeren çizimler için, sonuçlara tam bir metin envanteri olarak güvenmeden önce varlık geçişini genişletin.
