1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

Tüm Dinamik Blokları Çizime Tekrar Yerleştirme

Geçenlerde yayımladığım AutoLisp makale serisinden sonra bir site kullanıcımız bana aşağıdaki mesajı gönderdi:

Çizime zaten yerleştirilmiş olan  tüm dinamik blokları, aynı ekleme noktası ve aynı görünürlüğü kullanarak tekrar yerleştirmek için, bir Autolisp programı yazılabilir mi? Dinamik bloğun (sündürme “ve çevirme gibi) birçok diğer parametreye sahip olabileceğini biliyorum. Yani, parametrelerin hepsini yeniden yerleştirme programında  öngörmek zor olsa da, yalnızca görünürlük “visuality” parametresi ile bunu yapabilsem işimi halletmiş olacağım. Çünkü çalışmakta olduğum blokların çoğu b görünürlük “visuality” parametresi içeriyor.

 Sizin makalelerinizi takip ettikten sonra, dinamik bloklardaki tüm nesnelerin katmanını ve rengini değiştiren bir program  yazdım. Ancak, çizime zaten eklenmiş olan dinamik bloklar güncellenmiyor. Bu değişiklikleri görmek” için bulduğum tek yol onları çizime tekrar yerleştirmek olduğu için, bunu soruyorum.

Sizlerden bu tarz ileri AutoCAD bilgisi gerektiren soruları almak beni gerçekten memnun ediyor; bu siteyi kurma amacımın sağlanmasını görmek gerçekten güzel bir duygu.

Her neyse, kullanıcımızın bu sorusu için, cevabım: TABİKİ BÖYLE BİR LİSP PROGRAMI YAZMAK MÜMKÜN

Her konuda olduğu gibi AutoCAD’de sorunların çözümü için birçok yol mevcut:

  1. Blok Kütüphanesi Oluşturma

Öncelikle tüm bloklarınızın en yeni halini tek bir kitaplık dosyasına koyun. Sonra blokları aynı palete sürükleyin. Değiştirmek istediğiniz çizimlerde, değiştirmek için bloklara sağ tıklayın. Dinamik bloklar güncellenmiş olmalıdır.

Örneğin, şayet güncellenmesini istediğiniz 20 bloğunuz varsa, (INSERT” myblockname = myblockname …. komutu), bloklarınızın her birinin yeni bir harici tanımı o anki geçerli (aktif) çiziminize getirmesi gerekir. Elbette, belirli blok adlarına sahip komut ifadelerinin bir listesine ihtiyacınız vardır ve blok adlarının her biri kendi kitaplık klasör yolundaki çizimde olmalıdır.

  1. AutoLisp Programı Yazma

(defun c:RIDB ( / doc effname)

(setq doc (vla-get-activedocument (vlax-get-acad-object)))

(vlax-for layout (vla-get-layouts doc)

(vlax-for obj (vla-get-block layout)

(if            (and

(= (vla-get-objectname obj) “AcDbBlockReference”)

(= (vla-get-isdynamicblock obj) :vlax-true)

(setq effname (vla-get-EffectiveName obj))

);and

(vlax-for subent (vla-item (vla-get-blocks doc) effname)

(vla-put-layer subent “0”)

(vla-put-color subent 30)

);vlax

);if

;ve program diğer kriterlere göre diğer tüm nesneleri de değiştirmeye devam eder.

);vlax);vlax);defun

Varlıkların özelliklerini değiştirdikten sonra aşağıdaki kodu kullanın:

…(if (and
(= (vla-get-objectname obj) “AcDbBlockReference”)
(= (vla-get-isdynamicblock obj) :vlax-true)
(setq effname (vla-get-EffectiveName obj))
);and
(progn
(vlax-for subent (vla-item (vla-get-blocks doc) effname)
(vla-put-layer subent “0”)
(vla-put-color subent 30)
);vlax-for
 (command “_.-bedit” effname)
 (command “_.bsave” “_.bclose”)
);progn
);if

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Açıklama Görünüşleri Hakkında

Revit’te bir modelin belirli bir parçasının büyütülmüş görüntüsüne daha yakından bakabilirsiniz. Bir plana, kesite, detaya …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.