<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Bill Morein's Weblog : Development</title><link>http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx</link><description>Tags: Development</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>(Relatively) New blog with lots of great Visio content</title><link>http://blogs.msdn.com/wmorein/archive/2009/01/24/relatively-new-blog-with-lots-of-great-visio-content.aspx</link><pubDate>Sun, 25 Jan 2009 00:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9374345</guid><dc:creator>wmorein</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/9374345.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=9374345</wfw:commentRss><description>&lt;P&gt;Somehow I had thought that I had already pointed people to &lt;A href="http://blogs.msdn.com/saveenr/" mce_href="http://blogs.msdn.com/saveenr/"&gt;Saveen Reddy's blog&lt;/A&gt;, but looking back through the archives I realized that I hadn't. Saveen doesn't work on the Visio team, but is a power user and knows a ton about visualization. &lt;/P&gt;
&lt;P&gt;I'm a huge fan of Python the programming language, and he covers a lot of information on how to use Python with Visio, among other topics. Here is a recent series he started: &lt;A href="http://blogs.msdn.com/saveenr/archive/2009/01/22/visio-ironpython-powershell-how-to-draw-nice-diagrams-from-the-command-line.aspx"&gt;http://blogs.msdn.com/saveenr/archive/2009/01/22/visio-ironpython-powershell-how-to-draw-nice-diagrams-from-the-command-line.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9374345" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Data+Visualization/default.aspx">Data Visualization</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/General/default.aspx">General</category></item><item><title>Solution Performance Tip 1 – GetFormulas and SetFormulas</title><link>http://blogs.msdn.com/wmorein/archive/2007/11/13/solution-performance-tip-1-getformulas-and-setformulas.aspx</link><pubDate>Wed, 14 Nov 2007 01:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6185095</guid><dc:creator>wmorein</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/6185095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=6185095</wfw:commentRss><description>&lt;P&gt;One of the most frequent questions I get from partners and other readers of this blog is how to improve the performance of their solution. Usually the first step is to point them to &lt;A href="http://blogs.msdn.com/mailant/archive/2004/09/22/233082.aspx" mce_href="http://blogs.msdn.com/mailant/archive/2004/09/22/233082.aspx"&gt;these five performance tips&lt;/A&gt;, but I thought it would be interesting to quantify just how much of a difference some of these tips actually make in the real world. &lt;/P&gt;
&lt;P&gt;It just so happens that the Visio SDK includes some relevant samples in the "Visio Code Samples Library" that we can use to evaluate this. To test this, I used (slightly modified) the "Get Many &amp;amp; Set Many Formulas" code example in the "Shapes" section. I ran this using two of the main ways of automating Visio using managed code (specifically C# in this case): VSTO and instantiating Visio from an external executable. The example drops shapes then sets and retrieves formulas in two different ways: one by one and using GetFormulas and SetFormulas. Here are the results of running the tests (average of 10 runs each): &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;STRONG&gt;VSTO 
&lt;DIV style="MARGIN-LEFT: 30pt"&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 213px"&gt;
&lt;COL style="WIDTH: 106px"&gt;
&lt;COL style="WIDTH: 102px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="BACKGROUND: #4f81bd"&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;100 Shapes&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;1000 Shapes&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Individual Get&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8; BORDER-BOTTOM: medium none"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.11 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8; BORDER-BOTTOM: medium none"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.36&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;GetFormulas&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.01 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.11&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Individual Set&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.31 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.63&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;SetFormulas&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.01 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.20&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;External Executable 
&lt;DIV style="MARGIN-LEFT: 30pt"&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 213px"&gt;
&lt;COL style="WIDTH: 106px"&gt;
&lt;COL style="WIDTH: 102px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="BACKGROUND: #4f81bd"&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;100 Shapes&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; BORDER-TOP: 2.25pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;1000 Shapes&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Individual Get&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8; BORDER-BOTTOM: medium none"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.45 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8; BORDER-BOTTOM: medium none"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;4.3 sec&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;GetFormulas&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.03 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-BOTTOM: 0.5pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;1.9 sec&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Individual Set&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.17 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BACKGROUND: #d8d8d8"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;14.3 sec&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #4f81bd; BORDER-LEFT: medium none; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;SetFormulas&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.14 sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BORDER-BOTTOM: 2.25pt solid"&gt;
&lt;P style="TEXT-ALIGN: right"&gt;0.5 sec&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/STRONG&gt;
&lt;P&gt;As you can see, moving to the GetFormulas/SetFormulas style (which minimizes the number of objects that are passed back and forth) has huge performance implications. This is particularly evident when using an external executable which instantiates Visio, since this now means that your calls to Visio must cross process boundaries, which is expensive (I'll cover this topic more fully in a future post). &lt;/P&gt;
&lt;P&gt;Using GetFormulas/SetFormulas is a little trickier than just doing things one at a time, but is usually well worth the effort. The samples in the SDK are a great way to get started.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6185095" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio 2007: Good reference on developer changes</title><link>http://blogs.msdn.com/wmorein/archive/2007/05/06/visio-2007-good-reference-on-developer-changes.aspx</link><pubDate>Mon, 07 May 2007 00:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2451867</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/2451867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=2451867</wfw:commentRss><description>&lt;P&gt;I spent a little time today answering questions about some of the new features in Visio 2007, and noticed that I had never linked to these articles:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa395290.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa395290.aspx"&gt;What's New for Developers in Visio 2007 (Part 1 of 2)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa395291.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa395291.aspx"&gt;What's New for Developers in Visio 2007 (Part 2 of 2)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The first provides a good overview of the key additions around connecting to data, while the second is a complete reference of all the additions (and&amp;nbsp;a small number of deprecations). It is a good idea to check the second article out if you are upgrading your application or add-in and want to see which of the new features you might want to use.&lt;/P&gt;
&lt;P&gt;You might also want to take a look at these posts, as the document other behavior:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/wmorein/archive/2007/04/17/developer-behavior-change-in-visio-2007-additional-guard-functions-in-shapes.aspx"&gt;http://blogs.msdn.com/wmorein/archive/2007/04/17/developer-behavior-change-in-visio-2007-additional-guard-functions-in-shapes.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/wmorein/archive/2007/01/26/visio-2007-bug-in-drawing-control.aspx"&gt;http://blogs.msdn.com/wmorein/archive/2007/01/26/visio-2007-bug-in-drawing-control.aspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2451867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio Developer Search</title><link>http://blogs.msdn.com/wmorein/archive/2007/05/01/visio-developer-search.aspx</link><pubDate>Wed, 02 May 2007 08:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2369270</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/2369270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=2369270</wfw:commentRss><description>&lt;P&gt;While working on a little project this past week I was&amp;nbsp;spending a lot of time looking for information on various Visio developer topics. To speed things up, I&amp;nbsp;put together a Live Search Macro that scopes down the search to to online SDK documentation along with a number of relevant blogs and other Visio content. It seems to pretty aggressively prioritize the SDK content over the other sites, so I am still tweaking it, but overall it works pretty well. I'm also open to suggestions on other sites to include in the macro:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A class="" href="http://wmorein.com/visiosearch/" mce_href="http://wmorein.com/visiosearch/"&gt;Visio Developer Search&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It works particularly well for searches when you are looking for an object like "window" or "application", since those are a bit of a pain to get through regular search, even if you add other keywords.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2369270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>VSTO and Visio</title><link>http://blogs.msdn.com/wmorein/archive/2007/04/09/vsto-and-visio.aspx</link><pubDate>Tue, 10 Apr 2007 00:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2064570</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/2064570.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=2064570</wfw:commentRss><description>&lt;P&gt;As I've mentioned before, Visual Studio Tools for Office includes wizards for Visio in their latest release (VSTO 2005 SE) and this will be a big part of Visio development in the future. Having said that, there is still a little bit of work in creating a VSTO Visio add-in.&lt;/P&gt;
&lt;P&gt;Chris Castillo has created the &lt;A class="" href="http://blogs.msdn.com/chcast/archive/2007/03/28/creating-visio-add-ins-with-vsto-2005-se.aspx" mce_href="http://blogs.msdn.com/chcast/archive/2007/03/28/creating-visio-add-ins-with-vsto-2005-se.aspx"&gt;definitive guide on VSTO and Visio&lt;/A&gt;. I'd highly recommend checking it out if you do managed code programming in Visio. It explains both the how and why of working with VSTO.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2064570" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Office and Visio Launch</title><link>http://blogs.msdn.com/wmorein/archive/2006/12/01/office-and-visio-launch.aspx</link><pubDate>Sat, 02 Dec 2006 00:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1186961</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/1186961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=1186961</wfw:commentRss><description>&lt;P&gt;As many of you know, yesterday was the business launch of Office, including Visio. The full consumer launch (i.e. boxes available in stores) will happen in January. In the meantime, you can download &lt;A class="" href="http://us1.trymicrosoftoffice.com/product.aspx?sku=3082931&amp;amp;culture=en-US" mce_href="http://us1.trymicrosoftoffice.com/product.aspx?sku=3082931&amp;amp;culture=en-US"&gt;a trial version of the final product&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;We have released the latest versions of the&amp;nbsp;&lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?familyid=d88e4542-b174-4198-ae31-6884e9edd524&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=d88e4542-b174-4198-ae31-6884e9edd524&amp;amp;displaylang=en"&gt;Visio Viewer&lt;/A&gt;&amp;nbsp;and the &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=772ccdd1-7d06-4cc4-8ecd-de5864428c26&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=772ccdd1-7d06-4cc4-8ecd-de5864428c26&amp;amp;DisplayLang=en"&gt;SDK&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1186961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Meet a ShapeSheet Function: SETF</title><link>http://blogs.msdn.com/wmorein/archive/2006/08/09/693527.aspx</link><pubDate>Wed, 09 Aug 2006 21:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:693527</guid><dc:creator>wmorein</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/693527.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=693527</wfw:commentRss><description>&lt;P&gt;With this post I'll start a new series designed to give a little more detail behind some of the more interesting ShapeSheet functions. &lt;/P&gt;
&lt;P&gt;As the &lt;A href="http://msdn.microsoft.com/library/en-us/vissdk11/html/DSS_Functions_(Q-Z)_1496_HV82251496.asp"&gt;documentation for SETF says&lt;/A&gt;, this function is designed to let you set the value for a specific cell in the ShapeSheet from any other cell. This is one of the most powerful tools for creating shapes that have smart behavior without any code. &lt;/P&gt;
&lt;H2&gt;The Basics &lt;/H2&gt;
&lt;P&gt;The SETF function takes two parameters: the cell to be changed and the new value for that cell. &lt;/P&gt;
&lt;P&gt;To specify the cell to be changed, the best practice is to use the GETREF function. You can also use the cell name you want enclosed by quotation marks, but this is less reliable, particularly when you are doing things across shapes. For instance, if you reference another shape just using quotation marks and then add that shape to a group, the reference will no longer be valid. If you use the GETREF approach, Visio will fix up the references for you automatically. Unless you have very specific needs I'd highly recommend always using GETREF. &lt;/P&gt;
&lt;P&gt;The second argument, for the value, can be any Visio formula. One thing to note here is that the formula will be evaluated before being placed in the cell unless you enclose it in quotes. This means that if you place 5+Prop.Cost as the argument, you'll get the evaluated value of that formula placed in the cell (i.e. 7 if Prop.Cost is 2) – a fixed value is inserted. If you want an actual formula to be placed in the cell, you need to enclose it in quotes: "5+Prop.Cost". If you need quotes in your formula (usually for text) you can escape them using double quotes. &lt;/P&gt;
&lt;H2&gt;Some Example Uses &lt;/H2&gt;
&lt;H3&gt;Changing Multishapes &lt;/H3&gt;
&lt;P&gt;In the flowchart multishape ("Flowchart Shapes" on the Basic Flowchart shapes stencil) that comes with Visio, SETF is used to let users toggle between shapes using a right click context menu. In the picture below, the four possible states of the shape are shown, with the menu dropped down for one of the shapes. &lt;/P&gt;
&lt;P&gt;&lt;IMG height=163 alt="" src="http://wmorein.com/blog/setf-1.png"&gt; &lt;/P&gt;
&lt;P&gt;Each of the menu items is created using an action row in the ShapeSheet: &lt;/P&gt;
&lt;P&gt;&lt;IMG height=108 alt="" src="http://wmorein.com/blog/setf-2.png" width=442&gt; &lt;/P&gt;
&lt;P&gt;The action column specifies what should happen when the user clicks on that menu item. In this case, we are setting a scratch cell to a value of 1 through 4, which we then use to drive what geometry is shown. &lt;/P&gt;
&lt;H3&gt;Doing an Action Just Once &lt;/H3&gt;
&lt;P&gt;Let's say you want to make sure that a user is given the chance to fill in the Shape Data (formerly Custom Properties) of a shape when it is first dropped on the page, but you don't want to have that Shape Data dialog show up every single time they copy or duplicate that shape as well. To do this, add the following formula to the EventDrop cell in the Events section of the ShapeSheet for the master: =DOCMD(1312)+SETF("EventDrop",0) &lt;/P&gt;
&lt;P&gt;When the EventDrop event is triggered (when the shape is first dropped from the stencil). It will pop up the Shape Data dialog (this is what DOCMD(1312) does) and then SETF will set the entire formula for that cell to 0 so that the action is not repeated when the dropped shape is copied. This is one case where you can't use GETREF because of the circular reference, so you will need to quote the cell reference. &lt;/P&gt;
&lt;P&gt;This is a great technique that has a lot of possible uses given all the actions you can take by using the ShapeSheet through DoCmd or other formulas. &lt;/P&gt;
&lt;H3&gt;Choosing Teams in a Bracket &lt;/H3&gt;
&lt;P&gt;During the NCAA basketball tournament this spring, we put together a bracket that let you pick the team you expected to win each by double clicking on your choice. We then used Data Link and Data Graphics to let you automatically update your diagram and see how you were doing. Green meant that your pick was correct (red was wrong) and the exclamation icon set denoted an upset. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG alt="" src="http://wmorein.com/blog/setf-3.png"&gt; &lt;/P&gt;
&lt;P&gt;Using double clicking to set the picks was accomplished using SETF. To simplify creating the diagram I set up my SETF formula to pull the first argument (shape/cell to be changed) from a Shape Data item in that shape. This let me just use one master and update the Shape Data for each shape to set up the proper links. Here is the formula I used: &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=SETF(Prop.NextGameShape&amp;amp;"!Prop.Pick",""""&amp;amp;Prop.Pick&amp;amp;"""") &lt;/P&gt;
&lt;P&gt;The first argument is Prop.NextGameShape&amp;amp;"!Prop.Pick". I'm dynamically pulling the value of a Shape Data cell (Prop.NextGameShape) and then specifying the ShapeSheet cell in that shape that I want to use. The ! is the delimiter between the shape and the cell name. &lt;/P&gt;
&lt;P&gt;The second argument will set the formula in that cell to be "Prop.Pick". The two sets of quotes send an escaped quote each, and the &amp;amp; concatenates them with the text I want inserted into the cell (pulled from the "Pick" Shape Data item in the current shape). &lt;/P&gt;
&lt;P&gt;A little more complicated, but it gets the job done nicely.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=693527" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/General/default.aspx">General</category></item><item><title>Developer Book Recommendation</title><link>http://blogs.msdn.com/wmorein/archive/2006/08/07/691629.aspx</link><pubDate>Tue, 08 Aug 2006 04:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:691629</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/691629.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=691629</wfw:commentRss><description>&lt;P&gt;For those of you who are developing with Visio (particularly if you have some experience), I'd like to recommend Graham Wideman's book: &lt;A href="http://www.diagramantics.com/v11dsp/index.htm"&gt;Visio 2003 Developer's Survival Pack&lt;/A&gt;.&amp;nbsp;The author&amp;nbsp;is one of our MVPs and is as knowledeable about Visio as just about anyone I know. The book contains great detail on just about everything around Visio development, from the ShapeSheet (always a topic that can use more resources) to the ActiveX Drawing Control introduced with Visio 2003.&lt;/P&gt;
&lt;P&gt;Anyone who is building a serious solution with Visio should have this book. Although it focuses on Visio 2003, virtually everything in the book will still apply to Visio 2007 as well.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=691629" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Presentation on Building Solutions using the Visio 2007 Data API</title><link>http://blogs.msdn.com/wmorein/archive/2006/07/31/684688.aspx</link><pubDate>Tue, 01 Aug 2006 04:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:684688</guid><dc:creator>wmorein</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/684688.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=684688</wfw:commentRss><description>&lt;p&gt;The Office team has put up video of all of the &lt;a href="http://msdn.microsoft.com/office/learn/conferences/default.aspx"&gt;presentations from the Office Developer Conference&lt;/a&gt; held this past spring. At the conference, I presented a Visio 2007 session focusing on building solutions using the new Data APIs. The direct link to the video of the session is available &lt;a href="http://download.microsoft.com/download/2/f/5/2f5b0aeb-0488-487b-9b15-f23352681864/BI201_Morein.wmv"&gt;here&lt;/a&gt;. The quality of the video is high, so beware that it is a 182 MB download. 
&lt;/p&gt;&lt;p&gt;In the session we cover the three main aspects of programming against the Data APIs: Importing the data, linking the data to shapes, and displaying the data using Data Graphics. Along with the slides detailing the APIs and some possible scenarios, I build an example application (visualizing sales on a supermarket floor plan) from scratch.
&lt;/p&gt;&lt;p&gt;Here's a high level guide to what is in the presentation:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;2:00 – Demo of the end user data features
&lt;/li&gt;&lt;li&gt;6:48 – Example scenarios and applications
&lt;/li&gt;&lt;li&gt;11:20 – The first part of the demo, including an overview of the application and the initial creation of the data solution
&lt;/li&gt;&lt;li&gt;22:20 – Details on the Data API
&lt;/li&gt;&lt;li&gt;39:10 – The second part of the demo, showing more on programming Data Graphics and creating new shapes from data
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We'll be publishing full documentation on the Data API soon, but this should give you a good introduction to what is possible and some tips on how to get started.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=684688" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Data+Visualization/default.aspx">Data Visualization</category></item><item><title>Visio 2007: More on Customizing Data Graphics: Icon Sets with Images</title><link>http://blogs.msdn.com/wmorein/archive/2006/07/18/669952.aspx</link><pubDate>Tue, 18 Jul 2006 20:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:669952</guid><dc:creator>wmorein</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/669952.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=669952</wfw:commentRss><description>&lt;P&gt;In the previous two posts on customizing Data Graphics, I covered general &lt;A href="http://blogs.msdn.com/wmorein/archive/2006/06/15/632742.aspx"&gt;customization (using a text callout example)&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/wmorein/archive/2006/07/14/665997.aspx"&gt;customizing icon sets&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you are creating icon sets, often you'll want to use existing images rather than trying to figure out how to redraw them. There are two main tips for creating icon sets with images:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You need to make the icon set item a group and then place the image in a subshape of the group.&lt;/LI&gt;
&lt;LI&gt;To keep file sizes small, put all of the images in a single image strip, then use the "Foreign Image Info" section of the&amp;nbsp;image master to mask out the images&amp;nbsp;appropritely based on the values in msvCalloutIconNumber (these will need to refer to the parent shape). &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Mark Nelson has created two examples using the Office&amp;nbsp;icons and some number images:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://wmorein.com/blog/imageicons.png"&gt;&lt;/P&gt;
&lt;P&gt;See the attached&amp;nbsp;Visio file for the example.&amp;nbsp;The two masters to look at are called "Images" and "Numbers".&lt;/P&gt;
&lt;P&gt;The full article on customizing Data Graphics will include a step by step process on doing this, and I'll link to that when it is up.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=669952" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/wmorein/attachment/669952.ashx" length="64512" type="application/octet-stream" /><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio 2007: More on Customizing Data Graphic Items: Icon Sets</title><link>http://blogs.msdn.com/wmorein/archive/2006/07/14/665997.aspx</link><pubDate>Fri, 14 Jul 2006 22:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:665997</guid><dc:creator>wmorein</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/665997.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=665997</wfw:commentRss><description>&lt;P&gt;In my &lt;A href="http://blogs.msdn.com/wmorein/archive/2006/06/15/632742.aspx"&gt;earlier post on Data Graphics customization&lt;/A&gt;, I covered how to edit a text Graphic Item. A few people have asked for more information on how to deal specifically with Icon Sets since that is a place where there are most often domain-specific icons to be represented. We do have some documentation coming out on that, but while we wait for it to get published I’ll give you a few pointers to help you get started. &lt;/P&gt;
&lt;P&gt;By way of example, I’ll take a look at the “Trend arrows” Icon Set. Here is an example of the icon set in action: &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG src="http://wmorein.com/blog/dg2-1.png"&gt;&lt;/P&gt;
&lt;P&gt;There are a couple of important things to point out about this callout: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;There are five possible states for this graphic item, which is the maximum number of possible states for an Icon Set. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;There are only two different sets of geometry being used (the arrow and the flat line). The full set of possible states are represented by how the shape combines geometry, color, and angle. &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To get started, you can follow the same steps described in the earlier post to make a copy of this master (this one will be called “Trend arrow 1” in the Drawing Explorer window) then open up your copy of the master’s ShapeSheet for editing. If you look at the “User-defined Cells” section in the ShapeSheet, you’ll see the cells that are specifically relevant to Icon Set: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;STRONG&gt;User.msvCalloutType&lt;/STRONG&gt; – The type of the callout (e.g. Icon Set or Data Bar). This is a string that is not localized. For this case, the value will be “Icon Set”. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;STRONG&gt;User.msvCalloutIconNumber&lt;/STRONG&gt; – The current icon to be displayed. Visio places the Data Graphics formulas here to determine which icon is shown (where the result ranges from 0 to IconCount – 1). The value -1 is set when no conditional statement is true. The typical action when no conditions are true should be to make the icon invisible. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;STRONG&gt;User.msvCalloutIconCount&lt;/STRONG&gt; – The total number of icon states that Data Graphics can show. This number must be 5 or less. (Numbers greater than 5 are treated as a 5.) &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG src="http://wmorein.com/blog/dg2-2.png"&gt;&lt;/P&gt;
&lt;P&gt;From a shape development standpoint, you use msvCalloutIconNumber to drive your shape appearance. For this shape, that means that we’ll use that value to update all geometry, angle, and fill. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;First, let’s look at geometry. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://wmorein.com/blog/dg2-3.png"&gt;&lt;/P&gt;
&lt;P&gt;There are two Geometry sections. The Geometry 1 section provides the geometry for the arrow, while Geometry 2 represents the line. If you look at the NoShow sections highlighted in red, notice that they contain IF statements driven by the value in User.msvCalloutIconNumber. For Geometry 1, it is shown unless the value is -1 (which means no condition has been triggered) or 1, which is the only one that is supposed to use Geometry 2. &lt;/P&gt;
&lt;P&gt;To adapt this Icon Set, you can either edit the existing geometry section or add a completely new one. To add a new geometry section, right click on the ShapeSheet window and select “Add Section” then choose Geometry. Often the simplest thing is to just create one Geometry section for each possible state, but when the designer of this shape put it together he limited it to two to save space in documents. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Next, let’s take a look at how the angle is set up. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://wmorein.com/blog/dg2-4.png"&gt; &lt;/P&gt;
&lt;P&gt;The Angle cell contains an INDEX formula that again refers back to the User.msvCalloutIconNumber cell, setting the angle of the arrow or line. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Finally, the Fill Format of the callout is changed to update the color as well. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://wmorein.com/blog/dg2-5.png"&gt;&lt;/P&gt;
&lt;P&gt;Here, we have the FillForegnd, FillBkgnd, and FillPattern cells driven off of User.msvCalloutIconNumber cell. The foreground and background fill colors are set through a set of nested IF statements (the whole thing is protected with a GUARD to prevent accidental formatting) that specify RGB values. You can change those color values to pull from the Theme accent colors instead of specifying RGB. The fill pattern is also changed based on an INDEX formula to get the pattern matched with angle. This is necessary because we are using a gradient and reusing the geometry section – when the angle changes we need to update the gradient so it looks consistent. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hopefully this provides enough information to get people started. Obviously the more you know about working with masters and the ShapeSheet, the easier you’ll find this. Feel free to post any questions you have and I’ll try to answer them directly or in a future post.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=665997" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio Conference 2006 presentations available online</title><link>http://blogs.msdn.com/wmorein/archive/2006/07/01/654008.aspx</link><pubDate>Sun, 02 Jul 2006 01:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:654008</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/654008.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=654008</wfw:commentRss><description>&lt;P&gt;If you didn't get a chance to make it to the Visio Conference we held in January, we've put up audio/visual recordings from all of the sessions at &lt;A href="http://www.visioconferencecontent.com/"&gt;http://www.visioconferencecontent.com/&lt;/A&gt;. There is a lot of great information there, whether you are interested in the developer sessions, hearing about Visio 2007, or seeing what partners are doing on top of Visio. &lt;/P&gt;
&lt;P&gt;Each of the sessions includes the video of the demos, so the downloads&amp;nbsp;can get pretty big for some of the more demo-intensive sessions -- something to remember before firing up the download over a dialup connection.&lt;/P&gt;
&lt;P&gt;I think that all of the sessions went well, but there are a few that I'd like to call out as particularly interesting to the readers of this blog:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;There are three sessions on the&amp;nbsp;general&amp;nbsp;customer features (as opposed to programmability ones) in Visio 2007 -- a general overview from Eric, then one that focuses on Data Link (&lt;EM&gt;Dynamic Visualization of Enterprise Data&lt;/EM&gt;), and finally one that focused on PivotDiagrams (&lt;EM&gt;High-impact Reports and Data Presentations&lt;/EM&gt;). If you are interested in seeing these features in action, take a look at the first three sessions in the Visio 2007 track.&lt;/LI&gt;
&lt;LI&gt;We have been a little lax in getting the formal developer documentation for Visio 2007 out to everyone. That is something that we expect to rectify really soon, but in the meantime check out Phil Arida's session: &lt;EM&gt;What's New in Visio 2007 Programmability. &lt;/EM&gt;This presentation gives you everything you need to get started with the new programming features in Visio 2007.&lt;/LI&gt;
&lt;LI&gt;Mark Nelson's session on &lt;EM&gt;Building a Model-driven Visio Solution&lt;/EM&gt; was amazing. This is a topic that gets a lot of interest since many of the types of solutions that people like to build on top of Visio (e.g. business process and network management) involve an underlying model that needs to be represented visually. This topic definitely requires some experience with programming Visio, but if you have that background I highly recommend it.&lt;/LI&gt;
&lt;LI&gt;Chris Roth (one of our MVPs) did a session on the ways that you can work with XML in Visio. This is a really broad topic, but Chris did a great job of covering all the bases in a very demo-intensive session.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=654008" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio 2007: Customizing Data Graphic Items</title><link>http://blogs.msdn.com/wmorein/archive/2006/06/15/632742.aspx</link><pubDate>Thu, 15 Jun 2006 23:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:632742</guid><dc:creator>wmorein</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/632742.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=632742</wfw:commentRss><description>&lt;P&gt;After spending a couple days chatting with people here at TechEd, I am amazed at how many people have already downloaded and have been playing around with Visio 2007 Beta 2. If you don’t have it yet, &lt;A href="http://www.microsoft.com/office/preview/default.mspx"&gt;you can check it out here&lt;/A&gt;. In particular, a lot of people have&amp;nbsp;seen the Data Graphics feature and have started to do really interesting things with it. &lt;/P&gt;
&lt;P&gt;One of the most common questions I have gotten is around how to customize Data Graphic callouts. For example, people want to be able to add a thinner data bar, a new text callout that has different text or a different look from the built in ones, or a icon set that is customized for their particular domain. We’re putting together full documentation on how to do this, but while we’re waiting for that I’d like to give the more adventurous a primer to get going. For this post I’ll assume that you have some understanding of Masters in Visio and the ShapeSheet. &lt;/P&gt;
&lt;P&gt;First, make sure to check out &lt;A href="http://blogs.msdn.com/eric_rockey/archive/2005/12/14/503483.aspx"&gt;Eric’s post on the basics of using Data Graphics&lt;/A&gt;. The Data Graphic that you apply to a shape is made up of multiple graphic items, each of which are just a Visio master with some special properties. In order to create new graphic items, the easiest thing to do is copy an existing one. &lt;/P&gt;
&lt;P&gt;To copy a graphic item, do the following: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV&gt;Drop a shape containing shape data (for example, a network shape) on the page. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Select the shape and go to “Data&amp;gt;Display Data on Shapes…” &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;In the task pane that appears, click on the Data Graphic below the “None” Data Graphic (should be called “Data Graphic 2”). You should see something like the below:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG src="http://wmorein.com/blog/dg1.png"&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Go to “View&amp;gt;Drawing Explorer Window” &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Expand the “Masters” section and then right click on the “Heading 3” master and select “Duplicate” from the context menu. :&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG src="http://wmorein.com/blog/dg2.png"&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;This will result in a new master, called something like “Heading3.13”. Rename that new master to something recognizable like “My Heading”.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Right click on “My Heading” and select “Edit Master Shape” from the context menu. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;You are now in master editing mode. You can modify the shape. For example, increase the font size to 12 point and change the color to Orange from Blue. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Close the window and click “Yes” to update the shape. &lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The new text callout type is now there and ready to use in this document. You can use it just as you do any of the built in graphic items. Just edit the Data Graphic you are using (Data Graphic 2), edit the first existing text box, then select “My Heading” from the dropdown list of available callouts: :&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;IMG src="http://wmorein.com/blog/dg3.png"&gt;&lt;/P&gt;
&lt;P&gt;Now that you have created this graphic item, you can move it from document to document and it will then be available in both the UI and programmatically. Editing other item types (data bars and icon sets) can be accomplished in a similar way. &lt;/P&gt;
&lt;P&gt;A couple more tips to get you started: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;The master name for the default Data Graphic item will match up with its name in the Data Graphic dialog. Just make sure that you use the item first to make sure that it is added to that particular document.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Data Graphic items essentially conform to an interface for their particular item type. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Check out the User cells in the ShapeSheet to see what is involved. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Icon sets usually use multiple geometry sections to represent the various possible states. &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That’s it for now. When we have more documentation I’ll update this post to point to it, but hopefully this will be enough to get people started.&lt;/P&gt;
&lt;P&gt;Update: I've added some information specifically on &lt;A href="http://blogs.msdn.com/wmorein/archive/2006/07/14/665997.aspx"&gt;customizing icon sets&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=632742" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Visio+2007/default.aspx">Visio 2007</category><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Visio in Visual Studio Tools for Office - Public Preview Availability</title><link>http://blogs.msdn.com/wmorein/archive/2006/06/07/621011.aspx</link><pubDate>Wed, 07 Jun 2006 21:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:621011</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/621011.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=621011</wfw:commentRss><description>&lt;P&gt;I mentioned earlier the release of VSTO for Visio Beta 1 users. Now that Beta 2 is available, I’m happy to announce that anyone can try this out. To download the CTP of VSTO “v3”, go &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=68978824-CA55-4208-A55E-5C4858183B31&amp;amp;displaylang=en"&gt;here&lt;/A&gt;. Note that you need to install Visual Studio first, then &lt;A href="http://www.microsoft.com/office/preview/default.mspx"&gt;Visio 2007 Beta 2&lt;/A&gt;, and finally VSTO. &lt;/P&gt;
&lt;P&gt;The main Visio-related functionality that you get when you use VSTO are the wizards for creating C# and VB.Net add-in projects. Although the basic idea is similar to the wizards that ship with the Visio SDK, there are a couple key advantages to using the ones in VSTO: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;The programming model is somewhat simpler in that the full COM interop interface (IDTExtensibility2) is hidden. You basically just get a Visio application object, a Startup event, and a Shutdown event to work with. This makes the add-in a lot cleaner and easier to manage. &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;They automatically handle the creation of the COM shims (read &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dno2k3ta/html/ODC_Office_COM_Shim_Wizards.asp"&gt;this article&lt;/A&gt; if you don’t know what that means). This means, among other things, that it is a lot simpler to sign your add-in and if your add-in goes down it doesn't bring down all of the other add-ins. &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In playing around with this, one thing that I have noticed is that by default objects you create are not COMVisible (whereas they are in add-ins created using the Visio SDK wizards). This means that you need to set this explicitly for any objects that you need to be COMVisible. I first saw this when creating and working with Event Sinks - if you see COM exception 0x86DB0898 when you do an AddAdvise this is your issue. To fix it, add the following lines above the relevant object: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;For VB.Net:&lt;SPAN style="FONT-FAMILY: Courier New"&gt; &amp;lt;ComVisibleAttribute(&lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;)&amp;gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;For C#:&lt;SPAN style="FONT-FAMILY: Courier New"&gt; [ComVisible(&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;)]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=621011" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item><item><title>Bug in Creating Visio COM Add-ins with Visual Studio 2005</title><link>http://blogs.msdn.com/wmorein/archive/2006/05/26/607560.aspx</link><pubDate>Fri, 26 May 2006 10:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:607560</guid><dc:creator>wmorein</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wmorein/comments/607560.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wmorein/commentrss.aspx?PostID=607560</wfw:commentRss><description>&lt;p&gt;In &lt;a href="http://blogs.msdn.com/wmorein/archive/2005/11/18/494538.aspx"&gt;this post&lt;/a&gt; I describe how to create Visio COM Add-ins with VS2005. It turns out that the add-ins created using the shared wizard I create have an issue such that they do not install correctly on machines that don’t have Visual Studio installed (i.e. likely all of your customers machines). There is a KB article describing how to deal with this problem and pointing at the relevant download here: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;908002"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;908002&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=607560" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wmorein/archive/tags/Development/default.aspx">Development</category></item></channel></rss>