Alan Adında Karakter Sonrası Silen Makro

Netcad alan adlarında bir karakter sonrasını silen makrodur. Alan adlarında bul değiştir yöntemi ile yapılamayan şeylerin yapılması bu makro ile mümkün olabiliyor. Netcad makrolarını kullanırken sadece alan adı değişeceğini unutmayınız.

sabangul67@gmail.com
Mayıs 18, 20253 dk okuma1 görüntülenme

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

Yazar

sabangul67@gmail.com

Bu yazarın yayınladığı diğer içerikleri inceleyebilirsiniz.

Tüm yazıları