🚀 Seçilen Obje Hariç Tüm Tabakaları ve Objeleri Silen Güçlü Netcad Makrosu
Powerful Netcad Macro to Delete All Layers and Objects Except the Selected Object’s Layer
Bu makro, Netcad yazılımında seçilen bir objenin bulunduğu tabaka hariç, diğer tüm tabakaları ve bu tabakalardaki objeleri silmek için tasarlanmıştır. Kullanıcı dostu bir arayüzle çalışır; seçilen objelerin tabaka bilgileri listelenir ve silme işlemi öncesinde onay alınır. Silme işlemi sonrası detaylı bir rapor sunar ve ekranı otomatik olarak yeniler. Proje dosyalarınızı sadeleştirmek ve yalnızca belirli bir tabakayı korumak için ideal bir çözümdür.
This macro is designed to delete all layers and their objects in Netcad software, except for the layer containing the selected object. It features a user-friendly interface, lists the layer information of selected objects, and requires confirmation before deletion. After the deletion process, it provides a detailed report and automatically refreshes the screen. It’s an ideal solution for simplifying project files and retaining only a specific layer.
Nasıl Çalışır (How Does It Work)
Obje Seçimi: Kullanıcı, korumak istediği objeyi seçer. Makro, seçilen objenin bulunduğu tabakayı tespit eder. Tabaka Analizi: Seçilen objelerin tabaka isimleri kaydedilir ve diğer tabakalar silme listesine alınır. Raporlama: Silinecek tabaka ve obje sayısı, seçilen tabaka ve obje sayısı gibi bilgiler bir diyalog penceresinde gösterilir. Onay Süreci: Kullanıcı, silme işlemini onaylamak için bir onay kutusunu işaretler. Silme İşlemi: Onay verilirse, seçilen objenin tabakası hariç diğer tüm tabakalar ve objeleri silinir. Sonuç Raporu: Silinen tabaka sayısı raporlanır ve ekran yenilenir. Eğer işlem iptal edilirse, tabakalar korunur ve bir iptal mesajı gösterilir.
Object Selection: The user selects the object to keep, and the macro identifies its layer. Layer Analysis: The names of the selected objects’ layers are recorded, and other layers are added to the deletion list. Reporting: Information such as the number of layers and objects to be deleted, and the number of selected layers and objects, is displayed in a dialog window. Confirmation Process: The user must check a box to confirm the deletion. Deletion Process: If confirmed, all layers and objects except the selected object’s layer are deleted. Result Report: The number of deleted layers is reported, and the screen is refreshed. If the process is canceled, the layers are preserved, and a cancellation message is displayed.
Etiket ( Labels )
Netcad makro, tabaka silme, obje silme, Netcad otomasyon, proje sadeleştirme, tabaka yönetimi, VBScript makro, Netcad kullanıcıları, CAD otomasyonu, tabaka temizleme
Netcad macro, layer deletion, object deletion, Netcad automation, project simplification, layer management, VBScript macro, Netcad users, CAD automation, layer cleanup
📝 Netcad NVB Code
' Şaban GÜL, sabangul67@gmail.com, sabangul.com
' Amaç: Ekrandan seçilen objenin bulunduğu tabaka haricindeki tüm tabakalar,
' objeleri ile birlikte silinir.
SUB Main
DIM obje,ss,ts,silme(),i,j,sos,ayni,bd,silinmeyecek,o1,sts,layerno,oo,tab(),atabno,ii,ksos,ksts
DIM objadet,at,atno
With netcad
redim silme(.numlayers)
redim tab(.numlayers)
set bd = .newbdialog ("Silinmeyecek Tabaka Seç")
at = .layernameof (nclayermanager.currentlayer)
atno = nclayermanager.currentlayer
ts = .numlayers
ayni = 0
o1=0
sos=-1
silinmeyecek = ""
set ss = .NewSelectionSet ' Anlık Seçim objesi yarat
set obje = .newobject
'------- Obje seçme ve seçilen objelerin tabaka isimlerini kaydetme --------
if ss.Select ("Seçtiğiniz objenin tabakası haricindeki tüm tabakalar silinir",array()) then' obje sec
sos = ss.ne
for i = 0 to ss.ne-1
j = ss.getselectedobject (i,obje)
if .islayeropen (obje.tabaka) = "Doğru" then
sts=sts+1
silme(sts) = .layernameof (obje.tabaka)
if .escpressed = "Doğru" then exit sub
.closelayer (obje.tabaka)
if o1 = 0 then
silinmeyecek = silme(sts) :o1=1
else
silinmeyecek = silinmeyecek & "|" & silme(sts)
end if
end if
next
end if
if sos = -1 then exit sub
'---------------------------------------------------------------------------
'------------- RAPOR VE SORGU ----------------------------------------------
objadet = .numobject
Bd.putprompt "SEÇİLEN OBJE ADEDİ = " & sos & " / " & .numobject
Bd.putprompt "SEÇİLEN TABAKA ADEDİ = " & sts & " / " & .numlayers
Bd.putprompt "SİLİNECEK OBJE ADEDİ = " & .NUMOBJECT - SOS
Bd.putprompt "SİLİNECEK TABAKA ADEDİ = " & .NUMLAYERS - STS
BD.GetCombo "SECIM","Silinmeyecek Tabakalar = ",silinmeyecek,0 ' ComboBox iste. Basta 1. eleman secili.
BD.getcheck "ONAY","SİL ",0
bd.showmodal
'--------------------------------------------------------------------------
'--------------------------------------------------------------------------
if bd.valuebyname ("ONAY") = 1 then ' ##### Eğer Sil İşaretlenmişse #####
for i = 0 to .numlayers-1
tab(i) = .layernameof (i)
next
for i = 0 to .numlayers-1
for ii = 1 to sts
nclayermanager.currentlayer = nclayermanager.find (tab(i))
if silme(ii) = tab(i) then ayni=1
next
if ayni = 0 then
if .escpressed = "Doğru" then exit sub
if at <> .layernameof (nclayermanager.find (tab(i))) then
nclayermanager.delete nclayermanager.find (tab(i)),true
ksts = ksts + 1
end if
end if
if ayni = 1 then ayni = 0
next
'--------------------- Tüm Tabakaları Aç -----------
For i = 0 to .numlayers-1
if .islayeropen (i) = "Yanlış" then
.openlayer i
End if
Next
'---------------------------------------------------
nclayermanager.currentlayer = nclayermanager.find (silme(1))
'---------- Ekranı Tazele -----------
set ss = nothing
.fastredraw
.netcadcommand ("REGEN")
'------------------------------------
set bd = .newbdialog ("Tabaka Silme İşlemi Sonuçları")
bd.putprompt "Silinen Tabaka Sayısı = " & ksts
bd.showmodal
else
'--------------------- Tüm Tabakaları Aç -----------
For i = 1 to sts
.openlayer nclayermanager.find (silme(i))
next
'---------- Ekranı Tazele -----------
set ss = nothing
.netcadcommand ("REGEN")
'------------------------------------
msgbox "Silme İşlemi İptal Edildi.",48,"TABAKA SİLME İŞLEMİ"
End if
End With
END SUB
VBnetcad-secilen-objesi-tabakasi-haric-sil
✅ 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.