7 Ocak 2015 Çarşamba

Microstation VBA Yazılara ek vermek

Program Facebook "Microstation Kullanıyorum" grubu üyelerini isteği üzerine yapılmıştır.



 Yazı Ek programı Microstation VBA ile yazılmış bir programdır. Amacı text elementlerinin önüne ve/veya arkasına ilaveler yaptırmak.

Öncelikle Microstationda
Utilities-Macro-Project Manager
Penceresini açalım ve yaziek adında yeni bir mvba dosyası oluşturalım.
VBA düzenleme kısmında yandaki isimlerde bir form ve modül oluşturalım. Forma yandaki gibi nesneleride oluşturalım ve nesnelerin komutlarını yazalım.
Ayrıntıları videoda bulabilirsiniz.







'--------------------------------------------------------------------------------------------------
Sub TextEk_main()
  Form_YaziEk.Show
End Sub

'--------------------------------------------------------------------------------------------------
Function Text_Guncelle(eText As TextElement)
   eText.Text = Form_YaziEk.TBOnek & eText.Text & Form_YaziEk.TBSonek
   eText.Redraw
   eText.Rewrite
End Function

'--------------------------------------------------------------------------------------------------
FormYazi_Ek Formu Kodları

  
'--------------------------------------------------------------------------------------------------
Private Sub CBFence_Click()
  Dim oElement As Element    ' Element bilgilerini içerecek bir değişken
  Dim oScanEnumerator As ElementEnumerator  'Element sayacı
  Dim oFence As Fence 
  Set oFence = ActiveDesignFile.Fence
  If oFence.IsDefined Then
     Set oScanEnumerator = oFence.GetContents
     Do While oScanEnumerator.MoveNext
        Set oElement = oScanEnumerator.Current
        If oElement.Type = msdElementTypeText Then
           Call Text_Guncelle(oElement.AsTextElement)
        End If
     Loop
 End If
End Sub
'--------------------------------------------------------------------------------------------------
Private Sub CBSecili_Click()
  Dim oElement As Element
  Dim oScanEnumerator As ElementEnumerator
  Set oScanEnumerator = ActiveModelReference.GetSelectedElements
  Do While oScanEnumerator.MoveNext
    Set oElement = oScanEnumerator.Current
    If oElement.Type = msdElementTypeText Then
       Call Text_Guncelle(oElement.AsTextElement)
    End If
  Loop
End Sub
'--------------------------------------------------------------------------------------------------
Private Sub CBTumu_Click()
  Dim oElement As Element
  Dim oScanEnumerator As ElementEnumerator
  Dim oScanCriteria As ElementScanCriteria
  Set oScanCriteria = New ElementScanCriteria
  oScanCriteria.ExcludeAllTypes
  oScanCriteria.IncludeType msdElementTypeText
  Set oScanEnumerator = ActiveModelReference.Scan(oScanCriteria)
  Do While oScanEnumerator.MoveNext
    Set oElement = oScanEnumerator.Current
    If oElement.Type = msdElementTypeText Then
       Call Text_Guncelle(oElement.AsTextElement)
    End If
  Loop
End Sub
'--------------------------------------------------------------------------------------------------
Private Sub Image1_Click()
  Call Navigate("http://bybesu.blogspot.com.tr/2015/01/microstation-vba-yazlara-ek-vermek.html")
End Sub
'--------------------------------------------------------------------------------------------------



Hasan Basri KARA
Harita Mühendisi
Bursa Büyükşehir Belediyesi
Coğrafi Bilgi Sistemleri
Şube Müdürlüğü