10 Ocak 2017 Salı

Microstation Vba Form ile Data Blok kullanımı verilerin Excele yazdırılması

FormDBlock kodları

Dim parsel As DBParsel

Private Sub CAl_Click()
   Call BilgiOku
End Sub

Private Sub CVer_Click()
   Call BilgiEkle
End Sub

Private Sub UserForm_Initialize()
   Call BilgiOku
End Sub

Function ParselBilgi(dblk As DataBlock, parsel As DBParsel, copyToDataBlock As Boolean)
    dblk.CopyLong parsel.id, copyToDataBlock
    dblk.CopyString parsel.Mah, copyToDataBlock
    dblk.CopyLong parsel.Ada, copyToDataBlock
    dblk.CopyLong parsel.parsel, copyToDataBlock
    dblk.CopyDouble parsel.Yuzolcumu, copyToDataBlock
    dblk.CopyString parsel.Sahibi, copyToDataBlock
    dblk.CopyString parsel.Aciklama, copyToDataBlock
End Function

Function BilgiEkle()
    Dim ele As Element
    Dim dblk As New DataBlock
    Dim dblke() As DataBlock
    If seciliElement(ele) Then
       parsel.id = Val(TId.Text)
       parsel.Mah = TMah.Text
       parsel.Ada = Val(TAda.Text)
       parsel.parsel = Val(TParsel.Text)
       parsel.Yuzolcumu = Val(TYuzolcumu)
       parsel.Sahibi = TSahibi
       parsel.Aciklama = TAciklama
     
       dblke = ele.GetUserAttributeData(parselId)
       ReDim Preserve dblke(0)
       If Not dblke(0) Is Nothing Then
          ele.DeleteUserAttributeData parselId, 0
          ele.Rewrite
       End If
       Call ParselBilgi(dblk, parsel, True)
       ele.AddUserAttributeData parselId, dblk
       ele.Rewrite
    End If
End Function

Function BilgiOku()
    Dim ele As Element
    Dim dblke() As DataBlock
    Dim parsel As DBParsel
    Dim value As Long, name As String
    If seciliElement(ele) Then
       dblke = ele.GetUserAttributeData(parselId)
       ReDim Preserve dblke(0)
       If Not dblke(0) Is Nothing Then
          ParselBilgi dblke(0), parsel, False
          TId.Text = Str(parsel.id)
          TMah.Text = parsel.Mah
          TAda.Text = Str(parsel.Ada)
          TParsel.Text = Str(parsel.parsel)
          TYuzolcumu = parsel.Yuzolcumu
          TSahibi = parsel.Sahibi
          TAciklama = parsel.Aciklama
       End If
    End If
End Function

Function seciliElement(ByRef sElement As Element) As Boolean
    Dim oScanEnumerator As ElementEnumerator
 
    If ActiveModelReference.AnyElementsSelected Then
        Set oScanEnumerator = ActiveModelReference.GetSelectedElements
        oScanEnumerator.MoveNext
        Set sElement = oScanEnumerator.Current
        seciliElement = True
    Else
        seciliElement = False
        MsgBox ("Secili Element yok")
    End If
End Function


Modul DBlock kodları


Public Type DBParsel

       id As Long

       Mah As String

       Ada As Long

       parsel As Long
       Yuzolcumu As Double
       Sahibi As String
       Aciklama As String
 End Type

Public Const parselId As Long = 1453

Sub ParselBilgisi()
   FormDBlock.Show
End Sub



Parsellerin Excele yazdırılması


Parsellerin kapalı alan olması gerekmektedir.
Bilgi verdiğimiz parselleri seçerek excele yazdıralım.
Excelin açık olamsı lazım. Aktif Excel sayfasına veriler yazılacaktır.
Formumuza 2 tane buton ekleyelim
CExcele  ve CExcelden  isimleri verelim

Projeye Fonksiyonlar diye bir modül ekleyelim. İçine alttaki fonksiyonları yazalım

Declare Function mdlElmdscr_isGroupedHole Lib "stdmdlbltin.dll" (ByVal groupEdP As Long) As Long

Public Function IsGroupedHole(ByVal oElement As Element) As Boolean
    IsGroupedHole = 0 <> mdlElmdscr_isGroupedHole(oElement.MdlElementDescrP)
