Code:
Public Function GetNivZugPunkte(ByVal Item As Integer, Optional ByVal DrawPreview As Boolean = False, Optional ByRef Log As EBL.Service.Log = Nothing)
Dim PointCoord As New Autodesk.Map.IM.Graphic.Point If Item < 1 Then Return -5
If CheckRecordZug(Item) = 0 Then
If Not IsNothing(Log) Then Log.Write("ungültiger NivZug mit der Nummer:=" & Item.ToString)
Return 0
End If
Dim ZugBeginn As Integer = GetRecordZugBeginn(Item, Log)
Dim ZugEnde As Integer = GetRecordZugEnde(Item, Log)
Dim LastNr As String = ""
Dim Old_Osmode As Integer = CInt(Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("OSMODE"))
Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("OSMODE", 0)
Dim ZugPunktBefore As Autodesk.Map.IM.Graphic.LinePoint = New Autodesk.Map.IM.Graphic.LinePoint
Dim ZugPunkt As Autodesk.Map.IM.Graphic.LinePoint = New Autodesk.Map.IM.Graphic.LinePoint
For i As Integer = ZugBeginn + 1 To ZugEnde - 1
Try
Dim DataLine As String = _M5Data(i).Trim()
If DataLine.Length > 35 Then
Dim Data_PunktNr As String = DataLine.Substring(21, 29 - 22 + 1).Trim.ToUpper
Dim Data_VMarkung As String = DataLine.Substring(30, 4).Trim.ToUpper
If Data_PunktNr <> LastNr Then ' neuer Punkt
LastNr = Data_PunktNr ' jetzt ist das die letzte Nummer
' schauen, ob Nummer aus der TB
Dim SQL As String = "select FID,ID_HERKUNFT, ID_PKTTYP, Z,BEM_NIGRA from EBL_FEST_PUNKT where PUNKTNUMMER='" & Data_PunktNr & "'"
Dim MyDataAdapter As New Autodesk.Map.IM.Data.Provider.DataAdapter(SQL, _Document.Connection)
Dim Datentabelle As New System.Data.DataTable
MyDataAdapter.Fill(Datentabelle)
Dim ID_PKTTYP As Long = 0
Dim ID_HERKUNFT As Long = 0
Dim Z_Value As Double = k_Invalid_Höhe
Dim BEM_NIGRA As String = ""
Dim sFID As String = ""
If Datentabelle.Rows.Count = 1 Then
ID_PKTTYP = CLng(Datentabelle.Rows.Item(0).Item("ID_PKTTYP"))
ID_HERKUNFT = CLng(Datentabelle.Rows.Item(0).Item("ID_HERKUNFT"))
If Not IsDBNull(Datentabelle.Rows.Item(0).Item("Z")) Then
Z_Value = CDbl(Datentabelle.Rows.Item(0).Item("Z"))
End If
If Not IsDBNull(Datentabelle.Rows.Item(0).Item("BEM_NIGRA")) Then
BEM_NIGRA = Datentabelle.Rows.Item(0).Item("BEM_NIGRA")
End If
sFID = Datentabelle.Rows.Item(0).Item("FID")
If Data_VMarkung = "" Or Data_VMarkung = "0" Then
_Editor.WriteMessage("WP " & Data_PunktNr & vbCrLf)
Else
' wenn ja, dann FID und Entfernung
_Editor.WriteMessage("HP " & Data_PunktNr & " - Vermarkung:= " & Data_VMarkung & " - FID:= " & sFID & vbCrLf)
Dim FeatureTabelle As Autodesk.Map.IM.Data.FeatureClass
FeatureTabelle = _Document.Connection.FeatureClasses.GetFeatureClassWithFID(CType(sFID, Long))
Dim ZugPunktObj As Autodesk.Map.IM.Data.Feature = FeatureTabelle.GetFeature(CType(sFID, Long))
PointCoord = _Geometrie.GetPointOfFeature(ZugPunktObj)
ZugPunkt.Y = PointCoord.Y
ZugPunkt.X = PointCoord.X
If i = ZugBeginn + 1 Then
ZugPunktBefore = ZugPunkt
End If
If i > ZugBeginn + 1 Then
_TempAcadObj.DrawLine(ZugPunktBefore, ZugPunkt, MapService.AcadTemporaryGraphics.TypeOfTempObjectList.Current)
_TempAcadObj.AddCurrent2All()
ZugPunktBefore = ZugPunkt
End If ' 2+ter Punkt im Zug
End If 'Wechselpunkt-Vermarkung
Else
' ansonsten Wechselpunkt
_Editor.WriteMessage("WP " & Data_PunktNr & vbCrLf)
End If 'Tabelle Row
End If ' PunktNr <> Last
End If
Catch ex As Exception
If Not IsNothing(Log) Then
Log.WriteAsError("Fehler beim der Suche nach dem Zugbeginn in Zeile " & (i + 1).ToString & vbCrLf & ex.ToString)
End If
End Try
Next i