public void DOM_DrawOrgChart() { var app = this.GetVisioApplication(); var vis_ver = VA.Application.ApplicationHelper.GetVersion(app); // How to draw using a Template instead of a doc and a stencil string orgchart_vst = "orgchart.vst"; string position_master_name = vis_ver.Major >= 15 ? "Position Belt" : "Position"; var doc_node = new VA.DOM.Document(orgchart_vst, IVisio.VisMeasurementSystem.visMSUS); var page_node = new VA.DOM.Page(); doc_node.Pages.Add(page_node); // Have to be smart about selecting the right master with Visio 2013 var s1 = new VA.DOM.Shape(position_master_name, null, new VA.Drawing.Point(3, 8)); page_node.Shapes.Add(s1); var s2 = new VA.DOM.Shape(position_master_name, null, new VA.Drawing.Point(0, 4)); page_node.Shapes.Add(s2); var s3 = new VA.DOM.Shape(position_master_name, null, new VA.Drawing.Point(6, 4)); page_node.Shapes.Add(s3); page_node.Shapes.Connect(this.dynamicconnector, this.connec_u_vss, s1, s2); page_node.Shapes.Connect(this.dynamicconnector, this.connec_u_vss, s1, s3); var doc = doc_node.Render(app); //doc.Close(true); }
public void DOM_DrawOrgChart() { // How to draw using a Template instead of a doc and a stencil const string orgchart_vst = "orgch_u.vst" + ""; var app = this.GetVisioApplication(); var doc_node = new VA.DOM.Document(orgchart_vst, IVisio.VisMeasurementSystem.visMSUS); var page_node = new VA.DOM.Page(); doc_node.Pages.Add(page_node); // Have to be smart about selecting the right master with Visio 2013 int vis_ver = int.Parse(app.Version.Split('.')[0]); string position_master_name = vis_ver >= 15 ? "Position Belt" : "Position"; var s1 = new VisioAutomation.DOM.Shape(position_master_name, null, new VA.Drawing.Point(3, 4)); page_node.Shapes.Add(s1); var doc = doc_node.Render(app); doc.Close(true); }
private void CreateDOMShapes(VA.DOM.ShapeList domshapeslist, MG.GeometryGraph msagl_graph, IVisio.Application app) { var node_centerpoints = msagl_graph.NodeMap.Values .Select(n => ToDocumentCoordinates(VA.Internal.MSAGLUtil.ToVAPoint(n.Center))) .ToArray(); // Load up all the stencil docs var app_documents = app.Documents; var nodes = msagl_graph.NodeMap.Values.Select(get_shape); var stencil_names = nodes.Select(s => s.StencilName.ToUpper()).Distinct().ToList(); var stencil_map = new Dictionary <string, IVisio.Document>(); foreach (var stencil_name in stencil_names) { if (!stencil_map.ContainsKey(stencil_name)) { var stencil = app_documents.OpenStencil(stencil_name); stencil_map[stencil_name] = stencil; } } var master_map = new Dictionary <string, IVisio.Master>(); foreach (var nv in nodes) { var key = nv.StencilName.ToLower() + "+" + nv.MasterName; if (!master_map.ContainsKey(key)) { var stencil = stencil_map[nv.StencilName.ToUpper()]; var masters = stencil.Masters; var master = masters[nv.MasterName]; master_map[key] = master; } } // Create DOM Shapes for each AutoLayoutShape int count = 0; foreach (var layout_shape in nodes) { var key = layout_shape.StencilName.ToLower() + "+" + layout_shape.MasterName; var master = master_map[key]; var shape_node = new VA.DOM.Shape(master, node_centerpoints[count]); layout_shape.DOMNode = shape_node; domshapeslist.Add(shape_node); count++; } var shape_pairs = from n in msagl_graph.NodeMap.Values let layout_shape = (DGMODEL.Shape)n.UserData select new { layout_shape, shape_node = (VA.DOM.BaseShape)layout_shape.DOMNode }; // FORMAT EACH SHAPE foreach (var i in shape_pairs) { format_shape(i.layout_shape, i.shape_node); } }