Home / Netcad Makro / Alan Degerini Ada Ve Merkeze Yaz (WriteAreaToNameAndCenter)

Alan Degerini Ada Ve Merkeze Yaz (WriteAreaToNameAndCenter)


Makro Bilgileri:

  1. Makro Adı: AlanDegeriniAdaVeMerkezeYaz (WriteAreaToNameAndCenter)
  2. Makronun İşlevi:
    • Türkçe: Bu makro, Netcad’de seçilen alan (opline) objelerinin alan değerlerini hesaplar, kullanıcı tarafından seçilen birime (metrekare, dönüm, hektar) çevirir, belirtilen ondalık basamak sayısına yuvarlar ve bu değerleri isteğe bağlı bir önek ile objelerin adlarına atar. Aynı değerleri, alanların ağırlık merkezine yazı objesi olarak ekler. Yazılar, kullanıcı tarafından belirtilen tabakaya yazılır. Kadastro, imar veya görsel analiz projelerinde hızlı adlandırma ve etiketleme sağlar.
    • ENGLİSH: This macro calculates the area values of selected area (opline) objects in Netcad, converts them to the user-selected unit (square meters, dönüm, hectare), rounds to the specified decimal places, and assigns these values to object names with an optional prefix. It also adds the same values as text objects at the area centroids. Texts are written to a user-specified layer. It enables fast naming and labeling in cadastre, urban planning, or visual analysis projects.
  3. Makronun Çalışma Şekli:
    • Türkçe:
      1. Netcad projenizi açın ve makroyu çalıştırın.
      2. Dialogda, adlara ve yazılara eklenecek öneği (örn. “ALAN_”) girin. Boş bırakırsanız sadece alan değeri kullanılır.
      3. Yuvarlama için ondalık basamak sayısını (0-4, örn. 2) girin.
      4. Yazıların yazılacağı tabaka adını (örn. “ALAN_YAZILARI”) girin.
      5. Alan birimini seçin: Metrekare (m²), Dönüm veya Hektar.
      6. “Tamam” basın.
      7. Ekranda alan değerlerini adlara ve merkeze yazmak istediğiniz alan (opline) objelerini seçin, seçimi tamamlayın.
      8. Makro, alan değerini birime çevirir, yuvarlar, önek + değer ile adlandırır ve merkeze yazı ekler.
      9. İşlem bittiğinde, işlenen obje sayısı, önek, basamak, birim ve tabaka adı gösterilir.
    • ENGLİSH:
      1. Open your Netcad project and run the macro.
      2. In the dialog, enter the prefix for names and texts (e.g., “ALAN_”). Leave blank for only the area value.
      3. Enter the number of decimal places for rounding (0-4, e.g., 2).
      4. Enter the layer name for texts (e.g., “ALAN_YAZILARI”).
      5. Select the area unit: Square meters (m²), Dönüm, or Hectare.
      6. Click “OK.”
      7. Select the area (opline) objects on the screen for naming and centroid text, then complete the selection.
      8. The macro converts the area value to the chosen unit, rounds it, assigns prefix + value to the name, and adds text at the centroid.
      9. When finished, a message shows the number of processed areas, prefix, decimal places, unit, and layer name.
  4. Etiketler:
    • Netcad makro, Alan adlandırma, Alan değeri hesaplama, Ağırlık merkezi etiketleme, Birim dönüştürme, VBScript makro, Netcad otomasyon, Kadastro etiketleme, İmar planı araçları, Şaban GÜL makro

Kullanım Örneği:

“ALAN_YAZILARI” tabakasında, her alanın merkezinde aynı değerler yazı olarak görünür.

Dialog: Önek: “ALAN_”, basamak: 2, tabaka: “ALAN_YAZILARI”, birim: Dönüm.

3 alan seçiliyor, alanlar: 1234.567 m², 7891.234 m², 4567.891 m².

Dönüm: 1.23, 7.89, 4.57 (1 m² = 0.001 dönüm, 2 basamak yuvarlama).

Sonuç:

Adlar: “ALAN_1.23”, “ALAN_7.89”, “ALAN_4.57”.


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 Code

VB
' 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 alan değerlerini hesaplar,
' kullanıcı tarafından belirtilen birime (m², dönüm, hektar) çevirir, belirtilen
' ondalık basamak sayısına yuvarlar ve bu değerleri isteğe bağlı bir önek ile
' objelerin adlarına (pname) atar. Ayrıca, bu değerleri alanların ağırlık merkezine
' yazı objesi olarak ekler. Yazı objeleri, kullanıcı tarafından belirtilen tabakaya
' yazılır (yeni veya mevcut tabaka).

