示例#1
0
 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);
        }