Получить ведомость элементов плана ж/д линии (Форма 2 ГОСТ Р 21.1702-96)

Автор Тема: Получить ведомость элементов плана ж/д линии (Форма 2 ГОСТ Р 21.1702-96)  (Прочитано 2435 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн soloviewsergАвтор темы

  • ADN
  • *
  • Сообщений: 8
  • Карма: 2
    • soloviewserg.ru
Прошу не судить строго за "модульно-функциональный" стиль кода, т.к. он написан 11 лет назад. Между тем задачи прямая и предметной области решены.

Код - vb.net [Выбрать]
  1. Friend Sub ComputeAndDrawRotAngleTanCurSpirParamTableRail()
  2.  
  3.             If pDrawRotationAngleTangentCurveSpiralTableFlag = True Then
  4.                 Dim aErrDrawToStr As String = String.Empty, errDrawToFlag As Boolean = False
  5.                 Try
  6.                     dlgMain.pb1.Value = 0 : dlgMain.pb1.Refresh()
  7.  
  8.                     Dim angularPointArrayCount As Long, angularPointArrayIndex As Long
  9.                     Dim aArc As AeccAlignmentArc, aTangent As AeccAlignmentTangent, alEntityBefore As AeccAlignmentEntity, aEntities As AeccAlignmentEntities
  10.                     Dim aSpiralIn As AeccAlignmentSpiral, aSpiralOut As AeccAlignmentSpiral, alEntityAfter As AeccAlignmentEntity
  11.                     Dim aSpiralOutDelta As Double, aSpiralOutL As Double, aSpiralOutT As Double, aSpiralOutA As Double, aSpiralInDelta As Double, aSpiralInL As Double, aSpiralInT As Double, aSpiralInA As Double
  12.                     Dim aEndFullCurveStation As Double, aSpiralOutTangentOfLastAngularPoint As Double, aTangentLength As Double
  13.                     Dim aFullCurveRotationAngle As Double, aTangentLastDirectionAngle As Double, aFullCurveLastDirectionAngle As Double
  14.                     Dim aLonlyEndingTangent As AeccAlignmentTangent = Nothing
  15.                     Dim aEndFullCurveEasting As Double, aEndFullCurveNorthing As Double
  16.                     Dim aKnownStructureErrorString As String = String.Empty, aSortByStationErrorString As String = String.Empty, aTangentIn As AeccAlignmentTangent, aTangentOut As AeccAlignmentTangent
  17.                     Dim aLastAngularPointIsArc As Boolean
  18.                     Dim aAngularPointIsArc As Boolean
  19.  
  20.                     aEntities = curAlignment.Entities
  21.  
  22.                     If Create_AngularPointArray(aKnownStructureErrorString, aSortByStationErrorString) = False Then
  23.                         If MsgBox(ResourceManagerMainShadow.GetString("Error creating Alignment structure.", curUICulture) & vbCrLf & _
  24.                                   aKnownStructureErrorString & vbCrLf & vbCrLf & _
  25.                                   aSortByStationErrorString & vbCrLf & vbCrLf & _
  26.                                   ResourceManagerMainShadow.GetString("Output data may be inaccurate.", curUICulture) & vbCrLf & _
  27.                                   ResourceManagerMainShadow.GetString("Continue anyway?", curUICulture), vbOKCancel + vbExclamation, ResourceManagerMainShadow.GetString("Application Name", curUICulture)) = vbCancel Then
  28.                             Exit Sub '"Ошибка создания структуры Трассы."
  29.                         End If '"Выходные данные могут быть неточными."
  30.                     End If '"
  31.  
  32.                     angularPointArrayCount = AngularPointArray.Length
  33.  
  34.                     If angularPointArrayCount < 1 Or (AngularPointArray IsNot Nothing And AngularPointArray(0) Is Nothing) Then
  35.                         MsgBox(ResourceManagerMainShadow.GetString("PIPoints in Alignment", curUICulture) & " <" & curAlignment.Name & "> " & ResourceManagerMainShadow.GetString("NOT found.", curUICulture) & vbCrLf & _
  36.                                ResourceManagerMainShadow.GetString("Railway Plane elements Parameter Table( Form 2 GOST Р 21.1702-96)", curUICulture) & vbCrLf & _
  37.                                ResourceManagerMainShadow.GetString("will NOT be inserted.", curUICulture), vbExclamation, ResourceManagerMainShadow.GetString("Application Name", curUICulture))
  38.                         Exit Sub
  39.                     End If
  40.  
  41.                     insertionPointAdvancedParamTable(0) = minCurProfileViewExtPoint(0)
  42.                     insertionPointAdvancedParamTable(1) = minCurProfileViewExtPoint(1) - 5900 + pDeltaAdvancedParamTableY
  43.  
  44.                     Dim aTable As AcadTable
  45.                     aTable = ThisDrawing.ModelSpace.AddTable(insertionPointAdvancedParamTable, 8 + (angularPointArrayCount * 6), 13, textHeightWorkingValue * 3.2, textHeightWorkingValue * 50)
  46.                     aTable.RegenerateTableSuppressed = True
  47.                     With aTable
  48.  
  49.                         .Layer = pLayerAdvancedParamTableName
  50.                         .HeaderSuppressed = True
  51.                         .TitleSuppressed = True
  52.  
  53.                         .SetColumnWidth(0, textHeightWorkingValue * 6)
  54.                         .SetColumnWidth(1, textHeightWorkingValue * 8)
  55.                         .SetColumnWidth(2, textHeightWorkingValue * 10)
  56.                         .SetColumnWidth(3, textHeightWorkingValue * 10)
  57.                         .SetColumnWidth(4, textHeightWorkingValue * 8)
  58.                         .SetColumnWidth(5, textHeightWorkingValue * 8)
  59.                         .SetColumnWidth(6, textHeightWorkingValue * 8)
  60.                         .SetColumnWidth(7, textHeightWorkingValue * 8)
  61.                         .SetColumnWidth(8, textHeightWorkingValue * 8)
  62.                         .SetColumnWidth(9, textHeightWorkingValue * 8)
  63.                         .SetColumnWidth(10, textHeightWorkingValue * 10)
  64.                         .SetColumnWidth(11, textHeightWorkingValue * 10)
  65.                         .SetColumnWidth(12, textHeightWorkingValue * 8)
  66.  
  67.                         .SetRowHeight(0, textHeightWorkingValue * 5)
  68.                         .SetRowHeight(1, textHeightWorkingValue * 2)
  69.                         .SetRowHeight(2, textHeightWorkingValue * 4)
  70.                         .SetRowHeight(3, textHeightWorkingValue * 4)
  71.  
  72.                         .SetTextHeight(AcRowType.acDataRow, textHeightWorkingValue)
  73.                         '.SetAlignment 0, acMiddleCenter
  74.                         .SetAlignment(AcRowType.acDataRow, AcCellAlignment.acMiddleCenter)
  75.                         '.StyleName = ThisDrawing.TextStyles(styleWorkingValueNameIndex).Name
  76.                         .SetTextStyle(AcRowType.acDataRow, ThisDrawing.TextStyles.Item(styleWorkingValueNameIndex).Name)
  77.  
  78.                         .SetText(0, 0, ResourceManagerMainShadow.GetString("Railway Plane elements Parameter Table( Form 2 GOST Р 21.1702-96)", curUICulture)) '"Ведомость элементов плана железнодорожных путей ( Форма 2 ГОСТ Р 21.1702-96)"
  79.  
  80.                         .MergeCells(1, 3, 0, 0) : .SetText(1, 0, ResourceManagerMainShadow.GetString("Way number", curUICulture)) '"Номер пути"
  81.                         .MergeCells(1, 3, 1, 1) : .SetText(1, 1, ResourceManagerMainShadow.GetString("Point description", curUICulture)) '"Обозначение точки"
  82.                         .MergeCells(1, 1, 2, 3) : .SetText(1, 2, ResourceManagerMainShadow.GetString("Point coordinate", curUICulture)) '"Координата точки"
  83.                         .MergeCells(2, 3, 2, 2) : .SetText(2, 2, ResourceManagerMainShadow.GetString("A", curUICulture)) '"А"
  84.                         .MergeCells(2, 3, 3, 3) : .SetText(2, 3, ResourceManagerMainShadow.GetString("B", curUICulture)) '"Б"
  85.                         .MergeCells(1, 3, 4, 4) : .SetText(1, 4, ResourceManagerMainShadow.GetString("Distance between points", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '"Расстояние между точками"
  86.                         .MergeCells(1, 1, 5, 9) : .SetText(1, 5, ResourceManagerMainShadow.GetString("Curvature elements", curUICulture)) '"Элементы кривой"
  87.                         .MergeCells(2, 3, 5, 5) : .SetText(2, 5, ResourceManagerMainShadow.GetString("Angle", curUICulture) & ", " & ChrW(176)) '"угол"
  88.                         .MergeCells(2, 3, 6, 6) : .SetText(2, 6, ResourceManagerMainShadow.GetString("Radius", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '"радиус"
  89.                         .MergeCells(2, 3, 7, 7) : .SetText(2, 7, ResourceManagerMainShadow.GetString("Total Tangent length", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '"тангенс"
  90.                         .MergeCells(2, 3, 8, 8) : .SetText(2, 8, ResourceManagerMainShadow.GetString("Curve length", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '"кривая"
  91.                         .MergeCells(2, 3, 9, 9) : .SetText(2, 9, ResourceManagerMainShadow.GetString("Spiral length", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '"длина переходной кривой"
  92.                         .MergeCells(1, 1, 10, 11) : .SetText(1, 10, ResourceManagerMainShadow.GetString("Station 2", curUICulture)) '"Пикет"
  93.                         .MergeCells(2, 3, 10, 10) : .SetText(2, 10, ResourceManagerMainShadow.GetString("Curvature Begin", curUICulture)) '"НК"
  94.                         .MergeCells(2, 3, 11, 11) : .SetText(2, 11, ResourceManagerMainShadow.GetString("Curvature End", curUICulture)) '"КК"
  95.                         .MergeCells(1, 3, 12, 12) : .SetText(1, 12, ResourceManagerMainShadow.GetString("Tangent length", curUICulture) & ResourceManagerMainShadow.GetString(", m", curUICulture)) '""
  96.  
  97.  
  98.                         aSpiralOutTangentOfLastAngularPoint = 0
  99.                         aLastAngularPointIsArc = True
  100.                         For angularPointArrayIndex = 1 To angularPointArrayCount
  101.  
  102.                             aLonlyEndingTangent = Nothing
  103.  
  104.                             If angularPointArrayIndex = 1 Then
  105.                                 .SetText(1 + ((angularPointArrayIndex * 6) - 3), 1, ResourceManagerMainShadow.GetString("Alignment Begin", curUICulture))
  106.                                 .MergeCells(1 + ((angularPointArrayIndex * 6) - 3), 2 + ((angularPointArrayIndex * 6) - 3), 1, 1)
  107.                             End If
  108.  
  109.                             If AngularPointArray(angularPointArrayIndex - 1).Arc Is Nothing Then
  110.  
  111.                                 aAngularPointIsArc = False
  112.  
  113.                                 aTangentIn = AngularPointArray(angularPointArrayIndex - 1).BeforeEntity
  114.                                 aTangentOut = AngularPointArray(angularPointArrayIndex - 1).AfterEntity
  115.  
  116.                                 Call DrawTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aTangentIn, angularPointArrayIndex, 0, aAngularPointIsArc, aErrDrawToStr)
  117.                                 aTangentLength = 0
  118.                                 aTangentLastDirectionAngle = aTangentIn.Direction
  119.                                 aSpiralInDelta = 0
  120.                                 aSpiralInL = 0
  121.                                 aSpiralInA = 0
  122.                                 aSpiralOutDelta = 0
  123.                                 aSpiralOutL = 0
  124.                                 aSpiralOutA = 0
  125.                                 aEndFullCurveStation = aTangentOut.EndingStation
  126.                                 aLonlyEndingTangent = aTangentOut
  127.                                 aSpiralOutT = aTangentOut.Length
  128.                                 aSpiralInT = aTangentIn.Length
  129.                                 aFullCurveRotationAngle = (aTangentOut.Direction - aTangentIn.Direction)
  130.  
  131.                                 If angularPointArrayIndex = 1 Then
  132.                                     aFullCurveLastDirectionAngle = aTangentLastDirectionAngle + aFullCurveRotationAngle
  133.                                 Else
  134.                                     aFullCurveLastDirectionAngle = aFullCurveLastDirectionAngle + aFullCurveRotationAngle
  135.                                 End If
  136.  
  137.                                 Call DrawSpirCurSpirRowInRotAngleTanCurSpirParamTableRail(aTable, aTangentIn.EndingStation, aTangentIn.StartEasting, aTangentIn.StartNorthing, aTangentIn.EndEasting, _
  138.                                                                                           aTangentIn.EndNorthing, aTangentOut.EndEasting, aTangentOut.EndNorthing, _
  139.                                                                                           aFullCurveRotationAngle, angularPointArrayIndex, aSpiralInL, aSpiralInT, aSpiralOutL, aSpiralOutT, _
  140.                                                                                           aTangentIn.StartingStation, aEndFullCurveStation, _
  141.                                                                                           0, 0, 0, 0, 0, aAngularPointIsArc, aErrDrawToStr)
  142.  
  143.                                 aSpiralOutTangentOfLastAngularPoint = aSpiralOutT
  144.  
  145.                                 aLastAngularPointIsArc = False
  146.  
  147.                             Else
  148.  
  149.                                 aAngularPointIsArc = True
  150.  
  151.                                 aArc = AngularPointArray(angularPointArrayIndex - 1).Arc
  152.                                 If AngularPointArray(angularPointArrayIndex - 1).AlignmentAngularPointType <> -1 Then
  153.                                     alEntityBefore = AngularPointArray(angularPointArrayIndex - 1).BeforeEntity
  154.                                     alEntityAfter = AngularPointArray(angularPointArrayIndex - 1).AfterEntity
  155.                                 Else                              
  156.                                     alEntityBefore = GetEntity(aEntities, aArc.EntityBefore)
  157.                                     alEntityAfter = GetEntity(aEntities, aArc.EntityAfter)
  158.                                 End If
  159.  
  160.                                 If alEntityBefore IsNot Nothing AndAlso alEntityBefore.Type = AeccAlignmentEntityType.aeccSpiral Then
  161.                                     If aEntities.EntityAtId(alEntityBefore.EntityBefore) IsNot Nothing AndAlso aEntities.EntityAtId(alEntityBefore.EntityBefore).Type = AeccAlignmentEntityType.aeccTangent Then
  162.                                         aTangent = aEntities.EntityAtId(alEntityBefore.EntityBefore)
  163.                                         If aLastAngularPointIsArc = False Then
  164.                                             Call DrawTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aTangent, angularPointArrayIndex, 0, aLastAngularPointIsArc, aErrDrawToStr)
  165.                                         Else
  166.                                             Call DrawTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aTangent, angularPointArrayIndex, aTangent.Length, aAngularPointIsArc, aErrDrawToStr)
  167.                                         End If
  168.                                         aTangentLength = aTangent.Length
  169.                                         aTangentLastDirectionAngle = aTangent.Direction
  170.                                     Else
  171.                                         aTangentLength = 0
  172.                                         aTangentLastDirectionAngle = 0
  173.                                     End If
  174.  
  175.                                     aSpiralIn = alEntityBefore
  176.  
  177.                                     If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccSpiral Then
  178.                                         aSpiralOut = alEntityAfter
  179.                                         aSpiralOutDelta = aSpiralOut.Delta
  180.                                         aSpiralOutL = aSpiralOut.Length
  181.                                         aSpiralOutA = aSpiralOut.A
  182.                                         aEndFullCurveStation = aSpiralOut.EndingStation
  183.                                         aEndFullCurveEasting = aSpiralOut.EndEasting
  184.                                         aEndFullCurveNorthing = aSpiralOut.EndNorthing
  185.                                         If aEntities.EntityAtId(alEntityAfter.EntityAfter) IsNot Nothing AndAlso aEntities.EntityAtId(alEntityAfter.EntityAfter).Type = AeccAlignmentEntityType.aeccTangent Then
  186.                                             aLonlyEndingTangent = aEntities.EntityAtId(alEntityAfter.EntityAfter)
  187.                                         End If
  188.                                     Else
  189.                                         aSpiralOutDelta = 0
  190.                                         aSpiralOutL = 0
  191.                                         aSpiralOutA = 0
  192.                                         aEndFullCurveStation = aArc.EndingStation
  193.                                         aEndFullCurveEasting = aArc.EndEasting
  194.                                         aEndFullCurveNorthing = aArc.EndNorthing
  195.                                         If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccTangent Then
  196.                                             aLonlyEndingTangent = alEntityAfter
  197.                                         End If
  198.                                     End If
  199.                                     aSpiralOutT = CalculateTangentLength(aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, aEndFullCurveNorthing)
  200.                                     aSpiralInT = CalculateTangentLength(aSpiralIn.StartEasting, aSpiralIn.StartNorthing, aArc.PIEasting, aArc.PINorthing)
  201.                                     aFullCurveRotationAngle = (aArc.Delta + aSpiralIn.Delta + aSpiralOutDelta) * IIf(aArc.Clockwise, 1, -1)
  202.  
  203.                                     If angularPointArrayIndex = 1 Then
  204.                                         aFullCurveLastDirectionAngle = aTangentLastDirectionAngle + aFullCurveRotationAngle
  205.                                     Else
  206.                                         aFullCurveLastDirectionAngle = aFullCurveLastDirectionAngle + aFullCurveRotationAngle
  207.                                     End If
  208.  
  209.                                     Call DrawSpirCurSpirRowInRotAngleTanCurSpirParamTableRail(aTable, aArc.PIStation, aSpiralIn.StartEasting, aSpiralIn.StartNorthing, aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, _
  210.                                                                                               aEndFullCurveNorthing, aFullCurveRotationAngle, angularPointArrayIndex, aSpiralIn.Length, aSpiralInT, aSpiralOutL, aSpiralOutT, _
  211.                                                                                               aSpiralIn.StartingStation, aEndFullCurveStation, aArc.StartingStation, aArc.Delta, aArc.Radius, aArc.Length, aArc.EndingStation, _
  212.                                                                                               aAngularPointIsArc, aErrDrawToStr)
  213.  
  214.                                     aSpiralOutTangentOfLastAngularPoint = aSpiralOutT
  215.  
  216.                                 ElseIf alEntityBefore Is Nothing OrElse (alEntityBefore.Type = AeccAlignmentEntityType.aeccArc Or alEntityBefore.Type = AeccAlignmentEntityType.aeccSpiralCurveGroup) Then  
  217.                                     aTangentLength = 0
  218.                                     aTangentLastDirectionAngle = 0
  219.  
  220.                                     aSpiralInDelta = 0
  221.                                     aSpiralInL = 0
  222.                                     aSpiralInA = 0
  223.  
  224.                                     If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccSpiral Then 'alEntityAfter.Type = aeccSpiral   "IAeccAlignmentSpiral"
  225.                                         aSpiralOut = alEntityAfter
  226.                                         aSpiralOutDelta = aSpiralOut.Delta
  227.                                         aSpiralOutL = aSpiralOut.Length
  228.                                         aSpiralOutA = aSpiralOut.A
  229.                                         aEndFullCurveStation = aSpiralOut.EndingStation
  230.                                         aEndFullCurveEasting = aSpiralOut.EndEasting
  231.                                         aEndFullCurveNorthing = aSpiralOut.EndNorthing
  232.                                         If aEntities.EntityAtId(alEntityAfter.EntityAfter) IsNot Nothing AndAlso aEntities.EntityAtId(alEntityAfter.EntityAfter).Type = AeccAlignmentEntityType.aeccTangent Then
  233.                                             aLonlyEndingTangent = aEntities.EntityAtId(alEntityAfter.EntityAfter)
  234.                                         End If
  235.                                     Else
  236.                                         aSpiralOutDelta = 0
  237.                                         aSpiralOutL = 0
  238.                                         aSpiralOutA = 0
  239.                                         aEndFullCurveStation = aArc.EndingStation
  240.                                         aEndFullCurveEasting = aArc.EndEasting
  241.                                         aEndFullCurveNorthing = aArc.EndNorthing
  242.                                         If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccTangent Then
  243.                                             aLonlyEndingTangent = alEntityAfter
  244.                                         End If
  245.                                     End If
  246.  
  247.                                     aSpiralOutT = CalculateTangentLength(aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, aEndFullCurveNorthing)
  248.                                     aSpiralInT = CalculateTangentLength(aArc.StartEasting, aArc.StartNorthing, aArc.PIEasting, aArc.PINorthing)
  249.                                     aFullCurveRotationAngle = (aArc.Delta + aSpiralInDelta + aSpiralOutDelta) * IIf(aArc.Clockwise, 1, -1)
  250.  
  251.                                     If angularPointArrayIndex = 1 Then
  252.                                         aFullCurveLastDirectionAngle = aTangentLastDirectionAngle + aFullCurveRotationAngle
  253.                                     Else
  254.                                         aFullCurveLastDirectionAngle = aFullCurveLastDirectionAngle + aFullCurveRotationAngle
  255.                                     End If
  256.  
  257.  
  258.                                     Call DrawSpirCurSpirRowInRotAngleTanCurSpirParamTableRail(aTable, aArc.PIStation, aArc.StartEasting, aArc.StartNorthing, aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, _
  259.                                                                                               aEndFullCurveNorthing, aFullCurveRotationAngle, angularPointArrayIndex, aSpiralInL, aSpiralInT, aSpiralOutL, aSpiralOutT, _
  260.                                                                                               aArc.StartingStation, aEndFullCurveStation, aArc.StartingStation, aArc.Delta, aArc.Radius, aArc.Length, aArc.EndingStation, _
  261.                                                                                               aAngularPointIsArc, aErrDrawToStr)
  262.  
  263.                                     aSpiralOutTangentOfLastAngularPoint = aSpiralOutT
  264.  
  265.                                 ElseIf alEntityBefore IsNot Nothing AndAlso alEntityBefore.Type = AeccAlignmentEntityType.aeccTangent Then
  266.  
  267.                                     aTangent = alEntityBefore
  268.                                     If aLastAngularPointIsArc = False Then
  269.                                         Call DrawTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aTangent, angularPointArrayIndex, 0, aLastAngularPointIsArc, aErrDrawToStr)
  270.                                     Else
  271.                                         Call DrawTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aTangent, angularPointArrayIndex, aTangent.Length, aAngularPointIsArc, aErrDrawToStr)
  272.                                     End If
  273.                                     aTangentLength = aTangent.Length
  274.                                     aTangentLastDirectionAngle = aTangent.Direction
  275.  
  276.                                     aSpiralInDelta = 0
  277.                                     aSpiralInL = 0
  278.                                     aSpiralInA = 0
  279.  
  280.                                     If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccSpiral Then
  281.                                         aSpiralOut = alEntityAfter
  282.                                         aSpiralOutDelta = aSpiralOut.Delta
  283.                                         aSpiralOutL = aSpiralOut.Length
  284.                                         aSpiralOutA = aSpiralOut.A
  285.                                         aEndFullCurveStation = aSpiralOut.EndingStation
  286.                                         aEndFullCurveEasting = aSpiralOut.EndEasting
  287.                                         aEndFullCurveNorthing = aSpiralOut.EndNorthing
  288.                                         If aEntities.EntityAtId(alEntityAfter.EntityAfter) IsNot Nothing AndAlso aEntities.EntityAtId(alEntityAfter.EntityAfter).Type = AeccAlignmentEntityType.aeccTangent Then
  289.                                             aLonlyEndingTangent = aEntities.EntityAtId(alEntityAfter.EntityAfter)
  290.                                         End If
  291.                                     Else
  292.                                         aSpiralOutDelta = 0
  293.                                         aSpiralOutL = 0
  294.                                         aSpiralOutA = 0
  295.                                         aEndFullCurveStation = aArc.EndingStation
  296.                                         aEndFullCurveEasting = aArc.EndEasting
  297.                                         aEndFullCurveNorthing = aArc.EndNorthing
  298.                                         If alEntityAfter IsNot Nothing AndAlso alEntityAfter.Type = AeccAlignmentEntityType.aeccTangent Then
  299.                                             aLonlyEndingTangent = alEntityAfter
  300.                                         End If
  301.                                     End If
  302.  
  303.                                     aSpiralOutT = CalculateTangentLength(aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, aEndFullCurveNorthing)
  304.                                     aSpiralInT = CalculateTangentLength(aArc.StartEasting, aArc.StartNorthing, aArc.PIEasting, aArc.PINorthing)
  305.                                     aFullCurveRotationAngle = (aArc.Delta + aSpiralInDelta + aSpiralOutDelta) * IIf(aArc.Clockwise, 1, -1)
  306.  
  307.                                     If angularPointArrayIndex = 1 Then
  308.                                         aFullCurveLastDirectionAngle = aTangentLastDirectionAngle + aFullCurveRotationAngle
  309.                                     Else
  310.                                         aFullCurveLastDirectionAngle = aFullCurveLastDirectionAngle + aFullCurveRotationAngle
  311.                                     End If
  312.  
  313.                                     Call DrawSpirCurSpirRowInRotAngleTanCurSpirParamTableRail(aTable, aArc.PIStation, aArc.StartEasting, aArc.StartNorthing, aArc.PIEasting, aArc.PINorthing, aEndFullCurveEasting, _
  314.                                                                                               aEndFullCurveNorthing, aFullCurveRotationAngle, angularPointArrayIndex, aSpiralInL, aSpiralInT, aSpiralOutL, aSpiralOutT, _
  315.                                                                                               aArc.StartingStation, aEndFullCurveStation, aArc.StartingStation, aArc.Delta, aArc.Radius, aArc.Length, aArc.EndingStation, _
  316.                                                                                               aAngularPointIsArc, aErrDrawToStr)
  317.  
  318.                                     aSpiralOutTangentOfLastAngularPoint = aSpiralOutT
  319.  
  320.                                 Else
  321.                                     aErrDrawToStr += ResourceManagerMainShadow.GetString("Alignment contains unsupported elements:", curUICulture) & TypeName(alEntityBefore)
  322.                                     aTable.SetRowHeight(1 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  323.                                     aTable.SetRowHeight(2 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  324.                                     .MergeCells(1 + ((angularPointArrayIndex * 6) - 3), 2 + ((angularPointArrayIndex * 6) - 3), 0, 12)
  325.                                     aTable.SetRowHeight(3 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  326.                                     aTable.SetRowHeight(4 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  327.                                     .MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 0, 12)
  328.                                     aTable.SetRowHeight(5 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  329.                                     aTable.SetRowHeight(6 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  330.                                     .MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 0, 12)
  331.                                     aTable.SetRowHeight(7 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  332.                                     aTable.SetRowHeight(8 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  333.                                     .MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 0, 12)
  334.                                 End If
  335.  
  336.                                 aLastAngularPointIsArc = True
  337.  
  338.                             End If
  339.  
  340.                             dlgMain.pb1.Value = CInt((angularPointArrayIndex / angularPointArrayCount) * 100) : dlgMain.pb1.Refresh()
  341.  
  342.                         Next angularPointArrayIndex
  343.  
  344.                         If aLonlyEndingTangent IsNot Nothing AndAlso aLonlyEndingTangent.Type = AeccAlignmentEntityType.aeccTangent Then
  345.                             .SetText(9 + (((angularPointArrayIndex - 1) * 6) - 3), 1, ResourceManagerMainShadow.GetString("Alignment End", curUICulture)) '"конец трассы"
  346.                             .MergeCells(9 + (((angularPointArrayIndex - 1) * 6) - 3), 10 + (((angularPointArrayIndex - 1) * 6) - 3), 1, 1)
  347.                             If aAngularPointIsArc = True Then
  348.                                 Call DrawEndTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aLonlyEndingTangent, angularPointArrayIndex - 1, aLonlyEndingTangent.Length, aLastAngularPointIsArc, aErrDrawToStr)
  349.                             Else
  350.                                 Call DrawEndTangentRowInRotAngleTanCurSpirParamTableRail(aTable, aLonlyEndingTangent, angularPointArrayIndex - 1, 0, aLastAngularPointIsArc, aErrDrawToStr)
  351.                             End If
  352.  
  353.                             .MergeCells(4, 7 + ((angularPointArrayIndex - 1) * 6), 0, 0)
  354.                         Else
  355.                             .DeleteRows(6 + ((angularPointArrayIndex - 1) * 6), 2)
  356.                             .MergeCells(4, 5 + ((angularPointArrayIndex - 1) * 6), 0, 0)
  357.                         End If
  358.  
  359.                         .RegenerateTableSuppressed = False
  360.                         .RecomputeTableBlock(True)
  361.  
  362.                     End With
  363.  
  364.                     If aErrDrawToStr <> String.Empty Then
  365.                         errDrawToFlag = True
  366.                         Throw New System.Exception(ResourceManagerMainShadow.GetString("Creating Plane elements Parameter Table( Form 2 GOST Р 21.1702-96).", curUICulture) & vbCrLf & aErrDrawToStr)
  367.                     End If
  368.  
  369.                 Catch ex As System.Exception
  370.                     If errDrawToFlag = False Then
  371.                         BuildErrorMessage(New System.Exception(ResourceManagerMainShadow.GetString("Creating Plane elements Parameter Table( Form 2 GOST Р 21.1702-96).", curUICulture) & vbCrLf & aErrDrawToStr, ex), False)
  372.                     Else
  373.                         BuildErrorMessage(ex, False)
  374.                     End If
  375.                 Finally
  376.                     dlgMain.pb1.Value = 0 : dlgMain.pb1.Refresh()
  377.                 End Try
  378.             End If
  379.  
  380.         End Sub
  381.  
  382.  Friend Shared Function GetEntityAtIdFrom(ByRef pAlignment As IAeccAlignment, ByVal EntityId As Int32) As AeccAlignmentEntity
  383.             Try
  384.                 Return pAlignment.Entities.EntityAtId(EntityId)
  385.             Catch ex As System.Exception
  386.                 Return Nothing
  387.             End Try
  388.         End Function
  389.  
  390.         Friend Shared Function GetEntityAtIdFrom(ByVal EntityId As Int32) As AeccAlignmentEntity
  391.             Try
  392.                 Return curAlignment.Entities.EntityAtId(EntityId)
  393.             Catch ex As System.Exception
  394.                 Return Nothing
  395.             End Try
  396.         End Function
  397.  
  398.         Friend Shared Function GetEntityTypeAtIdFrom(ByRef pAlignment As IAeccAlignment, ByVal EntityId As Int32) As AeccAlignmentEntityType
  399.             Try
  400.                 Return pAlignment.Entities.EntityAtId(EntityId).Type
  401.             Catch ex As System.Exception
  402.                 Return -1
  403.             End Try
  404.         End Function
  405.  
  406.         Friend Shared Function GetEntityTypeAtIdFrom(ByVal EntityId As Int32) As AeccAlignmentEntityType
  407.             Try
  408.                 Return curAlignment.Entities.EntityAtId(EntityId).Type
  409.             Catch ex As System.Exception
  410.                 Return -1
  411.             End Try
  412.         End Function

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
soloviewserg,
Спасибо, что поделился своими наработками!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн soloviewsergАвтор темы

  • ADN
  • *
  • Сообщений: 8
  • Карма: 2
    • soloviewserg.ru
Any time!

Выше ограничение на кол-во символов не позволило выложить все ссылки из кода. Добавляем.

     
Код - vb.net [Выбрать]
  1.   Friend Shared Function Create_AngularPointArray(ByRef aKnownStructureErrorString As String, ByRef aSortByStationErrorString As String) As Boolean
  2.  
  3.             Dim alEntity As AeccAlignmentEntity, aArc As AeccAlignmentArc, aEntities As AeccAlignmentEntities
  4.             Dim aKnownStructureFlag As Boolean, resultSortByStation_AngularPointArray As Boolean
  5.             Dim aSCSGroup As AeccAlignmentSCSGroup
  6.             Dim aCSGroup As AeccAlignmentCSGroup, aSCGroup As AeccAlignmentSCGroup, aSCSCSGroup As AeccAlignmentSCSCSGroup
  7.             Dim aSCSSCSGroup As AeccAlignmentSCSSCSGroup, aSSCGroup As AeccAlignmentSSCGroup, aCSSGroup As AeccAlignmentCSSGroup
  8.             Dim aTangent As AeccAlignmentTangent, aTSGroup As AeccAlignmentTSGroup
  9.             Dim aSpiral As AeccAlignmentSpiral, aSSGroup As AeccAlignmentSSGroup, aSTGroup As AeccAlignmentSTGroup, aSTSGroup As AeccAlignmentSTSGroup
  10.  
  11.             Try
  12.  
  13.                 ReDim AngularPointArray(0) : AngularPointArray(0) = Nothing
  14.                 aKnownStructureFlag = True
  15.                 Create_AngularPointArray = True
  16.  
  17.                 Dim index As Int32 = 0
  18.                 aEntities = curAlignment.Entities
  19.                 dlgMain.pb1.Value = 0 : dlgMain.pb1.Refresh()
  20.                 For index = 0 To aEntities.Count - 1
  21.  
  22.                     alEntity = aEntities.Item(index)
  23.                     Select Case alEntity.Type
  24.                         Case AeccAlignmentEntityType.aeccArc
  25.                             aArc = alEntity
  26.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aArc, GetEntityAtIdFrom(aArc.EntityBefore), GetEntityAtIdFrom(aArc.EntityAfter), -1, aArc.StartingStation, aArc.Id)
  27.                         Case AeccAlignmentEntityType.aeccSpiral
  28.                             aSpiral = alEntity
  29.                             If (GetEntityTypeAtIdFrom(aSpiral.EntityAfter) = AeccAlignmentEntityType.aeccArc) Or _
  30.                                (GetEntityTypeAtIdFrom(aSpiral.EntityBefore) = AeccAlignmentEntityType.aeccArc) Then
  31.                                 'Nothing
  32.                             Else
  33.                                 aKnownStructureFlag = False
  34.                                 aKnownStructureErrorString = aKnownStructureErrorString + "free Spiral" + vbCrLf
  35.                             End If
  36.                         Case AeccAlignmentEntityType.aeccSpiralSpiralGroup
  37.                             aSSGroup = alEntity
  38.                             aKnownStructureFlag = False
  39.                             aKnownStructureErrorString = aKnownStructureErrorString + "SpiralSpiralGroup" + vbCrLf
  40.                         Case AeccAlignmentEntityType.aeccSpiralTangentGroup
  41.                             aSTGroup = alEntity
  42.                             If GetEntityTypeAtIdFrom(aSTGroup.EntityBefore) = AeccAlignmentEntityType.aeccArc Then
  43.                                 'Nothing
  44.                             Else
  45.                                 aKnownStructureFlag = False
  46.                                 aKnownStructureErrorString = aKnownStructureErrorString + "free SpiralTangentGroup" + vbCrLf
  47.                             End If
  48.                         Case AeccAlignmentEntityType.aeccSpiralTangentSpiralGroup
  49.                             aSTSGroup = alEntity
  50.                             If (GetEntityTypeAtIdFrom(aSTSGroup.EntityAfter) = AeccAlignmentEntityType.aeccArc) Or _
  51.                                 (GetEntityTypeAtIdFrom(aSTSGroup.EntityBefore) = AeccAlignmentEntityType.aeccArc) Then
  52.                                 'Nothing
  53.                             Else
  54.                                 aKnownStructureFlag = False
  55.                                 aKnownStructureErrorString = aKnownStructureErrorString + "free SpiralTangentSpiralGroup" + vbCrLf
  56.                             End If
  57.                         Case AeccAlignmentEntityType.aeccSpiralSpiralCurveGroup
  58.                             aSSCGroup = alEntity
  59.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSSCGroup.Arc, aSSCGroup.Spiral2, Nothing, AeccAlignmentEntityType.aeccSpiralSpiralCurveGroup, aSSCGroup.Arc.StartingStation, aSSCGroup.Arc.Id)
  60.                             aKnownStructureFlag = False
  61.                             aKnownStructureErrorString = aKnownStructureErrorString + "SpiralSpiralCurveGroup" + vbCrLf
  62.                         Case AeccAlignmentEntityType.aeccTangent
  63.                             aTangent = alEntity
  64.                             If curAlignment.StartingStation = aTangent.StartingStation Then
  65.                                 If GetEntityTypeAtIdFrom(aTangent.EntityAfter) = AeccAlignmentEntityType.aeccTangent Then
  66.                                     Call AddAngularPointToAngularPointArray(AngularPointArray, Nothing, aTangent, GetEntityAtIdFrom(aTangent.EntityAfter), -1, aTangent.StartingStation, aTangent.Id)
  67.                                 ElseIf GetEntityAtIdFrom(aTangent.EntityAfter) IsNot Nothing AndAlso _
  68.                                    ((GetEntityTypeAtIdFrom(GetEntityAtIdFrom(aTangent.EntityAfter).EntityAfter) = AeccAlignmentEntityType.aeccArc) Or _
  69.                                    (GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup Or _
  70.                                    GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccSpiralCurveGroup Or _
  71.                                    GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccArc)) Then
  72.                                     'Nothing
  73.                                 Else
  74.                                     aKnownStructureFlag = False
  75.                                     aKnownStructureErrorString = aKnownStructureErrorString + "free Tangent" + vbCrLf
  76.                                 End If
  77.                             ElseIf curAlignment.EndingStation = aTangent.EndingStation Then
  78.                                 If GetEntityAtIdFrom(aTangent.EntityBefore) IsNot Nothing AndAlso _
  79.                                  ((GetEntityTypeAtIdFrom(GetEntityAtIdFrom(aTangent.EntityBefore).EntityBefore) = AeccAlignmentEntityType.aeccArc) Or _
  80.                                     (GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup Or _
  81.                                     GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccCurveSpiralGroup Or _
  82.                                     GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccTangent Or _
  83.                                     GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccArc)) Then
  84.                                     'Nothing
  85.                                 Else
  86.                                     aKnownStructureFlag = False
  87.                                     aKnownStructureErrorString = aKnownStructureErrorString + "free Tangent" + vbCrLf
  88.                                 End If
  89.                             Else
  90.                                 If GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccTangent Then
  91.                                     Call AddAngularPointToAngularPointArray(AngularPointArray, Nothing, aTangent, GetEntityAtIdFrom(aTangent.EntityAfter), -1, aTangent.StartingStation, aTangent.Id)
  92.                                 ElseIf (GetEntityAtIdFrom(aTangent.EntityAfter) IsNot Nothing AndAlso _
  93.                                    ((GetEntityTypeAtIdFrom(GetEntityAtIdFrom(aTangent.EntityAfter).EntityAfter) = AeccAlignmentEntityType.aeccArc) Or _
  94.                                     GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup Or _
  95.                                     GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccSpiralCurveGroup Or _
  96.                                     GetEntityAtIdFrom(aTangent.EntityAfter).Type = AeccAlignmentEntityType.aeccArc)) Or _
  97.                                        (GetEntityAtIdFrom(aTangent.EntityBefore) IsNot Nothing AndAlso _
  98.                                    ((GetEntityTypeAtIdFrom(GetEntityAtIdFrom(aTangent.EntityBefore).EntityBefore) = AeccAlignmentEntityType.aeccArc) Or _
  99.                                    GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup Or _
  100.                                    GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccCurveSpiralGroup Or _
  101.                                    GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccArc Or _
  102.                                    GetEntityAtIdFrom(aTangent.EntityBefore).Type = AeccAlignmentEntityType.aeccTangent)) Then
  103.                                     'Nothing
  104.                                 Else
  105.                                     aKnownStructureFlag = False
  106.                                     aKnownStructureErrorString = aKnownStructureErrorString + "free Tangent" + vbCrLf
  107.                                 End If
  108.                             End If
  109.  
  110.                         Case AeccAlignmentEntityType.aeccTangentSpiralGroup
  111.                             aTSGroup = alEntity
  112.                             If GetEntityTypeAtIdFrom(aTSGroup.EntityAfter) = AeccAlignmentEntityType.aeccArc Then
  113.                                 'Nothing
  114.                             Else
  115.                                 aKnownStructureFlag = False
  116.                                 aKnownStructureErrorString = aKnownStructureErrorString + "free TangentSpiralGroup" + vbCrLf
  117.                             End If
  118.                         Case AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup
  119.                             aSCSGroup = alEntity
  120.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCSGroup.Arc, aSCSGroup.SpiralIn, aSCSGroup.SpiralOut, AeccAlignmentEntityType.aeccSpiralCurveSpiralGroup, aSCSGroup.Arc.StartingStation, _
  121.                                                                     aSCSGroup.Arc.Id)
  122.                         Case AeccAlignmentEntityType.aeccCurveSpiralGroup
  123.                             aCSGroup = alEntity
  124.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aCSGroup.ArcIn, Nothing, aCSGroup.SpiralOut, AeccAlignmentEntityType.aeccCurveSpiralGroup, aCSGroup.ArcIn.StartingStation, aCSGroup.ArcIn.Id)
  125.                         Case AeccAlignmentEntityType.aeccCurveSpiralSpiralGroup
  126.                             aCSSGroup = alEntity
  127.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aCSSGroup.Arc, Nothing, aCSSGroup.Spiral1, AeccAlignmentEntityType.aeccCurveSpiralSpiralGroup, aCSSGroup.Arc.StartingStation, aCSSGroup.Arc.Id)
  128.                             aKnownStructureFlag = False
  129.                             aKnownStructureErrorString = aKnownStructureErrorString + "CurveSpiralSpiralGroup" + vbCrLf
  130.                         Case AeccAlignmentEntityType.aeccSpiralCurveGroup
  131.                             aSCGroup = alEntity
  132.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCGroup.ArcOut, aSCGroup.SpiralIn, Nothing, AeccAlignmentEntityType.aeccSpiralCurveGroup, aSCGroup.ArcOut.StartingStation, aSCGroup.ArcOut.Id)
  133.                         Case AeccAlignmentEntityType.aeccSpiralCurveSpiralCurveSpiralGroup
  134.                             aSCSCSGroup = alEntity
  135.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCSCSGroup.Arc1, aSCSCSGroup.Spiral1, aSCSCSGroup.Spiral2, AeccAlignmentEntityType.aeccSpiralCurveSpiralCurveSpiralGroup, _
  136.                                                                     aSCSCSGroup.Arc1.StartingStation, aSCSCSGroup.Arc1.Id)
  137.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCSCSGroup.Arc2, Nothing, aSCSCSGroup.Spiral3, AeccAlignmentEntityType.aeccSpiralCurveSpiralCurveSpiralGroup, _
  138.                                                                     aSCSCSGroup.Arc2.StartingStation, aSCSCSGroup.Arc2.Id)
  139.                             aKnownStructureFlag = False
  140.                             aKnownStructureErrorString = aKnownStructureErrorString + "SpiralCurveSpiralCurveSpiralGroup" + vbCrLf
  141.                         Case AeccAlignmentEntityType.aeccSpiralCurveSpiralSpiralCurveSpiralGroup
  142.                             aSCSSCSGroup = alEntity
  143.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCSSCSGroup.Arc1, aSCSSCSGroup.Spiral1, aSCSSCSGroup.Spiral2, AeccAlignmentEntityType.aeccSpiralCurveSpiralSpiralCurveSpiralGroup, _
  144.                                                                     aSCSSCSGroup.Arc1.StartingStation, aSCSSCSGroup.Arc1.Id)
  145.                             Call AddAngularPointToAngularPointArray(AngularPointArray, aSCSSCSGroup.Arc2, aSCSSCSGroup.Spiral3, aSCSSCSGroup.Spiral4, AeccAlignmentEntityType.aeccSpiralCurveSpiralSpiralCurveSpiralGroup, _
  146.                                                                     aSCSSCSGroup.Arc2.StartingStation, aSCSSCSGroup.Arc2.Id)
  147.                             aKnownStructureFlag = False
  148.                             aKnownStructureErrorString = aKnownStructureErrorString + "SpiralCurveSpiralSpiralCurveSpiralGroup" + vbCrLf
  149.                     End Select
  150.  
  151.                     dlgMain.pb1.Value = CInt(((index + 1) / (aEntities.Count)) * 100) : dlgMain.pb1.Refresh()
  152.  
  153.                 Next index
  154.  
  155.                 If aKnownStructureFlag = False Then '"Трасса содержит неподдерживаемые элементы:"
  156.                     aKnownStructureErrorString = ResourceManagerMainShadow.GetString("Alignment contains unsupported elements:", curUICulture) & vbCrLf & vbCrLf & aKnownStructureErrorString '
  157.                 End If
  158.  
  159.                 resultSortByStation_AngularPointArray = SortByStation_AngularPointArray(aSortByStationErrorString)
  160.  
  161.                 If aKnownStructureFlag = False Or resultSortByStation_AngularPointArray = False Then
  162.                     Create_AngularPointArray = False
  163.                 End If
  164.  
  165.             Catch ex As System.Exception
  166.                 BuildErrorMessage(ex, False)
  167.                 Create_AngularPointArray = False
  168.             End Try
  169.         End Function
  170.  
  171.  Friend Shared Function AddAngularPointToAngularPointArray(ByRef aAngularPointArray() As ssAlignmentAngularPoint, ByVal aArc As AeccAlignmentArc, ByVal aBeforeEntity As AeccAlignmentEntity, ByVal aAfterEntity As AeccAlignmentEntity, _
  172.                                                             ByVal aAlignmentAngularPointType As AeccAlignmentEntityType, ByVal aStartingStation As Double, ByVal aId As Long) As Boolean
  173.             Dim arraySize As Long
  174.             Try
  175.                 If aAngularPointArray Is Nothing OrElse (aAngularPointArray.Length = 1 And aAngularPointArray(0) Is Nothing) Then
  176.                     arraySize = 0
  177.                 Else
  178.                     arraySize = aAngularPointArray.Length ' + 1
  179.                 End If
  180.                 ReDim Preserve aAngularPointArray(arraySize)
  181.                 aAngularPointArray(arraySize) = New ssAlignmentAngularPoint(aArc, aBeforeEntity, aAfterEntity, aAlignmentAngularPointType, aStartingStation, aId)
  182.                 AddAngularPointToAngularPointArray = True
  183.             Catch
  184.                 AddAngularPointToAngularPointArray = False
  185.             End Try
  186.  
  187.         End Function
  188.  
  189.         Friend Shared Function SortByStation_AngularPointArray(ByRef aSortByStationErrorString As String) As Boolean
  190.  
  191.             Dim localSortByStationAngularPointArray() As ssAlignmentAngularPoint = Nothing
  192.             Dim currentMinStation As Double, currentMinStationAngularPointIndex As Long, lastCurrentMinStationAngularPointIndex As Long
  193.             Dim workMinStation As Double, lastCurrentMinStation As Double
  194.             Dim angularPointArrayCount1 As Long, indexIn As Long, indexOut As Long
  195.  
  196.             SortByStation_AngularPointArray = False
  197.  
  198.             Try
  199.  
  200.                 lastCurrentMinStation = -1
  201.                 lastCurrentMinStationAngularPointIndex = -1
  202.                 If AngularPointArray IsNot Nothing Then
  203.                     angularPointArrayCount1 = AngularPointArray.Length
  204.                 End If
  205.                 If angularPointArrayCount1 <= 1 Then
  206.                     SortByStation_AngularPointArray = True
  207.                     Exit Function
  208.                 End If
  209.                 dlgMain.pb1.Value = 0 : dlgMain.pb1.Refresh()
  210.                 For index As Int32 = 0 To angularPointArrayCount1 - 1
  211.  
  212.                     For indexOut = 0 To angularPointArrayCount1 - 1
  213.                         If AngularPointArray(indexOut) IsNot Nothing Then
  214.                             currentMinStation = AngularPointArray(indexOut).StartingStation
  215.                             currentMinStationAngularPointIndex = indexOut
  216.                             If lastCurrentMinStationAngularPointIndex = -1 Then
  217.                                 If currentMinStation >= lastCurrentMinStation Then
  218.                                     Exit For
  219.                                 End If
  220.                             Else
  221.                                 If currentMinStation >= lastCurrentMinStation And _
  222.                                    AngularPointArray(indexOut).SortedByStation = False Then
  223.                                     Exit For
  224.                                 End If
  225.                             End If
  226.                         End If
  227.                     Next indexOut
  228.  
  229.                     For indexIn = 0 To angularPointArrayCount1 - 1
  230.                         If AngularPointArray(indexIn) IsNot Nothing Then
  231.                             workMinStation = AngularPointArray(indexIn).StartingStation
  232.                             If workMinStation < currentMinStation And workMinStation > lastCurrentMinStation And _
  233.                                AngularPointArray(indexIn).SortedByStation = False Then
  234.                                 currentMinStation = workMinStation
  235.                                 currentMinStationAngularPointIndex = indexIn
  236.                             End If
  237.                         End If
  238.                     Next indexIn
  239.  
  240.                     lastCurrentMinStation = currentMinStation
  241.                     lastCurrentMinStationAngularPointIndex = currentMinStationAngularPointIndex
  242.  
  243.                     Call AddAngularPointToAngularPointArray(localSortByStationAngularPointArray, AngularPointArray(currentMinStationAngularPointIndex).Arc, _
  244.                                                                                                  AngularPointArray(currentMinStationAngularPointIndex).BeforeEntity, _
  245.                                                                                                  AngularPointArray(currentMinStationAngularPointIndex).AfterEntity, _
  246.                                                                                                  AngularPointArray(currentMinStationAngularPointIndex).AlignmentAngularPointType, _
  247.                                                                                                  AngularPointArray(currentMinStationAngularPointIndex).StartingStation, _
  248.                                                                                                  AngularPointArray(currentMinStationAngularPointIndex).Id)
  249.  
  250.                     AngularPointArray(currentMinStationAngularPointIndex).SortedByStation = True
  251.  
  252.                     dlgMain.pb1.Value = CInt((index / (angularPointArrayCount1 - 1)) * 100) : dlgMain.pb1.Refresh()
  253.  
  254.                 Next index
  255.  
  256.                 ReDim AngularPointArray(0) : AngularPointArray(0) = Nothing
  257.  
  258.                 For index As Int32 = 0 To localSortByStationAngularPointArray.Length - 1
  259.                     ReDim Preserve AngularPointArray(index)
  260.                     AngularPointArray(index) = localSortByStationAngularPointArray(index)
  261.                     AngularPointArray(index).SortedByStation = False
  262.                 Next index
  263.                 ReDim localSortByStationAngularPointArray(0) : localSortByStationAngularPointArray(0) = Nothing
  264.  
  265.                 dlgMain.pb1.Value = 0 : dlgMain.pb1.Refresh()
  266.  
  267.                 SortByStation_AngularPointArray = True
  268.  
  269.             Catch ex As System.Exception
  270.                 aSortByStationErrorString = ResourceManagerMainShadow.GetString("Error angle points sorting:", curUICulture) & vbCrLf & ex.Message '"Ошибка сортировки вершин углов:"
  271.                 SortByStation_AngularPointArray = False
  272.             End Try
  273.  
  274.         End Function
  275.  
  276.         Friend Shared Function GetIndexById_AngularPointArray(ByRef aAngularPointArray() As ssAlignmentAngularPoint, ByVal id As Int32) As Int32
  277.             Try
  278.                 Dim indexById As Int32
  279.                 For indexById = 0 To aAngularPointArray.Length - 1
  280.                     If aAngularPointArray(indexById).Id = id Then
  281.                         GetIndexById_AngularPointArray = indexById
  282.                         Exit Function
  283.                     End If
  284.                 Next indexById
  285.                 GetIndexById_AngularPointArray = -1
  286.             Catch ex As System.Exception
  287.                 GetIndexById_AngularPointArray = -1
  288.             End Try
  289.         End Function
  290.  
  291.  Private Sub DrawTangentRowInRotAngleTanCurSpirParamTableRail(ByRef aTable As AcadTable, ByVal aTangent As AeccAlignmentTangent, ByVal angularPointArrayIndex As Long, ByVal aBetweenPointsLength As Double, _
  292.                                                                      ByVal aAngularPointIsArc As Double, ByRef aErrStr As String)
  293.             Try
  294.                 If angularPointArrayIndex = 1 Then
  295.                     aTable.SetText(1 + ((angularPointArrayIndex * 6) - 3), 2, Format(aTangent.StartEasting, "### ### ##0.00")) 'TangentStartEasting
  296.                     aTable.MergeCells(1 + ((angularPointArrayIndex * 6) - 3), 2 + ((angularPointArrayIndex * 6) - 3), 2, 2)
  297.                     aTable.SetText(1 + ((angularPointArrayIndex * 6) - 3), 3, Format(aTangent.StartNorthing, "### ### ##0.00")) 'TangentStartNorthing
  298.                     aTable.MergeCells(1 + ((angularPointArrayIndex * 6) - 3), 2 + ((angularPointArrayIndex * 6) - 3), 3, 3)
  299.                 End If
  300.  
  301.                 aTable.SetText(2 + ((angularPointArrayIndex * 6) - 3), 4, SmartFormat(aBetweenPointsLength)) 'BetweenPointsLength
  302.                 aTable.MergeCells(2 + ((angularPointArrayIndex * 6) - 3), 3 + ((angularPointArrayIndex * 6) - 3), 4, 4)
  303.  
  304.                 For jCol As Long = 5 To 11
  305.                     aTable.MergeCells(1 + ((angularPointArrayIndex * 6) - 3), 2 + ((angularPointArrayIndex * 6) - 3), jCol, jCol)
  306.                 Next jCol
  307.  
  308.                 If aAngularPointIsArc = True Then
  309.                     aTable.SetText(2 + ((angularPointArrayIndex * 6) - 3), 12, Format(aTangent.Length, "### ### ##0.00")) 'TangentLength
  310.                 End If
  311.                 aTable.MergeCells(2 + ((angularPointArrayIndex * 6) - 3), 3 + ((angularPointArrayIndex * 6) - 3), 12, 12)
  312.  
  313.                 aTable.SetRowHeight(1 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  314.                 aTable.SetRowHeight(2 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  315.             Catch ex As System.Exception
  316.                 aErrStr += ex.Message & vbCrLf
  317.             End Try
  318.         End Sub
  319.  
  320.         Private Sub DrawEndTangentRowInRotAngleTanCurSpirParamTableRail(ByRef aTable As AcadTable, ByVal aTangent As AeccAlignmentTangent, ByVal angularPointArrayIndex As Long, ByVal aBetweenPointsLength As Double, _
  321.                                                                         ByVal aAngularPointIsArc As Double, ByRef aErrStr As String)
  322.             Try
  323.                 aTable.SetText(9 + ((angularPointArrayIndex * 6) - 3), 2, Format(aTangent.EndEasting, "### ### ##0.00")) 'TangentStartEasting
  324.                 aTable.MergeCells(9 + ((angularPointArrayIndex * 6) - 3), 10 + ((angularPointArrayIndex * 6) - 3), 2, 2)
  325.                 aTable.SetText(9 + ((angularPointArrayIndex * 6) - 3), 3, Format(aTangent.EndNorthing, "### ### ##0.00")) 'TangentStartNorthing
  326.                 aTable.MergeCells(9 + ((angularPointArrayIndex * 6) - 3), 10 + ((angularPointArrayIndex * 6) - 3), 3, 3)
  327.                 aTable.SetText(8 + ((angularPointArrayIndex * 6) - 3), 4, SmartFormat(aBetweenPointsLength)) 'BetweenPointsLength
  328.                 aTable.MergeCells(8 + ((angularPointArrayIndex * 6) - 3), 9 + ((angularPointArrayIndex * 6) - 3), 4, 4)
  329.  
  330.                 For jCol As Long = 5 To 11
  331.                     aTable.MergeCells(9 + ((angularPointArrayIndex * 6) - 3), 10 + ((angularPointArrayIndex * 6) - 3), jCol, jCol)
  332.                 Next jCol
  333.  
  334.                 If aAngularPointIsArc = True Then
  335.                     aTable.SetText(8 + ((angularPointArrayIndex * 6) - 3), 12, Format(aTangent.Length, "### ### ##0.00")) 'TangentLength
  336.                 End If
  337.                 aTable.MergeCells(8 + ((angularPointArrayIndex * 6) - 3), 9 + ((angularPointArrayIndex * 6) - 3), 12, 12)
  338.  
  339.                 aTable.SetRowHeight(9 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  340.                 aTable.SetRowHeight(10 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  341.             Catch ex As System.Exception
  342.                 aErrStr += ex.Message & vbCrLf
  343.             End Try
  344.         End Sub
  345.  
  346.         Private Sub DrawSpirCurSpirRowInRotAngleTanCurSpirParamTableRail(ByRef aTable As AcadTable, ByVal aArcPIStation As Double, ByVal aStartFullCurveEasting As Double, ByVal aStartFullCurveNorthing As Double, _
  347.                                                                      ByVal aAngularPointEasting As Double, ByVal aAngularPointNorthing As Double, _
  348.                                                                      ByVal aEndFullCurveEasting As Double, ByVal aEndFullCurveNorthing As Double, _
  349.                                                                      ByVal aFullCurveRotationAngle As Double, ByVal angularPointArrayIndex As Long, _
  350.                                                                      ByVal aSpiralInLength As Double, ByVal aSpiralInTangent As Double, ByVal aSpiralOutLength As Double, ByVal aSpiralOutTangent As Double, _
  351.                                                                      ByVal aStartFullCurveStation As Double, ByVal aEndFullCurveStation As Double, _
  352.                                                                      ByVal aArcStartingStation As Double, ByVal aArcDelta As Double, ByVal aArcRadius As Double, ByVal aArcLength As Double, _
  353.                                                                      ByVal aArcEndingStation As Double, _
  354.                                                                      ByVal aAngularPointIsArc As Double, ByRef aErrStr As String)
  355.             Try
  356.                 aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 1, ResourceManagerMainShadow.GetString("Curvature Begin", curUICulture) & " " & angularPointArrayIndex)
  357.                 aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 1, 1)
  358.                 aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 2, Format(aStartFullCurveEasting, "### ### ##0.00")) 'StartFullCurveEasting
  359.                 aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 2, 2)
  360.                 aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 3, Format(aStartFullCurveNorthing, "### ### ##0.00")) 'StartFullCurveNorthing
  361.                 aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 3, 3)
  362.                 aTable.SetText(4 + ((angularPointArrayIndex * 6) - 3), 4, Format(aSpiralInTangent, "### ### ##0.00")) 'LengthFromStartFullCurveToAngularPoint
  363.                 aTable.MergeCells(4 + ((angularPointArrayIndex * 6) - 3), 5 + ((angularPointArrayIndex * 6) - 3), 4, 4)
  364.  
  365.                 For jCol As Long = 5 To 11
  366.                     aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), jCol, jCol)
  367.                 Next jCol
  368.  
  369.                 aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 10, StationToStationFormat(aStartFullCurveStation, False)) 'StartFullCurveStation
  370.                 aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 10, 10)
  371.                 aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 11, 11)
  372.                 If aAngularPointIsArc = False Then
  373.                     aTable.SetText(4 + ((angularPointArrayIndex * 6) - 3), 12, Format(aSpiralInTangent, "### ### ##0.00")) 'LengthFromStartFullCurveToAngularPoint
  374.                 End If
  375.                 aTable.MergeCells(4 + ((angularPointArrayIndex * 6) - 3), 5 + ((angularPointArrayIndex * 6) - 3), 12, 12)
  376.  
  377.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 1, ResourceManagerMainShadow.GetString("PI", curUICulture) & " " & angularPointArrayIndex)
  378.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 1, 1)
  379.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 2, Format(aAngularPointEasting, "### ### ##0.00")) 'AngularPointEasting
  380.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 2, 2)
  381.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 3, Format(aAngularPointNorthing, "### ### ##0.00")) 'AngularPointNorthing
  382.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 3, 3)
  383.                 aTable.SetText(6 + ((angularPointArrayIndex * 6) - 3), 4, Format(aSpiralOutTangent, "### ### ##0.00")) 'LengthFromAngularPointToEndFullCurve
  384.                 aTable.MergeCells(6 + ((angularPointArrayIndex * 6) - 3), 7 + ((angularPointArrayIndex * 6) - 3), 4, 4)
  385.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 5, AngleInRadiansToDegreesAndMinutesAndSecundes(aFullCurveRotationAngle)) 'FullCurveRotationAngle
  386.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 5, 5)
  387.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 6, Format(aArcRadius, "### ### ##0.00")) 'Arc.radius
  388.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 6, 6)
  389.  
  390.                 If Abs(aSpiralInTangent - aSpiralOutTangent) < 0.01 Then
  391.                     aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 7, Format(aSpiralInTangent, "### ### ##0.00"))
  392.                     aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 7, 7)
  393.                     aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 9, Format(aSpiralInLength, "### ### ##0.00"))
  394.                     aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 9, 9)
  395.                 Else
  396.                     aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 7, Format(aSpiralInTangent, "### ### ##0.00"))
  397.                     aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 7, 7)
  398.                     aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 7, Format(aSpiralOutTangent, "### ### ##0.00"))
  399.                     aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 7, 7)
  400.                     aTable.SetText(3 + ((angularPointArrayIndex * 6) - 3), 9, Format(aSpiralInLength, "### ### ##0.00"))
  401.                     aTable.MergeCells(3 + ((angularPointArrayIndex * 6) - 3), 4 + ((angularPointArrayIndex * 6) - 3), 9, 9)
  402.                     aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 9, Format(aSpiralOutLength, "### ### ##0.00"))
  403.                     aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 9, 9)
  404.                     aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 7, 7)
  405.                     aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 9, 9)
  406.                 End If
  407.                 aTable.SetText(5 + ((angularPointArrayIndex * 6) - 3), 8, Format(aSpiralInLength + aSpiralOutLength + aArcLength, "### ### ##0.00")) 'FullCurveLength ?
  408.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 8, 8)
  409.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 10, 10)
  410.                 aTable.MergeCells(5 + ((angularPointArrayIndex * 6) - 3), 6 + ((angularPointArrayIndex * 6) - 3), 11, 11)
  411.                 If aAngularPointIsArc = False Then
  412.                     aTable.SetText(6 + ((angularPointArrayIndex * 6) - 3), 12, Format(aSpiralOutTangent, "### ### ##0.00")) 'LengthFromAngularPointToEndFullCurve
  413.                 End If
  414.                 aTable.MergeCells(6 + ((angularPointArrayIndex * 6) - 3), 7 + ((angularPointArrayIndex * 6) - 3), 12, 12)
  415.  
  416.                 aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 1, ResourceManagerMainShadow.GetString("Curvature End", curUICulture) & " " & angularPointArrayIndex)
  417.                 aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 1, 1)
  418.                 aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 2, Format(aEndFullCurveEasting, "### ### ##0.00")) 'EndFullCurveEasting
  419.                 aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 2, 2)
  420.                 aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 3, Format(aEndFullCurveNorthing, "### ### ##0.00")) 'EndFullCurveNorthing
  421.                 aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 3, 3)
  422.                 aTable.MergeCells(8 + ((angularPointArrayIndex * 6) - 3), 9 + ((angularPointArrayIndex * 6) - 3), 4, 4)
  423.  
  424.                 For jCol As Long = 5 To 11
  425.                     aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), jCol, jCol)
  426.                 Next jCol
  427.  
  428.                 aTable.SetText(7 + ((angularPointArrayIndex * 6) - 3), 11, StationToStationFormat(aEndFullCurveStation, False)) 'EndFullCurveStation
  429.                 aTable.MergeCells(7 + ((angularPointArrayIndex * 6) - 3), 8 + ((angularPointArrayIndex * 6) - 3), 11, 11)
  430.                 aTable.MergeCells(8 + ((angularPointArrayIndex * 6) - 3), 9 + ((angularPointArrayIndex * 6) - 3), 12, 12)
  431.  
  432.                 aTable.SetRowHeight(3 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  433.                 aTable.SetRowHeight(4 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  434.                 aTable.SetRowHeight(5 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  435.                 aTable.SetRowHeight(6 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  436.                 aTable.SetRowHeight(7 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  437.                 aTable.SetRowHeight(8 + ((angularPointArrayIndex * 6) - 3), textHeightWorkingValue * 1.6)
  438.             Catch ex As System.Exception
  439.                 aErrStr += ex.Message & vbCrLf
  440.             End Try
  441.         End Sub

Оффлайн soloviewsergАвтор темы

  • ADN
  • *
  • Сообщений: 8
  • Карма: 2
    • soloviewserg.ru
Остатки кода на заданную тему.

 
Код - vb.net [Выбрать]
  1. Friend Class ssAlignmentAngularPoint
  2.         Implements IDisposable
  3.  
  4.         Private _license As SSLicense
  5.         Private _disposed As Boolean
  6.  
  7.         Protected Sub New()
  8.             MyBase.New()
  9.         End Sub
  10.  
  11.         Friend Sub New(ByVal aArc As AeccAlignmentArc, ByVal aBeforeEntity As AeccAlignmentEntity, ByVal aAfterEntity As AeccAlignmentEntity, ByVal aAlignmentAngularPointType As AeccAlignmentEntityType, _
  12.                    ByVal aStartingStation As Double, ByVal aId As Long)
  13.             Me.New()
  14.  
  15.             pArc = aArc
  16.             pBeforeEntity = aBeforeEntity
  17.             pAfterEntity = aAfterEntity
  18.             pAlignmentAngularPointType = aAlignmentAngularPointType
  19.             pStartingStation = aStartingStation
  20.             pId = aId
  21.  
  22.             pSortedByStation = False
  23.  
  24.         End Sub
  25.  
  26.         Friend Overloads Sub Dispose() Implements IDisposable.Dispose
  27.             Dispose(True)
  28.             GC.SuppressFinalize(Me)
  29.         End Sub
  30.  
  31.         Private Overloads Sub Dispose(ByVal disposing As Boolean)
  32.             SyncLock Me
  33.                 If Me._disposed = False Then
  34.                     Try
  35.                         'release Managed resources
  36.                         If disposing Then
  37.  
  38.                         End If
  39.                         'release Unmanaged resources
  40.  
  41.                         Me._disposed = True
  42.                     Finally
  43.                         'Dispose(disposing)
  44.                     End Try
  45.                 End If
  46.             End SyncLock
  47.         End Sub
  48.  
  49.         Private pArc As IAeccAlignmentArc
  50.         Private pBeforeEntity As IAeccAlignmentEntity
  51.         Private pAfterEntity As IAeccAlignmentEntity
  52.         Private pIsSCS As Boolean
  53.         Private pAlignmentAngularPointType As AeccAlignmentEntityType
  54.         Private pStartingStation As Double
  55.         Private pId As Long
  56.         Private pSortedByStation As Boolean
  57.  
  58.         Friend Property Arc() As IAeccAlignmentArc
  59.             Get
  60.                 Return pArc
  61.             End Get
  62.             Set(ByVal value As IAeccAlignmentArc)
  63.                 pArc = value
  64.             End Set
  65.         End Property
  66.  
  67.         Friend Property BeforeEntity() As IAeccAlignmentEntity
  68.             Get
  69.                 Return pBeforeEntity
  70.             End Get
  71.             Set(ByVal value As IAeccAlignmentEntity)
  72.                 pBeforeEntity = value
  73.             End Set
  74.         End Property
  75.  
  76.         Friend Property AfterEntity() As IAeccAlignmentEntity
  77.             Get
  78.                 Return pAfterEntity
  79.             End Get
  80.             Set(ByVal value As IAeccAlignmentEntity)
  81.                 pAfterEntity = value
  82.             End Set
  83.         End Property
  84.  
  85.         Friend ReadOnly Property IsSCS() As Boolean
  86.             Get
  87.                 If pBeforeEntity IsNot Nothing And pAfterEntity IsNot Nothing Then
  88.                     If pBeforeEntity.Type = AeccAlignmentEntityType.aeccSpiral And pAfterEntity.Type = AeccAlignmentEntityType.aeccSpiral Then
  89.                         pIsSCS = True
  90.                         Return pIsSCS
  91.                     Else
  92.                         pIsSCS = False
  93.                         Return pIsSCS
  94.                     End If
  95.                 Else
  96.                     pIsSCS = False
  97.                     Return pIsSCS
  98.                 End If
  99.             End Get
  100.         End Property
  101.  
  102.         Friend ReadOnly Property AlignmentAngularPointType() As AeccAlignmentEntityType
  103.             Get
  104.                 AlignmentAngularPointType = pAlignmentAngularPointType
  105.             End Get
  106.         End Property
  107.  
  108.         Friend ReadOnly Property StartingStation() As Double
  109.             Get
  110.                 StartingStation = pStartingStation
  111.             End Get
  112.         End Property
  113.  
  114.         Friend ReadOnly Property Id() As Long
  115.             Get
  116.                 Id = pId
  117.             End Get
  118.         End Property
  119.  
  120.         Friend Property SortedByStation() As Boolean
  121.             Get
  122.                 SortedByStation = pSortedByStation
  123.             End Get
  124.             Set(ByVal value As Boolean)
  125.                 pSortedByStation = value
  126.             End Set
  127.         End Property
  128.  
  129.     End Class