Home / Netcad Makro / Seçilen Obje Dışındaki Tabakaları ve Objeleri Silme Makrosu (Macro to Delete All Layers and Objects Except the Selected Object’s Layer)

Seçilen Obje Dışındaki Tabakaları ve Objeleri Silme Makrosu (Macro to Delete All Layers and Objects Except the Selected Object’s Layer)

🚀 Seçilen Obje Hariç Tüm Tabakaları ve Objeleri Silen Güçlü Netcad Makrosu


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.


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.


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 NVB Code

VB
' Ş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
VB

netcad-secilen-objesi-tabakasi-haric-sil

⚠️ Dikkat! Netcad Makrosu Kullanımı Hakkında Bilgilendirme

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.
Etiketlendi: