<?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>Pedro Silva's Blog : DSL Tools</title><link>http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx</link><description>Tags: DSL Tools</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The DSL Beta1 SDK is out!</title><link>http://blogs.msdn.com/pedrosilva/archive/2009/05/22/the-dsl-beta1-sdk-is-out.aspx</link><pubDate>Fri, 22 May 2009 19:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9635422</guid><dc:creator>PedroSilva</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/9635422.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=9635422</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=9635422</wfw:comment><description>&lt;P&gt;Well lots of announcements this week with the VS Beta coming out... so here's one more:&lt;/P&gt;
&lt;P&gt;The &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=390fbb56-4e2c-4585-8f0c-ef51cf4cc93e" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=390fbb56-4e2c-4585-8f0c-ef51cf4cc93e"&gt;Visual Studio 2010&amp;nbsp;DSL&amp;nbsp;SDK Beta1&lt;/A&gt; is available for download! This one is near and dear to&amp;nbsp;me because I've worked on DSL Tools in the past, and it's wonderful to see another toolkit out for Beta1.&lt;/P&gt;
&lt;P&gt;So, if you're a veteran of Doman Specific Languages development or interested in learning to build cool graphical&amp;nbsp;designers for Visual Studio, you should download and try this new release. For more information about the specifics of this release, check out &lt;A class="" href="http://blogs.msdn.com/jmprieur/archive/2009/05/22/announcing-the-visual-studio-2010-dsl-sdk-beta-1.aspx" mce_href="http://blogs.msdn.com/jmprieur/archive/2009/05/22/announcing-the-visual-studio-2010-dsl-sdk-beta-1.aspx"&gt;Jean-Marc's blog&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9635422" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/News/default.aspx">News</category><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/VSX/default.aspx">VSX</category><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>T4 Editor Beta Released</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/10/18/t4-editor-beta-released.aspx</link><pubDate>Thu, 18 Oct 2007 23:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5513225</guid><dc:creator>PedroSilva</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/5513225.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=5513225</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=5513225</wfw:comment><description>The folks at Clarius have an update to their T4 template editor. They're now in &lt;A class="" href="http://www.t4editor.net/" mce_href="http://www.t4editor.net/"&gt;Beta&lt;/A&gt;. It's a very useful editor for anyone doing large amounts of T4 template editing with good factoring of template code vs script and color coding of keywords.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5513225" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>DSL Tools Forum Moved</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/10/15/dsl-tools-forum-moved.aspx</link><pubDate>Mon, 15 Oct 2007 19:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5462571</guid><dc:creator>PedroSilva</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/5462571.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=5462571</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=5462571</wfw:comment><description>In case you're looking for the DSL Tools forum and can't find it at its last location, it has moved into the VSX (stands for Visual Studio Extensibility :)&amp;nbsp;forum, so you can ask your DSL-related questions there. And, here's the new link: &lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=57&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=57&amp;amp;SiteID=1&lt;/A&gt;.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5462571" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/News/default.aspx">News</category><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Microsoft Moves Ahead with Software Modeling</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/08/01/microsoft-moves-ahead-with-software-modeling.aspx</link><pubDate>Wed, 01 Aug 2007 18:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4171311</guid><dc:creator>PedroSilva</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/4171311.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=4171311</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=4171311</wfw:comment><description>&lt;P&gt;There's an interesting story in eWeek about &lt;A class="" href="http://www.eweek.com/article2/0,1895,2164678,00.asp" mce_href="http://www.eweek.com/article2/0,1895,2164678,00.asp"&gt;Microsoft's work on Software Modeling&lt;/A&gt;. A lot of discussion about the future, but DSL Tools is really the present and the tip of the spear for a lot of the work that Microsoft is doing in software modeling. As the DSL runtime evolves we'll get more functionality that will help with modeling, including integrating DSLs in more closely with Software Factories.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Also, as more groups begin producing models based on DSLs, we'll start to see a real ecosystem of designers that can be used, reused for specific purposes, and extended by customers.&lt;/P&gt;
&lt;P&gt;So, what do you as customers think of the move to software modeling? And, coding by designers and factories? Is this really where the future of software development is heading? I'd love to hear your thoughts on the matter...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4171311" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/Misc/default.aspx">Misc</category><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>DSL Designer for WIX</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/07/12/dsl-designer-for-wix.aspx</link><pubDate>Thu, 12 Jul 2007 18:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3833299</guid><dc:creator>PedroSilva</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/3833299.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=3833299</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=3833299</wfw:comment><description>&lt;P&gt;&lt;A class="" href="http://spaces.msn.com/mgroves/" mce_href="http://spaces.msn.com/mgroves/"&gt;Mark&lt;/A&gt; passed around a link to a cool new &lt;A class="" href="http://www.codeplex.com/dsl4wix" mce_href="http://www.codeplex.com/dsl4wix"&gt;DSL that lets you generate the WIX&lt;/A&gt; for a setup project from a diagram (or model) of your set of applications. This looks like a really cool use of DSL Tools, and it's on &lt;A class="" href="http://www.codeplex.com/" mce_href="http://www.codeplex.com/"&gt;CodePlex&lt;/A&gt; for anyone that wants to have a look...&lt;/P&gt;
&lt;P&gt;This got me thinking... There's been a lot of talk about the DSL runtime itself. But, I was interested in what DSL designers are being created out there by our customers. So, if you've been working on a cool DSL let me know. And, I'll try to put together a list of the other cool designers that are out there.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3833299" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>T4 Editor by Clarius</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/06/28/t4-editor-by-clarius.aspx</link><pubDate>Fri, 29 Jun 2007 00:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3592463</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/3592463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=3592463</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=3592463</wfw:comment><description>&lt;P&gt;Clarius has recently released their latest version of a &lt;A class="" href="http://www.clariusconsulting.net/blogs/vga/archive/2007/06/06/26196.aspx" mce_href="http://www.clariusconsulting.net/blogs/vga/archive/2007/06/06/26196.aspx"&gt;T4 template editor&lt;/A&gt; - something quite useful for those DSL authors doing very much code generation. The editor includes:&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Syntax coloring&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Intellisense/Code completion&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Collapsible regions of code blocks&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Design-time preview of your transformation with dynamic properties support through the Properties window.&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3592463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>DSL Tools for Orcas</title><link>http://blogs.msdn.com/pedrosilva/archive/2007/06/11/dsl-tools-for-orcas.aspx</link><pubDate>Mon, 11 Jun 2007 18:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3231326</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/3231326.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=3231326</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=3231326</wfw:comment><description>In case you've all been wondering what has been happening with DSL Tools since v1 shipped, we've been working on getting it into the Orcas releases. The DSL runtime is now in the VS box itself, so it's no longer necessary to install the runtime with your designers. And, the new runtime has been in the latest CTP and Betas of Orcas. The DSL authoring is still shipping as part of the VS SDK, and was recently release in the VS SDK Orcas June CTP. You can get it from &lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1C99A9C8-ADFC-4DE6-8B9E-2A5C6B540332&amp;amp;displaylang=en"&gt;&lt;FONT color=#0000ff&gt;MSDN Download Center&lt;/FONT&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3231326" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>DSL Designer Screenshots</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/03/28/563263.aspx</link><pubDate>Tue, 28 Mar 2006 21:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:563263</guid><dc:creator>PedroSilva</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/563263.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=563263</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=563263</wfw:comment><description>&lt;A class=headermaintitle id=_ctl0____ctl0___bt___BlogTitle HREF="/devx/default.aspx"&gt;Kristoffer&lt;/A&gt;, a UI designer working with the DSL Tools team, recently posted a &lt;A HREF="/devx/archive/2006/03/24/559975.aspx"&gt;screen shot and some questions about the new DSL Designer&lt;/A&gt; that we're working on. If you'd like a sneak peek, have a look. Also, if you have any comments for him about the new design, leave him a comment.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=563263" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>New DSL: VSTS Work Item Type Designer</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/03/20/555925.aspx</link><pubDate>Tue, 21 Mar 2006 00:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:555925</guid><dc:creator>PedroSilva</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/555925.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=555925</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=555925</wfw:comment><description>&lt;P&gt;&lt;A HREF="/darrenj/"&gt;Darren Jefford&lt;/A&gt; just posted about the &lt;A HREF="/darrenj/archive/2006/03/20/555821.aspx"&gt;Work Item Type Designer&lt;/A&gt; that he's been working on for a while. This designer was built using early versions of the &lt;A href="http://msdn.microsoft.com/vstudio/DSLTools/"&gt;DSL Toolkit&lt;/A&gt;, and now he's updating it to the Feb CTP. On the bright side, there was a lot of custom code that he no longer needed because many of those things have been rolled into the toolkit.&lt;/P&gt;
&lt;P&gt;The Work Item Type Designer allows you to extend the VSTS work item system, by defining your own work item types and the state transitions that the work items may go through. Currently, this is only allowed in Team Foundation Server by writing a complex XML file by hand, but Darren's designer allows an admin to do this through a graphical designer. It's nice to have other parts of Team System starting to look at how they can use DSL Tools to expose some of their functionality.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=555925" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Using Gaston's T4 Editor with GAT</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/03/17/554081.aspx</link><pubDate>Sat, 18 Mar 2006 00:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:554081</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/554081.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=554081</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=554081</wfw:comment><description>&lt;P&gt;&lt;A href="http://weblogs.asp.net/GMilano/"&gt;Gaston&lt;/A&gt; recently &lt;A href="http://weblogs.asp.net/GMilano/archive/2006/03/16/440356.aspx"&gt;posted how to use his T4 template editor to work with GAT&lt;/A&gt; (Microsoft's Guidance Automation Toolkit) templates. DSL Tools and GAT both use the T4 text templating engine, so if you learn to write templates in one, you can use that knowledge for the other.&lt;/P&gt;
&lt;P&gt;And, now, you can use Gaston's T4 editor for both, too.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=554081" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Programmatically Loading DSL Domain Model</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/03/14/551341.aspx</link><pubDate>Tue, 14 Mar 2006 20:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:551341</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/551341.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=551341</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=551341</wfw:comment><description>&lt;A href="http://clariusconsulting.net/blogs/kzu/"&gt;Daniel&lt;/A&gt; has a great post about how to &lt;A href="http://clariusconsulting.net/blogs/kzu/archive/2006/03/09/LoadDSLModel.aspx"&gt;programmatically load a DSL domain model file&lt;/A&gt;. This is useful in case you want to process the domain model file outside of the DSL designer, like in a GAT or VS add-in, or run across the domain model data in a command-line tool.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=551341" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Customization: Setting Position of a Shape When Its Created</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/02/24/538777.aspx</link><pubDate>Fri, 24 Feb 2006 21:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:538777</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/538777.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=538777</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=538777</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;There have been several &lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=267965&amp;amp;SiteID=1"&gt;questions on the DSL Tools forum&lt;/A&gt; about how to set shapes at specific locations when they're create. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;That type of custom placement that&amp;nbsp;is definitely possible to do in our diagrams. Our modeling system has a feature called Rules that are fired within, or at the end of, a transaction (but before it's complete), this allows you to respond to changes in the model and make other changes in response because you're still within the transaction context. Therefore, to do that custom placement of shapes, you need to create a Rule.&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;A Rule is a class that derives from one of the Rules defined in the modeling system (in this case the AddRule), and overrides one or more of its methods (ElementAdded). It also needs a RuleOn attribute placed on the class. The attribute allows you to say what type&amp;nbsp;the&amp;nbsp;Rule&amp;nbsp;works one and when the rule should fire (inline, local commit, and top level commit). Here's some code for such a rule:&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; Rule to call programmatically set the position of a Shape when&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; it's added to the diagram (directly or indirectly). This rule&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; gets called when the transaction's top level commit is called.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;RuleOn&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;typeof&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ParentShapeContainsNestedChildShapes&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;), FireTime = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;TimeToFire&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;.TopLevelCommit)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ShapeAddedToDiagramRule&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; : &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;AddRule&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;double&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; offset = 0.25;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;PointD&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; location = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;PointD&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(0.25, 0.25);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;override&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;void&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; ElementAdded(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ElementAddedEventArgs&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Shape&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; shape = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;null&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ParentShapeContainsNestedChildShapes&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; nestedLink = e.ModelElement &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;as&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ParentShapeContainsNestedChildShapes&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; (nestedLink != &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;null&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;shape = nestedLink.NestedChildShapes &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;as&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Shape&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; (shape != &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;null&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &amp;amp;&amp;amp; shape.Diagram != &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;null&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;// Expand the shape and move it to its new position&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;shape.IsExpanded = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;true&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;shape.Location = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;PointD&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(location.X, location.Y + offset);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;// Adjust the height offset for the size of the shape&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;// (I'm assuming that the DefaultContainerMargin&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;// provides for a decent spacing between the shapes)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;offset += shape.Size.Height + shape.Diagram.DefaultContainerMargin.Height;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;The above code starts at the top-left of the diagram and moves additional shapes down the diagram. You'll need to specify the starting offset and location (and probably reset it), because this code just always assumes the top left of the diagram, but it gives an idea of how to get this&amp;nbsp;working.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;A HREF="/photos/pedrosilva/images/538774/original.aspx" target=_blank&gt;&lt;IMG src="/photos/pedrosilva/images/538774/240x306.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;You also need to the the modeling system know that this rule exists. Rules we generate in code automatically get added to the modeling system, but not custom written ones. To do this, you need to&amp;nbsp;let&amp;nbsp;the modeling system know&amp;nbsp;to add your new rule, like this:&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;namespace &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;MicrosoftCorporation.Language1.Designer&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;internal static partial class &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;GeneratedMetaModelTypes&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// If you have hand-written rules, you define a&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// partial GeneratedMetaModelTypes and put the types&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// of the rules as internal static fields of the class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// For example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// internal static Type MyRuleType = typeof(MyRule);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;internal static &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Type &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ShapeAddedToDiagramRuleType = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;typeof&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ShapeAddedToDiagramRule&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Define an internal field for your rule type, make sure the namespace points to the one for your Designer (this class is defined as partial in the DesignerMetaModelTypes.csfile in your project), and the modeling system goes through all of the fields on this class and adds them to the notification list.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;With all of this custom code, it's best that you put it into a separate code file, sothat it doesn't get deleted whenever you transform all of the templates again.&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=538777" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Edward Bakker on Using DSL Toolkit</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/02/03/524198.aspx</link><pubDate>Fri, 03 Feb 2006 20:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:524198</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/524198.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=524198</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=524198</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.edwardbakker.nl/"&gt;Edward Bakker has&amp;nbsp;a great blog&lt;/a&gt; that's largely about his adventures in using the&amp;nbsp;DSL Toolkit to create some domain-specific languages. He's done an 18-post series so far on DSL Tools, ranging from just getting started and introductory information to creating a Service Contract Description Language and designer.&lt;/p&gt;
&lt;p&gt;It's really great to see how people are using DSL Tools to build some very cool stuff...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=524198" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Customization: Setting EndPoint positions on a Connector.</title><link>http://blogs.msdn.com/pedrosilva/archive/2006/02/01/522510.aspx</link><pubDate>Thu, 02 Feb 2006 00:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:522510</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/522510.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=522510</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=522510</wfw:comment><description>&lt;p&gt;There was a question on our forums about how to set the end points of a Connector programmatically, rather than having them calculated dynamically. This is possible to do in DSL Tools with some custom code.&lt;/p&gt;
&lt;p&gt;You&amp;nbsp;can set the FromEndPoint and ToEndPoint properties on Connector. However, end points also have a fixed flag. By default, the FixedFrom and FixedTo properties are set to VGFixedCode.Algorithm, so the routing engine comes along later, during the Transaction.Commit, and wipes out the From/ToEndPoints that you set. To use the end point you specified, you also need to set those fixed properties to VGFixedCode.Caller. Then, the routing engine will use the end points you provide.&lt;/p&gt;
&lt;p&gt;Here's a code&amp;nbsp;example below that makes the lines route to specific points:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;public partial class ExampleConnector : Connector&lt;br/&gt;&amp;nbsp;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;public override void OnShapeInserted()&lt;br/&gt;&amp;nbsp;&amp;nbsp;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;base.OnShapeInserted();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;using (Transaction t = this.Store.TransactionManager.BeginTransaction("ChangeFromEndPoint"))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.FromEndPoint = new PointD(this.FromShape.AbsoluteBounds.Center.X,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.FromShape.AbsoluteBounds.Top);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.FixedFrom = Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGFixedCode.Caller;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.ToEndPoint = new PointD(this.ToShape.AbsoluteBounds.Left,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ToShape.AbsoluteBounds.Center.Y);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.FixedTo = Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGFixedCode.Caller;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.Commit();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;}&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Doing so produces Connectors that look like this (notice that all connectors starte and end at the same point of either side):&lt;/p&gt;
&lt;p&gt;&lt;a HREF="/photos/pedrosilva/images/original/FixedEndPoints.aspx"&gt;&lt;img src="/photos/pedrosilva/images/522485/425x136.aspx"/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Typically, free-form connectors look like the following:&lt;/p&gt;&lt;a HREF="/photos/pedrosilva/images/original/FreeEndPoints.aspx"&gt;&lt;img src="/photos/pedrosilva/images/522487/425x222.aspx"/&gt;&lt;/a&gt; 
&lt;p&gt;And, as an added bonus, I got to use the new image gallery features on MSDN blogs to show the pretty pictures. :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=522510" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item><item><title>Say Hi to George</title><link>http://blogs.msdn.com/pedrosilva/archive/2005/12/06/500563.aspx</link><pubDate>Tue, 06 Dec 2005 19:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:500563</guid><dc:creator>PedroSilva</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pedrosilva/comments/500563.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pedrosilva/commentrss.aspx?PostID=500563</wfw:commentRss><wfw:comment>http://blogs.msdn.com/pedrosilva/rsscomments.aspx?PostID=500563</wfw:comment><description>I just noticed that &lt;a href="http://blogs.msdn.com/georgem/default.aspx"&gt;George Mathew&lt;/A&gt; recently started blogging. He's also a developer on DSL Tools. He's worked on the text templating engine and the underlying domain model infrastructure. Stop by and say hello.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=500563" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pedrosilva/archive/tags/DSL+Tools/default.aspx">DSL Tools</category></item></channel></rss>