<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Digital Morphogenesis &#187; Programming</title>
	<atom:link href="http://www.nzarchitecture.com/blog/index.php/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nzarchitecture.com/blog</link>
	<description>Evolving architecture through computation</description>
	<lastBuildDate>Fri, 23 Dec 2011 11:10:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Scripting cultures &#8211; Mark Burry</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 01:48:52 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Bibliography]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=1120</guid>
		<description><![CDATA[This review of Mark Burry&#8217;s Scripting Cultures (On Amazon) – like my review of The New Mathematics of Architecture (also by Mark) – carries the disclaimer that Mark is the supervisor of my PhD. I should also confess to illustrating the project in the final chapter, for which I will shoulder the blame if it [...]]]></description>
			<content:encoded><![CDATA[<p><em>This review of Mark Burry&#8217;s <em>Scripting Cultures (<a href="http://www.amazon.com/Scripting-Cultures-Architectural-Design-Programming/dp/0470746416?_encoding=UTF8&amp;tag=nzarchitectur-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">On Amazon</a><img class=" jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy xsmzsmturdlynmxvgugd" style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=nzarchitectur-20&amp;l=ur2&amp;o=1" alt="" width="1" height="1" border="0" />)</em> – like my review of</em> <a title="The New Mathematics of Architecture" href="http://www.nzarchitecture.com/blog/index.php/2010/10/26/the-new-mathematics-of-architecture/">The New Mathematics of Architecture</a><em> (also by Mark) – carries the disclaimer that Mark is the supervisor of my PhD. I should also confess to illustrating the project in the final chapter, for which I will shoulder the blame if it doesn&#8217;t look as good as the other chapters.<br />
</em></p>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/img_5556/" rel="attachment wp-att-1175"><img class="alignnone size-medium wp-image-1175" title="IMG_5556" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/10/IMG_5556-470x346.jpg" alt="" width="470" height="346" /></a></p>
<p><em>Scripting Cultures</em> investigates why designers choose to script. Burry suggests two motivations: productivity and control. The evidence for these claims consists of a biographical account of Burry&#8217;s own work, intermixed with a set of &#8216;thought experiments,&#8217; and a set of interviews with thirty of the industries leaders (including: Casey <span><span>Reas</span></span> [Processing], Robert Aish [Generative Components + <a title="DesignScript – Autodesk" href="http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/">Designscript</a>], John Frazer [An Evolutionary architecture], Axel Kilian, Neil Leach, Denis Shelden [Gehry] and Hugh Whitehead [Fosters]).</p>
<p>On the surface, productivity and control seem like utilitarian motivations to script, especially when compared to the writing normally associated with scripting: chest thumping proclamations of new paradigms footnoted with references towards incomprehensible continental philosophy. In place of these typical grandiose proclamations is a very honest assessment of how scripting can be applied to the design process. Burry admits that despite being introduced to scripting in a class taught by William Mitchell in the 1970&#8242;s, he had no interest in scripting until he needed it for part of the design of the Sagrada Família in 1989. And even after picking up scripting Burry says he still finds it difficult and time consuming &#8211; as do all of the other 30 scripting wizards he interviewed. Burry&#8217;s openness about the scripting process is not a dry utilitarian argument (despite appearances) but rather a refreshingly frank account of how scripting can augment the design process.</p>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/img_5559-2/" rel="attachment wp-att-1177"><img title="IMG_5559" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/11/IMG_55591-470x310.jpg" alt="" width="470" height="310" /></a></p>
<p>Burry sees the designer as central to the design process. His definition of design – the &#8220;mapping of an idea through to an intended outcome&#8221; – focuses on the designers aspiration rather than fetishising algorithmic effects. As such Burry views scripting as a conduit to enhance the design process, whether it is using productivity to iterate faster, or whether it is using the control of scripting to break free from the confines of black-boxed drafting software. The second half of the book focuses on a number of case studies where this happens. The case studies are characteristically honest about the challenges they faced and design method employed. I personally <span><span>preferred</span></span> the first half of the book to the case studies, but that might be because I am familiar with the case studies &#8211; I imagine someone who has not scripted before could find it insightful to see the nuts-and-bolts application of scripting in practice.</p>
<p>The book concludes by arguing for scripting as &#8220;an essential component of 21st-century design education.&#8221; In doing so <span><span>Burry</span></span> cautions against <span><span>classifying</span></span> scripting as a single culture that could be seen as an &#8220;<span><span>exclusivist</span></span> force.&#8221;  Instead <span><span>Burry</span></span> affirms the importance of the designer in the scripting process, suggesting scripting is at home with the many cultures of design practice.</p>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/img_5562/" rel="attachment wp-att-1178"><img class="alignnone size-medium wp-image-1178" title="IMG_5562" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/11/IMG_5562-470x312.jpg" alt="" width="470" height="312" /></a></p>
<p>From my non-objective point of view, Scripting Cultures seems to articulate a maturing in our understanding of digital practice, away from self-congratulatory ego-shots demonstrating how clever we could be with scripts, and towards a time when scripting becomes a part of the everyday culture of design. For <span><span>beginners</span></span> I imagine this <span><span>un</span></span>-embellished description of scripting could offer some useful pathways into understanding the history, culture and role of scripting in design. For <span><span>experienced</span></span> <span><span>scripters</span></span> it is reassuring to hear 30 experts tell you they find it difficult as well. My major gripe with the book is that it only comes in physical form. For a book that so fully <span><span>celebrates</span></span> the capacity of technology to contribute to culture, waiting for it to be printed and mailed to you seems a little perverse. This is made even more <span><span>stranger</span></span> by the fact that Wiley &#8211; the publisher &#8211; is <span><span>relatively</span></span> progressive in making AD the <span><span>journal</span></span> <span><span>available</span></span> online. Yet for Scripting Cultures not even the contents is online (I put it below) and equally <span><span>strangely</span></span> there is a website where you can download some of the scripts from the case studies <a href="http://www.wiley.com/WileyCDA/Section/id-611118.html">http://www.wiley.com/<span><span>WileyCDA</span></span>/Section/id-611118.html</a> but it was not mentioned in the book. However medium aside, Scripting Cultures makes an important contribution to the culture of scripting.</p>
<p>&#8212;</p>
<p>Somehow I have managed to end up with two copies of Scripting Cultures. If you would like my extra copy (its hardback) enter your name and email below. On the 17th of November I will randomly select someone to send it to. If you don&#8217;t win you can always pick it up <a href="http://www.amazon.com/Scripting-Cultures-Architectural-Design-Programming/dp/0470746416?_encoding=UTF8&amp;tag=nzarchitectur-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">on Amazon</a><img class=" jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy jumxlexelqiyaqgrndiy xsmzsmturdlynmxvgugd" style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=nzarchitectur-20&amp;l=ur2&amp;o=1" alt="" width="1" height="1" border="0" /> and leave a comment on this post. Good luck!</p>
<p>18-11-2011: The winner of the competition was Harri Lewis, a post-graduate student at the University of Bath and blogger at <a href="http://www.harrilewis.com/">HarriLewis.com</a></p>
<p>&#8212;</p>
<p>Chapters:</p>
<ol>
<li>Scripting cultures</li>
<li><span><span>Contextural</span></span> summary of computing, scripting and speculative design</li>
<li>Cultural defence</li>
<li>Resources</li>
<li>Dimensions</li>
<li><span>Scripted productivity: Gaudi&#8217;s rose windows</span></li>
<li>Composition and form</li>
<li>Simplifying complexity for fabrication</li>
<li>Scripting narrative space: Our world and The Third Policeman</li>
<li><span><span>Performative</span></span> scripting</li>
<li>Cultural account: Scripting and shifts in authorship</li>
<li>Glossary</li>
<li>Scripting tools</li>
<li>Recommended reading</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/11/05/scripting-cultures-mark-burry/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Datamining Grasshopper</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 03:18:05 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=1075</guid>
		<description><![CDATA[Recently I edited out a section from a top-be-published journal article because it meandered off topic and past the word count. Despite the journal editor’s draconian word count, I thought it potentially useful to other people. So here it is, rewritten and free of word counts. &#8212; There are 2035 parametric models shared publicly on the Grasshopper forum. I [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I edited out a section from a top-be-published journal article because it meandered off topic and past the word count. Despite the journal editor’s draconian word count, I thought it potentially useful to other people. So here it is, rewritten and free of word counts.</p>
<p>&#8212;</p>
<p>There are 2035 parametric models shared publicly on the <a href="http://www.grasshopper3d.com/forum/">Grasshopper forum</a>. I downloaded these models and looked for trends in the way they were structured.</p>
<h2>1. Most popular nodes</h2>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/top-1-30-2/" rel="attachment wp-att-1112"><img class="alignnone size-medium wp-image-1112" title="top-1-30" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/09/top-1-30-386x470.png" alt="" width="386" height="470" /></a></p>
<p>Unsurprisingly the slider was the most popular node with 11,842 occurrences in the 2035 models. Panel, Group and Scribble come in 2<sup>nd</sup>, 3<sup>rd</sup> and 9<sup>th</sup> place, which is the result of people documenting their models (in the forum people know their model will be read so they put some effort into explaining it). 4<sup>th</sup> place is occupied by ‘List Item,’ which leads a group of list management nodes &#8211; Series, Cull, Graft, List Length, Flatten Tree &#8211; dominating the top 30 most popular nodes. It is significant that the most popular modelling operation in Grasshopper should be list management. When teaching Grasshopper I find list management to be the hardest topic to explain, and yet Grasshopper&#8217;s list management tools are some of the most powerful short of pure scripting. It should be pointed out these results are a little biased in that there are many different types of geometric modelling nodes and while no single node is popular, in aggregate they are popular. Nevertheless the list of most popular nodes should serve as a useful guide for teaching Grasshopper and the customisation of the Grasshopper menus.</p>
<p>The full list of most popular nodes can be <a href="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/09/Workbook2.csv">downloaded here</a>.</p>
<h2>2. Strangely unpopular</h2>
<p>The neglected nodes speak volumes for how people use Grasshopper. Falling down the bottom of the popularity list is poor old &#8216;Cluster,&#8217; who sits in 159<sup>th</sup> place. There are a few reasons for this:</p>
<ol>
<li>Cluster has only been available in Grasshopper 0.8 while the models in the Grasshopper forum stretch back to version 0.6.</li>
<li>People are probably more inclined to share small snippets of models on the forum and therefore don&#8217;t require clusters.</li>
<li>Clusters was buggy when it was re-released.</li>
</ol>
<p>Yet, if we only look at the models created in Grasshopper 0.8 and only look at the models that contain more than 26 nodes, only 3.6% have one or more clusters in them <img src='http://www.nzarchitecture.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  This means most of the models people are creating in Grasshopper, even the really really really large ones, are totally unstructured, like the example in the next section:</p>
<h2>3. Model size</h2>
<p>The medium size of a model shared on the forum is 26 nodes, probably lower than what you would expect in practice due to people often sharing just small snippets of models. Yet a couple of models contained over 1000 nodes. The largest model I could find on the Grasshopper forum is a monster by the name of &#8216;hybridB02 (2).ghx&#8217; (<a href="http://www.grasshopper3d.com/forum/topics/deforming-circles">in this thread</a>) weighing 20mb and containing 2584 nodes. It looks a little bit like this:</p>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/biggest_2584/" rel="attachment wp-att-1084"><img class="alignnone size-full wp-image-1084" title="biggest_2584" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/09/biggest_2584.jpg" alt="" width="470" height="357" /></a></p>
<p>hybridB02 (2).ghx is a pretty classic case of copy-paste, and if it gets the job done who cares. But this type of unstructured model could be a huge liability if it ever needs to be edited. Say the original pink box is wrong, you edit it but to propagate the edit through the model you need to delete every instance you copy-pasted and copy-paste in the new version. Or, as we often do, start again.</p>
<h2><a href="http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/better/" rel="attachment wp-att-1094"><img class="alignnone size-full wp-image-1094" title="better" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/09/better.jpg" alt="" width="470" height="278" /></a></h2>
<p><a href="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/09/1945__hybridB02_tidy.gh_.zip">Download model</a></p>
<p>I was curious about what the model would look like refactored and quickly attempted to refactor it myself (see above). One of my first moves was to reduce the dimensionality of the model. There are approximately 500 sliders in the original model, so the model is effectively no longer parametric since moving the 500 sliders would be just as difficult as moving 500 points on an explicit model by hand. Often a formula is used to reduce dimensionality of a parametric model, however in this case I used rotational symmetry to simplify things. This might have made the geometry too neat for some tastes but you could always use a formula to tweak each rotated instance. The resulting model has 126 nodes and 20 sliders, making exploration of the design space far more viable &#8211; although the model is by no means perfect.</p>
<p>Refactoring the model introduced quite a few of the list management nodes. This is both the reason they are popular (they are really useful) and the reason managing lists is problematic (people starting out in Grasshopper are unlikely to use them). In completing this research I had planned to make one more list of my own, a list of popular combinations of nodes but this will likely have to wait for another paper and a more friendly editor. It looks like my friend the cluster will have to wait a while longer too, as I have quite subconsciously left him out of the refactored model.</p>
<p>&nbsp;</p>
<p>&#8212;</p>
<p>And if you are in, or near, Melbourne in November, we are going to be hosting a week long computational design workshop with Hugh Whitehead &#8211; Director of the Specialist Modelling Group at Fosters. Find out more at <a href="http://designingthedynamic.com/">http://designingthedynamic.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/09/20/datamining-grasshopper/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Yeti &#8211; 0.2</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/08/28/yeti-0-2/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/08/28/yeti-0-2/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 23:11:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=1041</guid>
		<description><![CDATA[Sorry there hasn&#8217;t been many posts recently, I have been spending a lot of time on Yeti. Version 0.2 is ready for download at yeti3d.com. Above is a video tutorial I made for reproducing Axel Kilian&#8217;s Generative Components Roof with Yeti. It might go through stuff a bit fast because I tried to get everything into one [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/28227628?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="470" height="353"></iframe></p>
<p>Sorry there hasn&#8217;t been many posts recently, I have been spending a lot of time on Yeti. Version 0.2 is ready for download at <a href="http://www.yeti3d.com">yeti3d.com</a>. Above is a video tutorial I made for reproducing <a href="http://generativecomponents.wikispaces.com/roof">Axel Kilian&#8217;s Generative Components Roof </a>with Yeti. It might go through stuff a bit fast because I tried to get everything into one video. Next up is trying Yeti out on a few of my own projects in the coming weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/08/28/yeti-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DesignScript &#8211; Autodesk</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 01:21:11 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=932</guid>
		<description><![CDATA[Autodesk&#8217;s &#8216;acquisition&#8217; of CAD visionary Robert Aish is about to reach maturity and the return on investment is looking a little shaky. After three years working at Autodesk, Robert Aish has tentatively been previewing his latest thesis: DesignScript. Although you wouldn&#8217;t know it. The release of DesignScript parallels Aish&#8217;s release of Generative Components while at Bentley: presentations and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/banner-2/" rel="attachment wp-att-945"><img class="alignnone size-medium wp-image-945" title="banner" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/06/banner-470x330.jpg" alt="Robert Aish" width="470" height="330" /></a></p>
<p>Autodesk&#8217;s &#8216;acquisition&#8217; of CAD visionary Robert Aish is about to reach maturity and the return on investment is looking a little shaky. After three years working at Autodesk, Robert Aish has tentatively been previewing his latest thesis: DesignScript.</p>
<p>Although you wouldn&#8217;t know it.</p>
<p>The release of DesignScript parallels Aish&#8217;s release of Generative Components while at Bentley: presentations and papers at conferences; faux secrecy; and an extended private alpha with invited practitioners. It worked for Generative Components in 2003 when the computational design community was primarily limited to an old boys club of conferences and invited projects. In 2011 it remains to be seen if you can successfully launch a project while ignoring the  expanding computational design community online - there is currently no details of DesignScript on the internet and it took me a month of emailing Autodesk to finally get a <em>video</em> of DesignScript (which they posted publicly <a href="http://au.autodesk.com/?nd=class&amp;session_id=7636">here</a>).</p>
<p>So in an internet exclusive, I am going to save you a month of emails to Autodesk and just tell you what DesignScript is.</p>
<h2>The language</h2>
<p>DesignScript is a new parametric programming language, which Aish has seemingly produced by combining Generative Components transaction files, with Python, mixed with dataflow programming techniques. Initially it looks like a pretty standard scripting language, to generate a point you write:</p>
<pre class="brush: csharp; title: ; notranslate">
pt = Point.ByCoordinates(1,3,4);
</pre>
<p>The associative dataflow aspects come into play if you write:</p>
<pre class="brush: csharp; title: ; notranslate">
A = 4;
B = 3*A;
A = 5;
</pre>
<p>In a language like C, Python or Java, this would evaluate to A = 5 and B = 12. However in Draft Script A = 5 and B = 15. The reason for this is that on line 2, B is not set to three times the current value of A and is instead related to A, so a subsequent change in the value of A also effects the value of B. This is a bit like how a spreadsheet, or any other dataflow programming language, operates. However the metaphor gets mixed when the value of A changes because unlike a spreadsheet, where a variable can only be defined once (a cell can only have one value), in Draft Script the value of A is defined twice and uses a normal procedural paradigm to decide what version the final value is. Confusingly this means the order of certain statements (A=4 &amp; A=5) matter, while other statements (B = 3*A) could be anywhere in the script and have the same outcome. Contrast this with <a href="http://yeti3d.com">Yeti</a>:</p>
<pre class="brush: csharp; title: ; notranslate">
double: &amp;B (A * 3)
double: &amp;A 5
</pre>
<p>This evaluates A = 5 and B = 15. You will notice the order of A and B do not matter however, to avoid confusion, Yeti only allows you to define each variable once.</p>
<p>DraftScript also has some pretty neat handling of lists. Take for example:</p>
<pre class="brush: csharp; title: ; notranslate">
start = Point.ByCoordinates((1..5..1), 1, 0);
end = Point.ByCoordinates((1..5..1), 5, 0);
line = Line.ByStartPointEndPoint(start, end);
</pre>
<p>The code (1..5..1) defines the list of numbers: 1, 2, 3, 4, 5. So the first line actually produces 5 points starting at 1,1,0 and ending at 5,1,0. Straight lines are then drawn between these points on line 3, starting with the first item in the start points, and starting with the second item in the end points (signified by the &lt;2&gt;), making diagonal lines between the points.</p>
<p><a href="http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/untitled-1-2/" rel="attachment wp-att-944"><img class="alignnone size-medium wp-image-944" title="Untitled-1" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/06/Untitled-1-470x325.jpg" alt="Design Script interface" width="470" height="325" /></a></p>
<h2>The interface</h2>
<p>DesignScript is currently just a scripting language, and while Autodesk focus on getting the language right it is clear this is the foundation of something quite a bit larger. Like a Generative Components transaction file, there is no reason a DesignScript could not be generated from a visual interface &#8211; or even from the action of modeling itself. This is the opposite approach to Grasshopper where the interface came first and the Grasshopper xml language is the consequence. Autodesk are banking on this approach to deliver one universal language to underlie many different parametric interfaces, and at the same time Autodesk are precariously close to developing a universal language too general to be of use to any particular interface. However the real draw of DesignScript is its larger interface: AutoCAD.</p>
<p><span style="font-size: 20px; font-weight: bold;">AutoCAD</span></p>
<p>Lets face it, the worst part of Generative Components is Microstation; architecture definitely went through its hipster period in the 2005 when the most innovative architecture in the world was being produced on software that belonged in the 1980&#8242;s. AutoCAD is perhaps no better, however I am fairly confident it is the most installed CAD software in the world and, for CAD monkeys of a certain generation, the most known.</p>
<p>The killer feature of DesignScript is that it can be compiled into an AutoCAD feature, so along side your line tool and your square tool, sits the beam tool you wrote in Design Script. With AutoCAD and Revit both belonging to Autodesk, they must be thinking about compiling DesignScript into Revit Families. Queue jokes about Revit stealing another feature ArchiCAD has had for 20 years. But unlike ArchiCAD&#8217;s GDL language, which is this badly neglected Visual Basic like language, DesignScript is being developed at the forefront of Autodesk&#8217;s research efforts. Compiling scripts into Revit families would eliminate the current practice of baking Grasshopper or Digital Project models and importing them as static geometry to be sliced and diced by Revit. Instead you will be able to open the DesignScript model in Revit and associate it directly with the geometry in Revit, if you make a change in Revit you don&#8217;t need to go back and rebake the geometry, the DesignScript model (and the meta data) updates automatically &#8211; or so I hope.</p>
<h2>The future of DesignScript</h2>
<p>Despite three years of development DesignScript, in its current state, appears quirky rather than revolutionary. Its future success depends heavily on the forthcoming interfaces &#8211; something Robert Aish has never quite got right &#8211; and the integration between AutoCAD and Revit &#8211; something Autodesk have never quite got right. While these look uncertain at the moment, if Autodesk and Robert Aish can pull them off, DraftScript may make parametric modelling as common as the Revit BIM models it resides in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/06/27/designscript-autodesk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Yeti &#8211; public release</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/05/29/yeti-public-release/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/05/29/yeti-public-release/#comments</comments>
		<pubDate>Sun, 29 May 2011 05:38:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=927</guid>
		<description><![CDATA[Yeti is now available for download from yeti3d.com. It is still a proof-of-concept more than a parametric modelling environment, but there is enough going on that others may find it useful &#8211; particularly for setting the underlying geometry of models. The latest version allows the generation of custom objects (shown in the video above). The geometry remains [...]]]></description>
			<content:encoded><![CDATA[<p><object width="470" height="335"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=24371904&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="470" height="335" src="http://vimeo.com/moogaloop.swf?clip_id=24371904&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>Yeti is now available for download from <a href="http://yeti3d.com/">yeti3d.com</a>. It is still a proof-of-concept more than a parametric modelling environment, but there is enough going on that others may find it useful &#8211; particularly for setting the underlying geometry of models.</p>
<p>The latest version allows the generation of custom objects (shown in the video above). The geometry remains really limited &#8211; points, straight lines and circles &#8211; until I sort out how arrays of data will work.</p>
<p>Yeti is written in C# and I made the source available at <a href="https://bitbucket.org/dmmd123/yeti/wiki/Home">bitbucket</a> in case anyone is curious about how it goes together or wants to make it better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/05/29/yeti-public-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 &amp; WebGL</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/05/16/html5-webgl/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/05/16/html5-webgl/#comments</comments>
		<pubDate>Mon, 16 May 2011 10:13:39 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=912</guid>
		<description><![CDATA[Innovation comes from funny places. In 2005 Apple introduced the Dashboard; a largely impractical application that overlaid the desktop with little Widgets reminding you of the time, weather and stock-market prices. The most redeeming feature of the Dashboard was that when you added a new Widget to the Dashboard, it made the screen ripple like it was made from water, and since [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-919" href="http://www.nzarchitecture.com/blog/index.php/2011/05/16/html5-webgl/banner/"><img class="alignnone size-full wp-image-919" title="banner" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/05/banner.jpg" alt="" width="470" height="281" /></a></p>
<p>Innovation comes from funny places. In 2005 Apple introduced the Dashboard; a largely impractical application that overlaid the desktop with little Widgets reminding you of the time, weather and stock-market prices. The most redeeming feature of the Dashboard was that when you added a new Widget to the Dashboard, it made the screen ripple like it was made from water, and since not all computers at the time were powerful enough to do this, the Dashboard&#8217;s rippling became an unofficial performance benchmark. Despite the frivolous nature of Dashboard, the Widgets have an important legacy (other than being a precursor of the iPhone apps).</p>
<p>Dashboard Widgets are made up of HTML, CSS and Javascript &#8211; the same stuff websites are made from. Except Apple added one extra word to the Widgets vocabulary: canvas. This little, propitiatory, modification of HTML, allowed Widget designers to write Javascript code that drew shapes in the Widget, much like Processing.  Three years later, in 2008, and HTML standard was updated, to standardise the drawing of drop-shadows across browsers (a big deal if you are a webdesigner) and to include the canvas tag as part of the official HTML standard (a big deal if you are an architect). Now in 2011, &#8216;canvas&#8217; has been extended to allow the drawing of 3d shapes with WebGL.</p>
<h1>What is WebGL?</h1>
<p>Prior to WebGL the only practical way of drawing 3d objects in a web-browser was through a plugin like Flash or Java (not the same as Javascript). Plugins are slow because the when the plugin code decides to draw a line, it must ask the plugin, which must ask the webbrowser, which must ask the operating system, which must ask several other layers of the computer, to draw the line onscreen. This journey through the grapevine is inevitably slow. WebGL skips these layers by allowing Javascript access to the GPU, meaning WebGL can send data straight to your videocard to be rendered. WebGL also has the advantage that it is native to the browser, so users don&#8217;t need to download or install any additional plugins to view 3d content &#8211; currently only the latest versions of Chrome and Firefox support WebGL, but all browsers (except possibly IE) will support it in the coming months.<br />
<object width="469" height="264"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=19748027&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="469" height="264" src="http://vimeo.com/moogaloop.swf?clip_id=19748027&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h1>Why WebGL is important to CAD</h1>
<p>It is inevitable that in the near future CAD models will be able to be viewed in a browser using WebGL. There are already some early examples of this happening with <a href="http://www.youtube.com/watch?v=gkfgpkXyt0k">PythonOCC/WebGL</a> which exports 3d models to WebGl; the <a href="http://senchalabs.github.com/philogl/PhiloGL/examples/explorer/">Surface Explorer</a>, which draws doubly curved surfaces from equations; and most beautifully in the <a href="http://bodybrowser.googlelabs.com/">Google Body Explorer</a>, which allows you to interact with a rather complex 3d model of the body. And I have it on good authority that at least one major CAD manufacturer is making a &#8216;dropbox for CAD files and project data.&#8217;</p>
<p>With 3d models now viewable on the internet, the critical question becomes how much interaction will be enabled. Will you be able to view associated model data? Will you be able to modify a model? Will you be able to generate a model? Will the browser become your preferred way of designing?  Some early applications like <a href="http://cloudscad.com/">CloudSCAD</a>, <a href="http://www.3dtin.com/">3dTin</a>, <a href="http://www.shapesmith.net/">Shapesmith (shown above)</a> and <a href="http://tinkercad.com/">TinkerCAD</a>, would say &#8216;yes&#8217; to all of the above. There are some advantages to this approach:</p>
<ol>
<li>Users don&#8217;t have to download software and updates can be made instantly.</li>
<li>Theoretically the application is cross platform and cross device.</li>
<li>Users can use less powerful computers to do more complex tasks by offloading the work onto the server. The server might be able to do the rendering or object population, the server could also load a really large model while giving the user a simplified version of the area they are working on. It is also a better use of resources to have one server constantly working hard rather than every user intermittently working their computer hard.</li>
<li>Live connections to other databases. A few years ago I helped start <a href="http://www.productspec.net/">ProductSpec</a>, and it has always been on the roadmap to have the Productspec database linked to CAD models so that as manufactures change product data, this is reflected, in realtime, within the model.</li>
<li>All of the associated advantages of cloud computing: less piracy, more payment granularity, online storage/backup ect.</li>
</ol>
<p>However even with the examples of early WebGL CAD software and all the advantages listed above, I am still not entirely convinced we will be designing with WebGL in the future. For one thing CAD manufactures, who have a lot invested in large code bases, are going to be slow making the switch. There may be a new generation of companies that develop WebGL applications but (at least initially) they are going to look underdeveloped compared to their desktop rivals. Secondly, as painful as C++ development can be, writing a CAD program in Javascript is simply sadistic &#8211; there are problems with browsers being consistent, there are performance issues, there are security issues. Instead I think WebGL is going to spark a new generation of software, which are more interactive than a printed drawing and less featured than a full fledged CAD package.</p>
<p>It is interesting to see that the next iteration of architectural representation isn&#8217;t emerging from the past 20 years of discourse flowing out of architectural theorists and philosophers, but it comes from a technology Apple developed to add a bit of bling to the desktop.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/05/16/html5-webgl/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Threading Grasshopper</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/#comments</comments>
		<pubDate>Sat, 07 May 2011 06:51:08 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=870</guid>
		<description><![CDATA[An alternative title might be Why CAD software hasn&#8217;t gotten any faster in the last three years. Simply, most CAD software is written to take advantage of only one processor, leaving the other three processors in your shiny new Quad-core i7 idle. The solution to the multi-processor problem is threading. Programming threads can seem daunting, I put them off [...]]]></description>
			<content:encoded><![CDATA[<p>An alternative title might be <em>Why CAD software hasn&#8217;t gotten any faster in the last three years. </em>Simply, most CAD software is written to take advantage of only one processor, leaving the other three processors in your shiny new Quad-core i7 idle. The solution to the multi-processor problem is threading. Programming threads can seem daunting, I put them off until I had to create one for <a href="http://www.nzarchitecture.com/blog/index.php/2011/04/12/live-programming-in-rhino/">Yeti</a> to, of all things, check for updates in the background without hanging up the interface. To my surprise I found threading in modern programming languages almost elegant. Naturally I was curious about whether threads can be used in Grasshopper, and whether they give any performance increase. It turns out threads can be used in Grasshopper, and that they significantly increase performance  - on my shiny new Quad-core i7 I get an almost 200% improvement. This post is the third part of a series on Optimising Grasshopper (following on from <a href="http://www.nzarchitecture.com/blog/index.php/2010/07/31/untangling-grasshopper-part-1-design-patterns/">part one</a> and <a href="http://www.nzarchitecture.com/blog/index.php/2010/08/11/untangling-grasshopper-part-2-optimisation/">part two</a>). In this post I will explain a fairly ninja technique for breaking C# nodes down into multiple threads to be processed in parallel by <em>all</em> the processors on your computer.</p>
<h2>What are threads?</h2>
<p>Roughly speaking, a thread is a list of tasks for the processor in your computer to execute. All programs and scripts get compiled into a thread of tasks, which are then feed through the processor in linear order to produce the desired outcome. Conceptually this could be thought of as a chain of grasshopper nodes being evaluated one at a time by the processor.</p>
<div id="attachment_891" class="wp-caption alignnone" style="width: 480px"><a rel="attachment wp-att-891" href="http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/person/"><img class="size-full wp-image-891" title="person" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/05/person.jpg" alt="" width="470" height="269" /></a><p class="wp-caption-text">One processor works on the graph while the other three sit idle</p></div>
<p>Threads get interesting when you have more than one processor, like on the Quad-core Intel processor, which has four processors sitting in parallel. With a multi-processor computer, you can have each processor working on a separate thread. So the Quad-core processor can work through four threads simultaneously (it can actually work through more due to some processor magic but that is getting a little technical). The difficulty with a multi-processor computer is that the processors can not &#8216;talk&#8217; to each-other, so (as shown above) a thread can only go through one processor at a time. This essentially means that if one of the processors on the Quad-core processor gets a really long thread of tasks, it cannot ask the neighboring processors to help out with some of the tasks, even if they are sitting idle. This is why sometimes you will be updating a really complex model in Grasshopper, and see the processors only working at 25% &#8211; there is only one thread going through the processors so only one of the four processors is actually working.</p>
<h2>Multi-threading</h2>
<p>Since the processor can not break a single thread into multipul strands, we have to break the tread up for the processor. Essentially rather than giving the processor one long thread of tasks, we can break the tasks up into little bundles of work, and generate a thread of tasks for each bundle. That way we can send a single thread of tasks as multipul threads and get each processor to work on a little part by itself.</p>
<div id="attachment_892" class="wp-caption alignnone" style="width: 480px"><a rel="attachment wp-att-892" href="http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/people/"><img class="size-full wp-image-892" title="people" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/05/people.jpg" alt="" width="470" height="269" /></a><p class="wp-caption-text">By splitting the thread up, it can be sent to more than one processor</p></div>
<h2>Multi-threading in Grasshopper</h2>
<p>To test threading in Grasshopper I decided to recreate the Project-point-to-surface node in Grasshopper. The full node can be downloaded from <a href="http://parametricmodel.com/ThreadedCinGrasshopper/46.html">Parametric Model</a>. The critical line of code in the node comes within this for-loop:</p>
<pre class="brush: csharp; first-line: 99; title: ; notranslate">
for(int i = 0; i &lt; total; i++)
{
  if(p[i] is Point3d)
  {
    int tempI = i;
    Point3d tempP = (Point3d) p[i];
    taskInfo task = new taskInfo(tempI, tempP);
    System.Threading.ThreadPool.QueueUserWorkItem(pntToSrf, task);
  } else done--;
}
</pre>
<p>Essentially this loop works its way through every point passed to the node. It then adds the point and the point&#8217;s index to a taskInfo object &#8211; a custom object created to store the information about the point being projected to the surface. The point is then projected onto the surface by calling the pntToSrf function and passing the taskInfo object in this line:</p>
<pre class="brush: csharp; first-line: 106; title: ; notranslate">
    System.Threading.ThreadPool.QueueUserWorkItem(pntToSrf, task);
</pre>
<p>Basically this line of code calls the pntToSrf function, but rather than calling it on the main thread (as you would do in a singally threaded application), it sends the function to the ThreadPool where a manager runs it on the next available thread. The ThreadPool has many different threads running through each processor in parallel, so the manager will send the pntToSrf function to whatever processor is not doing any work, which utilises the power each processor.</p>
<p>A couple of tricky things happen inside the thread, like the arrays are locked whenever data is written to them, to prevent the threads sending data into the array simultaneously:</p>
<pre class="brush: csharp; first-line: 136; title: ; notranslate">
lock(locker)
{
  outP[index] = myPoint;
  outUVP[index] = uvPoint;
  outD[index] = myDis;
  done--;
}
</pre>
<p>Finally, since the threads are executing co-currently to the main thread, we have to pause the main thread until the other threads have finished processing before returning the data from the node. For simplicity sake I have used a really naive method of waiting, which loops until the right number of tasks are done.</p>
<pre class="brush: csharp; first-line: 112; title: ; notranslate">
while(done &gt; 1)
{
  System.Threading.Thread.Sleep(2);
}
</pre>
<p>And that is it.</p>
<p>In terms of performance, on my quad-core computer, the normal Grasshopper srfCP node can project 1,000,000 points onto a sphere in 10.0 seconds. Compared to both Digital Project and GC, this is remarkably fast, although it is nothing like the performance of Open Cascade. The same task performed with my threaded srfCP node takes 4.5 seconds, which is roughly a 2X improvement over the non-threaded version. You will notice using four cores does not result in a straight up 4X improvement, this is in part because some processor power is used to manage the threads, and partly because aspects of the code still happen in serial.</p>
<p><a rel="attachment wp-att-906" href="http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/screen-shot-2011-05-07-at-4-47-59-pm/"><img class="alignnone size-medium wp-image-906" title="Screen shot 2011-05-07 at 4.47.59 PM" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2011/05/Screen-shot-2011-05-07-at-4.47.59-PM-470x243.png" alt="" width="470" height="243" /></a></p>
<h2>Native types in Grasshopper</h2>
<pre class="brush: csharp; first-line: 112; title: ; notranslate">
outP = new GH_Point[total];
outUVP = new GH_Point[total];
outD = new GH_Number[total];
</pre>
<p>Some keen eyes would have picked up that the C# node is returning an array of GH_point&#8217;s rather than an array of point3d&#8217;s. When a C# node returns a point3d, this is automatically converted by Grasshopper into a GH_Point (allowing it to be baked ect.). This conversion is computationally expensive, presumably because Grasshopper is checking the data is valid. To avoid this performance hit, we can sidestep the conversion by giving Grasshopper the data back in its native format, a GH_Point. The other native Grasshopper formats can be found under Grasshopper.Kernal.Data. Similarly if the inputs to a node are of a specific type, Grasshopper does an automatic conversion. By asking for the inputs as a System.Object this conversion can be avoided.</p>
<h2>A word to the eager</h2>
<p>While multi-threading offers significant speed improvements, it is not without downsides. It can be challenging and frustrating to debug threaded code since interactions between threads can throw unforeseen errors from bugs that are invisible in the Grasshopper IDE. These errors will often crash Rhino: save frequently. Furthermore, not all functions in Rhino 4 are thread safe. So if you use the unsafe function of  plane-brep intersection in different threads, you will  either crash Rhino or end up with strange results. Rhino 5 addresses some of the thread safety issues and once it moves to .Net4.0 there will be access to even easier threading functions. For now take this post as an explanation for why CAD software hasn&#8217;t gotten any faster in the last three years, but expect to see significant performance increases in the near future once CAD finally catches up to processor developments.</p>
<p>For more information about multi-threading I recommended Joseph Albahari&#8217;s excellent <a href="http://www.albahari.com/threading/">tutorial on C# threading</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/05/07/threading-grasshopper/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Live Programming in Rhino</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2011/04/12/live-programming-in-rhino/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2011/04/12/live-programming-in-rhino/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 03:58:34 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=849</guid>
		<description><![CDATA[An early sneak peak at a project I have been working on: live parametric programming for Rhino. As you edit the script, in real time, the geometry is created and modified. There is slightly more going on behind the scenes than just phrasing the text and turning it into geometry, because it is based on the Yaml language [...]]]></description>
			<content:encoded><![CDATA[<p><object width="470" height="335"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=22270458&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="470" height="335" src="http://vimeo.com/moogaloop.swf?clip_id=22270458&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>An early sneak peak at a project I have been working on: live parametric programming for Rhino. As you edit the script, in real time, the geometry is created and modified. There is slightly more going on behind the scenes than just phrasing the text and turning it into geometry, because it is based on the Yaml language (hence Yeti), which allows references between objects. So you can name an object with a &#8216;&amp;&#8217; and refer to it with a &#8216;*&#8217;, effectively establishing a parametric relationship between the objects. It is still in the early stages, but the parametric engine is there, as is most of the phrasing stuff, so hopefully I can push out a demo / the source in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2011/04/12/live-programming-in-rhino/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>parametricmodel.com</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2010/11/03/parametricmodel-com/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2010/11/03/parametricmodel-com/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 02:59:00 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=609</guid>
		<description><![CDATA[I have been neglecting this blog lately, but it is for a good cause. My time has been spent setting up a new website: parametricmodel.com, which is basically Wikipedia for parametric model components. The site is straight from my Ph.D. research where I an currently looking at reuse within parametric models. It is quite striking [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-610" href="http://www.nzarchitecture.com/blog/index.php/2010/11/03/parametricmodel-com/screen-shot-2010-11-02-at-1-45-29-pm/"><img class="alignnone size-medium wp-image-610" title="Screen shot 2010-11-02 at 1.45.29 PM" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2010/11/Screen-shot-2010-11-02-at-1.45.29-PM-470x440.png" alt="" width="470" height="440" /></a></p>
<p>I have been neglecting this blog lately, but it is for a good cause. My time has been spent setting up a new website: <a href="http://www.parametricmodel.com">parametricmodel.com</a>, which is basically Wikipedia for parametric model components.</p>
<p>The site is straight from my Ph.D. research where I an currently looking at reuse within parametric models. It is quite striking how little people reuse parts of their models in subsequent projects, or use parts from other peoples models. This is surprising when you consider how often the same problems are solved in a parametric model. An ad-hoc community of people sharing components has sprung up on the Grasshopper forum but from my research, it seems people turn to the forum as a last resort, mainly because the forum is hard to search, makes tracking changes difficult, and provides components in ways that are not always useful. The idea with parametricmodel.com is to provided a slightly structured environment where people can easily post their components (and hopefully announce it on the Grasshopper forum), make revisions to others and find the component they need. In my own work, I have found that this little bit of structure &#8211; such as explicitly defining inputs and outputs &#8211; is critical in reusing your models.</p>
<p>I stuck up a couple of components I often use, including a revision to Giulio Piacentino&#8217;s &#8216;Bake with color&#8217; script that works with Grasshopper 0.7.</p>
<p>Please add your components, make revisions to the existing ones, and take from the site (all the content is creative commons).</p>
<p>Any feedback would be appreciated, either in the comments or via email (contact form under &#8216;About&#8217; on right menu).</p>
<p><strong>Edit: 12 December, 2010</strong></p>
<p>Matie has an interesting<a href="http://matei23.wordpress.com/2010/12/08/diagrid-iterations/"> follow up post on his blog here</a>, where he discusses how difficult it is to reuse parametric models, and provides example Grasshopper definitions from his own projects.</p>
<p>And <a href="http://www.parametricmodel.com">Parametricmodel.com</a> has had its first user contributed submissions and edits, as it starts to grow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2010/11/03/parametricmodel-com/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>New tools: DraftSight to Evolute</title>
		<link>http://www.nzarchitecture.com/blog/index.php/2010/10/03/new-tools-draftsight-to-evolute/</link>
		<comments>http://www.nzarchitecture.com/blog/index.php/2010/10/03/new-tools-draftsight-to-evolute/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 07:23:48 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.nzarchitecture.com/blog/?p=558</guid>
		<description><![CDATA[The past week was filled with software launches. For me the most curious of these launches is Dassault&#8217;s DraftSight, a clone of AutoCAD (free to download here). Dassault are better known for CATIA and Solidworks, two high end, 3d parametric modeling programs that champion file to factory manufacturing.  Previously Dassault half-heartedly had a go at 2d modeling with [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-563" href="http://www.nzarchitecture.com/blog/index.php/2010/10/03/new-tools-draftsight-to-evolute/title/"><img class="alignnone size-full wp-image-563" title="title" src="http://www.nzarchitecture.com/blog/wp-content/uploads/2010/10/title.jpg" alt="" width="470" height="71" /></a></p>
<p>The past week was filled with software launches. For me the most curious of these launches is Dassault&#8217;s DraftSight, a clone of AutoCAD (<a href="http://www.3ds.com/products/draftsight/draftsight-overview/#vid1">free to download here</a>). Dassault are better known for CATIA and Solidworks, two high end, 3d parametric modeling programs that champion file to factory manufacturing.  Previously Dassault half-heartedly had a go at 2d modeling with their DWGEditor, but DraftSight is a totally new product and a serious move into this market. I have heard some colourful explanations for this move, including file to factory not being adopted / profitable, and the 70&#8242;s being back in vogue. To me it seems like Dassault are trying to kill Autodesk&#8217;s cash cow &#8211; AutoCAD &#8211; which retails for approximately US$4ooo a licence. Significantly DraftSight stole the thunder from Autodesk&#8217;s release of AutoCAD OSX by releasing before them and for free, which is bound to have an impact on the profitability of AutoCAD OSX if everyone is testing a free alternative before the launch. So far the reviews seem very positive, I am not a serious AutoCAD user and I know people who use it are very particular so I defer any review to them (<a href="http://www.solidsmack.com/design-news/draftsight-dassault-free-2d-app-for-windows-mac-linux/">Solid Smack have a good comparison</a>). Ironically the features DraftSight is missing (and probably unlikely to get) are the features Dassault is best known for &#8211; constraint modeling and 3d modelling &#8211; two features that have been integrated into recent versions of AutoCAD. In some bizarre way, Dassault&#8217;s focus on basic 2d modelling makes sense, although a battle over 2d is not something I thought I would see in 2010 and it seems AutoDesk were banking on that as well. I am sure there are some very interesting meetings happening at Autodesk right now as they plan their response.</p>
<p>At the same time DraftSight was released, Autodesk released AutoCAD WS for the iPhone for free (<a href="http://itunes.apple.com/au/app/autocad-ws/id393149734?mt=8">iTunes link</a>). There is something jarring about seeing a 1970&#8242;s interface on a touch based device. Still this is probably the cutest, if unimaginative, translation of AutoCAD to date. Unfortunately it is almost crippled by Apple&#8217;s arcane file management on iOS, requiring users to upload their .dwg&#8217;s to an online server, and be connected to the Internet with their phone to be able to view them in the app. I would like to think Autodesk has something larger planed for iOS than translating desktop apps. A demonstration of what might be coming is the <a href="http://n-e-r-v-o-u-s.com/">Nervous System</a> iPad model maker (video below), which takes advantage of the touch interface to conceive of a new way of generating their two layer rings.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="471" height="353" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=14835105&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="471" height="353" src="http://vimeo.com/moogaloop.swf?clip_id=14835105&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>And also launched this week was the <a href="http://www.evolute.at/">Evolute tool kit for Rhino</a>. Evolute has previously contracted to companies such as Gehry Technology to optimise surfaces, and in the process they built up a <a href="http://www.evolute.at/technology/scientific-publications.html">formidable body of research</a> on how best to carry out surface optimisations. The Evolute tool kit is their first attempt at commodifying this knowledge by making parts of their in-house tools available through a Rhino toolbar. Evolute is being understandably cautious about opening up these tools, and unfortunately the current Beta version is crippled by some rather harsh restrictions that make it impossible to test out the utility of these tools on large scale projects or without an Internet connection. When it does work, the toolbar enables a type of low-polygon mesh editing and provides tools to optimise the paneling of a mesh. Thankfully they have just put up a <a href="http://www.evolute.at/software/forum/topic.html?id=16">series of tutorials</a> on how to use the software because I was finding it seriously confusing. In many ways Evolute&#8217;s success depends not on their research, but the quality of these videos and documentation; they can black box sophisticated algorithms all they like, but the user still needs some understanding of what is going on to operate the tool. The same can be said of Dassault&#8217;s DraftSight, which is conceptually not very far from their DWGEditor, but the DrafSight interface is in a different league, with its familiarity, responsiveness and cross-platform capabilities. So perhaps this was not a week of new tools, but a week of new interfaces to old algorithms.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nzarchitecture.com/blog/index.php/2010/10/03/new-tools-draftsight-to-evolute/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

