Siz bir Öbek “Block”, Harici Referans “Xref” veya Yerleşim “Layout” misiniz?

Çocukluğumun en ünlü ve en çok sevdiğim şovu idi Muppet Show. Herneyse, bu makaleme bu başlığı vermemin ilham kaynağı oldu. Geçenlerde bir radyoda Sen bir adam mısın? Yoksa bir kurbağa mı? “Are You A Man or A Muppet”  şarkısı çalıyordu ve benimde aklıma autocadbeyni.com kullanıcılarına bir öbek “block” mi? yoksa bir yerleşim “layout” mi olduklarını sorma fikri geldi.

Not: Bu makalemde yazdığım kod Mac işletim sistemi ActiveX uygulamasını desteklemediği için Mac işletim sistemi üzerinde kurulu olan AutoCAD programlarında çalışmaz.

AutoLISP kullanarak, o anki (aktif) çizimiz içerisindeki Öbekler “Blocks” tablosuna ulaşabilir ve çiziminizin içerisindeki öbek “block” tiplerini belirleyebilirsiniz. Öbekler “Blocks” INSERT komutunu kullanarak yerleştirdiğiniz tip, bir harici referans “xref” olarak iliştirdiğiniz tip veya örneğin Model veya Yerleşim1 “Layout1” yerleşim sekmesi üzerinde geometri için depo olan öbek tipi olabilirler. Aynı mantığı model veya kağıt alanına yerleştirilmiş öbek tiplerini belirmek içinde kullanabiliriz.

Aşağıdaki kod o anki (aktif) çizimdeki her öbek “block” için Harici referans “Xref”,YerleşimLayout” ve Dinamik ÖbekDynamic Block” metotlarını/özelliklerini kullanarak öbek tipinin “block type” nasıl belirlendiğini göstermektedir. Ayrıca bu kod her bir öbekteki “block” nesneleri tek tek inceleyerek bu nesnelerin öznitelikler “attributes” içerip içermediğini belirlemektedir.

(vl-load-com)
(defun c:WhatKindOfBlockAmI ( / acadObj doc msg block)
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))

(setq msg “”)

;; [Öbekler tablosundaki tüm öbekleri “blocks” tek tek inceleme]
(vlax-for block (vla-get-Blocks doc)
(cond
;; [Standart öbek “block” mi? dinamik öbek “block” mi?]
((and (= (vla-get-IsLayout block) :vlax-false)
(= (vla-get-IsXRef block) :vlax-false))
(if (= (vla-get-IsDynamicBlock block) :vlax-false)
(setq msg (strcat msg (vla-get-Name block) “: Standard”))
(setq msg (strcat msg (vla-get-Name block) “: Dynamic”))
)

;; [Özniteliklere “attributes sahip mi?]
(setq attsExist “”)
(vlax-for ent block
(if (= (vla-get-ObjectName ent) “AcDbAttributeDefinition”)
(setq attsExist ” with attributes”)
)
)

(setq msg (strcat msg attsExist))
)
;; Xref?
((= (vla-get-IsXRef block) :vlax-true)
(setq msg (strcat msg (vla-get-Name block) “: Xref”))
(if (= (vla-get-IsLayout block) :vlax-true)
(setq msg (strcat msg (vla-get-Name block) ” and layout”))
)
)
;; [Yerleşim “Layout” mi?]
((= (vla-get-IsLayout block) :vlax-true)
(setq msg (strcat msg (vla-get-Name block) “: Layout only”))
)
)
(setq msg (strcat msg “\n”))
)

;; Bu çizim için öbek “block” bilgilerini görüntületme]
(alert (strcat “Bu çizim aşağıdaki tiplerde öbekleri “blocks” içermektedir: ” msg))
)

 Sekil-1