static IGH_Param ParamFromIoResponseSchema(IoParamSchema item) { if (_params == null) { _params = new List <IGH_Param>(); _params.Add(new Grasshopper.Kernel.Parameters.Param_Arc()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Boolean()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Box()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Brep()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Circle()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Colour()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Complex()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Culture()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Curve()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Field()); _params.Add(new Grasshopper.Kernel.Parameters.Param_FilePath()); _params.Add(new Grasshopper.Kernel.Parameters.Param_GenericObject()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Geometry()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Group()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Guid()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Integer()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Interval()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Interval2D()); _params.Add(new Grasshopper.Kernel.Parameters.Param_LatLonLocation()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Line()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Matrix()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Mesh()); _params.Add(new Grasshopper.Kernel.Parameters.Param_MeshFace()); _params.Add(new Grasshopper.Kernel.Parameters.Param_MeshParameters()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Number()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Plane()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Point()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Rectangle()); _params.Add(new Grasshopper.Kernel.Parameters.Param_String()); _params.Add(new Grasshopper.Kernel.Parameters.Param_StructurePath()); _params.Add(new Grasshopper.Kernel.Parameters.Param_SubD()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Surface()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Time()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Transform()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Vector()); } foreach (var p in _params) { if (p.TypeName.Equals(item.ParamType, StringComparison.OrdinalIgnoreCase)) { var obj = System.Activator.CreateInstance(p.GetType()); return(obj as IGH_Param); } } return(null); }
static IGH_Param ParamFromIoResponseSchema(IoParamSchema item) { if (_params == null) { _params = new List <IGH_Param>(); _params.Add(new Grasshopper.Kernel.Parameters.Param_Arc()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Boolean()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Box()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Brep()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Circle()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Colour()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Complex()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Culture()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Curve()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Field()); //FilePath has the same ParamType as String //_params.Add(new Grasshopper.Kernel.Parameters.Param_FilePath()); _params.Add(new Grasshopper.Kernel.Parameters.Param_GenericObject()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Geometry()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Group()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Guid()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Integer()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Interval()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Interval2D()); _params.Add(new Grasshopper.Kernel.Parameters.Param_LatLonLocation()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Line()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Matrix()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Mesh()); _params.Add(new Grasshopper.Kernel.Parameters.Param_MeshFace()); _params.Add(new Grasshopper.Kernel.Parameters.Param_MeshParameters()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Number()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Plane()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Point()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Rectangle()); _params.Add(new Grasshopper.Kernel.Parameters.Param_String()); _params.Add(new Grasshopper.Kernel.Parameters.Param_StructurePath()); _params.Add(new Grasshopper.Kernel.Parameters.Param_SubD()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Surface()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Time()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Transform()); _params.Add(new Grasshopper.Kernel.Parameters.Param_Vector()); } foreach (var p in _params) { if (p.TypeName.Equals(item.ParamType, StringComparison.OrdinalIgnoreCase)) { var obj = System.Activator.CreateInstance(p.GetType()); var ghParam = obj as IGH_Param; if (ghParam != null) { string name = item.Name; if (!string.IsNullOrEmpty(name)) { if (name.StartsWith("RH_IN:")) { name = name.Substring("RH_IN:".Length).Trim(); } if (name.StartsWith("RH_OUT:")) { name = name.Substring("RH_OUT:".Length).Trim(); } } if (!string.IsNullOrEmpty(name)) { ghParam.Name = item.Name; } string nickname = name; if (!string.IsNullOrEmpty(item.Nickname)) { nickname = item.Nickname; } if (!string.IsNullOrEmpty(nickname)) { ghParam.NickName = nickname; } } return(ghParam); } } return(null); }
static Response GetIoNames(NancyContext ctx) { string json = ctx.Request.Body.AsString(); IoQuerySchema input = JsonConvert.DeserializeObject <IoQuerySchema>(json); string pointer = input.RequestedFile; GH_Archive archive = DataCache.GetCachedArchive(pointer); var definition = new GH_Document(); if (!archive.ExtractObject(definition, "Definition")) { throw new Exception("Unable to extract definition"); } // Parse input and output names List <string> InputNames = new List <string>(); List <string> OutputNames = new List <string>(); var Inputs = new List <IoParamSchema>(); var Outputs = new List <IoParamSchema>(); foreach (var obj in definition.Objects) { var group = obj as GH_Group; if (group == null) { continue; } if (group.NickName.Contains("RH_IN")) { InputNames.Add(group.NickName); var i = new IoParamSchema { Name = group.NickName, ParamType = (group.Objects()[0] as IGH_Param).TypeName }; Inputs.Add(i); } else if (group.NickName.Contains("RH_OUT")) { OutputNames.Add(group.NickName); var o = new IoParamSchema { Name = group.NickName, ParamType = (group.Objects()[0] as IGH_Param).TypeName }; Outputs.Add(o); } } var response = new IoResponseSchema { InputNames = InputNames, OutputNames = OutputNames, Inputs = Inputs, Outputs = Outputs }; string jsonResponse = JsonConvert.SerializeObject(response); return(jsonResponse); }