コード例 #1
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            this.widthOpt       = new OptionInteger(Properties.Settings.Default.Width);
            this.heightOpt      = new OptionInteger(Properties.Settings.Default.Height);
            this.dpiOpt         = new OptionInteger(Properties.Settings.Default.DPI);
            this.ratioToggle    = new OptionToggle(Properties.Settings.Default.KeepRatio, "Yes", "No");
            this.gridAxesToggle = new OptionToggle(Properties.Settings.Default.GridAndAxes, "Hide", "Show");
            this.portraitToggle = new OptionToggle(Properties.Settings.Default.Portrait, "Landscape", "Portrait");

            GetOption go = new GetOption();

            go.AcceptNothing(true);

            int selectedResolution = Properties.Settings.Default.Resolution;

            this.RestoreOptions(ref go, selectedResolution);

            GetResult res = go.Get();

            while (res == GetResult.Option)
            {
                if (go.Option().CurrentListOptionIndex >= 0)
                {
                    selectedResolution = go.Option().CurrentListOptionIndex;
                }

                this.RestoreOptions(ref go, selectedResolution);
                res = go.Get();
            }

            if (res != GetResult.Nothing)
            {
                return(Result.Cancel);
            }

            Properties.Settings.Default.Resolution  = selectedResolution;
            Properties.Settings.Default.Width       = widthOpt.CurrentValue;
            Properties.Settings.Default.Height      = heightOpt.CurrentValue;
            Properties.Settings.Default.KeepRatio   = ratioToggle.CurrentValue;
            Properties.Settings.Default.GridAndAxes = gridAxesToggle.CurrentValue;
            Properties.Settings.Default.Portrait    = portraitToggle.CurrentValue;
            Properties.Settings.Default.Save();

            RhinoHelpers.CustomScreenshot();

            return(Result.Success);
        }
コード例 #2
0
        private void RestoreOptions(ref GetOption go, int ResolutionIndex)
        {
            Size size = RhinoHelpers.CalculateSize(
                ResolutionIndex,
                widthOpt.CurrentValue,
                heightOpt.CurrentValue,
                dpiOpt.CurrentValue,
                portraitToggle.CurrentValue
                );

            if (size.IsEmpty)
            {
                size = RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport.Bounds.Size;
            }

            go.SetCommandPrompt("Screenshot (" + size.Width + "x" + size.Height + ")");
            go.ClearCommandOptions();
            go.AddOptionList("Resolution", new string[] { "FullHD", "4K", "A4", "A3", "View", "Custom" }, ResolutionIndex);

            // Show option width and height only if "Custom" is selected.
            if (ResolutionIndex == 5)
            {
                go.AddOptionInteger("Width", ref this.widthOpt);
                go.AddOptionInteger("Height", ref this.heightOpt);

                go.AddOptionToggle("KeepRatio", ref this.ratioToggle);
            }
            else if (ResolutionIndex >= 2 && ResolutionIndex <= 3)
            {
                go.AddOptionToggle("Orientation", ref this.portraitToggle);
                go.AddOptionInteger("DPI", ref this.dpiOpt);
            }

            // Show option Grid And Axes
            go.AddOptionToggle("GridAndAxes", ref this.gridAxesToggle);
        }
コード例 #3
0
        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0)
            {
                return(CallNextHookEx((IntPtr)0, nCode, wParam, lParam));
            }

            if (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_KEYUP)
            {
                bool IsKeyDown   = wParam == (IntPtr)WM_KEYDOWN;
                Keys key         = (Keys)Marshal.ReadInt32(lParam);
                bool hideOverlay = true;

                if (key == Keys.Escape)
                {
                    StopWASD();
                }
                else if (key == Keys.Q)
                {
                    Q = IsKeyDown;
                }
                else if (key == Keys.W || key == Keys.Up)
                {
                    W = IsKeyDown;
                }
                else if (key == Keys.E)
                {
                    E = IsKeyDown;
                }
                else if (key == Keys.A || key == Keys.Left)
                {
                    A = IsKeyDown;
                }
                else if (key == Keys.S || key == Keys.Down)
                {
                    S = IsKeyDown;
                }
                else if (key == Keys.D || key == Keys.Right)
                {
                    D = IsKeyDown;
                }
                else if (key == Keys.LShiftKey || key == Keys.RShiftKey || key == Keys.Shift || key == Keys.ShiftKey)
                {
                    Shift = IsKeyDown;
                }
                else if (key == Keys.F1 && IsKeyDown)
                {
                    RhinoHelpers.PreviousNamedView();
                }
                else if (key == Keys.F2 && IsKeyDown)
                {
                    RhinoHelpers.NextNamedView();
                }
                else if (key == Keys.F3 && IsKeyDown)
                {
                    RhinoHelpers.SaveNamedView();
                }
                else if (key == Keys.F12 && IsKeyDown)
                {
                    RhinoHelpers.CustomScreenshot();
                }
                else if (key == Keys.Escape)
                {
                    Esc = IsKeyDown;
                }
                else if (key == Keys.Enter)
                {
                    hideOverlay = false;
                    if (IsKeyDown)
                    {
                        if (Overlay.ImageVisible)
                        {
                            Overlay.ShowImage(null);
                        }
                        else
                        {
                            Overlay.ShowImage(Properties.Resources.Info);
                        }
                    }
                }
                else if (key == Keys.PrintScreen)
                {
                    return(CallNextHookEx((IntPtr)0, nCode, wParam, lParam)); // forward PrintScreen Key
                }
                else
                {
                    hideOverlay = false;
                }

                if (hideOverlay && Overlay.ImageVisible)
                {
                    Overlay.ShowImage(null);
                }

                //RhinoApp.WriteLine("KEY:" + key);
            }
            else if (wParam == (IntPtr)WM_MOUSEMOVE)
            {
                NativeMethods.MSLLHOOKSTRUCT data = NativeMethods.GetData((IntPtr)lParam);
                Rhino.Display.RhinoViewport  vp   = RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport;
                MouseOffset = new System.Drawing.Point(data.pt.x - MidPoint.X, data.pt.y - MidPoint.Y);
            }
            else if (wParam == (IntPtr)WM_MOUSEWHEEL)
            {
                int delta = NativeMethods.GetDelta(lParam) / 120;
                if (Shift)
                {
                    RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport.Camera35mmLensLength += delta;
                    double llength = RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport.Camera35mmLensLength;
                    Overlay.ShowMessage("lens length " + (int)Math.Round(llength));
                    RhinoDoc.ActiveDoc.Views.Redraw();
                }
                else
                {
                    if (speed + delta / 10.0 >= 0.1 && speed + delta / 10.0 <= 1.0)
                    {
                        speed += delta / 10.0;
                    }

                    else if (speed + delta >= 1 && speed + delta <= 50)
                    {
                        speed += delta;
                    }

                    Properties.Settings.Default.Speed = speed;
                    Properties.Settings.Default.Save();
                    Overlay.ShowMessage("speed " + Math.Round(speed, 1));
                }
            }
            else if ((int)wParam >= WM_LBUTTONDOWN && (int)wParam <= WM_RBUTTONUP)
            {
                //RhinoApp.WriteLine("CLICK " + DateTime.Now.Ticks);
            }
            else
            {
                return(CallNextHookEx((IntPtr)0, nCode, wParam, lParam));
            }


            return(new IntPtr(-1));
        }