Aşağıdaki AutoLisp dosya çizimdeki tüm bloklar blok adlarıyla DXF uzantılı olarak ayrı ayrı kaydeder.
Kaydedilecek klasör C:\BLOKLAR olarak belirtilmiştir. Klasör yolunu değiştirebilirsiniz.
Kayıt türü DXF olarak belirtilmiştir. Kodlarda uzantıyı DWG olarak değiştirebilirsiniz.
İlgili sayfalar:
; Çizim dosyasındaki bloklari blok adlarıyla ayrı dosyalara kaydeder ; Mesut Akcan ; 09/08/2024 ; makcan@gmail.com ; https://mesutakcan.blogspot.com (vl-load-com) (defun c:BLOKKAYDET (/ blokadi bloksayisi dosyaadi kbs klasor uzanti) (setvar 'cmdecho 0) (setq klasor "C:\\BLOKLAR" ; Blokların kaydedileceği klasör ;Dosya uzantısı uzanti ".dxf" ; DWG uzantılı kayıt için alttaki satırı kullanın ;uzanti ".dwg" blokSayisi 0 ; Blok sayısı kbs 0 ; Kaydedilen blok sayısı ) ; Klasörün mevcut olup olmadığını kontrol et (if (not (vl-file-directory-p klasor)) ; Klasör yoksa çık (progn (alert (strcat klasor " klasörü bulunamadı!"))(exit)) ) ; Model alanındaki her varlık için döngü (vlax-for ent (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ; Eğer varlık bir blok referansı ise, (if (eq (strcase (vla-get-ObjectName ent)) "ACDBBLOCKREFERENCE") (progn ; Blok sayısını bir artır (setq blokSayisi (1+ blokSayisi)) ; Blok adını al ve blokAdi değişkenine ata (setq blokAdi (vla-get-EffectiveName ent)) ; Blok dosya yolunu ve adını oluştur ve dosyaAdi değişkenine ata (setq dosyaAdi (strcat klasor "\\" blokAdi uzanti)) ; Eğer dosya mevcut değilse, (if (not (findfile dosyaAdi)) (progn ; Bloğu belirlenen dosya adı ile kaydet (if (= uzanti ".dxf") (command "_.WBLOCK" dosyaAdi "" blokAdi) (command "_.WBLOCK" dosyaAdi blokAdi) ) (setq kbs (1+ kbs)) ; Kaydedilen blok sayısını bir artır ) ) ) ) ) ; Sonuç mesajını yazdır (alert (strcat "Çizimdeki " (itoa blokSayisi) " adet bloktan " (itoa kbs) " adedi " klasor " klasörüne ayrı dosyalar halinde kaydedildi." ) ) (setvar 'cmdecho 1) (princ) )
Hiç yorum yok:
Yorum Gönder