Home / Netcad Makro / Komsu Alanlari Tespit Et (Detect Neighbor Areas)

Komsu Alanlari Tespit Et (Detect Neighbor Areas)


Makro Bilgileri:

  1. Makro Adı: Komsu Alanlari Tespit Et (Detect Neighbor Areas)
  2. Makronun İşlevi:
    • Türkçe: Bu makro, Netcad’de seçilen alan (opline) objelerinin komşu alanlarını otomatik tespit eder, komşuları belirtilen tabakaya taşır ve kullanıcı tarafından seçilen renkle boyar. Komşuluk toleransı, tabaka adı, renk ve komşu adlarına önek ekleme seçeneği dialogdan alınır. Kadastroda komşuluk analizi, imar planlarında sınır kontrolü veya görsel ayırım projelerinde hızlı işlem sağlar.
    • ENGLİSH: This macro automatically detects the neighboring areas of selected area (opline) objects in Netcad, moves them to a specified layer, and colors them with a user-selected color. The neighbor detection tolerance, layer name, color, and optional prefix for neighbor names are set via a dialog. It enables fast processing for neighbor analysis in cadastre, boundary control in urban planning, or visual separation projects.
  3. Makronun Çalışma Şekli:
    • Türkçe:
      1. Netcad projenizi açın ve makroyu çalıştırın.
      2. Dialogda, komşuluk tolerans mesafesini (metre, örn. 0.01) girin.
      3. Komşuların taşınacağı tabaka adını (örn. “KOMSU_ALANLARI”) girin.
      4. Komşular için renk seçin: Kırmızı, Mavi veya Yeşil.
      5. Komşu adlarına eklenecek öneği (örn. “KOMSU_”) girin, boş bırakabilirsiniz.
      6. “Tamam” butonuna basın.
      7. Ekranda komşuları tespit edilecek alan (opline) objelerini seçin ve seçimi tamamlayın.
      8. Makro, komşu alanları tespit eder, tabakaya taşır, renklendirir ve önek ekler.
      9. İşlem bittiğinde, tespit edilen komşu sayısı, tolerans, tabaka, renk ve önek bilgisi gösterilir.
    • ENGLİSH:
      1. Open your Netcad project and run the macro.
      2. In the dialog, enter the neighbor detection tolerance distance (in meters, e.g., 0.01).
      3. Enter the layer name for moving neighbors (e.g., “KOMSU_ALANLARI”).
      4. Select a color for neighbors: Red, Blue, or Green.
      5. Enter a prefix for neighbor names (e.g., “KOMSU_”), or leave it blank.
      6. Click “OK.”
      7. Select the area (opline) objects on the screen for neighbor detection and complete the selection.
      8. The macro detects neighbor areas, moves them to the layer, colors them, and adds the prefix.
      9. When finished, a message shows the number of detected neighbors, tolerance, layer, color, and prefix.
  4. Etiketler:
    • Netcad makro, Komşu analizi, Alan renklendirme, Otomatik tabaka taşıma, VBScript makro, Netcad otomasyon, Kadastro analizi, İmar planı araçları, Şaban GÜL makro, Sınır kontrolü

Kullanım Örneği:

Sonuç: 6 komşu alan “KOMSU_ALANLARI” tabakasına taşınır, mavi renge boyanır, adları “KOMSU_” önekiyle güncellenir.

Dialog: Tolerans: 0.01 m, Tabaka: “KOMSU_ALANLARI”, Renk: Mavi, Önek: “KOMSU_”.

2 alan seçiliyor, her birinin 3 komşusu var (toplam 6 komşu).


Dikkat ve Uyarı:

⚠️ Uyarı: Yapay Zeka Destekli Netcad Makrosu ⚙️🤖

Bu sayfada paylaştığım Netcad makroları, tamamen yapay zeka desteğiyle oluşturulmuştur.
📌 Makrolar gerçek projelerde kullanılmadan önce dikkatlice test edilmelidir.

🔍 Neden bu uyarıyı yapıyorum?
Yapay zeka, kod üretiminde oldukça başarılı olsa da;
🧠 Her proje, her sistem ve her kullanıcı senaryosu farklıdır.
Bu nedenle, üretilen makroların doğrudan kullanılması bazı durumlarda beklenmeyen sonuçlara yol açabilir.

💡 Ne yapmalısınız?

  • Makroyu kendi verilerinize göre gözden geçirin. 👁️
  • Gerekirse kod üzerinde düzenleme yapın. 🛠️
  • Yedek almadan uygulama yapmayın. 💾
  • Kodun hangi amaçla yazıldığını ve sınırlarını iyi anlayın. 📘

🛑 Sorumluluk Reddi:
Yapay zeka ile oluşturulan bu içerikler, sadece örnek niteliğindedir. Hiçbir şekilde resmi Netcad destek servisi yerine geçmez. Bu kodları kullanmanızdan doğabilecek herhangi bir veri kaybı veya proje hatasından sorumluluk kabul edilmez.



📝 Netcad NVB Kodu


Netcad Vba
' www.sabangul.com Web Sayfasından İndirilmiştir
' Şaban GÜL, Harita Mühendisi
' Her Türlü Hata, İstek ve Öneriler İçin
' sabangul67@gmail.com adresine durumu anlatan bir e-posta gönderiniz.
'
' Amaç: Ekrandan seçilen alan (opline) objelerinin komşu alanlarını otomatik tespit eder,
' komşuları belirtilen tabakaya taşır ve seçilen renkle boyar. Kullanıcı, komşuluk
' tolerans mesafesini, tabaka adını, rengi ve komşu adlarına önek ekleme seçeneğini
' dialog penceresinden belirler. Kadastro, imar veya komşuluk analizi projelerinde
' sınır kontrolü ve görselleştirme için kullanılır.

