Home / Netcad Makro / Netcad-Macro-Polyline / Alan Farkına Göre Otomatik Tabakalama Makrosu (Automatic Layering Macro Based on Area Difference)

Alan Farkına Göre Otomatik Tabakalama Makrosu (Automatic Layering Macro Based on Area Difference)

🔍 Alan Farkına Göre Otomatik Tabakalama: Parsel Analizi ve Tabaka Yönetimi için Pratik Çözüm


Bu makro, Netcad ortamında parsel objelerinin tapu alanı ile hesap alanı arasındaki farkı analiz ederek, belirlenen yüzde oranına göre otomatik tabakalama yapar. Kullanıcı, yüzdelik fark oranını ve hedef tabaka adını belirtebilir. Ayrıca, tapu alanı sıfır olan objeler için özel işlemler tanımlanabilir. Makro, parsellerin alan farklarını hesaplar, bu farkın yüzde oranını kontrol eder ve uygun objeleri belirtilen tabakaya taşır. Kullanıcı dostu bir arayüzle, işlem tamamlandığında bilgilendirici bir mesaj gösterir. Özellikle kadastro projelerinde, alan farkı analizi ve tabaka yönetimi için zaman kazandıran bir araçtır. 🚀


Nasıl Çalışır (How Does It Work)

Makro, Netcad ortamında çalışmak üzere VBScript ile yazılmıştır. İlk olarak, kullanıcıdan bir yüzdelik oran, hedef tabaka adı ve tapu alanı işlem tercihi (örneğin, sıfır tapu alanı için işlem yapma veya belirli bir tabakaya alma) alınır. Bu bilgiler, kullanıcı dostu bir diyalog penceresi üzerinden toplanır. Ardından, seçilen parsel objelerinin tapu alanı (tarea) ve hesap alanı (area) karşılaştırılır. Alan farkının yüzde oranı hesaplanır ve bu oran, kullanıcı tarafından belirlenen eşik değeri aşıyorsa, obje belirtilen tabakaya taşınır. Eğer tapu alanı sıfır ise, kullanıcının seçimine göre ya işlem yapılmaz ya da obje “0_TAYOK” adlı bir tabakaya atanır. İşlem sonunda, bir popup mesajı ile kullanıcıya işlemin tamamlandığı bildirilir. Sesli bildirim özelliği ile de kullanıcıya parselleri seçmesi hatırlatılır. 🛠️


Etiket ( Labels )

alan farkı, otomatik tabakalama, parsel analizi, kadastro makrosu, Netcad makro, tabaka yönetimi


📝 Netcad NVB Code

VB
Sub Main
  With Netcad
    Dim msg, sapi, pencere
    Set sapi = createObject("sapi.spvoice")
    sapi.Speak "" 'Sesli bildirim başlatılır

    'Diyalog penceresi oluşturulur
    set pencere = netcad.newbdialog ("Alan Farkı Olan Parselleri Farklı Tabakaya Alma")
    pencere.putprompt "Aşağıya giren Yüzde Oran Kadar Tapu ve Hesap Alanı" 'Açıklama
    pencere.putprompt "Fark Olan Alan Objelerini Farklı Tabakaya Alır" 'Açıklama

    'Kullanıcıdan giriş alınır
    pencere.getfloat "Yuzde Oran:","ondalıklı sayı",8,0
    pencere.getstring "Tabaka","Tabakası","0_SAGUL_YUZDE",20
    pencere.getradio "get","Tapu Alanı İşlemi ","Yoksa İşlem Yapma|İşlem Yapma 0_TAYOK tabakasına al|Tapu Alanı Sıfır Olsun",2

    'Diyalog penceresi gösterilir, iptal edilirse çıkış yapılır
    if pencere.showmodal then
    else
      exit sub
    end if

    sapi.Speak "parsall sechein " 'Sesli uyarı: Parselleri seç

    'Kullanıcı girişleri alınır
    dim sg1, sg2, sg3
    sg1 = pencere.valuebyname("yuzde")
    sg2 = pencere.valuebyname("tabaka")
    sg3 = pencere.valuebyname("get")

    'Yeni tabaka oluşturulur
    NCLayerManager.ADD sg2,4
    dim alan1, alan2, alan

    Dim secimkumesi, obje, i, z
    set secimkumesi = .newselectionset
    set obje = .newobject

    'Parsel objeleri seçilir
    if secimkumesi.select("Seçim", array(opline)) then
      for i = 0 to secimkumesi.NE-1
        z = secimkumesi.getselectedobject(i, obje)

        'Alan bilgileri alınır
        alan1 = obje.tarea
        alan2 = obje.area

        'Alan farkı yüzdesi hesaplanır
        alan = alan1 / alan2
        if alan < 1 then alan = alan2 / alan1
        alan = alan - 1
        alan = alan * 100

        'Yüzde oran kontrolü ve tabakalama
        if alan > sg1 and sg3 = 2 then obje.tabaka = .foundlayer(sg2)

        'Tapu alanı sıfır kontrolü
        if sg3 = 1 and obje.tarea = 0 then
          NCLayerManager.ADD "0_TAYOK",5
          obje.tabaka = .foundlayer("0_TAYOK")
        end if

        'Obje güncellenir
        .putobject z, obje
      Next
      secimkumesi.redrawandrewind
    End if
  End With

  'Bilgilendirici mesaj için VBS object oluşturulur
  dim strTitle, strMsg
  dim wshShell
  set wshShell = CreateObject("wscript.shell")

  'Mesaj başlığı
  strTitle = " İşlem Tamamlandı, www.sagul.net - Şaban GÜL"

  'Mesaj içeriği
  strMsg = "Tebrikler" & VbCrLf
  strMsg = strMsg & "Belirlenen Kritere Uymayanlara İşlem Yapıldı"

  'Popup mesaj gösterilir
  'wshShell.Popup strMsg,1,strTitle,vbOKOnly+vbInformation
End Sub
VB

netcad-ta-ha-farkina-gore-tabakalandirma

⚠️ 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: