Ejemplo n.º 1
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            var getNumber = new GetInteger();

            getNumber.SetLowerLimit(0, false);
            getNumber.SetUpperLimit(Environment.ProcessorCount, false);
            getNumber.SetDefaultInteger(RcCore.It.EngineSettings.Threads);
            getNumber.SetCommandPrompt($"Set CPU render threads (max {Environment.ProcessorCount}, 0 for automatic)");
            var getRc = getNumber.Get();

            if (getNumber.CommandResult() != Result.Success)
            {
                return(getNumber.CommandResult());
            }
            if (getRc == GetResult.Number)
            {
                var nr   = getNumber.Number();
                var endS = nr != 1 ? "s" : "";
                RhinoApp.WriteLine($"User wants {nr} CPU thread{endS}");
                RcCore.It.EngineSettings.Threads = nr;
                return(Result.Success);
            }

            return(Result.Nothing);
        }
Ejemplo n.º 2
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            var getNumber = new GetInteger();

            getNumber.SetLowerLimit(0, false);
            getNumber.SetUpperLimit(500, false);
            getNumber.SetDefaultInteger(RcCore.It.EngineSettings.ThrottleMs);
            getNumber.SetCommandPrompt("Set throttle (in ms)");

            var toggleVerbose = new OptionToggle(RcCore.It.EngineSettings.Verbose, "No", "Yes");

            var spotlightFactor  = new OptionDouble(RcCore.It.EngineSettings.SpotlightFactor, 0.0, 1000000.0);
            var pointlightFactor = new OptionDouble(RcCore.It.EngineSettings.PointlightFactor, 0.0, 1000000.0);
            var sunlightFactor   = new OptionDouble(RcCore.It.EngineSettings.SunlightFactor, 0.0, 1000000.0);
            var arealightFactor  = new OptionDouble(RcCore.It.EngineSettings.ArealightFactor, 0.0, 1000000.0);
            var polishFactor     = new OptionDouble(RcCore.It.EngineSettings.PolishFactor, 0.0, 1000000.0);

            getNumber.AddOptionToggle("verbose", ref toggleVerbose);

            getNumber.AddOptionDouble("spotlight_factor", ref spotlightFactor);
            getNumber.AddOptionDouble("pointlight_factor", ref pointlightFactor);
            getNumber.AddOptionDouble("sunlight_factor", ref sunlightFactor);
            getNumber.AddOptionDouble("arealight_factor", ref arealightFactor);
            getNumber.AddOptionDouble("polish_factor", ref polishFactor);


            while (true)
            {
                var getRc = getNumber.Get();
                if (getNumber.CommandResult() != Result.Success)
                {
                    return(getNumber.CommandResult());
                }
                switch (getRc)
                {
                case GetResult.Nothing:
                case GetResult.Number:
                    RcCore.It.EngineSettings.ThrottleMs = getNumber.Number();
                    ReadOptions(toggleVerbose, spotlightFactor, pointlightFactor, sunlightFactor, arealightFactor, polishFactor);
                    break;

                case GetResult.Option:
                    ReadOptions(toggleVerbose, spotlightFactor, pointlightFactor, sunlightFactor, arealightFactor, polishFactor);
                    continue;

                default:
                    continue;
                }

                break;
            }
            return(Result.Success);
        }
Ejemplo n.º 3
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            (PlugIn as Plugin)?.InitialiseCSycles();
            var numDevices = Device.Count;
            var endS       = numDevices != 1 ? "s" : "";

            RhinoApp.WriteLine($"We have {numDevices} device{endS}");
            RhinoApp.WriteLine("----------");
            foreach (var dev in Device.Devices)
            {
                if (dev.Id < 100000)
                {
                    RhinoApp.WriteLine($"	Device {dev.Id}: {dev.Name} ({dev.Description})");
                }
            }
            RhinoApp.WriteLine("----------");
            var getNumber = new GetInteger();

            getNumber.SetLowerLimit(-1, false);
            getNumber.SetUpperLimit((int)(Device.Count - 1), false);
            getNumber.SetDefaultInteger(PlugIn.Settings.GetInteger("rc_renderdevice", -1));
            getNumber.SetCommandPrompt($"Select device to render on (-1 for default, 0-{Device.Count - 1})");
            var getRc = getNumber.Get();

            if (getNumber.CommandResult() != Result.Success)
            {
                return(getNumber.CommandResult());
            }
            if (getRc == GetResult.Number)
            {
                var    idx = getNumber.Number();
                Device dev = idx > -1 ? Device.GetDevice(idx) : Device.FirstCuda;
                RhinoApp.WriteLine($"User selected device {idx}: {dev}");
                PlugIn.Settings.SetInteger("rc_renderdevice", idx);
                RcCore.It.EngineSettings.SelectedDeviceStr = idx.ToString();
                return(Result.Success);
            }

            return(Result.Nothing);
        }
Ejemplo n.º 4
0
    public static Result DisplayPrecision(RhinoDoc doc)
    {
        var gi = new GetInteger();

        gi.SetCommandPrompt("New display precision");
        gi.SetDefaultInteger(doc.ModelDistanceDisplayPrecision);
        gi.SetLowerLimit(0, false);
        gi.SetUpperLimit(7, false);
        gi.Get();
        if (gi.CommandResult() != Result.Success)
        {
            return(gi.CommandResult());
        }
        var distance_display_precision = gi.Number();

        if (distance_display_precision != doc.ModelDistanceDisplayPrecision)
        {
            doc.ModelDistanceDisplayPrecision = distance_display_precision;
        }

        return(Result.Success);
    }
Ejemplo n.º 5
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            if (m_draw_conduit != null)
            {
                RhinoApp.WriteLine("Turn off existing arrowhead conduit");
                m_draw_conduit.Enabled = false;
                m_draw_conduit         = null;
            }
            else
            {
                // get arrow head size
                var go = new GetOption();
                go.SetCommandPrompt("ArrowHead length in screen size (pixels) or world size (percentage of arrow length)?");
                go.AddOption("screen");
                go.AddOption("world");
                go.Get();
                if (go.CommandResult() != Result.Success)
                {
                    return(go.CommandResult());
                }

                int    screen_size = 0;
                double world_size  = 0.0;
                if (go.Option().EnglishName == "screen")
                {
                    var gi = new GetInteger();
                    gi.SetLowerLimit(0, true);
                    gi.SetCommandPrompt("Length of arrow head in pixels");
                    gi.Get();
                    if (gi.CommandResult() != Result.Success)
                    {
                        return(gi.CommandResult());
                    }
                    screen_size = gi.Number();
                }
                else
                {
                    var gi = new GetInteger();
                    gi.SetLowerLimit(0, true);
                    gi.SetUpperLimit(100, false);
                    gi.SetCommandPrompt("Length of arrow head in percentage of total arrow length");
                    gi.Get();
                    if (gi.CommandResult() != Result.Success)
                    {
                        return(gi.CommandResult());
                    }
                    world_size = gi.Number() / 100.0;
                }


                // get arrow start and end points
                var gp = new GetPoint();
                gp.SetCommandPrompt("Start of line");
                gp.Get();
                if (gp.CommandResult() != Result.Success)
                {
                    return(gp.CommandResult());
                }
                var start_point = gp.Point();

                gp.SetCommandPrompt("End of line");
                gp.SetBasePoint(start_point, false);
                gp.DrawLineFromPoint(start_point, true);
                gp.Get();
                if (gp.CommandResult() != Result.Success)
                {
                    return(gp.CommandResult());
                }
                var end_point = gp.Point();

                var v = end_point - start_point;
                if (v.IsTiny(Rhino.RhinoMath.ZeroTolerance))
                {
                    return(Result.Nothing);
                }

                var line = new Line(start_point, end_point);

                m_draw_conduit = new DrawArrowHeadsConduit(line, screen_size, world_size);
                // toggle conduit on/off
                m_draw_conduit.Enabled = true;
                RhinoApp.WriteLine("Draw arrowheads conduit enabled.");
            }
            doc.Views.Redraw();
            return(Result.Success);
        }
Ejemplo n.º 6
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            (PlugIn as Plugin)?.InitialiseCSycles();
            var numDevices = Device.Count;
            var endS       = numDevices != 1 ? "s" : "";

            RhinoApp.WriteLine($"We have {numDevices} device{endS}");
            RhinoApp.WriteLine("----------");
            List <int> allowedIds = new List <int>();

            foreach (var dev in Device.Devices)
            {
                if (dev.Id >= 100000)
                {
                    RhinoApp.WriteLine($"	Device {dev.Id}: {dev.Name} ({dev.Description})");
                    allowedIds.Add((int)dev.Id);
                }
            }
            if (allowedIds.Count < 1)
            {
                RhinoApp.WriteLine("No multi-devices available");
                return(Result.Nothing);
            }
            var lowest  = allowedIds.Min();
            var highest = allowedIds.Min();

            RhinoApp.WriteLine("----------");
            var getNumber = new GetInteger();

            getNumber.SetLowerLimit(lowest, false);
            getNumber.SetUpperLimit(highest, false);
            getNumber.SetDefaultInteger(lowest);
            getNumber.SetCommandPrompt($"Select multi-device to render");
            var getRc = getNumber.Get();

            if (getNumber.CommandResult() != Result.Success)
            {
                return(getNumber.CommandResult());
            }
            if (getRc == GetResult.Number)
            {
                var    idx = getNumber.Number();
                Device dev = Device.GetDevice(idx);
                RhinoApp.WriteLine($"User selected device {idx}: {dev}");
                List <int> sdidx = new List <int>();
                if (dev.IsMulti)
                {
                    foreach (var sd in dev.SubdevicesIndex)
                    {
                        RhinoApp.WriteLine($"  {sd.Item1} {sd.Item2}");
                        sdidx.Add(sd.Item1);
                    }
                }
                var idxstr = string.Join(",", sdidx);

                RcCore.It.EngineSettings.SelectedDeviceStr = idxstr;
                return(Result.Success);
            }

            return(Result.Nothing);
        }