static void Main(string[] args) { string left_font = "Calibri"; var template = new VDX.Template(); var doc = new VDX.Elements.Drawing(template); var page = new VDX.Elements.Page(10,10); doc.Pages.Add(page); var faces = doc.Faces; var left_face = Helpers.GetFontSafe(doc.Faces, left_font); double face_size = 32.0; int rect_id = doc.GetMasterMetaData("REctAngle").ID; string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string letters2 = "abcdefghijklmnopqrstuvwxyz"; string numbers = "01234567890"; string punctuation = "!@#$%^&*()_+-=<>,.[]{}\\|``/?;:'\""; var text = letters + letters2 + numbers + punctuation; int count = text.Length; int cols = (int) System.Math.Ceiling(System.Math.Sqrt(count)); double face_size_inches = face_size / 72.0; double box_size = face_size_inches*2.0; double box_sep = box_size/8.0; double grid_delta = box_size + box_sep; page.PageProperties.PageWidth.Formula = (cols*grid_delta).ToString(); page.PageProperties.PageHeight.Formula = (cols * grid_delta).ToString(); int n = 0; foreach (int row in Enumerable.Range(0, cols)) { foreach (int col in Enumerable.Range(0,cols)) { if (n >= count) { break; } var pinx = col* grid_delta; var piny = (cols*grid_delta) - (row * grid_delta); var shape = new VDX.Elements.Shape(rect_id,pinx, piny, box_size, box_size); page.Shapes.Add(shape); string s = text[n].ToString(); shape.Text.Add(s); shape.CharFormats = new List<VDX.Sections.Char>(); var charfmt = new VDX.Sections.Char(); charfmt.Font.Formula = left_face.ID.ToString(); charfmt.Size.Formula = face_size.ToString()+"pt"; shape.CharFormats.Add(charfmt); shape.Fill = new VDX.Sections.Fill(); shape.Fill.Pattern.Formula = "0"; shape.Fill.ForegroundColor.Formula = "rgb(255,255,255)"; shape.Fill.ForegroundTransparency.Formula = "1.0"; shape.Line = new VDX.Sections.Line(); shape.Line.Pattern.Formula = "0"; shape.Line.Weight.Formula = "0"; shape.Line.Color.Formula = "rgb(240,240,240)"; n++; } } doc.Save("D:\\specimen.vdx"); }
private void GenerateVisio(string drawingOutputPath) { var pageWidth = 16.53543307086614; var pageHeight = 11.69291338582677; var left = 0.1; var processWidth = 1.5; var processHeight = 1.0; var processPaddingHorizontal = 0.4; var processPaddingVertical = 1.4; var maxProcessCountPerRow = 10; var activityPos = 1; var activityYPos = 0; var addToHorizontal = 1; var shapes = new List<VisioShape>(); // Clean up the template and remove the existing pages var templateXml = XDocument.Load("DrawingTemplate.vdx"); //VisioTemplate.CleanUpTemplate(templateXml); var template = new VisioTemplate(templateXml.ToString()); var document = new VisioDrawing(template); document.DocumentProperties.Creator = "Automation Studio"; document.DocumentProperties.TimeCreated = DateTime.Now; // Configure the page var runbooks = _backendContext.Runbooks; var runbooksList = new List<RunbookModelProxy>(); foreach (var runbook in runbooks) runbooksList.Add((runbook.Tag as RunbookModelProxy)); var languageContext = new LanguageContext(); foreach (var runbook in runbooks) { if (!(runbook.Tag as RunbookModelProxy).PublishedRunbookVersionID.HasValue) continue; var runbookProxy = (runbook.Tag as RunbookModelProxy); _statusManager.SetText("Generating visio drawing for " + runbookProxy.RunbookName); var viewModel = (runbook.Tag as RunbookModelProxy).GetViewModel<RunbookViewModel>(); var page = ConfigureVisioPage(viewModel.Runbook.RunbookName, pageWidth, pageHeight); document.Pages.Add(page); var publishedContent = viewModel.GetContent(RunbookType.Published, true); languageContext.Parse(publishedContent); var references = languageContext.GetReferences(runbooksList); if (references.Count == 0) continue; var totalRows = (double)(runbooksList.Count / maxProcessCountPerRow); if (runbooksList.Count <= maxProcessCountPerRow) totalRows = 2.0; var y = (pageHeight / totalRows) + (totalRows * ((processHeight + processPaddingVertical)) / totalRows); var x = (pageWidth / (maxProcessCountPerRow - 1)) + ((processWidth + processPaddingHorizontal) * activityPos); var ay = y - ((processHeight + processPaddingVertical) * activityYPos); // Add the current runbook as the start activity var processId = document.GetMasterMetaData("Process").ID; var visioActivity = new VisioShape(processId, x, ay, processWidth, processHeight); var charFormat = new VisioAutomation.VDX.Sections.Char(); charFormat.Size.Result = 12; visioActivity.CharFormats = new List<VisioAutomation.VDX.Sections.Char>(); visioActivity.CharFormats.Add(charFormat); visioActivity.Text.Add(runbookProxy.RunbookName); page.Shapes.Add(visioActivity); shapes.Add(visioActivity); activityPos += addToHorizontal; foreach (var reference in references) { x = (pageWidth / (maxProcessCountPerRow - 1)) + ((processWidth + processPaddingHorizontal) * activityPos); ay = y - ((processHeight + processPaddingVertical) * activityYPos); // Add all references processId = document.GetMasterMetaData("Process").ID; visioActivity = new VisioShape(processId, x, ay, processWidth, processHeight); visioActivity.CharFormats = new List<VisioAutomation.VDX.Sections.Char>(); visioActivity.CharFormats.Add(charFormat); visioActivity.Text.Add(reference.RunbookName); page.Shapes.Add(visioActivity); shapes.Add(visioActivity); /*//if (!String.IsNullOrEmpty(activity.Description)) { int shapeID = visioActivity.ID; var callOut = new VisioShape(26, x + 0.3, ay + 1.0); //callOut.Text.Add(activity.Description); callOut.Geom = new VisioAutomation.VDX.Sections.Geom(); page.Shapes.Add(callOut); }*/ activityPos++; if (activityPos >= maxProcessCountPerRow) { addToHorizontal = -1; activityPos += addToHorizontal; activityYPos++; } else { addToHorizontal = 1; activityPos += addToHorizontal; activityYPos++; } } // Add connectors between the activities for (int i = 0; i < shapes.Count; i++) { // We only add connectors up until the latest process object if ((i + 1) >= shapes.Count) break; VisioShape a1 = shapes[i]; VisioShape a2 = shapes[i + 1]; var line = VisioShape.CreateDynamicConnector(document); line.XForm1D.EndY.Result = 0; line.Line = new VisioLine(); line.Line.EndArrow.Result = 2; page.Shapes.Add(line); page.ConnectShapesViaConnector(line, a1, a2); } shapes.Clear(); languageContext.ClearCache(); } document.Save(drawingOutputPath); }
private void GenerateVisio(string drawingOutputPath) { var pageWidth = 16.53543307086614; var pageHeight = 11.69291338582677; var left = 0.1; var processWidth = 1.5; var processHeight = 1.0; var processPaddingHorizontal = 0.4; var processPaddingVertical = 1.4; var maxProcessCountPerRow = 10; var activityPos = 1; var activityYPos = 0; var addToHorizontal = 1; var shapes = new List <VisioShape>(); // Clean up the template and remove the existing pages var templateXml = XDocument.Load("DrawingTemplate.vdx"); //VisioTemplate.CleanUpTemplate(templateXml); var template = new VisioTemplate(templateXml.ToString()); var document = new VisioDrawing(template); document.DocumentProperties.Creator = "Automation Studio"; document.DocumentProperties.TimeCreated = DateTime.Now; // Configure the page var runbooks = _backendContext.Runbooks; var runbooksList = new List <RunbookModelProxy>(); foreach (var runbook in runbooks) { runbooksList.Add((runbook.Tag as RunbookModelProxy)); } var languageContext = new LanguageContext(); foreach (var runbook in runbooks) { if (!(runbook.Tag as RunbookModelProxy).PublishedRunbookVersionID.HasValue) { continue; } var runbookProxy = (runbook.Tag as RunbookModelProxy); _statusManager.SetText("Generating visio drawing for " + runbookProxy.RunbookName); var viewModel = (runbook.Tag as RunbookModelProxy).GetViewModel <RunbookViewModel>(); var page = ConfigureVisioPage(viewModel.Runbook.RunbookName, pageWidth, pageHeight); document.Pages.Add(page); var publishedContent = viewModel.GetContent(RunbookType.Published, true); languageContext.Parse(publishedContent); var references = languageContext.GetReferences(runbooksList); if (references.Count == 0) { continue; } var totalRows = (double)(runbooksList.Count / maxProcessCountPerRow); if (runbooksList.Count <= maxProcessCountPerRow) { totalRows = 2.0; } var y = (pageHeight / totalRows) + (totalRows * ((processHeight + processPaddingVertical)) / totalRows); var x = (pageWidth / (maxProcessCountPerRow - 1)) + ((processWidth + processPaddingHorizontal) * activityPos); var ay = y - ((processHeight + processPaddingVertical) * activityYPos); // Add the current runbook as the start activity var processId = document.GetMasterMetaData("Process").ID; var visioActivity = new VisioShape(processId, x, ay, processWidth, processHeight); var charFormat = new VisioAutomation.VDX.Sections.Char(); charFormat.Size.Result = 12; visioActivity.CharFormats = new List <VisioAutomation.VDX.Sections.Char>(); visioActivity.CharFormats.Add(charFormat); visioActivity.Text.Add(runbookProxy.RunbookName); page.Shapes.Add(visioActivity); shapes.Add(visioActivity); activityPos += addToHorizontal; foreach (var reference in references) { x = (pageWidth / (maxProcessCountPerRow - 1)) + ((processWidth + processPaddingHorizontal) * activityPos); ay = y - ((processHeight + processPaddingVertical) * activityYPos); // Add all references processId = document.GetMasterMetaData("Process").ID; visioActivity = new VisioShape(processId, x, ay, processWidth, processHeight); visioActivity.CharFormats = new List <VisioAutomation.VDX.Sections.Char>(); visioActivity.CharFormats.Add(charFormat); visioActivity.Text.Add(reference.RunbookName); page.Shapes.Add(visioActivity); shapes.Add(visioActivity); /*//if (!String.IsNullOrEmpty(activity.Description)) * { * int shapeID = visioActivity.ID; * * var callOut = new VisioShape(26, x + 0.3, ay + 1.0); * //callOut.Text.Add(activity.Description); * callOut.Geom = new VisioAutomation.VDX.Sections.Geom(); * * page.Shapes.Add(callOut); * }*/ activityPos++; if (activityPos >= maxProcessCountPerRow) { addToHorizontal = -1; activityPos += addToHorizontal; activityYPos++; } else { addToHorizontal = 1; activityPos += addToHorizontal; activityYPos++; } } // Add connectors between the activities for (int i = 0; i < shapes.Count; i++) { // We only add connectors up until the latest process object if ((i + 1) >= shapes.Count) { break; } VisioShape a1 = shapes[i]; VisioShape a2 = shapes[i + 1]; var line = VisioShape.CreateDynamicConnector(document); line.XForm1D.EndY.Result = 0; line.Line = new VisioLine(); line.Line.EndArrow.Result = 2; page.Shapes.Add(line); page.ConnectShapesViaConnector(line, a1, a2); } shapes.Clear(); languageContext.ClearCache(); } document.Save(drawingOutputPath); }
static void Main(string[] args) { string left_font = "Calibri"; var template = new VDX.Template(); var doc = new VDX.Elements.Drawing(template); var page = new VDX.Elements.Page(10, 10); doc.Pages.Add(page); var faces = doc.Faces; var left_face = Helpers.GetFontSafe(doc.Faces, left_font); double face_size = 32.0; int rect_id = doc.GetMasterMetaData("REctAngle").ID; string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string letters2 = "abcdefghijklmnopqrstuvwxyz"; string numbers = "01234567890"; string punctuation = "!@#$%^&*()_+-=<>,.[]{}\\|``/?;:'\""; var text = letters + letters2 + numbers + punctuation; int count = text.Length; int cols = (int)System.Math.Ceiling(System.Math.Sqrt(count)); double face_size_inches = face_size / 72.0; double box_size = face_size_inches * 2.0; double box_sep = box_size / 8.0; double grid_delta = box_size + box_sep; page.PageProperties.PageWidth.Formula = (cols * grid_delta).ToString(); page.PageProperties.PageHeight.Formula = (cols * grid_delta).ToString(); int n = 0; foreach (int row in Enumerable.Range(0, cols)) { foreach (int col in Enumerable.Range(0, cols)) { if (n >= count) { break; } var pinx = col * grid_delta; var piny = (cols * grid_delta) - (row * grid_delta); var shape = new VDX.Elements.Shape(rect_id, pinx, piny, box_size, box_size); page.Shapes.Add(shape); string s = text[n].ToString(); shape.Text.Add(s); shape.CharFormats = new List <VDX.Sections.Char>(); var charfmt = new VDX.Sections.Char(); charfmt.Font.Formula = left_face.ID.ToString(); charfmt.Size.Formula = face_size.ToString() + "pt"; shape.CharFormats.Add(charfmt); shape.Fill = new VDX.Sections.Fill(); shape.Fill.Pattern.Formula = "0"; shape.Fill.ForegroundColor.Formula = "rgb(255,255,255)"; shape.Fill.ForegroundTransparency.Formula = "1.0"; shape.Line = new VDX.Sections.Line(); shape.Line.Pattern.Formula = "0"; shape.Line.Weight.Formula = "0"; shape.Line.Color.Formula = "rgb(240,240,240)"; n++; } } doc.Save("D:\\specimen.vdx"); }