コード例 #1
0
    protected override void SolveInstance(IGH_DataAccess DA)
    {
        int inputCount = 8;
        var inputs     = new IGH_Goo[inputCount];

        for (int i = 0; i < inputCount; i++)
        {
            if (!DA.GetData(i, ref inputs[i]))
            {
                return;
            }
        }

        var target = (inputs[0] as GH_Target).Value as JointTarget;

        var attributes = new ExtrusionAttributes()
        {
            NozzleDiameter = (inputs[1] as GH_Number).Value,
            LayerHeight    = (inputs[2] as GH_Number).Value,
            SafeZOffset    = (inputs[3] as GH_Number).Value,
            SafeSpeed      = target.Speed,
            ApproachSpeed  = (inputs[4] as GH_Speed).Value,
            ExtrusionSpeed = (inputs[5] as GH_Speed).Value,
            SafeZone       = target.Zone,
            ApproachZone   = (inputs[6] as GH_Zone).Value,
            ExtrusionZone  = (inputs[7] as GH_Zone).Value,
            Tool           = target.Tool,
            Frame          = target.Frame,
            Home           = target.Joints
        }.Initialize();

        DA.SetData(0, new GH_ExtrusionAttributes(attributes));
    }
コード例 #2
0
    public ExternalExtrusionToolpath(IList <Polyline> polylines, ExtrusionAttributes attributes, double extrusionFactor, double suckBack, double startDistance, double loopDistance)
    {
        _att             = attributes;
        _extrusionFactor = extrusionFactor;
        _suckBack        = -suckBack;
        _startDistance   = startDistance;
        _loopDistance    = loopDistance;

        var robotPosition = Point3d.Origin;

        robotPosition.Transform(Transform.PlaneToPlane(_att.Frame.Plane, Plane.WorldXY));

        var paths = polylines.Select(p => ToTargets(p, robotPosition)).ToList();

        CreateTargets(paths);
    }
コード例 #3
0
    public ExternalExtrusionToolpath(List <List <Plane> > locations, List <List <double> > lengths, ExtrusionAttributes attributes, double extrusionFactor, double suckBack, double startDistance, double loopDistance)
    {
        _att             = attributes;
        _extrusionFactor = extrusionFactor;
        _suckBack        = -suckBack;
        _startDistance   = startDistance;
        _loopDistance    = loopDistance;

        var paths = new List <List <SimpleTarget> >(locations.Count);

        if (locations.Count != lengths.Count)
        {
            throw new ArgumentException("Number of paths in locations and lengths don't match.");
        }

        if (locations.Count == 0)
        {
            throw new ArgumentException("There should be more than one path.");
        }

        for (int i = 0; i < locations.Count; i++)
        {
            if (locations[i].Count != lengths[i].Count)
            {
                throw new ArgumentException($"Locations and lengths in path {i} don't match.");
            }

            int pathCount = locations[0].Count;

            var path = new List <SimpleTarget>(pathCount);

            for (int j = 0; j < locations[0].Count; j++)
            {
                path.Add(new SimpleTarget()
                {
                    Location = locations[i][j], Length = lengths[i][j]
                });
            }

            paths.Add(path);
        }

        CreateTargets(paths);
    }