Autocad VBA uygulamaları: 2. Basit metraj
Merhabalar!
Bugün metraj yaparken kullanılabilecek, bir mahale ait polyline tıklandığında bu polyline ın alan ve çevresini bir text dosyasına tabseperated biçiminde ihrac eden kodu paylaşıyorum. Tabiki bu kod çok daha geliştirilebilir. Örneğin kullanıcıdan mahal adı girmek yerine bir text nesnesinden yada attribute nesnesinden mahal adı alınabilir. Oluşturulan text dosyasının tabseperated olması, Excel gibi programlara ithal edilirken, kolonların sorunsuz bir şekilde tanınması için çok kullanışlıdır.
Bugün metraj yaparken kullanılabilecek, bir mahale ait polyline tıklandığında bu polyline ın alan ve çevresini bir text dosyasına tabseperated biçiminde ihrac eden kodu paylaşıyorum. Tabiki bu kod çok daha geliştirilebilir. Örneğin kullanıcıdan mahal adı girmek yerine bir text nesnesinden yada attribute nesnesinden mahal adı alınabilir. Oluşturulan text dosyasının tabseperated olması, Excel gibi programlara ithal edilirken, kolonların sorunsuz bir şekilde tanınması için çok kullanışlıdır.
Dikkat edilmesi gereken, seçilecek polyline ların "closed" özelliğinde olması ve tabiki de polyline olması :)
Kullanıcıdan alınan bilgiler, C: sürücüsünde data isimli klasördeki (bu klasörün daha önceden oluşturulmuş olması gerekli) METRAJTABLO.txt isimli dosyaya yazılır. Bu dosyaya APPEND yani alt alta eklenerek data girilir. Eğer baştan başlamak istenirse bu dosya açılıp içeriği elle temizlenmelidir. Tabiki dosya adı ve yolu istenildiği şekilde düzenlenebilir. Nitekim bazı işletim sistemleri C: sürücüsünü yazmaya karşı koruyabilmektedir. Bu nedenle yazma hakkına sahip olduğunuz bir klasör adı girmenizi tavsiye ediyorum. Mesela masaüstünde bir klasörün tam yolu gibi.
Sub basitMetraj()
Dim mahaladi As String
Dim pl As AcadEntity
Dim alan As Double
Dim strng As String
Dim cevre As Double
mahaladi = ThisDrawing.Utility.GetString(True, "MAHAL ADINI GIRINIZ...")
ThisDrawing.Utility.GetEntity pl, f, "POLYLINE SECINIZ..."
alan = FormatNumber(pl.Area / 10000, 3, vbFalse, vbFalse, vbFalse)
cevre = FormatNumber(pl.Length, 3, vbFalse, vbFalse, vbFalse)
strng = mahaladi & vbTab & CStr(alan) & vbTab & cevre
WTF strng
End Sub
Function WTF(yazilacak As String)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Dim path As String
Dim yaz As String
yaz = CStr(yazilacak)
path = "C:\data\METRAJTABLO.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(path, ForAppending, True, -1)
f.writeline (yaz)
f.Close
End Function
herkese kolay gelsin...