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

netcad-alan-icindeki-alanlari-otomatik-adlandir

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

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

Quickly Name Small Areas Within a Larger Area: Netcad Macro Solution


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.

This macro automates the naming of small areas (unregistered, registered, or dilapidated) within a larger area (e.g., a parcel or large polygon) in Netcad software. Its user-friendly dialog box allows you to select the outer area layer and names small areas based on their type. For example, small areas within a larger area are named in formats like \”101/1/A\”, \”101/1/T\”, or \”101/1/Y\”. It creates a temporary layer for visualization and deletes it upon completion. It saves time for survey engineers and CAD users while minimizing errors in manual processes.

Automatic Netcad macro for naming small areas within a larger area! Fast solution for unregistered, registered, or dilapidated areas.


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.

Layer Selection: The macro opens a dialog box prompting the user to select the outer area layer (e.g., a large polygon layer).

Small Area Type Selection: The user specifies the type of small areas to be named (unregistered, registered, or dilapidated).

Automatic Naming: Names are assigned to the center points of selected small areas based on the outer area name, with added letters or numbers (e.g., \”101/1/A\” or \”101/1/T1\”).

Visualization: Small areas are drawn in red during processing, and a temporary layer (\”SGL_SIL_67\”) is created.

Cleanup: Upon completion, the temporary layer is deleted, and a \”DONE\” message is displayed.
This process offers a fast, error-free, and efficient alternative to manual naming.


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 Macro, Area Naming, Small Area Naming, Survey Engineering, Automation, Unregistered Areas, Registered Areas, Dilapidated Areas, CAD Automation, Parcel Management, Polygon Naming, Netcad Solutions, Mapping Automation, Area Detection, Engineering Software


📝 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

Yazar

sabangul67@gmail.com

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

Tüm yazıları