コード例 #1
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo trailData   = null;
            IGH_Goo colorData   = null;
            bool    texture     = new bool();
            object  displayMode = null;

            VisualData visualData = new VisualData();

            if (!DA.GetData(0, ref trailData) || trailData == null)
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "No Trail Data Detected, please connect Trail Data to enable the component");
                return;
            }
            DA.GetData(1, ref colorData);
            string dataType = trailData.GetType().Name.ToString();

            if (trailData.ToString() == "Culebra_GH.Data_Structures.TrailData")
            {
                TrailData td;
                bool      worked = trailData.CastTo(out td);
                if (worked)
                {
                    visualData.trailData = td;
                }
                else
                {
                    AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Could not convert trail data, ensure you have the correct inputs");
                    return;
                }
            }
            else
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Please input Trail Data Output value for Trail Data not a " + dataType);
                return;
            }
            if (colorData != null)
            {
                string colorType = colorData.GetType().Name.ToString();
                if (colorData.ToString() == "Culebra_GH.Data_Structures.ColorData")
                {
                    ColorData cd;
                    bool      worked = colorData.CastTo(out cd);
                    if (worked)
                    {
                        visualData.colorData = cd;
                    }
                    else
                    {
                        AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Could not convert color data, ensure you have the correct inputs");
                        return;
                    }
                }
                else
                {
                    AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Please input Trail Data Output value for Trail Data not a " + colorType);
                    return;
                }
            }
            else
            {
                ColorData color = new ColorData();
                color.colorDataType  = "Base";
                visualData.colorData = color;
            }
            if (!DA.GetData(2, ref texture))
            {
                return;
            }
            if (texture)
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "WARNING USING TEXTURE CAN MAKE THE SIMULATION VERY UNSTABLE AND MAY CRASH WITHOUT WARNING, I RECOMMEND USING THE GH BUILT IN CLOUD DISPLAY FOR THE CREEPERS OUTPUT");
            }
            visualData.useTexture = texture;

            if (!DA.GetData(3, ref displayMode))
            {
                return;
            }
            string type2 = displayMode.GetType().Name.ToString();

            if (displayMode.GetType() != typeof(GH_Integer) && displayMode.GetType() != typeof(GH_Number))
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Please input a integer/float value for Display Mode not a " + type2);
                return;
            }
            else
            {
                if (displayMode.GetType() == typeof(GH_Integer))
                {
                    GH_Integer ghInt = (GH_Integer)displayMode;
                    visualData.displayMode = ghInt.Value;
                }
                else
                {
                    GH_Number ghNum = (GH_Number)displayMode;
                    visualData.displayMode = Convert.ToInt32(ghNum.Value);
                }
            }
            IGH_VisualData igh_Viz = new IGH_VisualData(visualData);

            DA.SetData(0, igh_Viz);
        }
