Home / Netcad Makro / Alan Adında Karakter Sonrası Silen Makro

Alan Adında Karakter Sonrası Silen Makro

AdDuzelt Prosedürü:

Eski: o.pname = Mid(o.pname, pozisyon + Len(ayrac)) → Ayraçtan sonrasını alıyordu (örn. 101/1 → 1).

Yeni: o.pname = Left(o.pname, pozisyon – 1) → Ayraçtan öncesini alıyor (örn. 101/1 → 101).

Mantık:

InStr(o.pname, ayrac) ile ayraç pozisyonu bulunur.

Left(o.pname, pozisyon – 1) ile ayraçtan önceki kısım alınır.

Eğer ayraç yoksa (pozisyon = 0), pname değişmez.

If o.Tag = opline kontrolü aynı kaldı.

Main Prosedürü:

Tamamen aynı:

InputBox ile ayraç alınır, varsayılan değer ayrac.txt’den okunur.

Ayraç, C:\sabangul\NCMAKRO\AYAR\ayrac.txt’ye kaydedilir.

Array(opline) ile opline objeleri seçilir.

Mesaj: “Alan objelerini seçiniz”.

SEL.NE, GetSelectedObject, PutObject, RedrawAndRewind, SetCurrentWindow değişmedi.

Sadece InputBox mesajı güncellendi: “Hangi karakterden sonrası silinsin?”.

Ayar Dosyası:

C:\sabangul\NCMAKRO\AYAR\ayrac.txt’ye ayraç kaydedilir/okunur.

Dosya yoksa dizin oluşturulur, dosya oluşturulur.

Kullanıcı yeni ayraç girerse dosya güncellenir.

Örnek Senaryolar:

pname = “101/1”, ayrac = “/” → pname = “101”

pname = “PARSEL/ABC”, ayrac = “/” → pname = “PARSEL”

pname = “123-456”, ayrac = “-” → pname = “123”

pname = “NOAYRAC”, ayrac = “/” → Değişmez (pname = “NOAYRAC”).

İlk çalıştırma: InputBox’ta / varsayılan, kullanıcı – girer → ayrac.txt’ye – yazılır.

Sonraki çalıştırma: ayrac.txt’den – okunur, InputBox varsayılan – gösterir.


Kullanım

Makro, pname’den ayraçtan sonraki kısmı siler (örn. 101/1 → 101) ve ekranı günceller.

Netcad’de makroyu yükle (*.vbs veya *.ncm olarak).

Main prosedürünü çalıştır.

InputBox açılır:

İlk çalıştırmada varsayılan /, sonraki çalıştırmalarda C:\sabangul\NCMAKRO\AYAR\ayrac.txt’den okunan değer.

Yeni ayraç girersen (örn. -), dosya güncellenir.

İptal edersen makro kapanır.

Seçim ekranında opline objelerini (alanlar, poligonlar) seç.


📝 Netcad NVB Code

VB
' Opline Alan Adından En Sağdaki Karakter Sonrasını Silme Makrosu
' Açıklama: Kullanıcıdan seçilen opline (alan) objelerinin pname özelliğinden, kullanıcı tarafından belirtilen bir karakterin (örn. /) en sağdaki örneğinden sonraki kısmı siler. Örneğin, pname = "101/1/500" ise, en sağdaki / karakterinden sonraki 500 silinir ve pname = "101/1" olur. Ayraç karakteri C:\sabangul\NCMAKRO\AYAR\ayrac.txt dosyasına kaydedilir ve sonraki çalıştırmalarda buradan okunur.
' Yazar: Şaban Gül
' Tarih: 18 Mayıs 2025

Option Explicit

Sub Main
    Dim i, j, o, SEL, u, ayrac, fso, dosya, dosyaYolu
    Const AYAR_DIZINI = "C:\sabangul\NCMAKRO\AYAR"
    Const AYAR_DOSYASI = "ayrac.txt"
    dosyaYolu = AYAR_DIZINI & "\" & AYAR_DOSYASI

    With Netcad
        ' Dosya sistemi nesnesi oluştur
        Set fso = CreateObject("Scripting.FileSystemObject")

        ' Ayar dosyasını oku
        ayrac = "/"
        If fso.FileExists(dosyaYolu) Then
            Set dosya = fso.OpenTextFile(dosyaYolu, 1) ' 1 = okuma
            If Not dosya.AtEndOfStream Then
                ayrac = dosya.ReadLine
            End If
            dosya.Close
        End If

        ' Kullanıcıdan ayracı al (varsayılan: dosya veya /)
        ayrac = InputBox("Hangi karakterden sonrası silinsin? (örn. /)", "Karakter Seçimi", ayrac)
        If ayrac = "" Then Exit Sub ' Boş veya iptal edilirse çık

        ' Ayar dosyasını güncelle
        If Not fso.FolderExists(AYAR_DIZINI) Then
            fso.CreateFolder AYAR_DIZINI
        End If
        Set dosya = fso.CreateTextFile(dosyaYolu, True) ' True = üzerine yaz
        dosya.WriteLine ayrac
        dosya.Close

        Set SEL = .NewSelectionSet
        Set o = .NewObject
        If SEL.Select("Alan objelerini seçiniz", Array(opline)) Then
            For i = 0 To SEL.NE - 1
                j = SEL.GetSelectedObject(i, o)
                AdDuzelt o, ayrac
                .PutObject j, o
            Next
            SEL.RedrawAndRewind
            Set u = .GetCurrentWindow
            .SetCurrentWindow u, 1
        End If
        Set u = Nothing
        Set SEL = Nothing
        Set o = Nothing
        Set fso = Nothing
        Set dosya = Nothing
    End With
End Sub

Sub AdDuzelt(o, ayrac)
    If o.Tag = opline Then ' Sadece opline objeleri için çalış
        Dim parcalar, yeniAd, i
        parcalar = Split(o.pname, ayrac)
        If UBound(parcalar) > 0 Then ' En az bir ayraç varsa
            yeniAd = ""
            For i = 0 To UBound(parcalar) - 1
                If i > 0 Then yeniAd = yeniAd & ayrac
                yeniAd = yeniAd & parcalar(i)
            Next
            o.pname = yeniAd
        End If
    End If
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.