// TODO: analizar el uso de las capas de trabajo y cálculo y reprogramar el proceso, tener en cuenta que se pueden producir capas sin trazos, teneer en cuenta el bbox.z del poligono private IList <StrokeSLT> _GenerateShell(Poligonos Pols, double AnchoBoquilla, double Grosor) { IList <StrokeSLT> Res = new List <StrokeSLT>(); //borde exterior i=0 no se calcula como shell //bordes para formar el shell i<= int.Parse((Grosor/AnchoBoquilla).ToString()) for (int i = 1; i *AnchoBoquilla < Grosor; i++) { //genero la equidistancia del polígono Poligonos PolsEq = Pols.Equidista(i * AnchoBoquilla); //Obtengo la ruta del polígono IList <StrokeSLT> ResEq = PolsEq.TrazarPerimetro(Modes.ModoFill); foreach (StrokeSLT t in ResEq) { Res.Add(t); } } return(Res); }
internal void GenerateLayer() { //_GeneratingLayer = true; if (ZCalculo <= Solido.Top) { LayerCalculo = new List <StrokeSLT>(); IList <LineSLT> Corte = new List <LineSLT>(); //obtiene cada uno de los segmentos y puntos aislados de la sección Solido.CortePlanoZ(ZCalculo, out Corte); //obtiene los polígonos e islas Poligonos TempPols = new Poligonos(Corte); IList <StrokeSLT> ResEq = TempPols.TrazarPerimetro(Modes.ModoRim); /*if (ResEq.Count == 0) * { * Stroke stroke = new Stroke * { * Destino = new VertexSLT(0.0, 0.0, _ZCalculo), * E = 0.0, * Mode = Modes.ModeTraslation, * Pendiente = true * }; * * _LayerCalculo.Add(stroke); * * stroke.Destino = new VertexSLT(10.0, 10.0, _ZCalculo); * * _LayerCalculo.Add(stroke); * } * else * {*/ foreach (StrokeSLT t in ResEq) { LayerCalculo.Add(t); } //} //Shell en modo relleno /*IList<Trazo> TempShell = _GeneraShell(TempPols, _AperturaBoquilla, _GrosorShell); * foreach (Trazo t in TempShell) * { * _LayerCalculo.Add(t); * }*/ //Relleno /*IList<Trazo> TempRelleno = _GeneraRelleno(TempPols, _AperturaBoquilla, _PorcentajeRelleno, _AnguloLayer); * foreach (Trazo t in TempRelleno) * { * _LayerCalculo.Add(t); * }*/ //soportes //TODO //Layer terminada _AnguloLayer += Math.PI / 6.0; ZTrazado = ZCalculo; ZCalculo += DeltaLayer; //_GeneratingLayer = false; } else { LayerCalculo = null; } }