Exemplo n.º 1
0
        getAlignEntData(Alignment align)
        {
            List <AlgnEntData>        algnData = new List <AlgnEntData>();
            AlignmentEntityCollection ents     = align.Entities;

            foreach (AlignmentEntity ent in ents)
            {
                AlgnEntData aData = new AlgnEntData();
                if (ent.EntityType == AlignmentEntityType.Arc)
                {
                    AlignmentArc arc = (AlignmentArc)ent;
                    aData.ID     = arc.EntityId;
                    aData.Type   = "Arc";
                    aData.StaBeg = arc.StartStation;
                    aData.StaEnd = arc.EndStation;
                    aData.Length = arc.Length;
                    aData.Radius = arc.Radius;
                    try
                    {
                        aData.EntBefore = arc.EntityBefore;
                    }
                    catch
                    {
                        aData.EntBefore = 0;
                    }
                }
                else if (ent.EntityType == AlignmentEntityType.Line)
                {
                    AlignmentLine line = (AlignmentLine)ent;
                    aData.ID     = line.EntityId;
                    aData.Type   = "Line";
                    aData.StaBeg = line.StartStation;
                    aData.StaEnd = line.EndStation;
                    aData.Length = line.Length;
                    aData.Radius = 0;
                    try
                    {
                        aData.EntBefore = line.EntityBefore;
                    }
                    catch
                    {
                        aData.EntBefore = 0;
                    }
                }
                algnData.Add(aData);
            }
            return(algnData);
        }
Exemplo n.º 2
0
        getAlgnEntData(Alignment objAlign)
        {
            //-----------------------------------------------Collect alignment segment data-----------------------------------------------
            AlgnEntData        algnEntData     = default(AlgnEntData);
            List <AlgnEntData> algnEntDataList = new List <AlgnEntData>();           //data for alignment entities in order occurance in alignment not by ID

            AlignmentEntityCollection alignEnts = objAlign.Entities;
            int k = alignEnts.Count;

            foreach (AlignmentEntity alignEnt in alignEnts)
            {
                algnEntData = new AlgnEntData();
                if (alignEnt.EntityType == AlignmentEntityType.Arc)
                {
                    AlignmentArc alignEntArc = alignEnt as AlignmentArc;
                    try {
                        algnEntData.EntBefore = alignEntArc.EntityBefore;
                    }
                    catch (Autodesk.Civil.EntityNotFoundException) {
                        algnEntData.EntBefore = 0;
                    }
                    algnEntData.ID        = alignEntArc.EntityId;
                    algnEntData.Length    = alignEntArc.Length;
                    algnEntData.Radius    = alignEntArc.Radius;
                    algnEntData.Direction = 0;
                    algnEntData.ClockWise = alignEntArc.Clockwise;
                    algnEntData.StaBeg    = alignEntArc.StartStation;
                    algnEntData.StaEnd    = alignEntArc.EndStation;
                    algnEntData.Type      = "Arc";
                    algnEntData.pnt2dBeg  = alignEntArc.StartPoint;
                    algnEntData.pnt2dEnd  = alignEntArc.EndPoint;
                }
                else if (alignEnt.EntityType == AlignmentEntityType.Line)
                {
                    AlignmentLine alignEntLine = alignEnt as AlignmentLine;
                    try {
                        algnEntData.EntBefore = alignEntLine.EntityBefore;
                    }
                    catch (Autodesk.Civil.EntityNotFoundException) {
                        algnEntData.EntBefore = 0;
                    }
                    algnEntData.ID        = alignEntLine.EntityId;
                    algnEntData.Length    = alignEntLine.Length;
                    algnEntData.Radius    = 0;
                    algnEntData.Direction = alignEntLine.Direction;
                    algnEntData.StaBeg    = alignEntLine.StartStation;
                    algnEntData.StaEnd    = alignEntLine.EndStation;
                    algnEntData.Type      = "Line";
                    algnEntData.pnt2dBeg  = alignEntLine.StartPoint;
                    algnEntData.pnt2dEnd  = alignEntLine.EndPoint;
                }
                algnEntDataList.Add(algnEntData);
            }

            for (int i = 0; i < algnEntDataList.Count - 1; i++)
            {
                AlgnEntData algnEnt0 = algnEntDataList[i];
                AlgnEntData algnEntX = algnEntDataList[i + 1];

                Vector2d v2d0 = algnEnt0.pnt2dEnd - algnEnt0.pnt2dBeg;
                Vector2d v2dX = algnEntX.pnt2dEnd - algnEntX.pnt2dBeg;

                double ang3pnts = Geom.getAngle3Points2d(algnEnt0.pnt2dBeg, algnEnt0.pnt2dEnd, algnEntX.pnt2dEnd);
                algnEnt0.AngDeflection = v2d0.getDeflectionAngle2Vectors(v2dX);
                if (Geom.testRight(algnEnt0.pnt2dBeg, algnEnt0.pnt2dEnd, algnEntX.pnt2dEnd) < 0)
                {
                    algnEnt0.AngDeflection *= -1;
                }

                algnEntDataList[i] = algnEnt0;
            }
            return(algnEntDataList);
        }
