Ejemplo n.º 1
0
    protected override void SolveInstance(IGH_DataAccess DA)
    {
        var locationsGH = new GH_Structure <GH_Plane>();
        var lengthsGH   = new GH_Structure <GH_Number>();

        GH_ExtrusionAttributes attributes = null;
        double factor = 0, suckBack = 0, loop = 0, startDistance = 0;

        if (!DA.GetDataTree(0, out locationsGH))
        {
            return;
        }
        if (!DA.GetDataTree(1, out lengthsGH))
        {
            return;
        }
        if (!DA.GetData(2, ref attributes))
        {
            return;
        }
        if (!DA.GetData(3, ref factor))
        {
            return;
        }
        if (!DA.GetData(4, ref suckBack))
        {
            return;
        }
        if (!DA.GetData(5, ref startDistance))
        {
            return;
        }
        if (!DA.GetData(6, ref loop))
        {
            return;
        }

        var locations = locationsGH.Branches.Select(b => b.Select(p => p.Value).ToList()).ToList();
        var lengths = lengthsGH.Branches.Select(b => b.Select(p => p.Value).ToList()).ToList();

        var toolpath = new ExternalExtrusionToolpath(locations, lengths, attributes.Value, factor, suckBack, startDistance, loop);

        DA.SetData(0, toolpath);
        DA.SetDataList(1, toolpath.SubPrograms);
    }
Ejemplo n.º 2
0
    protected override void SolveInstance(IGH_DataAccess DA)
    {
        var paths = new List <Curve>();
        GH_ExtrusionAttributes attributes = null;
        double factor = 0, suckBack = 0, loop = 0, startDistance = 0;

        if (!DA.GetDataList(0, paths))
        {
            return;
        }
        if (!DA.GetData(1, ref attributes))
        {
            return;
        }
        if (!DA.GetData(2, ref factor))
        {
            return;
        }
        if (!DA.GetData(3, ref suckBack))
        {
            return;
        }
        if (!DA.GetData(4, ref startDistance))
        {
            return;
        }
        if (!DA.GetData(5, ref loop))
        {
            return;
        }

        var polylines = paths
                        .Where(p => p.IsPolyline())
                        .Select(p => { p.TryGetPolyline(out Polyline pl); return(pl); })
                        .ToList();

        var toolpath = new ExternalExtrusionToolpath(polylines, attributes.Value, factor, suckBack, startDistance, loop);

        DA.SetData(0, toolpath);
        DA.SetDataList(1, toolpath.SubPrograms);
    }
Ejemplo n.º 3
0
    protected override void SolveInstance(IGH_DataAccess DA)
    {
        GH_Program             program    = null;
        GH_ExtrusionAttributes attributes = null;
        bool isWorld  = false;
        int  segments = 0;

        if (!DA.GetData(0, ref program))
        {
            return;
        }
        if (!DA.GetData(1, ref attributes))
        {
            return;
        }
        if (!DA.GetData(2, ref isWorld))
        {
            return;
        }
        if (!DA.GetData(3, ref segments))
        {
            return;
        }

        if (program?.Value is not Program p)
        {
            AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Input program can't have custom code.");
            return;
        }

        if (_visualizer == null || _visualizer.Program != p)
        {
            _visualizer = new ExtrusionVisualizer(p, attributes.Value.BeadWidth, attributes.Value.LayerHeight, attributes.Value.ExtrusionZone.Distance, segments);
        }

        _visualizer.Update();

        DA.SetDataList(0, _visualizer.ExtrudedContours);
    }