Grasshopper

algorithmic modeling for Rhino

Custom components. Guid as input pManager.Add.....Parameter (); ?

Hi,

When creating custom component in Visual Studio, I would like to add a Guid list as input parameter, but I cannot find in pManager.AddGuidParameter function.

How can I add Guid as input parameter?

protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
        {

There is no AddGuidParameter function:

pManager.AddGuidParameter("GUIDs", "GUIDs", "Referenced geometry as guid", GH_ParamAccess.list);

}

Thanks,

Petras

Views: 1143

Replies to This Discussion

You'll have to use the more generic AddParameter method and construct a new Param_Guid ahead of time.

Why not to use text use parameter and convert it to guid internally? 

It's always better to use the most specific type.

Hi,

I do not get error when referencing guids and planes to custom component. But when I passed guids to input list the returned Guids to output, it was empty.

How can I properly pass guids and planes lists to main function and return the same list of guids?

C#:

//INPUT

       protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
        {
            IGH_Param GUIDs = new Grasshopper.Kernel.Parameters.Param_Guid();
            pManager.AddParameter(GUIDs, "0GUIDs", "GUIDs", "Referenced geometry as guid (can be mesh, brep, curves in one list)", GH_ParamAccess.list);


            pManager.AddPlaneParameter("PLANEs", "PLANEs", "Target planes", GH_ParamAccess.list);
        }
//Output
        protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
        {
            IGH_Param GUIDout = new Grasshopper.Kernel.Parameters.Param_Guid();
            pManager.AddParameter(GUIDout, "GUIDout", "GUIDout", "Referenced geometry as guid ", GH_ParamAccess.list);
        }

        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Input
            List<Guid> GUIDs = new List<Guid>();
           //DA.SetDataList(0, GUIDs);

            List<Plane> PLANEs = new List<Plane>();
          // DA.SetDataList(0, PLANEs);

            List<Guid> pr = Proxies(GUIDs, PLANEs);

            // Finally the output parameter.
            DA.SetDataList(0, pr);
 
        }
//MAIN FUNCTION
        private List<Guid> Proxies(List<Guid> GUIDs, List<Plane> PLANEs)
        {

            int x = PLANEs.Count;
            int y = GUIDs.Count;

            int a = Convert.ToInt32(x / y); // floor intergers
            int b = Convert.ToInt32(x % y); // remainders

           // in grasshopper I get error that it was an attempt to divide by zero, meaning lists are empty.

            return GUIDs;
                            
        }

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service