/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="container"></param> public void Save(string path, Test2d.Container container) { using (var pdf = new PdfDocument()) { Add(pdf, container); pdf.Save(path); } }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="container"></param> public void Save(string path, Test2d.Container container) { _outputPath = System.IO.Path.GetDirectoryName(path); var doc = new DxfDocument(DxfVersion.AutoCad2010); Add(doc, container); doc.Save(path); ClearCache(isZooming: false); }
/// <summary> /// /// </summary> /// <param name="gfx"></param> /// <param name="container"></param> /// <param name="db"></param> /// <param name="r"></param> public void Draw(object gfx, Test2d.Container container, ImmutableArray <Test2d.ShapeProperty> db, Test2d.Record r) { foreach (var layer in container.Layers) { if (layer.IsVisible) { Draw(gfx, layer, db, r); } } }
/// <summary> /// /// </summary> /// <param name="doc"></param> /// <param name="container"></param> private void Add(DxfDocument doc, Test2d.Container container) { _pageWidth = container.Width; _pageHeight = container.Height; if (container.Template != null) { Draw(doc, container.Template, container.Properties, null); } Draw(doc, container, container.Properties, null); }
/// <summary> /// /// </summary> /// <param name="doc"></param> /// <param name="container"></param> /// <param name="db"></param> /// <param name="r"></param> public void Draw(object doc, Test2d.Container container, ImmutableArray <Test2d.ShapeProperty> db, Test2d.Record r) { var _doc = doc as DxfDocument; foreach (var layer in container.Layers) { var dxfLayer = new Layer(layer.Name) { IsVisible = layer.IsVisible }; _doc.Layers.Add(dxfLayer); _currentLayer = dxfLayer; Draw(doc, layer, db, r); } }
/// <summary> /// /// </summary> /// <param name="pdf"></param> /// <param name="container"></param> /// <returns></returns> private PdfPage Add(PdfDocument pdf, Test2d.Container container) { // create A4 page with landscape orientation PdfPage page = pdf.AddPage(); page.Size = PageSize.A3; page.Orientation = PageOrientation.Landscape; using (XGraphics gfx = XGraphics.FromPdfPage(page)) { // calculate x and y page scale factors double scaleX = page.Width.Value / container.Width; double scaleY = page.Height.Value / container.Height; double scale = Math.Min(scaleX, scaleY); // set scaling function _scaleToPage = (value) => value * scale; // draw container template contents to pdf graphics if (container.Template != null) { if (container.Template.Background.A > 0) { DrawBackgroundInternal( gfx, container.Template.Background, Test2d.Rect2.Create(0, 0, page.Width.Value / scale, page.Height.Value / scale)); } Draw(gfx, container.Template, container.Properties, null); } // draw container contents to pdf graphics if (container.Background.A > 0) { DrawBackgroundInternal( gfx, container.Background, Test2d.Rect2.Create(0, 0, page.Width.Value / scale, page.Height.Value / scale)); } Draw(gfx, container, container.Properties, null); } return(page); }