Exemple #1
0
        public static void PasteFiguresAsBin(PlotterController controller)
        {
            if (!Clipboard.ContainsData(CadClipBoard.TypeNameBin))
            {
                return;
            }

            byte[] bin = (byte[])Clipboard.GetData(CadClipBoard.TypeNameBin);

            List <CadFigure> figList = BinToFigList(bin);

            // Pase figures in fig list
            Vector3d pp = controller.LastDownPoint;

            MinMax3D mm3d = CadUtil.GetFigureMinMaxIncludeChild(figList);

            Vector3d d = pp - mm3d.GetMinAsVector();

            CadOpeList opeRoot = new CadOpeList();

            foreach (CadFigure fig in figList)
            {
                PasteFigure(controller, fig, d);
                controller.CurrentLayer.AddFigure(fig);    // 子ObjectはLayerに追加しない

                CadOpe ope = new CadOpeAddFigure(controller.CurrentLayer.ID, fig.ID);
                opeRoot.OpeList.Add(ope);
            }

            controller.HistoryMan.foward(opeRoot);
        }
Exemple #2
0
        public void PrintPage(PlotterController pc, Graphics printerGraphics, CadSize2D pageSize, CadSize2D deviceSize)
        {
            DOut.pl($"Dev Width:{deviceSize.Width} Height:{deviceSize.Height}");
#if PRINT_WITH_GL_ONLY
            Bitmap bmp = GetPrintableBmp(pc, pageSize, deviceSize);
            printerGraphics.DrawImage(bmp, 0, 0);
#elif PRINT_WITH_GDI_ONLY
            PrintPageGDI(printerGraphics, pageSize, deviceSize);
#else
            PrintPageSwitch(pc, printerGraphics, pageSize, deviceSize);
#endif
        }
Exemple #3
0
        public static void CopyFiguresAsBin(PlotterController controller)
        {
            var figList = controller.GetSelectedRootFigureList();

            if (figList.Count == 0)
            {
                return;
            }

            byte[] bin = FigListToBin(figList);

            Clipboard.SetData(CadClipBoard.TypeNameBin, bin);
        }
Exemple #4
0
        private static Bitmap GetPrintableBmp(PlotterController pc, CadSize2D pageSize, CadSize2D deviceSize)
        {
            if (!(pc.DC is DrawContextGL))
            {
                return(null);
            }

            DrawContext dc = pc.DC.CreatePrinterContext(pageSize, deviceSize);

            dc.SetupTools(DrawTools.DrawMode.PRINTER);

            // Bitmapを印刷すると大きさが変わるので、補正
            double f = SettingsHolder.Settings.MagnificationBitmapPrinting;

            dc.UnitPerMilli *= f;
            //dc.UnitPerMilli *= 0.96;

            Vector3d org = dc.ViewOrg;

            //org *= 0.96;
            org *= f;

            dc.SetViewOrg(org);

            FrameBufferW fb = new FrameBufferW();

            fb.Create((int)deviceSize.Width, (int)deviceSize.Height);

            fb.Begin();

            dc.StartDraw();

            GL.Disable(EnableCap.LineSmooth);

            dc.Drawing.Clear(dc.GetBrush(DrawTools.BRUSH_BACKGROUND));

            pc.DrawFiguresRaw(dc);

            GL.Enable(EnableCap.LineSmooth);

            dc.EndDraw();

            Bitmap bmp = fb.GetBitmap();

            fb.End();
            fb.Dispose();

            return(bmp);
        }
Exemple #5
0
        private void PrintPageSwitch(PlotterController pc, Graphics printerGraphics, CadSize2D pageSize, CadSize2D deviceSize)
        {
            if (pc.DC.GetType() == typeof(DrawContextGLPers) || SettingsHolder.Settings.PrintWithBitmap)
            {
                Bitmap bmp = GetPrintableBmp(pc, pageSize, deviceSize);
                printerGraphics.DrawImage(bmp, 0, 0);
            }
            else
            {
                DrawContextPrinter dc = new DrawContextPrinter(pc.DC, printerGraphics, pageSize, deviceSize);
                dc.SetupTools(DrawTools.DrawMode.PRINTER, PenWidth);

                pc.DrawFiguresRaw(dc);
            }
        }
Exemple #6
0
        private static void PasteFigure(PlotterController controller, CadFigure fig, Vector3d delta)
        {
            fig.MoveAllPoints(delta);

            fig.SelectAllPoints();

            controller.DB.AddFigure(fig);

            if (fig.ChildList != null)
            {
                foreach (CadFigure child in fig.ChildList)
                {
                    PasteFigure(controller, child, delta);
                }
            }
        }
Exemple #7
0
        public void set(PlotterController pc)
        {
            State                  = pc.State;
            SelectMode             = pc.SelectMode;
            CreatingFigureType     = pc.CreatingFigType;
            CreatingFigurePointCnt = 0;

            if (pc.FigureCreator != null)
            {
                CreatingFigurePointCnt = pc.FigureCreator.Figure.PointCount;
            }

            MeasureMode = pc.MeasureMode;

            HasSelect = pc.HasSelect();
        }
Exemple #8
0
        public void Init(ScriptEnvironment env, ScriptScope scope)
        {
            Env        = env;
            Controller = env.Controller;

            Session = new ScriptSession(Env);

            scope.SetVariable("normal", new Func <Vector3d, Vector3d, Vector3d>(CadMath.Normal));
            Env.AutoCompleteList.Add("normal(v1, v2)");

            scope.SetVariable("dot_product", new Func <Vector3d, Vector3d, double>(CadMath.InnerProduct));
            Env.AutoCompleteList.Add("dot_product(v1, v2)");

            scope.SetVariable("cross_product", new Func <Vector3d, Vector3d, Vector3d>(CadMath.CrossProduct));
            Env.AutoCompleteList.Add("cross_product(v1, v2)");
        }
Exemple #9
0
 public TestCommands(PlotterController controller)
 {
     Controller = controller;
 }
Exemple #10
0
 public ContextMenuManager(PlotterController controller)
 {
     mController = controller;
 }
Exemple #11
0
 public SipmleCommands(PlotterController controller)
 {
     Controller = controller;
 }