Home / Netcad Makro / Alan İçindeki Küçük Alanları Otomatik Adlandırma Makrosu (Automatic Naming Macro for Small Areas Within a Larger Area)

Alan İçindeki Küçük Alanları Otomatik Adlandırma Makrosu (Automatic Naming Macro for Small Areas Within a Larger Area)

Alan İçindeki Küçük Alanları Hızla Adlandırın: Netcad Makro Çözümü


Bu makro, Netcad yazılımında bir alan (örneğin, parsel veya büyük bir poligon) içindeki küçük alanların (tecilsiz, tecilli veya yıkık alanlar) otomatik olarak dış alana göre adlandırılmasını sağlar. Kullanıcı dostu bir diyalog kutusu ile dış alan tabakasını seçmenize olanak tanır ve küçük alanların tipine göre adlandırma yapar. Örneğin, bir alan içindeki küçük alanlar “101/1/A”, “101/1/T” veya “101/1/Y” formatında adlandırılır. Geçici bir tabaka oluşturarak işlemleri görselleştirir ve işlem sonunda bu tabakayı siler. Harita mühendisleri ve CAD kullanıcıları için zaman tasarrufu sağlar, manuel işlemlerdeki hataları en aza indirir.

Alan içindeki küçük alanları otomatik adlandıran Netcad makrosu! Tecilsiz, tecilli veya yıkık alanlar için hızlı çözüm.


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

  • Tabaka Seçimi: Makro, bir diyalog kutusu açar ve kullanıcıdan dış alan tabakasını (örneğin, büyük bir poligon tabakası) seçmesini ister.
  • Küçük Alan Tipi Seçimi: Kullanıcı, adlandırılacak küçük alan tipini (tecilsiz, tecilli veya yıkık) belirler.
  • Otomatik Adlandırma: Seçilen küçük alanların merkez noktalarına, dış alan adına bağlı olarak harf veya sayı eklenerek isimler atanır (örneğin, “101/1/A” veya “101/1/T1”).
  • Görselleştirme: İşlem sırasında küçük alanlar kırmızı renkte çizilir ve geçici bir tabaka (“SGL_SIL_67”) oluşturulur.
  • Temizlik: İşlem tamamlandığında geçici tabaka silinir ve kullanıcıya “BİTTİ” mesajı gösterilir.
  • Bu süreç, manuel adlandırmaya kıyasla hızlı, hatasız ve verimli bir çözüm sunar.

Etiket ( Labels )

Netcad Makro, Alan Adlandırma, Küçük Alan Adlandırma, Harita Mühendisliği, Otomasyon, Tecilsiz Alanlar, Tecilli Alanlar, Yıkık Alanlar, CAD Otomasyonu, Parsel Yönetimi, Poligon Adlandırma, Netcad Çözümleri, Harita Otomasyonu, Alan Tespiti, Mühendislik Yazılımları,


📝 Netcad NVB Code

VB
Sub Main()
Dim i,BD,alanOBJ,alanPOLY,DISTBK,sec,DISALAN
with Netcad
set BD = .NewBDialog("Parsel İçindeki Yapıların İsmini Parselden Alma , Şaban GÜL, SAGUL.NET ")
    BD.GetCombo "DPALAN","Dış Alan Hangi Tabakada: ","LÜTFEN TABAKA SEÇİNİZ",0
    for i = 0 to .numlayers-1
        BD.AddCombo .LayerNameOf(i)
    next
  BD.PutPrompt " [+] Yukarıdan Küçük Alanların içinde Bulunduğu Dış Alan Tabakasını Seçiniz "
  BD.GetRadio "YPI", "Adlandırılacak Küçük Alan Tipini Seçiniz", "Tecilsiz Alanlar |Tecilli Alanlar | Yıkık Alanlar ",0
  BD.PutPrompt " [+] Ardından Karşınıza Çıkan Ekrandan, Sadece Adlandırılacak KÜÇÜK ALANLARI seçiniz"
  BD.PutPrompt " [+] Alanlar 101/1/A.. adlandırılır. "
  BD.PutPrompt "___________________________________________________________________"
  BD.PutPrompt "Şaban GÜL, Harita Mühendisi    www.sagul.net"

    if BD.ShowModal then
   sec= BD.ValueByName("YPI")
   DISALAN=BD.ValueByName("DPALAN")-1
    ELSE
    Exit sub
    end if
     
DISTBK = .LayerNameOf(DISALAN)
IF DISALAN<1 THEN EXIT SUB
NCLayerManager.add "SGL_SIL_67",5
 dim o,p
 dim SEL
 set SEL = .NewSelectionSet ' Yeni kume yarat
 set o = .NewObject
 set p=.Newpoly
 'TabNo = 3
 dim elif,fy
 dim j
 elif=0
if SEL.SELECT("İsmi Değiştirilecek Küçük Alanları Seçiniz , Şaban GÜL - Harita Mühendisi - www.sagul.net",array(opline)) then ' istenen turleri kumeye ekle
 for i = 0 to SEL.NE-1 ' kumenin her bir elemani icin
  elif=elif+1
 j = SEL.GetSelectedObject(i, o) ' objeyi ve gercek indeksini al
 set p=.getplineExt(o)
 o.renk = red ' rengini sari yap

dim ruhan
 ruhan=""
 ruhan = o.pname
 dim tx
 set tx=.MakePoint(p.CenterOfMass,ruhan,0, .foundlayer("SGL_SIL_67"))
 .addobject(tx)
next
 SEL.RedrawAndRewind ' secim kumesini toplu kendi renginde
 end if ' cizdir ve kumeyi basa sardir.

