Kurala Bağlı Tabaka İşlemleri ile Verimliliği Artırın: Otomasyon Makrosu 🚀
Boost Efficiency with Rule-Based Layer Operations: Automation Macro 🚀
Bu makro, CAD ortamında tabaka (layer) yönetimi için güçlü bir otomasyon sağlar. Kullanıcı dostu bir arayüz üzerinden, tabakalar üzerinde belirli kriterlere bağlı işlemler yapmanıza olanak tanır. Örneğin, tabaka adını değiştirebilir, renklendirebilir, kilitleyebilir, açıp kapatabilir veya yazıcıya gönderme ayarlarını düzenleyebilirsiniz. Esnek yapısıyla, projelerdeki karmaşık tabaka düzenlemelerini hızlı ve hatasız bir şekilde gerçekleştirir. Özellikle büyük ölçekli projelerde zaman tasarrufu sağlar ve manuel işlemleri en aza indirir.
This macro offers powerful automation for layer management in a CAD environment. Through a user-friendly interface, it enables rule-based operations on layers. For instance, you can rename layers, change their colors, lock or unlock them, open or close them, or adjust their print settings. Its flexible structure allows for quick and error-free layer management in complex projects, saving time and minimizing manual tasks, especially in large-scale projects.
Nasıl Çalışır (How Does It Work)
Makro, kullanıcıya bir diyalog penceresi sunar ve bu pencere üzerinden kriterler belirlenir. Kullanıcı, tabaka adı, renk, kilit durumu veya yazıcı ayarları gibi çeşitli kriterler seçer. Ardından, bu kriterlere göre tabaka üzerinde yapılmak istenen işlem (örneğin, ad değiştirme, renk değiştirme, kilitleme) tanımlanır. Makro, tüm tabakaları tarar ve belirtilen kriterlere uyan tabakalara seçilen işlemi otomatik olarak uygular. İşlem tamamlandığında, tabaka yönetimi hızlıca tamamlanmış olur.
The macro presents a dialog window where users define criteria. Users select conditions such as layer name, color, lock status, or print settings. Then, they specify the desired action (e.g., renaming, changing color, locking). The macro scans all layers and automatically applies the chosen action to layers matching the criteria. Once completed, layer management is efficiently finalized.
Etiket ( Labels )
tabaka yönetimi, otomasyon makrosu, CAD verimliliği, kurala bağlı işlemler, proje optimizasyonu
layer management, automation macro, CAD efficiency, rule-based operations, project optimization
📝 Netcad NVB Code
' Yazan :
' Tarih : 29.06.2020
' Açıklama : Kurala bağlı tabaka işlemleri için otomasyon sağlar
Sub Main
Dim i
dim tbksay,toptbk
with Netcad
dim pencere
set pencere = netcad.newbdialog ("SAGULCAD Kurala Bağlı Tabaka İşlemleri")
pencere.putprompt "Aşağıdan kriter oluşturunuz"
pencere.getcombo "parca1","Bir Kriter Seçiniz","Adı ... ise|Adı ... degilse|Adı ... ile başlarsa|Adı ... ile biterse|Adında ... varsa|Rengi ... ise|Rengi ... değilse|Açıksa|Kapalıysa|Kilitli ise|Kilitli Değilse|Yazıcı Gönderme Açıksa|Yazıcı Gönderme Kapalıysa",0
pencere.getstring "parca2","Kriter Değeri","",20
pencere.getcombo "parca3","Bir Kriter Seçiniz","Tabaka Adını ... Yap|Adının Başına ... Ekle|Adının Sonuna ... Ekle|Adında Bul Değiştir Yap|Rengi Değiştir|Tabakayı Aç|Tabakayı Kapat|Kilidini Aç|Kilidini Kapat|Yazıcıya Gönder|Yazıcıya Gönderme",0
pencere.getstring "parca4","Sonuç Değeri","",20
toptbk = .numlayers - 1
dim p1,p2,p3,p4
dim parca1,parca2,parca3,parca4
if pencere.showmodal then
p1 = pencere.valuebyname("parca1")
p2 = pencere.valuebyname("parca2")
p3 = pencere.valuebyname("parca3")
p4 = pencere.valuebyname("parca4")
else
exit sub
end if
with nclayermanager
For tbksay = 0 To toptbk
'////////////////////////// durum -1 başlangıç
if p1=0 and .layer(tbksay).name=p2 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -1 bitiş
'////////////////////////// durum -2 başlangıç
if p1=1 and .layer(tbksay).name<>p2 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -2 bitiş
'////////////////////////// durum -3 başlangıç
if p1=2 and mid(.layer(tbksay).name,1,len(p2)) = p2 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -3 bitiş
'////////////////////////// durum -4 başlangıç
if p1=3 and mid(.layer(tbksay).name,len(.layer(tbksay).name)-len(p2)+1,len(.layer(tbksay).name))= p2 and len(p1)>len(p2) then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -4 bitiş
'////////////////////////// durum -5 başlangıç
if p1=4 and instr(.layer(tbksay).name,p2) >0 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -5 bitiş
'////////////////////////// durum -6 başlangıç
if p1=5 and .layer(tbksay).color = p2 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -6 bitiş
'////////////////////////// durum -7 başlangıç
if p1=6 and .layer(tbksay).color <> p2 then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -7 bitiş
'////////////////////////// durum -8 başlangıç
if p1=7 and .layer(tbksay).IsOpen =True then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -8 bitiş
'////////////////////////// durum -9 başlangıç
if p1=8 and .layer(tbksay).IsOpen =False then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -9 bitiş
'////////////////////////// durum -10 başlangıç
if p1=9 and .layer(tbksay).LockActive= True then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -10 bitiş
'////////////////////////// durum -11 başlangıç
if p1=10 and .layer(tbksay).LockActive= False then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -11 bitiş
'////////////////////////// durum -12 başlangıç
if p1=11 and .layer(tbksay).PrintableActive= True then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -12 bitiş
'////////////////////////// durum -13 başlangıç
if p1=12 and .layer(tbksay).PrintableActive= False then
If p3=0 Then .layer(tbksay).name = p4
If p3=1 Then .layer(tbksay).name = p4 & .layer(tbksay).name
If p3=2 Then .layer(tbksay).name = .layer(tbksay).name & p4
If p3=3 Then .layer(tbksay).name = Replace(.layer(tbksay).name,ilk,son)
If p3=4 Then .layer(tbksay).color = p4
If p3=5 Then netcad.openlayer(tbksay)
If p3=6 Then netcad.closelayer(tbksay)
If p3=7 Then .layer(tbksay).LockActive=True
If p3=8 Then .layer(tbksay).LockActive=False
If p3=9 Then .layer(tbksay).PrintableActive=True
If p3=10 Then .layer(tbksay).PrintableActive=False
End if
'////////////////////////// durum -13 bitiş
Next
end with
end with
End Sub
VBnetcad-kurala-bagli-tabaka-islemleri
✅ Makroyu kullanmadan önce lütfen aşağıdaki uyarıları dikkatlice okuyunuz:
• Obje sayısı yüksekse işlem uzun sürebilir ve Netcad yazılımı yanıt veremez hale gelebilir.
• Bu nedenle tüm projelerinizi önceden yedeklemeniz önemle tavsiye edilir.
• Makro çalıştıktan sonra işlemi geri almak mümkün olmayabilir.
• Makrolar periyodik olarak güncellenmektedir; sayfamızı takip ederek güncel sürümleri kullanmaya özen gösteriniz.
💾 Makrolar yalnızca Netcad yazılımında çalışır ve .nps formatında sunulur. Bu format düzenlenemez; özelleştirme talepleriniz için bizimle iletişime geçebilirsiniz.
✉️ Görüş, öneri ve hata bildirimleri için: sabangul67@gmail.com
⚙️ Bu makrolar Kadastro, 2B, Orman, Kamulaştırma, Değerleme, CBS, Halihazır Harita, İmar Planı, Etüt-Proje gibi birçok alanda kullanılabilir.
🔐 Makrolar e-posta eki veya sosyal medya üzerinden paylaşılmaz. Talepte bulunmanız durumunda yalnızca e-posta adresinize bilgilendirme yapılır. Makrolar yalnızca internet sitemiz üzerinden paylaşılır.
📥 Makroları indirerek kullanım sorumluluğunu kabul etmiş sayılırsınız. Oluşabilecek tüm sorunlar kullanıcı sorumluluğundadır.