End Function

Public Function HoleArea(ByVal oGroupedHole As CellElement) As Double
    HoleArea = 0#
    On Error GoTo err_ComputeGroupedHoleArea

    If (IsGroupedHole(oGroupedHole)) Then
        Dim area        As Double
        Dim oEnumerator As ElementEnumerator
        Set oEnumerator = oGroupedHole.GetSubElements
        '   Get enclosing element
        oEnumerator.MoveNext
        If (oEnumerator.Current.IsClosedElement) Then
            area = oEnumerator.Current.AsClosedElement.area
        End If

        Do While oEnumerator.MoveNext
            '   Get each hole element
            If (oEnumerator.Current.IsClosedElement) Then
                area = area - oEnumerator.Current.AsClosedElement.area
            End If
        Loop

        If (0# < area) Then
            HoleArea = area
        End If
    End If

    Exit Function

err_ComputeGroupedHoleArea:
    MsgBox "Error no. " & CStr(Err.Number) & ": " & Err.Description, vbOKOnly Or vbCritical, "Error in ComputeGroupedHoleArea"
End Function

Function GetOrigin(ele As Element) As Point3d
    If ele.IsClosedElement Then GetOrigin = ele.AsClosedElement.Centroid
    If ele.IsCellElement Then GetOrigin = ele.AsCellElement.Origin
'    If ele.IsApplicationElement Then GetOrigin = ele.AsApplicationElement.Range

End Function

Sub ElementScanComplex(oElement As ComplexElement)
    Dim oEnumerator As ElementEnumerator
    Dim oSubElement As Element

    Set oEnumerator = oElement.GetSubElements

    Do While oEnumerator.MoveNext
    
        Set oSubElement = oEnumerator.Current
        If oSubElement.IsTextElement = True Then
            TextGetAttributes oSubElement
        Else
            ShowError "Sub unit found is not a text element!"
            Exit Sub
        End If
              
        If oSubElement.IsComplexElement Then
            ElementScanComplex oSubElement
        End If
    Loop
    
End Sub
Function besuLevel(levname As String) As Level
   Set besuLevel = ActiveDesignFile.Levels.Find(levname)
   If besuLevel Is Nothing Then
      CadInputQueue.SendKeyin "level create " & Chr(34) & levname & Chr(34)
      Set besuLevel = ActiveDesignFile.Levels.Find(levname)
   End If
End Function



formun kod alananına 2 fonksiyon ilave edelim

Function ParselBilgiOku(ele As Element) As DBParsel
    Dim dblke() As DataBlock
       dblke = ele.GetUserAttributeData(parselId)
       ReDim Preserve dblke(0)
       If Not dblke(0) Is Nothing Then
          ParselBilgi dblke(0), ParselBilgiOku, False
       End If
End Function

Function ParselBilgiYaz(ele As Element, parsel As DBParsel)
    Dim dblk As New DataBlock
    Dim dblke() As DataBlock
       
       dblke = ele.GetUserAttributeData(parselId)
       ReDim Preserve dblke(0)
       If Not dblke(0) Is Nothing Then
          ele.DeleteUserAttributeData parselId, 0
          ele.Rewrite
       End If
       
       Call ParselBilgi(dblk, parsel, True)
       ele.AddUserAttributeData parselId, dblk
       ele.Rewrite
End Function

CExcele butonuna kod ekleyelelim

Private Sub CExcele_Click()
    Dim Counter As Long
    Dim oScanCriteria As ElementScanCriteria
    Dim oScanEnumerator As ElementEnumerator
    Dim oElement As Element
    Dim satir As Integer
    Dim Elementno As Long
    Dim sElement As Element
    Dim cElement As Element
    Dim vw As View
    Dim ci As CursorInformation
    Dim yazien As Double, yaziboy As Double
    Dim chElement As CellElement
    Dim ec As ElementCache
    Dim alan As Double
    Dim parsel As DBParsel
    
    Dim oDE As DroppableElement
    Dim oEE As ElementEnumerator
    
    Set oXL = GetObject(, "Excel.Application")
    Set oSheet = oXL.activeWorkbook.activesheet
    
    Counter = 1
    oSheet.Cells(Counter, 1).value = "Sıra"
    oSheet.Cells(Counter, 2) = "Level"
    oSheet.Cells(Counter, 3) = "Renk Çizgi"
    oSheet.Cells(Counter, 4) = "Renk Dolgu" '-1 boş
    oSheet.Cells(Counter, 5) = "origin.x"
    oSheet.Cells(Counter, 6) = "origin.y"
    oSheet.Cells(Counter, 7) = "Transparency"
    oSheet.Cells(Counter, 8) = "Priority"
    oSheet.Cells(Counter, 9) = "ID.Low"
    oSheet.Cells(Counter, 10) = "ID.High"
    oSheet.Cells(Counter, 11) = "Hesap Alanı"

    oSheet.Cells(Counter, 15) = "ID"
    oSheet.Cells(Counter, 16) = "Mahalle"
    oSheet.Cells(Counter, 17) = "Ada"
    oSheet.Cells(Counter, 18) = "Parsel"
    oSheet.Cells(Counter, 19) = "Yüzölçümü"
    oSheet.Cells(Counter, 20) = "Sahibi"
    oSheet.Cells(Counter, 21) = "Açıklama"

    oSheet.Cells(1, 36).FormulaR1C1 = "=COUNT(C[-31],1)"
    

    
    Counter = oSheet.Cells(1, 36) + 1
    Set oScanEnumerator = ActiveModelReference.GetSelectedElements
        Dim shapeel As Element
        Do While oScanEnumerator.MoveNext
           Set oElement = oScanEnumerator.Current
           'If oElement.IsShapeElement Or oElement.IsComplexShapeElement Then
           With oElement
              If IsGroupedHole(oElement) Or oElement.IsClosedElement Then
                 If IsGroupedHole(oElement) Then
                   alan = HoleArea(oElement.AsCellElement)
                   Set oDE = oElement
                   Set oEE = oDE.Drop
                   Set chElement = oElement
                
                   Do While oEE.MoveNext
                      With oEE.Current
                         If .IsClosedElement Then
                            If Not .AsClosedElement.IsHole Then
                               oSheet.Cells(Counter, 2) = .Level.name
                               Origin = GetOrigin(oEE.Current)
                               oSheet.Cells(Counter, 3) = .Color
                               oSheet.Cells(Counter, 4) = .AsClosedElement.FillColor
                               oSheet.Cells(Counter, 11) = alan
                            End If
                         End If
                      End With
                   Loop
        
                 End If
                 If .IsClosedElement Then
                    oSheet.Cells(Counter, 2) = oElement.Level.name
                    Origin = GetOrigin(oElement)
                    oSheet.Cells(Counter, 3) = .Color
                    oSheet.Cells(Counter, 4) = .AsClosedElement.FillColor
                    oSheet.Cells(Counter, 11) = Format(.AsClosedElement.area, "0.0000")
                 End If
                 
                 parsel = ParselBilgiOku(oElement)
                 oSheet.Cells(Counter, 5) = Format(Origin.X, "0.00")
                 oSheet.Cells(Counter, 6) = Format(Origin.Y, "0.00")
                 oSheet.Cells(Counter, 7) = .Transparency
                 oSheet.Cells(Counter, 8) = .DisplayPriority
                 oSheet.Cells(Counter, 9) = .id.Low
                 oSheet.Cells(Counter, 10) = .id.High
                 
                 oSheet.Cells(Counter, 15) = parsel.id
                 oSheet.Cells(Counter, 16) = parsel.mah
                 oSheet.Cells(Counter, 17) = parsel.Ada
                 oSheet.Cells(Counter, 18) = parsel.parsel
                 oSheet.Cells(Counter, 19) = parsel.Yuzolcumu
                 oSheet.Cells(Counter, 20) = parsel.Sahibi
                 oSheet.Cells(Counter, 21) = parsel.Aciklama

                 Counter = Counter + 1
                 oSheet.Cells(Counter, 1).Select
              End If
           End With
       Loop
    GoTo gec
hatavar:
    Resume Next
gec:

End Sub


CExcelden butonuna kod ekleyelim

Private Sub CExcelden_Click()
   Dim id As DLong
   Dim i As Integer, lvlCount As Long
   Dim elem As Element
   Dim satir As Integer
   Dim lev As Level
   Dim satsay As Integer
   Dim URLTextTitle, URLText As String
   Dim ggroup As Long
   Dim parsel As DBParsel
   
   
    Counter = 0
    Set oXL = GetObject(, "Excel.Application")
    Set oSheet = oXL.activeWorkbook.activesheet
    
    Counter = 2
    Do While oSheet.Cells(Counter, 2) <> ""
        oSheet.Cells(Counter, 2).Select
        id.Low = oSheet.Cells(Counter, 9)
        id.High = oSheet.Cells(Counter, 10)
        Set elem = ActiveModelReference.GetElementByID(id)
        elem.Level = besuLevel(oSheet.Cells(Counter, 2))
           
              If elem.IsClosedElement Then
                 elem.AsClosedElement.FillMode = msdFillModeOutlined
                 elem.Color = oSheet.Cells(Counter, 3)
                 elem.AsClosedElement.FillColor = oSheet.Cells(Counter, 4)
                 If oSheet.Cells(Counter, 4) < 0 Then
                    elem.AsClosedElement.FillColor = 0
                    elem.AsClosedElement.FillMode = msdFillModeNotFilled
                 End If
              End If
        elem.Transparency = oSheet.Cells(Counter, 7) / 100
        elem.DisplayPriority = oSheet.Cells(Counter, 8)
        
        parsel.id = oSheet.Cells(Counter, 15)
        parsel.mah = oSheet.Cells(Counter, 16)
        parsel.Ada = oSheet.Cells(Counter, 17)
        parsel.parsel = oSheet.Cells(Counter, 18)
        parsel.Yuzolcumu = oSheet.Cells(Counter, 19)
        parsel.Sahibi = oSheet.Cells(Counter, 20)
        parsel.Aciklama = oSheet.Cells(Counter, 21)
        Call ParselBilgiYaz(elem, parsel)
        elem.Rewrite
        Counter = Counter + 1
    Loop
End Sub


Yeşil sütunlar excelde değiştirilip geüncelleme yapılabilir.


9 Ocak 2017 Pazartesi

Microstation VBA DataBlock örneği


Private Const parselMulkiyetId As Long = 1453
Private Type DBParsel
       id As Long
       Mah As String
       Ada As Long
       parsel As Long
       Yuzolcumu As Double
       Sahibi As String
       Aciklama As String
 End Type

'  AddLinkage and GetLinkage both transfer the data using TransferBlock.
'  That way, it is easy to be certain that the transfer always occur in the
'  same order.
Private Sub ParselBilgi(dblk As DataBlock, parsel As DBParsel, copyToDataBlock As Boolean)
    dblk.CopyLong parsel.id, copyToDataBlock
    dblk.CopyString parsel.Mah, copyToDataBlock
    dblk.CopyLong parsel.Ada, copyToDataBlock
    dblk.CopyLong parsel.parsel, copyToDataBlock
    dblk.CopyDouble parsel.Yuzolcumu, copyToDataBlock
    dblk.CopyString parsel.Sahibi, copyToDataBlock
    dblk.CopyString parsel.Aciklama, copyToDataBlock
End Sub

Sub BilgiEkle()
    Dim ele As element
    Dim dblk As New DataBlock
    Dim parsel As DBParsel

    If seciliElement(ele) Then
       parsel.id = 1
       parsel.Mah = "Balmumcu"
       parsel.Ada = 2500
       parsel.parsel = 1
       parsel.Yuzolcumu = 1000.58
       parsel.Sahibi = "Yıldız"
       parsel.Aciklama = "Parsel Açıklaması"
       Call ParselBilgi(dblk, parsel, True)
       ele.AddUserAttributeData parselMulkiyetId, dblk
       ele.Rewrite
    End If
End Sub

Sub BilgiOku()
    Dim ele As element
    Dim dblk() As DataBlock
    Dim parsel As DBParsel
    Dim value As Long, name As String
    If seciliElement(ele) Then
       dblk = ele.GetUserAttributeData(parselMulkiyetId)
       ParselBilgi dblk(0), parsel, False
       MsgBox "parsel bilgi" & Chr(10) _
            & "ID=" & parsel.id & Chr(10) _
            & "Mahalle=" & parsel.Mah & Chr(10) _
            & "Ada=" & parsel.Ada & Chr(10) _
            & "Parsel=" & parsel.parsel & Chr(10) _
            & "Sahibi=" & parsel.Sahibi & Chr(10) _
            & "Yüzölçümü=" & parsel.Yuzolcumu & Chr(10) _
            & "Açıklama=" & parsel.Aciklama & Chr(10)
    End If
End Sub

Function seciliElement(ByRef sElement As element) As Boolean
    Dim oScanEnumerator As ElementEnumerator
 
    If ActiveModelReference.AnyElementsSelected Then
        Set oScanEnumerator = ActiveModelReference.GetSelectedElements
        oScanEnumerator.MoveNext
        Set sElement = oScanEnumerator.Current
        seciliElement = True
    Else
        seciliElement = False
        MsgBox ("Secili Element yok")
    End If
End Function

4 Ocak 2017 Çarşamba

Microstation Vba Cizim Alanı Çerçevesi ekleme




Çizim alacağınız alana çerçeve çizdirin.
Yazdıracağınız kağıt boyutunu listeden seçebilir veya özel ayarlardan kağıt boyutunu kendiniz verebilirsiniz.
Cizim Alanı olarak bir dikdörtgen çizecektir.
Ölçek işaretli olursa Sağ alt kısma Ölçek yazdırılır.
Çizilen dikdörtgen Fence olarak işaretlenecektir. Direkt yazıcıya gönderebilirsiniz.

Microstation Vba Cephe yazdırma


Line, Linestring ve shape elementlerine cephe yazdırabilirsiniz.
cephe formatı { } parantezleri arasına yazılacak
parantezlerin önünde ve sonunda yazdırmak istediğiniz ekleri yazdırabilirsiniz.




Key-in komutu
vba run cepheyaz_pr2.Cepheyaz

10 Kasım 2016 Perşembe

Sondaj Noktası Litolojisi


Nokta bilgileri Excel sayfası


 Sondaj noktasına ait bilgilerin Microstationa silindir şeklinde çizilmesi.

Sondaj noktasının koordinatları 0,0,0, olarak ele alınacak, boru yarıçapı 10 m default olarak kullanılacak. Eklemeler Y yönünde olacak.

Öncelikle Microstationda
Utilities-Macro-Project Manager
Penceresini açalım ve silindir adında yeni bir mvba dosyası oluşturalım.


İçine Kodlarımızı yazalım:

Sub Silindir()
   Dim pointS As Point3d
   Dim pointE As Point3d
   Dim cap As Double
   Dim oPipe  As Element
   Dim levname As String
   
   cap = 10

   Set oXL = GetObject(, "Excel.Application")
   Set oSheet = oXL.activeWorkbook.activesheet
   
   k = 2

   Do While oSheet.cells(k, 1) <> ""
      pointS.X = 0
      pointS.Y = -oSheet.cells(k, 2)
      pointS.Z = 0
   
      pointE.X = 0
      pointE.Y = -oSheet.cells(k, 3)
      pointE.Z = 0
      
      levname = oSheet.cells(k, 4)
      
      Set oPipe = SilindirCiz(pointS, pointE, cap, msdDrawingModeNormal)
      oPipe.Level = myLevel(levname)
      ActiveModelReference.AddElement oPipe
      k = k + 1
   Loop
End Sub

Private Function SilindirCiz(ByRef startPoint As Point3d, ByRef endPoint As Point3d, ByVal radius As Double, ByVal drawMode As MsdDrawingMode) As Element
    Set SilindirCiz = Nothing
    Dim oCone As ConeElement
    Set oCone = CreateConeElement1(Nothing, radius, startPoint, radius, endPoint, Matrix3dIdentity)
    oCone.Redraw drawMode
    Set SilindirCiz = oCone
End Function

Private Function myLevel(levname As String) As Level
   Set myLevel = ActiveDesignFile.Levels.Find(levname)
   If myLevel Is Nothing Then
      CadInputQueue.SendKeyin "level create " & Chr(34) & levname & Chr(34)
      Set myLevel = ActiveDesignFile.Levels.Find(levname)
   End If
End Function


Bu örnek dahada geliştirilebilir.
Örneğin 5 sütuna renk bilgisi eklenip

oPipe.Color = oSheet.cells(k, 5)

dediğimizde rengide excelden alınabilir.




Programı çalıştırmak için Key-in komut satırına
vba run Silindir 
dememiz yeterli.

  Çalışması için çalışma sayfası 3D, Excel dosyasının açık olması ve nokta bilgilerinin sayfası aktif olmalıdır.

silindir.mvba

21 Ağustos 2016 Pazar

Excel ile Kurban Satış Takibi




Kurban Satış Takip Programı;
Büyükbaş kurban satışları için kullanılabilecek Excelde oluşturulmuş bir programdır.
Excelde,
Kişiler
Kurbanlıklar
Sayfaları bulunmaktadır. Kurbanlıklar sayfasında kurban bilgileri girilir.
Kişiler sayfasında Hisse Satışı düğmesi ile program calıştırılır.

Programın calışması icin Office - Excelin 32 bit olması gerekir. 
Windows 64 olabilir.

32 bit office kurulduğundan emin iseniz  MSCOMCTL.OCX dosyası indirilip sisteme register edilmelidir.

MSCOMCTL.OCX dosyası

 32 bit Windows ta
 c:\windows\system32 ye kopyalanır
calıştır komutuna
regsvr32 c:\windows\system32\mscomctl.ocx
yazılarak register edilir.

64 bit windows ta
c:\windows\syswow64 dizinine kopyalanır
calıştır komutuna veya command (cmd) satırına
regsvr32 c:\windows\syswow64\mscomctl.ocx
yazılarak register edilir.

Acılışta Güvenlik Uyarısı olarak Macrolar devre dışı bırakıldı diyor ise Seceneklerden icerik etkinleştirilir.
Register edilince alttaki uyarı alınacaktır.

Yardım almak isteyenler telden bana ulaşabilirler. Dosyanın Ana Sayfasında telefon numaram mevcut.
Bilgisayardan destek almak isteyenler alttaki programı (Teamviewer Portable versyonu) indirip (rar) lı dosyayı biryere acıp Teamviewer.exe yi calıştırarak  uzak masa üstü yardımı verebilirim.
---------------------------------------------------------------------------------------
Excel dosyasını  indir

Kesim takip flash dosyası drive dan indir

Kesim takip flash dosyası EXE indir
Kesim takip flash dosyası SWF indir
SWF dosyasının çalışması için FlashPlayer indir
---------------------------------------------------------------------------------------
Uzaktan Yardım Programı indir
Kurban Kesiminde canlı yayın

18 Temmuz 2016 Pazartesi

Kurban – Ana Sayfa

JSON Data Cekme



DKTY KESİM MERKEZİ

2020 yılı

KNO DURUM KESIM SAAT MASA SAAT MASA NO TESLIM SAAT

4 Ağustos 2015 Salı

FEST-İ BURSA 2015


     Değirmenlikızık Eğitim Kurumları bünyesinde eğitim gören öğrencilere destek amaçlı yapılan 10 gün devam edecek olan Kermes organizasyonu. Açılış : 29 Ağustos 2015 Saat 11:00 

Yer: Yıldırım Belediyesi Bayrak Alanı





12 Şubat 2015 Perşembe

Excel VBA Hücreye Açıklama Ekleme

Sub AciklamaEkle()
   Dim S1 As Worksheet
   Set S1 = Worksheets("Sayfa1")
   Call Aciklama_Ekle (S1.Cells(1, 1), "Açıklama Eklendi")
End Sub

Function Aciklama_Ekle(hucre As Range, note As String)
   Dim cmt As Comment
   Set cmt = hucre.Comment
   If cmt Is Nothing Then
      Set cmt = hucre.AddComment
      cmt.Text Text:=note
   Else
      note = note & Chr(10) & cmt.Text
      cmt.Text Text:=note
      If cmt.Shape.Height < 150 Then cmt.Shape.Height = cmt.Shape.Height + 20
   End If
   cmt.Visible = False
End Function

Excel VBA Hücreye link verme

Sub linkverdene()
   Dim S1 As Worksheet
   Dim S2 As Worksheet
   Set S1 = Worksheets("Sayfa1")
   Set S2 = Worksheets("Sayfa2")
   Call linkver(S1.Cells(1, 1),S2.Cells(1, 1))
   Call linkver(S2.Cells(1, 1),S1.Cells(2, 1))
End Sub
  
Function linkver(nereye As Range, neresi As Range)
     Dim adres As String
     adres = neresi.Address(RowAbsolute:=False)
     Mid(adres, 1, 1) = "!"
     adres = neresi.Worksheet.Name & adres
     nereye.Hyperlinks.Add nereye, Address:="", SubAddress:=adres, ScreenTip:=adres

End Function

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üğü





30 Nisan 2014 Çarşamba

KURBAN 2019

JSON Data Cekme



DKTY KESİM MERKEZİ

2019 yılı

  
   
KNO DURUM KESIM SAAT MASA SAAT MASA NO TESLIM SAAT

21 Kasım 2013 Perşembe

DÜNYA CBS CBS GÜNÜ ETKİNLİĞİ

4.CBS KONGRESİNDE BURSA BÜYÜKŞEHİR BELEDİYESİ


20 KASIM 2013

BASIN BÜLTENİ
Büyükşehir CBS, Ankara’yı fethetti
- Bursa Büyükşehir Belediyesi, Coğrafi Bilgi Sistemleri alanında imza atılan başarılı çalışmalarıyla Ankara’da gerçekleştirilen ‘IV. Coğrafi Bilgi Sistemleri Kongresi’nde büyük ilgi gördü.
BURSA – Bursa Büyükşehir Belediyesi, Coğrafi Bilgi Sistemleri alanında imza atılan başarılı çalışmalarını Ankara’da gerçekleştirilen ‘IV. Coğrafi Bilgi Sistemleri Kongresi’nde tanıttı.
Türk Mühendis ve Mimarlar Odaları Birliği tarafından düzenlenen, sekretaryası Harita ve Kadastro Mühendisleri Odasınca yürütülen ‘Coğrafi Bilgi Sistemleri Kongresi’nin dördüncüsü, ‘Bugünü anlamak, geleceği kurmak’ temasıyla Ankara ODTÜ Kültür ve Kongre Merkezi’nde gerçekleştirildi.
Bursa Büyükşehir Belediyesi Coğrafi Bilgi Sistemleri Şube Müdürlüğü olarak katılım sağlanan kongrede Bursa Büyükşehir Belediyesi standı büyük ilgi gördü. Kongreye Bursa Büyükşehir Belediyesi Bilgi İşlem Dairesi Başkanlığı Coğrafi Bilgi Sistemleri Şube Müdürü Necla Yörüklü, Harita mühendisleri Mehmet Koşak ve Hasan Basri Kara ile Tarım Teknikeri Filiz Aydın ve CBS Operatörü Cemile Öztosun katıldı. 2 panel, 10 teknik oturum, 3 özel oturum ve poster oturumunun gerçekleştirildiği kongrede Coğrafi Bilgi Sistemleri Şube Müdürü Necla Yörüklü, ‘Yerel Yönetimlerde CBS Uygulamaları ve Sonuçları’ başlıklı bir sunum yaptı.
Yörüklü, sunumunda Büyükşehir Belediyeleri CBS Platformu Başkanlığı’nı yürüten Bursa Büyükşehir Belediyesi’nin çalışmalarını ve platformun gelecek vizyonunu tanıttı. İçinde bulunulan bu çağda bilginin güçlü bir kaynak olarak algılandığını ve bilgi gerçeği üzerinden CBS kaynaklarının daha etkin kullanılması ve yönetilmesi gerektiğini belirten Yörüklü, Bursa Büyükşehir Belediyesi’nin 6360 sayılı yeni yasa ile gelecek il sınırı yönetimine hazırlık çalışmalarını hızla sürdürdüklerini de sözlerine ekledi. Büyükşehir Belediyesi standını ziyaret eden Tarım Reformu Genel Müdürü Gürsel Küsek, CBS Genel Müdür Vekili Okan Oflaz, Harita Genel Komutanı Yardımcısı ve Komutanvekili Tuğgeneral Metin Keşap ile yapılan görüşmelerde de güncel ve doğru bilginin başta kurum, kuruluş ve yöneticiler olmak üzere tüm bireylerin her türlü toplumsal karar alma sürecini olumlu yönde etkilediği belirtilerek, veri paylaşımında kolaylaştırıcı çözüm önerileri konuşuldu.
Kongrenin ikinci gününde ise ‘Merkezi ve Yerel Yönetimlerde CBS’, ‘Afet Yönetimi ve CBS’, ‘Kamuda Coğrafi Bilgi Sistemleri Uygulamaları ve Sonuçları’, ‘Çevre ve Doğa Yönetiminde CBS’ ve ‘TUCBS-1’ başlıklarında özel ve teknik oturumların yanı sıra gençlik teknik oturumu ve firma sunumlarının yer aldığı oturumlar gerçekleştirildi. Kongrenin üçüncü gününde de ‘CBS Uygulamaları-1’, ‘Karar Destek Sistemleri’, ‘Yerel Yönetimlerde Coğrafi Bilgi Sistemleri Uygulamaları ve Sonuçları’, ‘CBS Uygulamaları-2’, ‘Teknik Altyapı ve CBS’, ‘CBS Uygulamaları-3’, ‘TUCBS-2’ başlıklarında gerçekleştirilen özel ve teknik oturumların ardından kapanış oturumu ve sonuç bildirgesi okunması ile kongre sona erdi.
BURSA BÜYÜKŞEHİR BELEDİYESİ

15 Kasım 2013 Cuma

Microstationda Sembol Oluşturma

Aşamalar 
·     Oluşturulacak sembol şekli çizim toolları ile oluşturulur.
·     Oluşturulan şekil seçilir.
·     Sembolün orijini belirtilir.
Keyin: define cell origin
·     Sembollerin ekleneceği bir sembol dosyası oluşturulur. Mevcut bir dosyada olabilir.
(Element - Cells)
·     Sembol yapılacak objeler seçilip ve Origini belirtildikten Create düğmesi aktif hale gelecektir.
Create düğmesi ile sembole isim verilir.
·     Sembolümüz kullanıma hazır.
·     Utilities – Cell Selector açılıp sembolümüzü kullanabiliriz.

Resimli anlatım aşağıda

Microstation a Excelden Koordinat Yükleme


Xyz Yükle Mvba Dosyası 
Örnek XLS dosyası


 Açıklamalar:
Program Excel ile beraber çalışır.

txt dosyasının excele aktarımı için tıklayınız.

Aktif Excel sayfasındaki koordinatları çiziminize yükler.  Dosya ismi önemli değil ama Eğer birden fazla Excel dosyası açık ise problem yaşanabilir.
 Koordinat dizilimi

 
NNo              Y                      X                     Z           Sembol

Bölgesel ayarlardan ondalık ayracının “.” olması gerekmektedir.
MVBA dosyası nasıl kullanılır?

Görüntülü anlatım için tıklayınız.
 
       Hasan Basri KARA   
         Harita Mühendisi      


Microstationdaki Seçili Yazıların Excele Yazdırılması (mvba)

Microstation daki yazıların Excele aktarılıp düzenlemenin Excelde yapılabilmesini sağlar.
Dgn dosyasında yazılar seçilerek Seçili yazılar Excele gönderilir.

Exceleyazi.mvba
Çalışması için Excel programının açık olması gerekir. Aktif olan Excelin Aktif sayfasına seçili yazıları gönderecektir.
Excelde aktif olan satırı çizimde görmek için göster düğmesine dbasmanız yeterli.
Eğer excelde yazılarda değişiklikler yaparsanız (Level, renk veya yazının içeriği gibi) çizim dosyasındaki seçili yazıları silip excelden tekrardan yükleyebilirsiniz.
Buradan işlemi izleyebilirsiniz

4 Kasım 2013 Pazartesi

Kurbanda Canlı Yayın


     Değirmenlikızık Öğrenci Yurdu'nda yapılan 2013 yılı Kurban Faaliyetlerinin BeSu Yazılım Programları ile gerçekleştirmiş olduğu Canlı Yayın görüntüleri.



Kurbandan görüntüler.