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 }
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");
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?
dale
(Dale Fugier)
June 28, 2021, 9:54pm
8
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