public void PaintTraslapos(Graphics e, float Zoom) { try { float Hpixeles = 30; Barras.ForEach(B => { if (B.TraslpaoDerecha) { cBarra B2 = Barras.Find(y => y.TraslapoIzquierda && XiPerteneceaX0X1(B.XI, B.XF, y.XI) && y != B); if (B2 != null) { PaintCotaHorizontal(e, new PointF(B2.C_Barra.Escaladas.Min(y => y.X), B2.C_Barra.Escaladas.Max(y => y.Y)), new PointF(B.C_Barra.Escaladas.Max(y => y.X), B.C_Barra.Escaladas.Max(y => y.Y)), new PointF(B2.C_Barra.Reales.Min(y => y.X), B2.C_Barra.Reales.Max(y => y.Y)), new PointF(B.C_Barra.Reales.Max(y => y.X), B.C_Barra.Reales.Max(y => y.Y)), Hpixeles, UbicacionRefuerzo == eUbicacionRefuerzo.Inferior, Zoom); } } }); } catch { } }
public cBarra EncontrarBarraConentedora(cBarra BarraMadre) { foreach (cBarra barra in Barras) { if (BarraMadre != barra) { if (Barra1ContieneBarra2(BarraMadre, barra)) { return(barra); } } } return(null); }
private void EliminarBarra() { cBarra BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Find(x => x.C_Barra.IsSelect | x.C_Barra.IsSelectArrastre); if (BarraSelect == null) { BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.Find(x => x.C_Barra.IsSelect | x.C_Barra.IsSelectArrastre); } if (BarraSelect != null) { F_Base.EnviarEstado_Nervio(F_Base.Proyecto.Edificio.PisoSelect.NervioSelect); if (BarraSelect.UbicacionRefuerzo == eUbicacionRefuerzo.Inferior) { F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.EliminarBarra(BarraSelect); } else { F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.EliminarBarra(BarraSelect); } F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.SimilitudNervioCompleto.NerviosSimilares.ForEach(N => { cBarra BarraEliminar; BarraEliminar = BarraSelect.UbicacionRefuerzo == eUbicacionRefuerzo.Inferior ? N.Tendencia_Refuerzos.TInfeSelect.Barras.Find(y => y.ID == BarraSelect.ID) : N.Tendencia_Refuerzos.TSupeSelect.Barras.Find(y => y.ID == BarraSelect.ID); if (BarraEliminar != null) { if (BarraEliminar.UbicacionRefuerzo == eUbicacionRefuerzo.Inferior) { N.Tendencia_Refuerzos.TInfeSelect.EliminarBarra(BarraEliminar); } else { N.Tendencia_Refuerzos.TSupeSelect.EliminarBarra(BarraEliminar); } } }); PB_VistaPerfilLongitudinalDiseno.Invalidate(); } }
private void CopiarBarra() { cBarra BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Find(x => x.C_Barra.IsSelect | x.C_Barra.IsSelectArrastre); if (BarraSelect == null) { BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.Find(x => x.C_Barra.IsSelect | x.C_Barra.IsSelectArrastre); } if (BarraSelect != null) { F_Base.EnviarEstado_Nervio(F_Base.Proyecto.Edificio.PisoSelect.NervioSelect); cBarra BarraClonada = cFunctionsProgram.DeepCloneFast(BarraSelect); if (BarraSelect.UbicacionRefuerzo == eUbicacionRefuerzo.Inferior) { int IDMax = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Max(y => y.ID); BarraClonada.ID = IDMax + 1; BarraClonada.TendenciaOrigen = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Last().TendenciaOrigen; F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.AgregarBarra(BarraClonada); F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.SimilitudNervioCompleto.NerviosSimilares.ForEach(N => { cBarra BarraClonar2 = cFunctionsProgram.DeepCloneFast(BarraClonada); BarraClonar2.TendenciaOrigen = N.Tendencia_Refuerzos.TInfeSelect; N.Tendencia_Refuerzos.TInfeSelect.AgregarBarra(BarraClonar2); }); } else { int IDMax = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.Max(y => y.ID); BarraClonada.ID = IDMax + 1; BarraClonada.TendenciaOrigen = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.Last().TendenciaOrigen; F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.AgregarBarra(BarraClonada); } PB_VistaPerfilLongitudinalDiseno.Invalidate(); } }
private void PB_VistaPerfilLongitudinalDiseno_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.ForEach(x => x.MouseDown(e.Location)); F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.ForEach(x => x.MouseDown(e.Location)); F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TEstriboSelect.BloqueEstribos.ForEach(y => y.MouseDown(e.Location)); BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Find(x => x.C_Barra.IsSelect); if (BarraSelect == null) { BarraSelect = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TSupeSelect.Barras.Find(x => x.C_Barra.IsSelect); } F_Base.F_ModificadorDeRefuerzos.BarraSelect = BarraSelect; BloqueEstribos = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TEstriboSelect.BloqueEstribos.Find(y => y.Recuadro_ModoEdicion.IsSelect); F_Base.F_ModificadorDeRefuerzos.BloqueEstribosSelect = BloqueEstribos; PB_VistaPerfilLongitudinalDiseno.Invalidate(); } // PB_VistaPerfilLongitudinalDiseno.Focus(); // Activate(); }
private void AgregarBarraInferior() { F_Base.EnviarEstado_Nervio(F_Base.Proyecto.Edificio.PisoSelect.NervioSelect); if (F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Count == 0) { F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.AgregarBarra(cFunctionsProgram.CrearBarraDefault(F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect, eUbicacionRefuerzo.Inferior)); } else { int IDMax = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Max(y => y.ID); cBarra BarraClonada = cFunctionsProgram.DeepCloneFast(F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Last(x => x.ID == IDMax)); BarraClonada.ID += 1; BarraClonada.TendenciaOrigen = F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.Barras.Last().TendenciaOrigen; F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.Tendencia_Refuerzos.TInfeSelect.AgregarBarra(BarraClonada); F_Base.Proyecto.Edificio.PisoSelect.NervioSelect.SimilitudNervioCompleto.NerviosSimilares.ForEach(N => { cBarra BarraClonada1 = cFunctionsProgram.DeepCloneFast(BarraClonada); BarraClonada1.TendenciaOrigen = N.Tendencia_Refuerzos.TInfeSelect; N.Tendencia_Refuerzos.TInfeSelect.AgregarBarra(BarraClonada1); }); } PB_VistaPerfilLongitudinalDiseno.Invalidate(); }
public void EliminarBarra(cBarra Barra) { Barras.Remove(Barra); AsignarNivelABarras(); }
public bool Barra1ContieneBarra2(cBarra Barra1, cBarra Barra2) { return(Barra1.C_Barra.Reales.Min(y => y.X) <= Barra2.C_Barra.Reales.Min(y => y.X) && Barra1.C_Barra.Reales.Max(y => y.X) >= Barra2.C_Barra.Reales.Max(y => y.X)); }
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 { } }
private void CompararBarras(cBarra Barra0, List <cBarra> Barras) { Barras.ForEach(Barra1 => { if (Barra0 != Barra1 && Barra0.Nivel == Barra1.Nivel) { if (XiPerteneceaX0X1(Barra0.XI, Barra0.XF, Barra1.XI) && XiPerteneceaX0X1(Barra0.XI, Barra0.XF, Barra1.XF)) // Barra 0 Cotiene Barra 1 { Barra1.Nivel = Barra0.Nivel + 1; } else { float DistanciaLongitud; if (XiPerteneceaX0X1(Barra0.XI, Barra0.XF, Barra1.XI)) { DistanciaLongitud = DeterminarLongBarraRecta(Barra1.XI, Barra0.XF); if (DistanciaLongitud > Barra0.Traslapo + cVariables.ToleranciaTraslapo) { Barra1.Nivel = Barra0.Nivel + 1; CompararBarras(Barra1, Barras); } else if (!Barra0.TraslpaoDerecha | !Barra1.TraslapoIzquierda) { Barra0.TraslpaoDerecha = true; Barra1.TraslapoIzquierda = true; CompararBarras(Barra1, Barras); } } else if (XiPerteneceaX0X1(Barra0.XI, Barra0.XF, Barra1.XF)) { DistanciaLongitud = DeterminarLongBarraRecta(Barra0.XI, Barra1.XF); if (DistanciaLongitud > Barra0.Traslapo + cVariables.ToleranciaTraslapo) { Barra1.Nivel = Barra0.Nivel + 1; CompararBarras(Barra1, Barras); } else if (!Barra0.TraslapoIzquierda | !Barra1.TraslpaoDerecha) { Barra0.TraslapoIzquierda = true; Barra1.TraslpaoDerecha = true; CompararBarras(Barra1, Barras); } } else if (XiPerteneceaX0X1(Barra1.XI, Barra1.XF, Barra0.XF)) { DistanciaLongitud = DeterminarLongBarraRecta(Barra0.XI, Barra1.XF); if (DistanciaLongitud > Barra0.Traslapo + cVariables.ToleranciaTraslapo) { Barra0.Nivel = Barra1.Nivel + 1; CompararBarras(Barra0, Barras); } else if (!Barra1.TraslapoIzquierda | !Barra0.TraslpaoDerecha) { Barra1.TraslapoIzquierda = true; Barra0.TraslpaoDerecha = true; CompararBarras(Barra0, Barras); } } else if (XiPerteneceaX0X1(Barra1.XI, Barra1.XF, Barra0.XI)) { DistanciaLongitud = DeterminarLongBarraRecta(Barra0.XI, Barra1.XF); if (DistanciaLongitud > Barra0.Traslapo + cVariables.ToleranciaTraslapo) { Barra0.Nivel = Barra1.Nivel + 1; CompararBarras(Barra0, Barras); } else if (!Barra1.TraslpaoDerecha | !Barra0.TraslapoIzquierda) { Barra1.TraslpaoDerecha = true; Barra0.TraslapoIzquierda = true; CompararBarras(Barra0, Barras); } } } } }); }
public void AgregarBarra(cBarra Barra) { Barras.Add(Barra); AsignarNivelABarras(); }