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
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
VBnetcad-alan-icindeki-alanlari-otomatik-adlandir
✅ 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.