Exemplo n.º 3
0
        private void cmdUpdate_Click(object sender, EventArgs e)
        {
            Control            cntrl;
            ControlCollection  cntrls   = (ControlCollection)this.Controls;
            List <AlgnEntData> algnData = new List <AlgnEntData>();
            int k = cntrls.Count;

            k = (k - 9) / 1 - 1;

            Object[,] varData = new object[k, 6];
            for (int i = 0; i < cntrls.Count; i++)
            {
                cntrl = cntrls[i];
                if (cntrl.Name.Contains("lbl"))
                {
                    int id  = int.Parse(cntrl.Name.Substring(4, 1));
                    int idx = id + 2;
                    varData[id, idx] = cntrl.Text;
                }
            }
            AlgnEntData aData;

            for (int i = 0; i < k; i++)
            {
                aData        = new AlgnEntData();
                aData.ID     = int.Parse(varData[i, 1].ToString());
                aData.Type   = varData[i, 2].ToString();
                aData.StaBeg = double.Parse(varData[i, 3].ToString());
                aData.StaEnd = double.Parse(varData[i, 4].ToString());
                aData.Length = double.Parse(varData[i, 5].ToString());
                aData.Radius = double.Parse(varData[i, 6].ToString());
                algnData.Add(aData);
            }

            Alignment align = (Alignment)idAlign.getEnt();
            AlignmentEntityCollection ents = align.Entities;
            bool changed = false;

            for (int i = 0; i < ents.Count; i++)
            {
                AlignmentEntity ent = ents[i];
                if (ent.EntityType == AlignmentEntityType.Arc)
                {
                    if (algnData[1].Radius == 0)
                    {
                        ents.Remove(ent);
                        changed = true;
                    }
                }
                else
                {
                    AlignmentArc arc = (AlignmentArc)ent;
                    if (!arc.Radius.Equals(algnData[i].Radius))
                    {
                        arc.Radius = algnData[i].Radius;
                        changed    = true;
                    }
                }
                if (changed)
                {
                    this.Close();
                    MNP_Align.editAlign(align.ObjectId);
                }
            }
        }
Exemplo n.º 4
0
        listAlignEnts(Alignment objAlign)
        {
            AlignmentEntity objAlignEnt    = default(AlignmentEntity);
            AlignmentLine   objAlignEntTan = default(AlignmentLine);
            AlignmentArc    objAlignEntArc = default(AlignmentArc);

            List <AlgnEntData> varAlignData  = null;
            List <AlgnEntData> varAlignDataX = null;

            int lngBefore = 0;

            AlignmentEntityCollection ents = objAlign.Entities;

            for (int i = 0; i < ents.Count; i++)
            {
                objAlignEnt = ents[i];

                AlgnEntData alignData = new AlgnEntData();
                if (objAlignEnt.EntityType == AlignmentEntityType.Arc)
                {
                    objAlignEntArc      = (AlignmentArc)objAlignEnt;
                    alignData.ID        = objAlignEntArc.EntityId;
                    alignData.Type      = "Arc";
                    alignData.StaBeg    = System.Math.Round(objAlignEntArc.StartStation, 2);
                    alignData.StaEnd    = System.Math.Round(objAlignEntArc.EndStation, 2);
                    alignData.Length    = System.Math.Round(objAlignEntArc.Length, 2);
                    alignData.Radius    = System.Math.Round(objAlignEntArc.Radius, 2);
                    alignData.EntBefore = objAlignEntArc.EntityBefore;

                    varAlignData.Add(alignData);
                }
                else if (objAlignEnt.EntityType == AlignmentEntityType.Line)
                {
                    objAlignEntTan      = (AlignmentLine)objAlignEnt;
                    alignData.ID        = objAlignEntTan.EntityId;
                    alignData.Type      = "Tangent";
                    alignData.StaBeg    = System.Math.Round(objAlignEntTan.StartStation, 2);
                    alignData.StaEnd    = System.Math.Round(objAlignEntTan.EndStation, 2);
                    alignData.Length    = System.Math.Round(objAlignEntTan.Length, 2);
                    alignData.Radius    = 0.0;
                    alignData.EntBefore = objAlignEntTan.EntityBefore;

                    varAlignData.Add(alignData);
                }
            }

            int n = -1;
            int k = 0;

            do
            {
                for (int i = 0; i < ents.Count; i++)
                {
                    if (varAlignData[i].EntBefore == lngBefore)
                    {
                        n += 1;                                         //n is index for new list
                        varAlignDataX[n] = varAlignData[i];
                        k = i;
                        break;
                    }
                }

                lngBefore = varAlignData[k].ID;
            }while (n < ents.Count);

            return(varAlignDataX);
        }