Home / Netcad Makro / Tüm Objelerde / karakterini kaldırma

Tüm Objelerde / karakterini kaldırma

Detaylar olacak – Türkçe


📝 Netcad NVB Code

VB
' Netcad Obje İsimlerinde Karakter Değiştirme Makrosu
' Açıklama: Tüm objelerin isimlerinde (pname) "/" karakterini siler.
' Tarih: 18 Mayıs 2025, 11:41
' Yazar: Grok 3 (xAI)

Option Explicit

' Genel hata loglama fonksiyonu
Sub LogHata(mesaj)
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists("C:\NetcadLog") Then
        fso.CreateFolder "C:\NetcadLog"
    End If
    Set f = fso.OpenTextFile("C:\NetcadLog\makro_hata.log", 8, True)
    f.WriteLine FormatDateTime(Now, vbGeneralDate) & ": " & mesaj
    f.Close
    Set f = Nothing
    Set fso = Nothing
End Sub

' Genel mesaj gösterme fonksiyonu
Sub GosterMesaj(baslik , mesaj )
    MsgBox mesaj, tip, baslik
End Sub

' Obje isimlerinde "/" karakterini silme makrosu
Sub ObjeIsimKarakterSil()
    On Error Resume Next
    Dim bd, i, o, degisenObjeler, hataSayisi
    degisenObjeler = 0
    hataSayisi = 0

    With Netcad
        ' Diyalog penceresi oluştur
        Set bd = .NewBDialog("Obje İsimlerinde Karakter Silme")
        bd.PutPrompt "Tüm objelerin isimlerindeki '/' karakteri silinecek. Devam etmek istiyor musunuz?"
        bd.GetCheck "onay", "İşlemi Onayla", 1
        If Not bd.ShowModal Then
            GosterMesaj "Bilgi", "İşlem iptal edildi.", 64
            Exit Sub
        End If

        ' Onay kontrolü
        If bd.ValueByName("onay") = 0 Then
            GosterMesaj "Bilgi", "İşlem kullanıcı tarafından iptal edildi.", 64
            Exit Sub
        End If

        ' Objeleri tarama ve "/" karakterini silme
        .SetParam BeginBlock, True
        For i = 0 To .NumObject - 1
            Set o = .GetObject(i)
            If InStr(o.pname, "/") > 0 Then
                Dim eskiAd
                
                eskiAd = o.pname
             if o.tag=opline or o.tag=o.opoint then   eskiAd = o.pname
             if o.tag=otext  then eskiAd = o.s
             if o.tag=opline or o.tag=o.opoint then   o.pname = Replace(o.pname, "/", "")
               if o.tag=otext  then  o.s= Replace(o.s, "/", ""
                .PutObject i, o
                degisenObjeler = degisenObjeler + 1
            End If
            If Err.Number <> 0 Then
                hataSayisi = hataSayisi + 1
                Call LogHata("Obje " & i & " işlenirken hata: " & Err.Description)
            End If
        Next
        .SetParam EndBlock, True
        .Redraw

        ' Sonuç mesajı
        Dim mesaj
        mesaj = degisenObjeler & " objenin ismi güncellendi."
        If hataSayisi > 0 Then
            mesaj = mesaj & vbCrLf & hataSayisi & " hata oluştu. Detaylar için log dosyasını kontrol edin."
            GosterMesaj "Bilgi", mesaj, 48
        Else
            GosterMesaj "Bilgi", mesaj, 64
        End If
    End With

    ' Belleği temizle
    Set bd = Nothing
    Set o = Nothing
End Sub

' Ana çalıştırma prosedürü
Sub Main()
    On Error Resume Next
    Call ObjeIsimKarakterSil
    If Err.Number <> 0 Then
        Call LogHata("Ana prosedürde hata: " & Err.Description)
        GosterMesaj "Hata", "Bir hata oluştu. Detaylar için log dosyasını kontrol edin.", 16
    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.