Sub Main
Dim sabangul1, sabangul2, sabangul3, sabangul4, sabangul5
Dim i, j, k, tabakaNo
Dim secimkumesi, obje, komsuObje, komsuKumesi
Dim tabakaAdi, tolerans, renk, adOnek, komsuSayisi

With Netcad
    ' Dialog penceresi oluştur
    Set sabangul1 = .NewBDialog("Komşu Alanları Tespit Etme [Şaban GÜL, sabangul.com]")
    sabangul1.PutPrompt "Seçilen alanların komşuları tespit edilip renklendirilecektir."
    sabangul1.GetFloat "tolerans", "Komşuluk Toleransı (metre):", 0.01
    sabangul1.GetString "tabaka", "Komşuların Taşınacağı Tabaka Adı:", "KOMSU_ALANLARI", 20
    sabangul1.GetRadio "renk", "Komşular için Renk Seçiniz:", "Kırmızı", 0
    sabangul1.AddRadio "Kırmızı"
    sabangul1.AddRadio "Mavi"
    sabangul1.AddRadio "Yeşil"
    sabangul1.GetString "onek", "Komşu Adlarına Önek (isteğe bağlı):", "KOMSU_", 20
    sabangul1.PutPrompt "Tolerans pozitif olmalıdır. Tabaka yoksa oluşturulur."

    ' Dialog penceresini göster
    If sabangul1.ShowModal Then
        sabangul2 = sabangul1.ValueByName("tolerans") ' Tolerans mesafesi
        sabangul3 = sabangul1.ValueByName("tabaka") ' Tabaka adı
        sabangul4 = sabangul1.ValueByName("renk") ' Renk
        sabangul5 = sabangul1.ValueByName("onek") ' Önek
        ' Tolerans kontrolü
        If sabangul2 <= 0 Then
            MsgBox "Tolerans pozitif bir değer olmalıdır!", 48, "Şaban GÜL, sabangul.com"
            Exit Sub
        End If
    Else
        Exit Sub
    End If

    ' Tabaka adı boşsa varsayılan değer
    If sabangul3 = "" Then sabangul3 = "KOMSU_ALANLARI"
    tabakaAdi = sabangul3

    ' Tabakayı bul veya oluştur
    tabakaNo = .FoundLayer(tabakaAdi)
    If tabakaNo = -1 Then
        tabakaNo = .AddLayer(tabakaAdi) ' Yeni tabaka oluştur
        If tabakaNo = -1 Then
            MsgBox "Tabaka oluşturulamadı! İşlem iptal edildi.", 48, "Şaban GÜL, sabangul.com"
            Exit Sub
        End If
    End If

    ' Seçim kümesi ve objeler oluştur
    Set secimkumesi = .NewSelectionSet
    Set obje = .NewObject
    Set komsuObje = .NewObject
    Set komsuKumesi = .NewSelectionSet

    ' Kullanıcıdan alan objelerini seçmesini iste
    If secimkumesi.Select("Komşuları Tespit Edilecek Alan Objelerini Seçiniz...", Array(opline)) Then
        komsuSayisi = 0 ' Komşu alan sayacı
        For i = 0 To secimkumesi.NE - 1
            j = secimkumesi.GetSelectedObject(i, obje)
            ' Komşuları tespit et
            komsuKumesi.Clear
            komsuKumesi.SelectByDistance(obje, sabangul2, Array(opline)) ' Tolerans mesafesinde komşular
            For k = 0 To komsuKumesi.NE - 1
                If komsuKumesi.GetSelectedObject(k, komsuObje) <> j Then ' Seçilen objeyi hariç tut
                    komsuObje.tabaka = tabakaNo ' Tabakayı değiştir
                    ' Rengi ayarla
                    Select Case sabangul4
                        Case "Kırmızı"
                            komsuObje.color = 1 ' Kırmızı
                        Case "Mavi"
                            komsuObje.color = 2 ' Mavi
                        Case "Yeşil"
                            komsuObje.color = 3 ' Yeşil
                    End Select
                    ' Önek ekle (boş değilse)
                    If sabangul5 <> "" Then
                        komsuObje.pname = sabangul5 & komsuObje.pname
                    End If
                    .PutObject komsuKumesi.GetSelectedObjectHandle(k), komsuObje ' Objeyi güncelle
                    komsuSayisi = komsuSayisi + 1
                End If
            Next
        Next
        secimkumesi.RedrawAndRewind ' Ekranı yenile
        If komsuSayisi > 0 Then
            MsgBox komsuSayisi & " adet komşu alan tespit edilip güncellendi." & vbCrLf & _
                   "Tolerans: " & sabangul2 & " m" & vbCrLf & _
                   "Tabaka: " & tabakaAdi & vbCrLf & _
                   "Renk: " & sabangul4 & vbCrLf & _
                   "Önek: " & IIf(sabangul5 = "", "Yok", sabangul5), 64, "Şaban GÜL, sabangul.com"
        Else
            MsgBox "Hiçbir komşu alan tespit edilemedi!", 48, "Şaban GÜL, sabangul.com"
        End If
    Else
        MsgBox "Hiçbir alan objesi seçilmedi!", 48, "Şaban GÜL, sabangul.com"
    End If

    ' Belleği temizle
    Set secimkumesi = Nothing
    Set komsuKumesi = Nothing
    Set obje = Nothing
    Set komsuObje = Nothing
    Set sabangul1 = Nothing
End With
End Sub
VB
⚠️ 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.