Sub Main
Dim sabangul1, sabangul2, sabangul3, sabangul4, sabangul5, sabangul6
Dim i, j, tabakaNo
Dim secimkumesi, obje, yaziObje, alanDegeri, merkez
Dim tabakaAdi, birim, donusumKatsayisi, birimEtiketi

With Netcad
    ' Dialog penceresi oluştur
    Set sabangul1 = .NewBDialog("Alan Değerlerini Adlara ve Merkeze Yazma [Şaban GÜL, sabangul.com]")
    sabangul1.PutPrompt "Seçilen alanların alan değerleri adlara ve merkeze yazı olarak yazılacaktır."
    sabangul1.GetString "onek", "Önek Giriniz (örn: ALAN_, isteğe bağlı):", "", 20
    sabangul1.GetInteger "basamak", "Ondalık Basamak Sayısı (0-4):", 2
    sabangul1.GetString "tabaka", "Yazıların Yazılacağı Tabaka Adı:", "ALAN_YAZILARI", 20
    sabangul1.GetRadio "birim", "Alan Birimi Seçiniz:", "Metrekare (m²)", 0
    sabangul1.AddRadio "Metrekare (m²)"
    sabangul1.AddRadio "Dönüm"
    sabangul1.AddRadio "Hektar"
    sabangul1.PutPrompt "Önek boş bırakılırsa sadece alan değeri kullanılır."

    ' Dialog penceresini göster
    If sabangul1.ShowModal Then
        sabangul2 = sabangul1.ValueByName("onek") ' Önek
        sabangul3 = sabangul1.ValueByName("basamak") ' Ondalık basamak
        sabangul4 = sabangul1.ValueByName("tabaka") ' Tabaka adı
        sabangul5 = sabangul1.ValueByName("birim") ' Birim
        ' Basamak sayısını 0-4 aralığında sınırla
        If sabangul3 < 0 Then sabangul3 = 0
        If sabangul3 > 4 Then sabangul3 = 4
    Else
        Exit Sub
    End If

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

    ' 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

    ' Birim dönüşüm katsayısını ve etiketi belirle
    Select Case sabangul5
        Case "Metrekare (m²)"
            donusumKatsayisi = 1
            birimEtiketi = ""
        Case "Dönüm"
            donusumKatsayisi = 0.001 ' 1 m² = 0.001 dönüm
            birimEtiketi = "dönüm"
        Case "Hektar"
            donusumKatsayisi = 0.0001 ' 1 m² = 0.0001 hektar
            birimEtiketi = "hektar"
    End Select

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

    ' Kullanıcıdan alan objelerini seçmesini iste
    If secimkumesi.Select("Alan Değerleri Yazılacak Objeleri Seçiniz...", Array(opline)) Then
        sabangul6 = 0 ' İşlenen obje sayacı
        For i = 0 To secimkumesi.NE - 1
            j = secimkumesi.GetSelectedObject(i, obje)
            alanDegeri = obje.area * donusumKatsayisi ' Alanı birime çevir
            ' Alanı belirtilen basamağa yuvarla
            alanDegeri = Round(alanDegeri, sabangul3)
            ' Önek + yuvarlanmış alan değerini ad olarak ata
            obje.pname = sabangul2 & CStr(alanDegeri)
            .PutObject j, obje ' Objeyi güncelle

            ' Ağırlık merkezini al
            Set merkez = obje.Centroid
            ' Yazı objesi oluştur
            yaziObje.type = otext ' Yazı objesi tipi
            yaziObje.tabaka = tabakaNo ' Belirtilen tabaka
            yaziObje.text = sabangul2 & CStr(alanDegeri) ' Yazı içeriği
            yaziObje.x = merkez.x ' Merkez X koordinatı
            yaziObje.y = merkez.y ' Merkez Y koordinatı
            yaziObje.height = 1 ' Yazı yüksekliği (varsayılan)
            yaziObje.angle = 0 ' Yazı açısı
            .AddObject yaziObje ' Yazıyı ekle
            sabangul6 = sabangul6 + 1
        Next
        secimkumesi.RedrawAndRewind ' Ekranı yenile
        MsgBox "Seçilen " & sabangul6 & " adet alanın adı ve merkezi yazı objeleri başarıyla güncellendi." & vbCrLf & _
               "Önek: " & sabangul2 & vbCrLf & _
               "Ondalık Basamak: " & sabangul3 & vbCrLf & _
               "Birim: " & sabangul5 & vbCrLf & _
               "Yazılar Tabakası: " & tabakaAdi, 64, "Şaban GÜL, sabangul.com"
    Else
        MsgBox "Hiçbir alan objesi seçilmedi!", 48, "Şaban GÜL, sabangul.com"
    End If

    ' Belleği temizle
    Set secimkumesi = Nothing
    Set obje = Nothing
    Set yaziObje = Nothing
    Set sabangul1 = Nothing
    Set merkez = 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.