コード例 #2
0
ファイル: DataListener.cs プロジェクト: ksteinfe/lemmings
 public static bool ObjectToJSON(IGH_Goo obj, ref String str, bool IncludeType = true, bool AllowNulls = true)
 {
     if (obj == null) {
         if (!AllowNulls) return false;
         str = @"{""Type"":""null""}";
         return true;
     }
     if (obj.GetType() == typeof(GH_Boolean)){
         String val = @"""" + ((GH_Boolean)obj).Value.ToString() + @"""";
         if (IncludeType) str = @"{""Type"":"""+TypeToString(obj)+@""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_Number)){
         String val = ((GH_Number)obj).Value.ToString();
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_Integer)) {
         String val = ((GH_Integer)obj).Value.ToString();
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_String)) {
         //TODO: escape bad string characters according to http://stackoverflow.com/questions/3020094/how-should-i-escape-strings-in-json
         String val = @"""" + ((GH_String)obj).Value.ToString().Replace(@"""",@"\""") + @"""";
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_Guid)) {
         String val = @"""" + ((GH_Guid)obj).Value.ToString() + @"""";
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_Time)) {
         String val = @"""" + ((GH_Time)obj).Value.ToString() + @"""";
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",""Value"":" + val + @"}";
         else str = val;
         return true;
     }
     if (obj.GetType() == typeof(GH_Colour)) {
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",";
         else str = @"{";
         GH_Colour clr = (GH_Colour)obj;
         str += @"""A"":" + clr.Value.A.ToString() + ",";
         str += @"""R"":" + clr.Value.R.ToString() + ",";
         str += @"""G"":" + clr.Value.G.ToString() + ",";
         str += @"""B"":" + clr.Value.B.ToString();
         str += "}";
         return true;
     }
     if (obj.GetType() == typeof(GH_Interval)) {
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",";
         else str = @"{";
         GH_Interval ival = (GH_Interval)obj;
         str += @"""T0"":" + ival.Value.T0.ToString() + ",";
         str += @"""T1"":" + ival.Value.T1.ToString();
         str += "}";
         return true;
     }
     if (obj.GetType() == typeof(GH_Interval2D)) {
         if (IncludeType) str = @"{""Type"":""" + TypeToString(obj) + @""",";
         else str = @"{";
         GH_Interval2D ival = (GH_Interval2D)obj;
         str += @"""U0"":" + ival.Value.U0.ToString() + ",";
         str += @"""U1"":" + ival.Value.U1.ToString() + ",";
         str += @"""V0"":" + ival.Value.V0.ToString() + ",";
         str += @"""V1"":" + ival.Value.V1.ToString();
         str += "}";
         return true;
     }
     return false;
 }
コード例 #3
0
ファイル: DataListener.cs プロジェクト: ksteinfe/lemmings
 public static String TypeToString(IGH_Goo obj)
 {
     String[] split = obj.GetType().ToString().Split('.');
     return split[split.Length - 1];
 }
コード例 #4
0
        private string getInputs(GH_Component ThisComponent, IGH_DataAccess DA, int i)
        {
            string datahere  = "";
            string paramType = "";

            try
            {
                if (ThisComponent.Params.Input[i].Access == GH_ParamAccess.item)
                {
                    convetToItem(ThisComponent, i, DA);
                    IGH_Goo inputObject = null;
                    DA.GetData(i, ref inputObject);
                    paramType = inputObject.GetType().ToString();

                    if (paramType == "Grasshopper.Kernel.Types.GH_Line")
                    {
                        convetToItem(ThisComponent, i, DA);
                        Rhino.Geometry.Line inputLine = Rhino.Geometry.Line.Unset;
                        DA.GetData(i, ref inputLine);
                        datahere = "\"gCPy.Line(" + inputLine.FromX.ToString() + ", "
                                   + inputLine.FromY.ToString() + ", "
                                   + inputLine.FromZ.ToString() + ", "
                                   + inputLine.ToX.ToString() + ", "
                                   + inputLine.ToY.ToString() + ", "
                                   + inputLine.ToZ.ToString() + ")\"";
                    }
                    else if
                    (paramType == "Grasshopper.Kernel.Types.GH_Point")
                    {
                        convetToItem(ThisComponent, i, DA);
                        Rhino.Geometry.Point3d inputPoint = Rhino.Geometry.Point3d.Unset;
                        DA.GetData(i, ref inputPoint);
                        datahere = "\"gCPy.Point(" + inputPoint.X.ToString() + ", "
                                   + inputPoint.Y.ToString() + ", "
                                   + inputPoint.Z.ToString() + ")\"";
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_Circle")
                    {
                        convetToItem(ThisComponent, i, DA);
                        Rhino.Geometry.Circle inputCircle = Rhino.Geometry.Circle.Unset;
                        DA.GetData(i, ref inputCircle);
                        datahere = "\"gCPy.Circle(" + inputCircle.Center.X.ToString() + ","     // xpos
                                   + inputCircle.Center.Y.ToString() + ","                      // ypos
                                   + inputCircle.Center.Z.ToString() + ","                      // zpos
                                   + inputCircle.Radius.ToString() + ","                        // radius
                                   + inputCircle.Plane.XAxis.ToString() + ","                   // x axis vector0 , x axis vector1 , x axis vector 2
                                   + inputCircle.Plane.YAxis.ToString() + ","                   // y axis vector
                                   + inputCircle.Plane.ZAxis.ToString() + ")\"";                // z axis vector
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_Curve")
                    {
                        datahere += "\"Ok This is a curve ... Take Care .. add all your things here\"";
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_String")
                    {
                        convetToItem(ThisComponent, i, DA);
                        string inputString = string.Empty;
                        DA.GetData(i, ref inputString);
                        datahere = "\"" + inputString.Replace(Environment.NewLine, "\\n").Replace("'", @"\'").Replace("\"", "\\\\" + "\"").Replace("\\n", "\\\\n") + "\"";
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_Integer")
                    {
                        convetToItem(ThisComponent, i, DA);
                        int inputInt = 0;
                        DA.GetData(i, ref inputInt);
                        datahere = inputInt.ToString();
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_Number")
                    {
                        convetToItem(ThisComponent, i, DA);
                        double inputNum = 0.0;
                        DA.GetData(i, ref inputNum);
                        datahere = inputNum.ToString();
                    }
                    else if (paramType == "Grasshopper.Kernel.Types.GH_Boolean")
                    {
                        convetToItem(ThisComponent, i, DA);
                        bool inputBool = false;
                        DA.GetData(i, ref inputBool);
                        datahere = inputBool ? "True" : "False";
                    }
                    else
                    {
                        datahere = "None";
                    }
                }
                else
                {
                    string thisInputString = ThisComponent.Params.Input[i].VolatileData.DataDescription(false, false).Trim().Replace(System.Environment.NewLine, ",");
                    datahere = recomposeInputString(thisInputString);
                }
            }
            catch (Exception errf)
            { //MessageBox.Show(errf.ToString());
            }

            return(datahere);
        }