blok etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
blok etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Ağustos 2024 Cuma

AutoLisp ile çizimdeki blokları blok adlarıyla DXF dosyaya kaydet

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

15 Şubat 2021 Pazartesi

QuickBasic - 4: Kontrol blokları

Yayınlama: 2000
Güncelleme: 15 Şubat 2021
Programlama dillerinde döngüler ve akış kontrol komutları çok sık kullanılır.
Programları program yapan esas kısımlar bu komutlarla sağlanır.
QuickBasic'te diğer programlama dillerindekine benzer yapıda döngüler ve mantıksal karşılaştırmalar yapılabilir.

IF ... THEN ... ELSE

Mantıksal karşılaştırma için kullanılır.
Karşılaştırma işlemin sonucunda bir değer döner bu değer ya mantıksal DOĞRU dur ya da mantıksal YANLIŞ.
Lise 1 deyken matematik dersinde Mantık konusunda 1 ve 0'lar ile, doğru ve yanlışlar ile işlemler yapardık. Birçok kişide ne işe yarıyor bunlar diye söylenip dururlardı.
Demek ki bir gerekliliği varmış.
İşte onlar burada gerekecek, isterseniz matematikteki MANTIK ile ilgili kısımları bir daha gözden geçirin. :)

Örnek 1:
IF A = 40 THEN B = 40
A değişkenin değeri 40 ise B değişkeninin değeri de 40 olacaktır.
Eğer A'nın değeri 40 dan farklı ise bu satırın hiçbir etkisi olmayacaktır. B=40 işletilmeyecektir.

Örnek 2:
A = 25
IF A > 40 THEN M$ ="Sayı 40 dan büyük" ELSE M$= "Sayı 40 dan küçük"
PRINT M$
Üstte A değişkeninin değerinin 40'dan büyük olup olmadığı kontrol ediliyor.
Mantıksal karşılaştırmanın sonucunda ancak iki değer dönebilir. DOĞRU veya YANLIŞ.