示例#1
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            DroidPaths      dPath = new DroidPaths();
            DroidParameters dPara = new DroidParameters();
            List <string>   head  = new List <string>();
            List <string>   foot  = new List <string>();

            if (!DA.GetData(0, ref dPath))
            {
                return;
            }
            if (!DA.GetData(1, ref dPara))
            {
                return;
            }
            if (!DA.GetDataList(2, head))
            {
                return;
            }
            if (!DA.GetDataList(3, foot))
            {
                return;
            }

            List <string> gcode  = new List <string>();
            List <string> info   = new List <string>();
            DroidGCode    output = new DroidGCode(dPath.printList);

            gcode = output.Execute(dPara, head, foot);
            info  = output.Info(dPara);

            DA.SetDataList(0, gcode);
            DA.SetDataList(1, info);
        }
示例#2
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Inputs
            List <Mesh>     dSlice = new List <Mesh>();
            DroidVolume     vol    = null;
            DroidParameters para   = null;

            if (!DA.GetDataList(0, dSlice))
            {
                return;
            }
            if (!DA.GetData(1, ref para))
            {
                return;
            }
            if (!DA.GetData(2, ref vol))
            {
                return;
            }

            // Initialise
            Polylines[]        brimSkirtPaths;
            Polylines[]        contourPaths;
            Polylines[]        shellPaths;
            List <Polylines[]> fillCapPaths;
            DroidMesh          dMesh;

            foreach (Mesh x in dSlice)
            {
                if (x == null)
                {
                    return;
                }
            }

            dMesh = new DroidMesh();
            dMesh.AssignParameters(para.layerHeight, para.scale, para.nozzle);

            contourPaths   = dMesh.Contour(dSlice);
            shellPaths     = dMesh.Offset(para.shellNumber);
            brimSkirtPaths = dMesh.BrimSkirt(para.brimSkirtInt, para.brimSkirt);
            fillCapPaths   = dMesh.DroidBoolPaths(para.infillPercent, para.capTopThickness, para.capBotThickness, para.shellNumber);

            // Initialising Wrapper
            DroidPaths myDroid = new DroidPaths(contourPaths, shellPaths, fillCapPaths[0], brimSkirtPaths, fillCapPaths[1]);

            // Output
            DA.SetData(0, myDroid);
            DA.SetDataList(1, myDroid.wrapperList[1]);
            DA.SetDataList(2, myDroid.wrapperList[2]);
            DA.SetDataList(3, myDroid.wrapperList[3]);
            DA.SetDataList(4, myDroid.wrapperList[0]);
            DA.SetDataList(5, myDroid.wrapperList[4]);
        }
示例#3
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Inputs
            double layerHeight        = new double();
            double firstLayerHeight   = new double();
            int    scale              = new int();
            double nozzle             = new double();
            int    infillPercent      = new int();
            int    shellNumber        = new int();
            bool   brimSkirt          = new bool();
            int    brimSkirtInt       = new int();
            int    capTopThickness    = new int();
            int    capBotThickness    = new int();
            int    printSpeed         = new int();
            int    travelSpeed        = new int();
            bool   retraction         = new bool();
            double retractionDistance = new double();
            int    rectractionSpeed   = new int();
            double filamentDiameter   = new double();
            double flowRate           = new double();

            if (!DA.GetData(0, ref layerHeight) | (layerHeight <= 0))
            {
                return;
            }
            if (!DA.GetData(1, ref firstLayerHeight) | (firstLayerHeight <= 0))
            {
                return;
            }
            if (!DA.GetData(2, ref scale) | (scale <= 0))
            {
                return;
            }
            if (!DA.GetData(3, ref nozzle) | (nozzle <= 0.0))
            {
                return;
            }
            if (!DA.GetData(4, ref infillPercent) | (infillPercent < 0) | (infillPercent > 99))
            {
                return;
            }
            if (!DA.GetData(5, ref shellNumber) | (shellNumber <= 0))
            {
                return;
            }
            if (!DA.GetData(6, ref brimSkirt))
            {
                return;
            }
            if (!DA.GetData(7, ref brimSkirtInt) | (brimSkirtInt < 0))
            {
                return;
            }
            if (!DA.GetData(8, ref capTopThickness) | (capTopThickness < 0))
            {
                return;
            }
            if (!DA.GetData(9, ref capBotThickness) | (capBotThickness < 0))
            {
                return;
            }
            if (!DA.GetData(10, ref printSpeed) | (printSpeed < 0))
            {
                return;
            }
            if (!DA.GetData(11, ref travelSpeed) | (travelSpeed < 0))
            {
                return;
            }
            if (!DA.GetData(12, ref retraction))
            {
                return;
            }
            if (!DA.GetData(13, ref retractionDistance) | (retractionDistance < 0))
            {
                return;
            }
            if (!DA.GetData(14, ref rectractionSpeed) | (rectractionSpeed < 0))
            {
                return;
            }
            if (!DA.GetData(15, ref filamentDiameter) | (filamentDiameter < 0))
            {
                return;
            }
            if (!DA.GetData(16, ref flowRate) | (flowRate < 0))
            {
                return;
            }

            DroidParameters parameters = new DroidParameters();

            parameters.layerHeight         = layerHeight;
            parameters.firstLayerHeight    = firstLayerHeight;
            parameters.scale               = scale;
            parameters.nozzle              = nozzle;
            parameters.infillPercent       = infillPercent;
            parameters.shellNumber         = shellNumber;
            parameters.brimSkirt           = brimSkirt;
            parameters.brimSkirtInt        = brimSkirtInt;
            parameters.capTopThickness     = capTopThickness;
            parameters.capBotThickness     = capBotThickness;
            parameters.printSpeed          = printSpeed;
            parameters.travelSpeed         = travelSpeed;
            parameters.retraction          = retraction;
            parameters.rectractionDistance = retractionDistance;
            parameters.retractionSpeed     = rectractionSpeed;
            parameters.filamentDiameter    = filamentDiameter;
            parameters.flowRate            = flowRate;

            DA.SetData(0, parameters);
        }