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); }
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 }
public static void CopyFiguresAsBin(PlotterController controller) { var figList = controller.GetSelectedRootFigureList(); if (figList.Count == 0) { return; } byte[] bin = FigListToBin(figList); Clipboard.SetData(CadClipBoard.TypeNameBin, bin); }
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); }
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); } }
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); } } }
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(); }
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)"); }
public TestCommands(PlotterController controller) { Controller = controller; }
public ContextMenuManager(PlotterController controller) { mController = controller; }
public SipmleCommands(PlotterController controller) { Controller = controller; }