elif=0
        set alanOBJ = .newobject()
        .setFilter nothing,array(DISALAN),array(opline)
        while .GetNextObject2(alanOBJ)
            .DrawObject alanOBJ, blue
            if sec=0 then  TESCILSIZ alanOBJ,.foundlayer("SGL_SIL_67"),.CurObjPos,DISALAN
           if sec=1 then  TESCILLI alanOBJ,.foundlayer("SGL_SIL_67"),.CurObjPos,DISALAN
         if sec=2 then  YIKIK alanOBJ,.foundlayer("SGL_SIL_67"),.CurObjPos,DISALAN
        wend
        .Resetfilter
        set alanOBJ = nothing
  
    .BackMessage

dim alanOBJ2
   set alanOBJ2 = .newobject()
        .setFilter nothing,array(),array(opline)
        while .GetNextObject2(alanOBJ2)
            .DrawObject alanOBJ2, blue
     if DISALAN <> alanOBJ2.Tabaka then
     icalanno alanOBJ2,.foundlayer("SGL_SIL_67"),.CurObjPos,DISALAN
     end if 

wend
        .Resetfilter
        set alanOBJ2 = nothing

 '****************
dim toptbk ,tbksay
toptbk = .numlayers - 1
With nclayermanager
For tbksay = 0 To toptbk
if  .layer(tbksay).name = "SGL_SIL_67" then
.Delete tbksay, true
end if
next
End With
  '****************
end with
MSGBOX "BİTTİ"
End Sub

function  TESCILSIZ(refOBJ,LayerIndex,refOBJIndex,DISALAN)
dim i,yaziOBJ,refPOLY,HARF,HRF,ZF
dim elif
HARF="ABCDEFGHIJKLMNOPRSUVZXWQÇİÖŞÜĞ"
with netcad
    set yaziOBJ = .newobject()
    .setFilter refOBJ.Limits,array(LayerIndex),array(opoint)
    elif=0
    while .GetNextObject2(yaziOBJ)
        set refPOLY = .newobject()
        set refPOLY = refOBJ.GetObjectAsPline
        if refPOLY.InPoly(yaziOBJ.p1) then
        elif=elif+1
            .DrawObject yaziOBJ, red
               if yaziOBJ.tabaka <> DISALAN  then
                 HRF=mid(harf,elif,1)
            yaziOBJ.pname = refOBJ.pname & "/" & HRF
            .PutObject .CurObjPos, yaziOBJ
              END iF
        end if
        set refPOLY = nothing
    wend
    .Resetfilter
    set yaziOBJ = nothing
end with
end function

function  icalanno(refOBJ,LayerIndex,refOBJIndex,DISALAN)
dim i,yaziOBJ,refPOLY
with netcad
    set yaziOBJ = .newobject()
    .setFilter refOBJ.Limits,array(LayerIndex),array(opoint)
    while .GetNextObject2(yaziOBJ)
        set refPOLY = .newobject()
        set refPOLY = refOBJ.GetObjectAsPline
        if refPOLY.InPoly(yaziOBJ.p1) AND DISALAN<>refOBJ.TABAKA then
            .DrawObject yaziOBJ, red
          refOBJ.pname = yaziOBJ.pname
            .PutObject refOBJIndex, refOBJ
            end if
        set refPOLY = nothing
    wend
    .Resetfilter
    set yaziOBJ = nothing
end with
end function

function  TESCILLI(refOBJ,LayerIndex,refOBJIndex,DISALAN)
dim i,yaziOBJ,refPOLY,harf,hrf,zf
dim elif 
with netcad
    set yaziOBJ = .newobject()
    .setFilter refOBJ.Limits,array(LayerIndex),array(opoint)
    elif=0
    while .GetNextObject2(yaziOBJ)
        set refPOLY = .newobject()
        set refPOLY = refOBJ.GetObjectAsPline
        if refPOLY.InPoly(yaziOBJ.p1) then
        elif=elif+1
        zf=elif-1:IF zf<1 THEN HRF="T" ELSE  HRF="T" & zf
            .DrawObject yaziOBJ, red
               if yaziOBJ.tabaka <> DISALAN  then
                '  yaziOBJ.pname = refOBJ.pname & "/" & elif
          yaziOBJ.pname = refOBJ.pname & "/" & hrf
            .PutObject .CurObjPos, yaziOBJ
              END iF
        end if
        set refPOLY = nothing
    wend
    .Resetfilter
    set yaziOBJ = nothing
end with
end function

function  YIKIK(refOBJ,LayerIndex,refOBJIndex,DISALAN)
dim i,yaziOBJ,refPOLY,harf,hrf,zf
dim elif 
with netcad
    set yaziOBJ = .newobject()
    .setFilter refOBJ.Limits,array(LayerIndex),array(opointAlpha
    elif=0
    while .GetNextObject2(yaziOBJ)
        set refPOLY = .newobject()
        set refPOLY = refOBJ.GetObjectAsPline
        if refPOLY.InPoly(yaziOBJ.p1) then
        elif=elif+1
        zf=elif-1:IF zf<1 THEN HRF="Y" ELSE  HRF="Y" & zf
            .DrawObject yaziOBJ, red
               if yaziOBJ.tabaka <> DISALAN  then
                '  yaziOBJ.pname = refOBJ.pname & "/" & elif
          yaziOBJ.pname = refOBJ.pname & "/" & hrf
            .PutObject .CurObjPos, yaziOBJ
              END iF
        end if
        set refPOLY = nothing
    wend
    .Resetfilter
    set yaziOBJ = nothing
end with
end function
VB

netcad-alan-icindeki-alanlari-otomatik-adlandir

⚠️ 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.
Etiketlendi: