コード例 #1
0
ファイル: cPiso.cs プロジェクト: jrosalesmeza/FCDisenoNervios
        public void DrawAutoCAD_Nervios(float X, float Y)
        {
            Nervios.ForEach(N =>
            {
                N.Lista_Tramos.ForEach(T =>
                {
                    T.Lista_SubTramos.ForEach(ST =>
                                              ST.Lista_Lineas.ForEach(L => DrawLine_AutoCAD(L, cVariables.C_Nervios, X, Y)));

                    var Point1     = ConvertcPointToPointF(T.Lista_SubTramos.First().Lista_Lineas.First().ConfigLinea.Point1P);
                    var Point2     = ConvertcPointToPointF(T.Lista_SubTramos.Last().Lista_Lineas.Last().ConfigLinea.Point2P);
                    float Bmax     = T.Lista_SubTramos.Max(y => y.Seccion.B) * cConversiones.Dimension_cm_to_m;
                    PointF pointF  = PointF.Empty;
                    string Nombre  = N.Nombre;
                    float Rotacion = 0; float W_CajonTexto = cVariables.W_LetraAutoCADTextRefuerzo; float H_Texto = cVariables.H_TextoEstribos;
                    if (N.Direccion == eDireccion.Horizontal)
                    {
                        pointF = new PointF(Point1.X + (Point2.X - Point1.X) / 2F - W_CajonTexto / 2f, Point1.Y + H_Texto + Bmax);
                    }
                    else if (N.Direccion == eDireccion.Vertical)
                    {
                        Rotacion = 90f;
                        pointF   = new PointF(Point1.X - H_Texto - Bmax, Point1.Y + (Point2.Y - Point1.Y) / 2F - W_CajonTexto / 2f);
                    }
                    else if (N.Direccion == eDireccion.Diagonal)
                    {
                        Rotacion = Angulo(Point1, Point2);
                        pointF   = new PointF(Point1.X + (Point2.X - Point1.X) / 2F - W_CajonTexto / 2f, Point1.Y + (Point2.Y - Point1.Y) / 2F - W_CajonTexto / 2f);
                    }
                    FunctionsAutoCAD.AddText(Nombre, B_Operaciones_Matricialesl.Operaciones.Traslacion(pointF, X, Y), cVariables.W_LetraAutoCADEstribos, H_Texto, cVariables.C_Texto2, cVariables.Estilo_Texto, Rotacion, Width2: W_CajonTexto, JustifyText: JustifyText.Center);
                });
            });
        }
コード例 #2
0
 public void PaintAutoCAD(float X, float Y)
 {
     if (NoBarra != eNoBarra.BNone && CoordenadasPuntoString.Reales.Count > 0)
     {
         string Text       = $"{Cantidad}{cFunctionsProgram.ConvertireNoBarraToString(NoBarra)}/{Math.Round(separacion * cConversiones.Dimension_m_to_cm, 2)}";
         float  LargoTexto = Text.Length * cVariables.W_LetraAutoCADEstribos;
         FunctionsAutoCAD.AddText(Text, B_Operaciones_Matricialesl.Operaciones.Traslacion(CoordenadasPuntoString.Reales.First(), X - LargoTexto / 2, Y),
                                  cVariables.W_LetraAutoCADTextRefuerzo, cVariables.H_TextoEstribos, cVariables.C_Estribos, cVariables.Estilo_Texto, 0,
                                  Width2: LargoTexto, JustifyText: JustifyText.Center);
     }
 }
コード例 #3
0
ファイル: cPiso.cs プロジェクト: jrosalesmeza/FCDisenoNervios
        private void DrawLine_AutoCAD(cLine Line, string layer, float X, float Y)
        {
            var point1  = ConvertcPointToPointF(Line.ConfigLinea.Point1P);
            var point2  = ConvertcPointToPointF(Line.ConfigLinea.Point2P);
            var puntos1 = new List <PointF> {
                point1, point2
            };
            var puntos2 = B_Operaciones_Matricialesl.Operaciones.OffSetLine(point1, point2, Line.Seccion.B * cConversiones.Dimension_cm_to_m).ToList();

            FunctionsAutoCAD.AddPolyline2D(B_Operaciones_Matricialesl.Operaciones.Traslacion(puntos1, X, Y).ToArray(), layer, false);
            FunctionsAutoCAD.AddPolyline2D(B_Operaciones_Matricialesl.Operaciones.Traslacion(puntos2, X, Y).ToArray(), layer, false);
        }
コード例 #4
0
        public void Paint_AutoCAD(float X, float Y)
        {
            string TextBarra = $"{CantBarra}#{NoBarra.ToString().Replace("B", "")} L=";
            float  LargoTexto = TextBarra.Length * cVariables.W_LetraAutoCADTextRefuerzo;
            float  Xmin = C_Barra.Reales.Min(x => x.X); float Xmax = C_Barra.Reales.Max(x => x.X);
            float  Ymax    = C_Barra.Reales.Max(x => x.Y);
            float  Ymin    = C_Barra.Reales.Min(x => x.Y);
            float  XString = X + Xmin + (Xmax - Xmin) / 2f - LargoTexto / 2f;
            float  YString = ubicacionRefuerzo == eUbicacionRefuerzo.Inferior ? Y + Ymin + cVariables.H_CuadroTextoBarra : Y + Ymax + cVariables.H_CuadroTextoBarra;

            double[] P_String = new double[] { XString, YString, 0 };
            FunctionsAutoCAD.AddPolyline2DWithLengthText(B_Operaciones_Matricialesl.Operaciones.Traslacion(C_Barra.Reales, X, Y).ToArray(),
                                                         cVariables.C_Refuerzo, TextBarra, P_String, cVariables.W_LetraAutoCADTextRefuerzo, cVariables.H_TextoBarra,
                                                         cVariables.C_TextRefuerzo, cVariables.Estilo_Texto, 0, LargoTexto, JustifyText.Center);
        }
コード例 #5
0
        public void Paint_AutoCAD(float X, float Y)
        {
            Barras.ForEach(x => x.Paint_AutoCAD(X, Y));

            //Agregar Cotas
            try
            {
                if (UbicacionRefuerzo == eUbicacionRefuerzo.Inferior)
                {
                    Barras.ForEach(Barra =>
                    {
                        if (!Barra.TraslpaoDerecha && !Barra.TraslapoIzquierda)
                        {
                            cSubTramo SubTramo = (cSubTramo)Tendencia_Refuerzo_Origen.NervioOrigen.Lista_Elementos.Find(x => x.IsVisibleCoordAutoCAD(Barra.XF) && x is cSubTramo);

                            if (SubTramo != null)
                            {
                                float Ymax = Barra.C_Barra.Reales.Max(x => x.Y);

                                PointF P1 = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(Barra.XF, Ymax), X, Y);
                                PointF P2 = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(SubTramo.Vistas.Perfil_AutoCAD.Reales[2].X, Ymax), X, Y);
                                FunctionsAutoCAD.AddCota(P1, P2, cVariables.C_Cotas, cVariables.Estilo_Cotas, cVariables.Desplazamiento_Cotas_RefuerzoInferior,
                                                         DeplazaTextY: cVariables.DesplazamientoTexto_Cotas);
                            }
                        }
                    });
                }
                else
                {
                    void AgregarCotaBarrasIndependietes(cBarra Barra, IElemento ElementoXF)
                    {
                        float  Ymax = Barra.C_Barra.Reales.Max(x => x.Y);
                        PointF P1   = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(ElementoXF.Vistas.Perfil_AutoCAD.Reales[0].X, Ymax), X, Y);
                        PointF P2   = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(Barra.C_Barra.Reales.Max(y => y.X), Ymax), X, Y);

                        FunctionsAutoCAD.AddCota(P1, P2, cVariables.C_Cotas, cVariables.Estilo_Cotas, -cVariables.Desplazamiento_Cotas_RefuerzoSuperior,
                                                 DeplazaTextY: cVariables.DesplazamientoTexto_Cotas);
                    }

                    int MaximoNivelBarras = Barras.Max(x => x.Nivel);
                    Barras.ForEach(Barra =>
                    {
                        IElemento ElementoXI = Tendencia_Refuerzo_Origen.NervioOrigen.Lista_Elementos.Find(x => x.IsVisibleCoordAutoCAD(Barra.C_Barra.Reales.Min(y => y.X)));
                        IElemento ElementoXF = Tendencia_Refuerzo_Origen.NervioOrigen.Lista_Elementos.Find(x => x.IsVisibleCoordAutoCAD(Barra.C_Barra.Reales.Max(y => y.X)));

                        if (!(ElementoXI is cApoyo) && !(ElementoXF is cApoyo) && Barra.GanchoDerecha == eTipoGancho.None && Barra.GanchoIzquierda == eTipoGancho.None)
                        {
                            if (Barra.Nivel == MaximoNivelBarras)
                            {
                                AgregarCotaBarrasIndependietes(Barra, ElementoXF);
                            }
                            else
                            {
                                cBarra BarraNivelPosterior = EncontrarBarraConentedora(Barra);
                                if (BarraNivelPosterior == null)
                                {
                                    AgregarCotaBarrasIndependietes(Barra, ElementoXF);
                                }
                                else
                                {
                                    float Ymax     = BarraNivelPosterior.C_Barra.Reales.Max(x => x.Y);
                                    float DespCota = Barra.C_Barra.Reales.Min(x => x.Y) - Ymax;
                                    PointF P1      = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(BarraNivelPosterior.C_Barra.Reales.Max(y => y.X), Ymax), X, Y);
                                    PointF P2      = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(Barra.C_Barra.Reales.Max(y => y.X), Barra.C_Barra.Reales.Min(x => x.Y)), X, Y);
                                    FunctionsAutoCAD.AddCota(P1, P2, cVariables.C_Cotas, cVariables.Estilo_Cotas, -DespCota - 0.13f,
                                                             DeplazaTextY: cVariables.DesplazamientoTexto_Cotas, RA: false);
                                }
                            }
                        }
                    });
                }

                Barras.ForEach(x => { x.CotaParaAutoCADIzquierda = false; x.CotaParaAutoCADDerecha = false; });
                Barras.ForEach(Barra =>
                {
                    if (Barra.TraslpaoDerecha && !Barra.CotaParaAutoCADDerecha)
                    {
                        List <cBarra> Barras1 = Barras.FindAll(x => x.TraslapoIzquierda);
                        foreach (cBarra barra in Barras1)
                        {
                            if (barra != Barra && XiPerteneceaX0X1(Barra.C_Barra.Reales.Min(y => y.X), Barra.C_Barra.Reales.Max(y => y.X), barra.XI))
                            {
                                Barra.CotaParaAutoCADDerecha   = true;
                                barra.CotaParaAutoCADIzquierda = true;
                                cBarra BarraPredominante       = barra.C_Barra.Reales.Max(x => x.Y) > Barra.C_Barra.Reales.Max(x => x.Y) ? barra : Barra;
                                float Ymax     = BarraPredominante.C_Barra.Reales.Min(x => x.Y);
                                float DespCota = cVariables.Desplazamiento_Cotas_RefuerzoInferior;
                                if (UbicacionRefuerzo == eUbicacionRefuerzo.Superior)
                                {
                                    DespCota = -cVariables.Desplazamiento_Cotas_RefuerzoSuperior;
                                }
                                PointF P1 = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(barra.C_Barra.Reales.Min(y => y.X), Ymax), X, Y);
                                PointF P2 = B_Operaciones_Matricialesl.Operaciones.Traslacion(new PointF(Barra.C_Barra.Reales.Max(y => y.X), Ymax), X, Y);
                                FunctionsAutoCAD.AddCota(P1, P2, cVariables.C_Cotas, cVariables.Estilo_Cotas, DespCota,
                                                         DeplazaTextY: cVariables.DesplazamientoTexto_Cotas, RA: false);
                            }
                        }
                    }
                });
            }
            catch
            {
            }
        }