Value List in input parameters?

value List in input parameters?


@Mahdiyar

protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
    pManager.AddPlaneParameter("plan", "p", "plan", GH_ParamAccess.item);
    pManager.AddCurveParameter("curve", "c", "curve", GH_ParamAccess.item);
    pManager.AddNumberParameter("Distance", "d", "distance", GH_ParamAccess.item);
    pManager.AddNumberParameter("style", "s", "cornerStyleOffset",GH_ParamAccess.item);
}

protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
{
    pManager.AddCurveParameter("curve", "c", "curve", GH_ParamAccess.item);
}

protected override void SolveInstance(IGH_DataAccess da)
{
Curve[] Offset;
Curve cu = null;
var plane = new Plane(Plane.WorldXY);
var d = 0;
var style = CurveOffsetCornerStyle.Sharp;
da.GetData(0, ref plane);
da.GetData(1, ref cu);
da.GetData(2, ref d);
da.GetData(3, ref style);

{
    Offset = cu.Offset(plane, d, 0.01, style);
    da.SetData(0, Offset);
}
}

protected override System.Drawing.Bitmap Icon => null;

public override Guid ComponentGuid => new Guid("851F9350-8A95-4EBE-8EE1-A6A567974185");
}
}


i need create a value list (in component)for CurveOffsetCornerStyle in OffsetCurve similar to top picture please help thanks for all{in visual studio }

check this

kind regards - tom

1 Like

thanks for solotion but i test this method and don’t get results!

using Grasshopper;
using Grasshopper.Kernel;
using Rhino.Geometry;
using System;
using System.Collections.Generic;
using Grasshopper.Kernel.Special;
using  System.Linq;
using Grasshopper.Kernel.Parameters;

namespace offset
{
public class offsetComponent : GH_Component
{
            public offsetComponent()
: base("offset", "Nickname",
"Description",
"test", "Offset")
{
}

protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
pManager.AddPlaneParameter("plan", "p", "plan", GH_ParamAccess.item);
pManager.AddCurveParameter("curve", "c", "curve", GH_ParamAccess.item);
pManager.AddNumberParameter("Distance", "d", "distance", GH_ParamAccess.item);
pManager.AddIntegerParameter("style", "s", "style", GH_ParamAccess.item);
Param_Integer param = pManager[3] as Param_Integer;

            param.AddNamedValue("None", 0);
    param.AddNamedValue("Sharp", 1);
    param.AddNamedValue("Round", 2);
    param.AddNamedValue("Smooth", 3);
    param.AddNamedValue("Chamfer", 4);

}

protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
{
    pManager.AddCurveParameter("curve", "c", "curve", GH_ParamAccess.item);
}

protected override void SolveInstance(IGH_DataAccess da)
{
Curve[] Offset;
Curve cu = null;
var plane = new Plane(Plane.WorldXY);
var d = 0;
var style = CurveOffsetCornerStyle.Sharp;
da.GetData(0, ref plane);
da.GetData(1, ref cu);
da.GetData(2, ref d);
da.GetData(3, ref style);

{
    Offset = cu.Offset(plane, d, 0.01, style);
    da.SetData(0, Offset);
}
}

protected override System.Drawing.Bitmap Icon => null;

public override Guid ComponentGuid => new Guid("851F9350-8A95-4EBE-8EE1-A6A567974185");
}
}

@Mahdiyar

offset.zip (2.3 MB)

public class OffsetComponent : GH_Component
{
    public OffsetComponent() : base("offset", "Nickname", "Description", "test", "Offset") { }
    protected override void RegisterInputParams(GH_InputParamManager pManager)
    {
        pManager.AddPlaneParameter("Plane", "P", "Plane", GH_ParamAccess.item, Plane.WorldXY);
        pManager.AddCurveParameter("Curve", "C", "Curve", GH_ParamAccess.item);
        pManager.AddNumberParameter("Distance", "D", "Distance", GH_ParamAccess.item);
        pManager.AddIntegerParameter("Style", "S", "Style", GH_ParamAccess.item);
        var style = (Param_Integer)pManager[3];
        style.AddNamedValue("None", 0);
        style.AddNamedValue("Sharp", 1);
        style.AddNamedValue("Round", 2);
        style.AddNamedValue("Smooth", 3);
        style.AddNamedValue("Chamfer", 4);
    }
    protected override void RegisterOutputParams(GH_OutputParamManager pManager)
    {
        pManager.AddCurveParameter("Curve", "C", "Curve", GH_ParamAccess.list);
    }
    protected override void SolveInstance(IGH_DataAccess da)
    {
        var plane = Plane.Unset;
        Curve curve = null;
        var distance = 0.0;
        var style = 0;
        da.GetData(0, ref plane);
        da.GetData(1, ref curve);
        da.GetData(2, ref distance);
        da.GetData(3, ref style);
        var offset = curve.Offset(plane, distance, DocumentTolerance(), (CurveOffsetCornerStyle)style);
        da.SetDataList(0, offset);
    }
    protected override System.Drawing.Bitmap Icon => null;
    public override Guid ComponentGuid => new Guid("851F9350-8A95-4EBE-8EE1-A6A567974185");
}

offset.zip (2.3 MB)

1 Like

thanks @Mahdiyar @DavidRutten
if my valuList input is string how?

c#
public class Lineweight : GH_Component
{
public Lineweight()
: base("Lineweight", "Lineweight",
"Lineweight",
"Intersect", "Actions")
{
}
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
    pManager.AddCurveParameter("Curve", "C", "Curve", GH_ParamAccess.item);
    pManager.AddIntegerParameter("Width", "w", "Width", GH_ParamAccess.item);
    pManager.AddColourParameter("Colour", "C", "Colour", GH_ParamAccess.item);
    pManager.AddTextParameter("Dash", "D", "Dash", GH_ParamAccess.item);
    var Dash = (Param_String)pManager[3];
  Dash.AddNamedValue("dastdot", "1.0 1.0 0.1 1.0");


2
For Param_string [AddNameValue]errors found!
curve display.gh (10.6 KB)

As far as I know, AddNamedValue only works on Integer parameters.

thanks
hi
@dale
What do you have for the right solution for this problem?

Hi @architect.civil5,

@Mahdiyar is correct, Param_Integer.AddNamedValue only accepts integer values.

Think of the second parameter as an index into a list of options or values, rather than just some value.

I’ve attached an example for you to review.

CoffeeComponent.cs (3.6 KB)

– Dale

2 Likes