Bina Numaralarını Harfe Çeviren Makro (Convert Building Numbers to Letters)

netcad-yapi-adlari-sayidan-harfe-cevir

sabangul67@gmail.com
Mayıs 17, 20254 dk okuma2 görüntülenme

Bina Numaralarını Harfe Çeviren Akıllı Makro ile Yapı İsimlendirme Otomasyonu 🚀

Smart Macro for Converting Building Numbers to Letters with Automated Naming


Bu makro, Netcad ortamında bina isimlerini otomatik olarak düzenler. Örneğin, “123/5/1” gibi bir yapı ismini, yapı tipine göre “123/5/A” veya “T” (tescilli yapılar) ya da “Y” (yıkık yapılar) olarak değiştirir. Tescilli, tescilsiz ve yıkık yapıların tabaka isimlerine göre (TESCILLI, TESCILSIZ, YIKIK) işlem yapar. Ayrıca, eski alan isimlerini GIS ADI kısmına otomatik olarak aktarır. Kullanıcı dostu arayüzü ile seçim yaparak işlemi kolayca tamamlar ve kaç alanın düzeltildiğini bildirir.

This macro automates building naming in Netcad. It converts names like “123/5/1” to “123/5/A”, “T” (for registered buildings), or “Y” (for demolished buildings) based on layer names (TESCILLI, TESCILSIZ, YIKIK). It also transfers old names to the GIS NAME field automatically. With a user-friendly interface, it allows easy selection and reports the number of corrected fields.


Nasıl Çalışır (How Does It Work)

Kullanıcıya bir onay mesajı gösterir ve işlem için izin ister. Kullanıcı, değiştirmek istediği yapı alanlarını seçer. Makro, seçilen objelerin tabaka isimlerini kontrol eder (TESCILLI, TESCILSIZ, YIKIK). Yapı ismini “/” karakterine göre böler (örneğin, 123/5/1 → 123, 5, 1). Son rakamı, tanımlı harf dizisinden (A-Z, Ç, Ğ, İ, Ö, Ş, Ü) uygun harfle değiştirir. Tescilli yapılar için “T” veya “T”+sayı, yıkık yapılar için “Y” kullanılır. Eski ismi objenin GIS ADI kısmına kaydeder ve yeni ismi uygular. İşlem sonunda, düzeltilen alan sayısını bildirir.

Displays a confirmation message to proceed.
User selects the building areas to modify.
The macro checks the layer names of selected objects (TESCILLI, TESCILSIZ, YIKIK).
Splits the building name by “/” (e.g., 123/5/1 → 123, 5, 1).
Replaces the last number with a letter from the defined set (A-Z, Ç, Ğ, İ, Ö, Ş, Ü).
Uses “T” or “T”+number for registered buildings, “Y” for demolished ones.
Saves the old name to the GIS NAME field and applies the new name.
Reports the number of corrected fields at the end.


Etiket ( Labels )

Netcad makro, bina isimlendirme, yapı otomasyonu, tescilli yapılar, yıkık yapılar, GIS veri, harf dönüştürme, alan düzenleme, VBScript makro, Netcad otomasyon

Netcad macro, building naming, structure automation, registered buildings, demolished buildings, GIS data, letter conversion, field editing, VBScript macro, Netcad automation


📝 Netcad NVB Code

VB
' Şaban GÜL, sabangul67@gmail.com, sabangul.com
' Bu Makro Binalara verilen rakam değerini Harf olarak Yazar
' Örnek (123/5/1, 123/5/A olarak değişir), T harfi tescilli yapılar, Y harfi yıkık yapılar için kullanılır
Sub Main
Dim I,J,O,SEL,xls,pno,CL,bd,U,V,R,W,T,K,N,PR,ZF,say
DIM NO(50000,2)
J=MSGBOX (" Bu makro ile 101/1/1 gibi yazdığınız yapı isimleri " & chr(10) & " seçilen objenin tabakasına göre adı otomatik değişir." & chr(10) & "İsim değişimi için yapıların tabakalarında kural: Tescilliler Tabakasının Adı TESCILLI, Tescilsizlerin Tabakasının Adı TESCILSIZ, Yıkıklar Tabakasının Adı YIKIK ile bitmesi lazım. Son yapılan güncelleme ile eski alan isimleri GIS ADI kısmına otomatik aktarılacaktır." ,VBYESNO,"[www.sabangul.com.tr]")
IF J<>6 THEN EXIT SUB
with Netcad
set SEL = .NewSelectionSet
set o = .NewObject
W="ABCDEFGHIJKLMNOPRSUVZXWQÇĞİÖŞÜ"
if SEL.SELECT("Lütfen değiştirmek istediğiniz yapıların alanlarını seçiniz.",array(opline)) then
for i = 0 to SEL.NE-1
j = SEL.GetSelectedObject(i, o)
if INSTR(.layernameof (o.tabaka),"TESCILLI")>0 OR INSTR(.layernameof (o.tabaka),"TESCILSIZ")>0 OR INSTR(.layernameof (o.tabaka),"YIKIK")>0 then
pno=  o.pname
PR=SPLIT(pno,"/") ' parsel noyu "/" lar dan  böler; örnek: 101/59/3 => pr(0)=101, pr(1)=59 pr(2)=3 şeklinde böler.
V = Len(W):T = InStr(pno, "/"): K = InStr(Mid(pno, T + 1, V), "/")
U = Mid(pno, T + K + 1, V)
R=MID(W,U,1) ' tescilsizin harfini alır
if  instr(.layernameof (o.tabaka),"TESCILLI")>0 THEN
ZF=PR(2)-1:IF ZF<1 THEN R="T" ELSE  R="T" & ZF  'tescilliyse harfi T yap
END IF
if   instr(.layernameof (o.tabaka),"YIKIK")>0 THEN R="Y" 'yıkıksa harfi Y yap
o.objname= o.pname
o.PNAME =  LEFT(pno,T+K) & R    ' sonundaki rakamın yerine harf ekle
.putobject j, o
say=say+1
END IF
next
SEL.RedrawAndRewind
end if
set SEL = nothing
set o = nothing
end with
if say>0 then
MSGBOX    say & " adet alan adı Düzeltildi"
end if
end sub
VB

netcad-yapi-adlari-sayidan-harfe-cevir

Yazar

sabangul67@gmail.com

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

Tüm yazıları