Exemple #1
0
        // 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);
        }
Exemple #2
0
        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;
            }
        }