<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5209110565444405198</id><updated>2012-01-11T11:24:03.823-08:00</updated><category term='Iterations'/><category term='.Net marshalling/wrapping'/><category term='Screenshots'/><category term='OpenCascade architecture'/><category term='Status reports'/><category term='Tutorial'/><category term='Release'/><category term='Releases'/><title type='text'>3D Application Development</title><subtitle type='html'>using OpenCascade and .Net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default?start-index=101&amp;max-results=100'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>922</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6447627603240677581</id><published>2012-01-11T11:12:00.000-08:00</published><updated>2012-01-11T11:18:50.397-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>NaroCAD porting to OpenCascade 6.5.2</title><content type='html'>My colleague generated an OCC 6.5.2 wrapper version and also ported the projects on Visual Studio 2010. Everything compiles smoothly and Naro runs. Together had a debugging sessions to see what problems appeared with this porting.&lt;br /&gt;There are some memory leaks that need to be solved, the selection seems to be broken, also the Naro tools need some fixing. Not all fixing is related to 6.5.2 wrappers, some of the fixing is caused by some OCC 652 changes in API functionality.&lt;br /&gt;&lt;br /&gt;Next step is to fix the selection, point and line tools to see if with these tools everything goes ok. In parallel also the memory leaking on wrappers will be fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6447627603240677581?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6447627603240677581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6447627603240677581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6447627603240677581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6447627603240677581'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2012/01/narocad-porting-to-opencascade-652.html' title='NaroCAD porting to OpenCascade 6.5.2'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5223673559530845151</id><published>2011-12-18T12:12:00.000-08:00</published><updated>2011-12-18T12:38:21.634-08:00</updated><title type='text'>Going Native</title><content type='html'>... or not so much.&lt;br /&gt;&lt;br /&gt;What's about Microsoft initiative named: &lt;a href="http://channel9.msdn.com/Events/GoingNative"&gt;Going Native&lt;/a&gt;? This is Microsoft's attempt to promote C++ 11 standard and future Visual Studio version that will improve the broken C++/.Net bridges.&lt;br /&gt;Which are the reasons? Basically: using VNext (the "codename" for the next version), you will have outline of your code like you were able to do for some time in Eclipse CDT plugin.&lt;br /&gt;The problem is in my understanding not the marketing part, which is cool (as is presented in the &lt;a href="http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-1-VC-vNext-CRT-C-and-Beyond"&gt;first part&lt;/a&gt;), like you can get the ultimate performance as you can get the ultimate control, you can map in shared memory, so another process can reuse your data and other "cool stuff like that". In fact I've got it, you can get huge performance using those constructs, yet the problem is after how many years, after how much testing. The reason that I was sold out for .Net languages is the service part: language have rich support for type information (named reflection or RTTI), which makes that the compiler to rarely fail on code completion, have saner defaults for memory management and decent performance. Where in NaroCAD performance was the issue, was because of the wrong algorithms, or not profiling the code.&lt;br /&gt;The last days I was working with wrappers for OpenCascade 6.5.x. I was fairly surprised of how fast the compilation of C++ code works (as machines are much powerful as they were some years ago) and even I did not finish to port them, I've noticed some parts that were overall slow: disk access, the number of frameworks that NaroCAD use (by default NaroCAD uses WPF which is DirectX wrapped by a framework CodeCLR, .Net, OpenGL and OpenCascade, GDI+ (to host OpenGL/Occ window)). If it would be no framework, or Windows would have a way that frameworks will be always up-and-running, I think that NaroCAD would start (close-to) instantly.&lt;br /&gt;So at the end I felt that this is why people do not tend to go native: is all about how many things you get for granted with high level languages/platforms: tools to make fast an UI, a great debugger, no chance (excluding a VM bug) to get "Invalid address" errors or like. And at the end a person that would want to extend NaroCAD, would not care at the ultimate performance you may get using a compiler as &lt;a href="http://gcc.gnu.org/gcc-4.7/changes.html"&gt;GCC that would inline differently some parts of the code based on your constants flow,&lt;/a&gt;  but it would want to have a way to inspect the API, a way to script it (maybe using Boo), a way to import Step files and to export them back.&lt;br /&gt;If and when NaroCAD will be performance bound, I do think that the way to improve it is: be multi-threaded (to be able to use the AMD's 8 cores, by using parallel extensions), be multi-process and distribute over the network (as WCF permit that much easily than any C++ framework I know it would be able to).&lt;br /&gt;At the end the trend of using native is true for phones, and I agree that there are "native" ways to improve your performance for limited hardware, but NaroCAD as it stands, I don't see it that to happen any time soon. And if (ever) NaroCAD would work on an Android or IPad class hardware, it would take at least 1-2 years to complete it, so maybe it would address the hardware that would exist at that time, and it would be likely at least an ARM dual core (as is iPad 2) or ARM quad core (as is NVidia Tegra 3), where the stated arguments (multi-core and maybe multi-process) remain the way to improve. And the framework to use? Maybe Mono Touch and Mono for Android.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5223673559530845151?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5223673559530845151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5223673559530845151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5223673559530845151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5223673559530845151'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/12/going-native.html' title='Going Native'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8862970431064926000</id><published>2011-12-14T21:45:00.000-08:00</published><updated>2011-12-14T21:58:16.021-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Up and running</title><content type='html'>This week NaroCAD development restarted. We had a meeting and established a roadmap. &lt;br /&gt;&lt;br /&gt;Among the features we planned are:&lt;br /&gt;- Enhance the solver: make it faster and more reliable,&lt;br /&gt;- Update to OpenCascade 6.5.X and enhance wrappers,&lt;br /&gt;- Fix the 2D tools and make a more stable release,&lt;br /&gt;- Improve docs and strengthen the unit tests.&lt;br /&gt;&lt;br /&gt;After the Sketching part will be ok we'll start fixing the 3D features.&lt;br /&gt;&lt;br /&gt;At the beginning the development progress will be slower, in a month planning to contribute at full speed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8862970431064926000?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8862970431064926000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8862970431064926000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8862970431064926000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8862970431064926000'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/12/up-and-running.html' title='Up and running'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3294197498308555235</id><published>2011-09-19T02:20:00.000-07:00</published><updated>2011-09-19T02:25:14.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Naro 1.6.3 version development started</title><content type='html'>After a short development break, we'll restart working at NaroCAD.&lt;br /&gt;First step would be stabilizing the 2D tools and enhance solver to be faster and restrict it to find solutions that affect only the current shape, not the entire scene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3294197498308555235?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3294197498308555235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3294197498308555235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3294197498308555235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3294197498308555235'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/09/naro-163-version-development-started.html' title='Naro 1.6.3 version development started'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3787241191021828465</id><published>2011-06-29T09:00:00.001-07:00</published><updated>2011-06-29T09:04:54.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Same coordinate hints</title><content type='html'>Added an important hint at NaroCAD: on a Sketch when the current drawing point is on the same X or Y coordinate with an existing shape some hint is displayed to help user "catch" that coordinate:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qtFyH7KhoE8?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qtFyH7KhoE8?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;It also catches line mid points and axis origin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3787241191021828465?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3787241191021828465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3787241191021828465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3787241191021828465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3787241191021828465'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/same-coordinate-hints.html' title='Same coordinate hints'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5008312920391855073</id><published>2011-06-25T09:58:00.000-07:00</published><updated>2011-06-25T10:11:57.417-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Unit tests enhancements</title><content type='html'>In order to make a new release version started bug fixing the Sketch related issues. The first step was to fix the project building paths for all modules, then fix some unit tests. Added tests for SketchCreator, a class that manages sketches and calculates projections on them.&lt;br /&gt;Will try to isolate bugs in unit tests before fixing them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5008312920391855073?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5008312920391855073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5008312920391855073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5008312920391855073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5008312920391855073'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/unit-tests-enhancements.html' title='Unit tests enhancements'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-896421641759103785</id><published>2011-06-24T08:40:00.000-07:00</published><updated>2011-06-24T08:42:41.732-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Hinter bug fixing</title><content type='html'>Fixed the parallel to axis hint display. Added support for coloured hints display so that parallels with OX are shown with red, parallels to OY with green and to OZ with blue.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-4uJct1ZbCDA/TgSwT1nn2bI/AAAAAAAAAWs/gQ6-n24_Q8o/s1600/Naro24062011.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 237px;" src="http://1.bp.blogspot.com/-4uJct1ZbCDA/TgSwT1nn2bI/AAAAAAAAAWs/gQ6-n24_Q8o/s320/Naro24062011.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5621812089722493362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-896421641759103785?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/896421641759103785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=896421641759103785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/896421641759103785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/896421641759103785'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/hinter-bug-fixing.html' title='Hinter bug fixing'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4uJct1ZbCDA/TgSwT1nn2bI/AAAAAAAAAWs/gQ6-n24_Q8o/s72-c/Naro24062011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-872823822211003458</id><published>2011-06-23T09:09:00.001-07:00</published><updated>2011-06-23T09:14:23.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Feature development started</title><content type='html'>After a couple days of wrapper enhancements and fixes for trying to port Naro on OCC 6.5.0 and 6.5.1 ported the enhancements on the 6.3.0 and built a working Naro on 6.3.0.&lt;br /&gt;&lt;br /&gt;In order to show some progress on the Naro feature side will start bug fixing and enhancing it leaving the 6.5.X porting as a secondary task. The problem doesn't seem to be be on the wrapper side but seems to be caused by different usage on the OpenCascade side. Tried also playing with the OCC environment settings (like changing the memory allocator and multithreading), the problem doesn't seem to be on that side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-872823822211003458?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/872823822211003458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=872823822211003458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/872823822211003458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/872823822211003458'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/feature-development-started.html' title='Feature development started'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6372119541277535295</id><published>2011-06-15T06:58:00.000-07:00</published><updated>2011-06-15T07:00:26.248-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>OpenCascade 650 wrappers</title><content type='html'>Ported the new wrappers to OpenCascade 6.5.0. Fixed Naro to work with these wrappers.&lt;br /&gt;Started investigating on crashes that appear on 6.5.0.&lt;br /&gt;Not committed yet on Sourceforge until some stable version of wrappers is made.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6372119541277535295?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6372119541277535295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6372119541277535295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6372119541277535295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6372119541277535295'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/opencascade-650-wrappers.html' title='OpenCascade 650 wrappers'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1777318933404870687</id><published>2011-06-10T08:59:00.000-07:00</published><updated>2011-06-10T09:07:27.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Wrappers review and bug fixing</title><content type='html'>Together with my colleague reviewed and fixed the new wrappers.&lt;br /&gt;One big fix was made: the IsSameTransient method was fixed. Now selections work properly on Naro.&lt;br /&gt;&lt;br /&gt;Also investigated why Naro's memory increases with usage. With some memory mapper that was tracking allocations and deallocations it seems that all objects are properly deallocated. Added also a CppDisplayLeaks() method that dumps memory leaks in the Output window, nothing dumped as leak.&lt;br /&gt;It seems that at the wrapper level no leaking is made but still the memory increasing while using Naro is suspect, leaking is not completely excluded.&lt;br /&gt;&lt;br /&gt;Started researching on crashes when running Naro with OpenCascade 6.5.0, this is the next fix we need to make.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1777318933404870687?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1777318933404870687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1777318933404870687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1777318933404870687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1777318933404870687'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/wrappers-review-and-bug-fixing.html' title='Wrappers review and bug fixing'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5139597799617280798</id><published>2011-06-06T01:07:00.000-07:00</published><updated>2011-06-06T01:16:01.948-07:00</updated><title type='text'>Fixes on splash screen</title><content type='html'>The splash screen was changed so that it doesn't stay on top of other windows.&lt;br /&gt;      Making the splash screen stay on top on all other application can be very annoying when working with other applications, because it cannot be moved out of the way.&lt;br /&gt;      We made this fix after reading the error reports. Thank you for reporting, and don't hesitate to tell us about other problems as well. Other issues might take more time time to fix, but we always keep track of them. You can also discuss on the forum about such problems.&lt;br /&gt;      This fix is will be available from the next release and in all nighty builds. Thank you for the cooperation and enjoy NaroCAD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5139597799617280798?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5139597799617280798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5139597799617280798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5139597799617280798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5139597799617280798'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/fixes-on-splash-screen.html' title='Fixes on splash screen'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5068108977633510357</id><published>2011-06-04T08:59:00.000-07:00</published><updated>2011-06-04T09:04:17.249-07:00</updated><title type='text'>NaroCAD wrapper memory leaks fixed</title><content type='html'>NaroCAD leaks in the new wrapper were fixed. Also, as the project does not depend to have the same wrapped Visual Studio version worked with just a project migration to run in VS 2010 (this is a topic for future discussion, but the idea remains: is just a project migration away, the C++ code will be generated with VS 2010 compiler, yet the target runtime for upgraded project is still .Net 3.5 SP1, to not ask an extra big download dependency for running NaroCAD).&lt;br /&gt;The single remaining bug is IsSameTransient equality test and all tooling is ready for OpenCascade 6.5 usage crashes (that will be likely be ported very very soon, before the next release).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5068108977633510357?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5068108977633510357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5068108977633510357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5068108977633510357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5068108977633510357'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/06/narocad-wrapper-memory-leaks-fixed.html' title='NaroCAD wrapper memory leaks fixed'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3797109866376338529</id><published>2011-05-31T13:23:00.000-07:00</published><updated>2011-05-31T13:26:54.545-07:00</updated><title type='text'>Folder Paths Updated</title><content type='html'>NaroCAD installer paths are possible to be set in Program Files/User directory setup like for Windows XP/Vista/Windows 7 machines.&lt;br /&gt;So you may expect that your NaroCAD on Windows experience to be smoother.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3797109866376338529?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3797109866376338529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3797109866376338529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3797109866376338529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3797109866376338529'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/folder-paths-updated.html' title='Folder Paths Updated'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6567667289411770981</id><published>2011-05-31T12:46:00.000-07:00</published><updated>2011-05-31T13:12:50.950-07:00</updated><title type='text'>OCWrapper  Replacement With PInvoke Version</title><content type='html'>NaroCAD had a surgical change based on the prototype was presented earlier. How will affect NaroCAD?&lt;br /&gt;From user standpoint, will unlikely change it. The wrapper will be a bit smaller, but will make no change in rest.&lt;br /&gt;From developper standpoint, will make possible to build the wrapper and to DEBUG it. The new wrapper also is using open (read: not WOK) build systems, based on XML to declare/expose the APIs, QMake as C++ project generator (even is not a Qt project). The XML parsing to read and expose APIs will make easier to work on long run.&lt;br /&gt;Also, the imported parts are minimal parts we really use in NaroCAD. At the end there are two underlying final migration advantages: we can migrate right now from Visual Studio 2008 to 2010 with a recompilation of NaroCAD (without rebuilding C++ wrappers) and if all work, will be no extra issue. And we can go to 6.5 wrapper stubs in minutes by simply relinking and making easier to debug them, simplifying all runtime based problems we had previously with Visual C++.Net runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6567667289411770981?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6567667289411770981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6567667289411770981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6567667289411770981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6567667289411770981'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/ocwrapper-replacement-with-pinvoke.html' title='OCWrapper  Replacement With PInvoke Version'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1360100078297089314</id><published>2011-05-20T01:14:00.000-07:00</published><updated>2011-05-20T01:53:10.993-07:00</updated><title type='text'>NaroCAD New Wrapper Prototype Finished</title><content type='html'>As said in previous post, I worked to a replacement of OCWrappers and it is made.&lt;br /&gt;How it works: there are three steps build:&lt;br /&gt;- generate a XML API file, this is equivalent of CDL files but is easier to parse and populate. There is a visual tool that will scan from old OCWrappers with reflection and you will pick which methods are used. This API file make distinction between methods and properties.&lt;br /&gt;- from this XML file are generated and updated C# and C++ projects with code. This is the most boring side, but also is where the power stands. The code generator makes patterns of code that are friendlier to debug. Also this part will make sure that the compiled code (mostly C++ side) will not include more than is needed.&lt;br /&gt;- you have to rebuild the updated projects. In a typical workflow you will want to link to the C# project to see if all dependent classes. For now just the string type have to be fixed manually (because strings can be both wide strings and char* strings, two ways or repreenting Unicode and ANSI string encodings). Also, the C++ build is based on QMake (part of Qt SDK) for simplicity.&lt;br /&gt;This design permit to improve all wrapping stack, is also a C# codebase and at the end makes a easier to work with both resulting code and with wrappers in themselves. As when the 6.5 OpenCascade issues will be found, the migration to new wrappers is possible as classes were written in a separate namespace and uses a different naming convention, so from gp_Pnt will get to gpPnt, and functions that return one number, will be likely automatically become properties which make easier for C# used eye.&lt;br /&gt;The C++/C# projects permit to use different compilers (mostly different Visual Studio versions) for C++ side of wrapper/C# side, so makes sense in future to migrate to Visual Studio 2010 (when the C++ wrapper is still using VS 2008) so no binary compatibility issues will be involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1360100078297089314?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1360100078297089314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1360100078297089314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1360100078297089314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1360100078297089314'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/narocad-new-wrapper-prototype-finished.html' title='NaroCAD New Wrapper Prototype Finished'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-294231568696037032</id><published>2011-05-17T17:53:00.000-07:00</published><updated>2011-05-17T18:22:23.609-07:00</updated><title type='text'>NaroCAD Wrappers Review. Work on Previewing Sketch Constraints to Remain Persistent</title><content type='html'>Probably you heard about Xamarin, if not, is not an issue. The opensource .Net implementation (Mono) was forked as the main company did not support it that. I don't want to discuss politics, but I just wish to this new company to succeed and to promote Free/OpenSource as Miguel de Icaza (the creator of Gnome and Mono project) is its owner.&lt;br /&gt;Right now I want to discuss on development on wrappers. In fact, why if things work right, most likely I will try to &lt;span style="font-style: italic;"&gt;remove&lt;/span&gt; the the original CLI wrappers and to import &lt;span style="font-style: italic;"&gt;just&lt;/span&gt; the necessary methods/clasess. The design will be a bit different from the actual wrappers and we will try to work using .Net technologies and will extract the information from the existing wrappers.&lt;br /&gt;This approach have many advantages, one of them is the possibility to debug using those wrappers and to make some changes that are at least nice to have for a C#/.Net programmer: automatically using of properties (like gpPnt.X() is better to be used in its property form gpPnt.X and so on), P/Invoke which will make easier to migrate to Visual Studio 2010 (C++ side of wrappers do not need to be recompiled for migrating to VS 2010 for example). This prototype is advanced yet not complete.&lt;br /&gt;This will mean a thing for contributors that were interested in wrappers: is hard for our team to support them and is even harder for every new package to us to investigate why things crash and so on. Also, it make little sense (excluding for making a package) to give wrappers that later will make others' product to crash cause of our fault.&lt;br /&gt;At the end, is just about to separate the codebase and to let as most as possible of C++ behind. If the prototype will not work, we will still use the old wrappers, but if will work (with minimal flaws), we have likely no reason to still use the C++/CLI (aka C++.Net) wrappers. You are still welcome to take Svn snapshot and provide patches and we will include in our Svn tree if you need them and you will want to contribute.&lt;br /&gt;In between I did prepare the code to make previews of constraints persistent (they were shown just in previewing of lines) and if possible to make possible to delete them by selecting and pressing delete. It would be nice if clicking on a constraint to switch automatically to constraint action but this is not also certain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-294231568696037032?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/294231568696037032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=294231568696037032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/294231568696037032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/294231568696037032'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/narocad-wrappers-review-work-on.html' title='NaroCAD Wrappers Review. Work on Previewing Sketch Constraints to Remain Persistent'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5715494385291683630</id><published>2011-05-11T04:56:00.000-07:00</published><updated>2011-05-11T07:09:05.265-07:00</updated><title type='text'>NaroCAD 1.6.2 (Alpha) Released</title><content type='html'>&lt;p&gt;NaroCAD gets new capabilities and big changes happen from inside.&lt;br /&gt;&lt;/p&gt;This new version focuses on:&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Constraint automatic detection&lt;/span&gt;: so drawing perpendicular, parallel, middle of points will create automatically constraints with the SketchSolve based component. Circle/arc based were also added in default setup (yet are not detected automatically) so you can work with more constraint combinations&lt;br /&gt;- a&lt;span style="font-weight:bold;"&gt; Fixed-Point constraint was done&lt;/span&gt;: this will fix the annoyances that a SketchSolve solution will mess your entire sketch.&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Sketch constraints are previewed&lt;/span&gt; (now only with line action)  and shows texturing capabilities that will likely permit that more components will use in future this capability&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;more sketch related unit tests/Boo scripts will work&lt;/span&gt; (fixes are still needed but as they are fixed, easier will be to test crashes and inconsistencies)&lt;br /&gt;-&lt;span style="font-weight:bold;"&gt;it was investigated and a working OpenCascade 6.5&lt;/span&gt; (ultimate upstream version) &lt;span style="font-weight:bold;"&gt;wrapper was done&lt;/span&gt;. Seems that behavior was changed to work with Opencascade so crashes are not from wrapping side (or should be minimalist) but from usage side. &lt;span style="font-style:italic;"&gt;We don't support those wrappers&lt;/span&gt; but if someone wants a starting C#/.Net way to work with wrappers you're welcome to use them taking the source or the binaries from SVN repository&lt;br /&gt;&lt;p&gt;Download it &lt;a href="http://www.narocad.com/"&gt;from here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5715494385291683630?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5715494385291683630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5715494385291683630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5715494385291683630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5715494385291683630'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/narocad-162-alpha-released.html' title='NaroCAD 1.6.2 (Alpha) Released'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3100059907845309014</id><published>2011-05-09T14:30:00.001-07:00</published><updated>2011-05-09T14:46:29.866-07:00</updated><title type='text'>Constraints are Fixed, In Two Ways</title><content type='html'>So constraint preview had a random crash because NaroCAD uses wrappers that obey to .Net virtual machine and this can break references in previews of textures, a functionality offered by OpenCascade using an indirect reference that .Net liked to destroy it. The solution was to stick references to used objects so .Net memory manager (garbage collector) to not delete it. The solution will create a transparent way to store this reference and a good part to it is that can be used in future to all other cases that may have similar crashes (yet this is the first case that was really necessary to not make a really custom development to make it work).&lt;br /&gt;&lt;br /&gt;Another development based on work of Sami and bxtrx initially, enhanced, mapped and completed by myself is that points can be constrained. A full action will preview all points initially with blue, and you can constraint them by clicking them and they will transform with red color to know that they are constrained. After that the constraining will not be jumping.&lt;br /&gt;See video here: (made with a virtual machine setup, so sadly it skip frames)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7bAMYLLRqWE?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7bAMYLLRqWE?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3100059907845309014?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3100059907845309014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3100059907845309014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3100059907845309014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3100059907845309014'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/constraints-are-fixed-in-two-ways.html' title='Constraints are Fixed, In Two Ways'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8393335017467936056</id><published>2011-05-06T10:38:00.000-07:00</published><updated>2011-05-07T02:15:16.306-07:00</updated><title type='text'>SortedDictionary ...</title><content type='html'>NaroCAD uses in a lot of instances SortedDictionary and of course this is rarely needed. The reason using it for that many times, is to have good performance profile. For who knows O(log n) search time, knows that performance of lookups is scalable in time with number of digits of the search entries.&lt;br /&gt;But in a lot of cases this is not needed (to have items sorted by key) and as someone informed me, I will use &lt;a href="http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/7513bbe6-5bd3-4309-8cca-7056043fb95a"&gt;Dictionary generic class instead&lt;/a&gt; in future.&lt;br /&gt;Relevant quote:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Retrieving a value by using its key is very fast, close to O(1), because the &lt;b&gt;Dictionary&lt;/b&gt;  class is implemented as a hash table." Looks like the query time for  Dictionary is O(1), but the query time for SortedDictionary is O(logn)  -- "The &lt;b&gt;SortedDictionary&lt;/b&gt; generic class is a binary search tree with O(log &lt;span class="parameter"&gt;&lt;i&gt;n&lt;/i&gt;&lt;/span&gt;) retrieval, where &lt;span class="parameter"&gt;&lt;i&gt;n&lt;/i&gt;&lt;/span&gt; is the number of elements in the dictionary. In this respect, it is similar to the &lt;a id="ctl00_rs1_mainContentContainer_ctl31" href="http://msdn.microsoft.com/en-us/library/ms132319%28VS.80%29.aspx"&gt;SortedList&lt;/a&gt; generic class. The two classes have similar object models, and both have O(log &lt;span class="parameter"&gt;&lt;i&gt;n&lt;/i&gt;&lt;/span&gt;) retrieval. Where the two classes differ is in memory use and speed of insertion and removal."&lt;/blockquote&gt;So, for your better writing code, use Dictioary always.&lt;br /&gt;Fixes are made lately so most of your Boo scripts will work as sketch code is automatically handled, more shapes will also work. Dangling texture rectangles shown in preview of automatic constraints were fixed and are display and will disappear at the end of your design. There is a crash of .Net/C++ memory management that will be fixed before release in this area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8393335017467936056?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8393335017467936056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8393335017467936056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8393335017467936056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8393335017467936056'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/sorteddictionary.html' title='SortedDictionary ...'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7946762113804737470</id><published>2011-05-05T01:16:00.001-07:00</published><updated>2011-05-05T01:21:29.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Fixed point constraints</title><content type='html'>Because the solutions found by the solver algorithm move all the points of the constrained shapes and there is no fixed point constraint we had to implement one.&lt;br /&gt;Implemented a fixed vertical and horizontal point position constraint, made tests with it and it seems to work well. Adding this constraint to Naro will be a must have feature added probably on next week, this will enhance a lot the solver solutions - currently the constrained shapes "jump" on scene because of the solver solutions found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7946762113804737470?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7946762113804737470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7946762113804737470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7946762113804737470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7946762113804737470'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/05/fixed-point-constraints.html' title='Fixed point constraints'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-515271367834124862</id><published>2011-04-29T16:28:00.000-07:00</published><updated>2011-04-29T16:32:46.287-07:00</updated><title type='text'>Unit Testing/Boo Script Fixes</title><content type='html'>A lot of code was not updated to be sketch aware and this showed some areas with problems. This made that the Sketch based code to be a bit harder to use and made a lot of 2D sketch shapes to not work out of actions range. Right now somelike 50% of scripts and unit-tests affected are working again.&lt;br /&gt;Unit tests are critical to make a baseline of NaroCAD code to know that errors are in usage of code, and to not propagate all errors to break everything. I will work more to fix them as it appears that where unit-tests are fully broken, most of functionality (at least on Boo scripting level) seem also to be completely broken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-515271367834124862?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/515271367834124862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=515271367834124862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/515271367834124862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/515271367834124862'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/unit-testingboo-script-fixes.html' title='Unit Testing/Boo Script Fixes'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-168104977004823981</id><published>2011-04-28T09:02:00.000-07:00</published><updated>2011-04-28T09:13:41.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>OpenCascade 6.5.0 wrapper work schedule</title><content type='html'>Built a final version of OpenCascade 6.5.0 wrappers and started investigating why Naro crashes with the new wrappers.&lt;br /&gt;&lt;br /&gt;It seems that on 6.5.0 the installer doesn't set the environment variables anymore. Made a script that launches Naro in Visual Studio previously setting its environment variables.&lt;br /&gt;Some crashes appear when opening and closing local contexts. Possibly something on OpenCascade functionality changed in this area.&lt;br /&gt;Some crashes appear when selecting something. Made a sample movie for this case:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cDGXFS2bjT4?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cDGXFS2bjT4?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;The crashes are not created by adding finalizers at all wrappers, I tested also with wrappers that don't have finalizers and the behaviour is the same. It seems to be generated by some changes on OCC. Investigating this issue will probably take time.&lt;br /&gt;&lt;br /&gt;As on next week a Naro release is scheduled will save the wrappers work on this state and change the environment back to 6.3.0 to help at finishing the current release.&lt;br /&gt;Will continue wrapper work after release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-168104977004823981?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/168104977004823981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=168104977004823981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/168104977004823981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/168104977004823981'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/opencascade-650-wrapper-work-schedule.html' title='OpenCascade 6.5.0 wrapper work schedule'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3335618718732815634</id><published>2011-04-25T13:16:00.001-07:00</published><updated>2011-04-25T13:42:22.281-07:00</updated><title type='text'>Constraints Icon Preview Working</title><content type='html'>&lt;p&gt;NaroCAD have right now icon previews for applied constraints. And some bug fixes are done to not apply random constraints in tree like: parallel line with itself, or such, making sketch based solver to get crazy in most cases.&lt;/p&gt;&lt;p&gt;Some small issues were fixed as projects layout copied DLLs to specific sketch based projects and this code was also fixed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So look here to demo:&lt;/p&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/EjDnLGVGVXg" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3335618718732815634?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3335618718732815634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3335618718732815634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3335618718732815634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3335618718732815634'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/constraints-icon-preview-working.html' title='Constraints Icon Preview Working'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/EjDnLGVGVXg/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7170904248809560985</id><published>2011-04-23T12:36:00.001-07:00</published><updated>2011-04-23T12:45:22.396-07:00</updated><title type='text'>Solver Geometry Jumping and a Resharper tip</title><content type='html'>I did and I do work for a simple and smooth experience to work with a sketch solver. Anyway, as solution is applied real time, some solutions may not appear as obvious and the solver do some jumping. I did improve a little but are still corner cases when it still jumps and I did not found a simple use-case to reduce those cases. I will hope to find a proper solution but in the mean time I will improve in other ways the solver integration. (like I try to find a proper way to display visually the applied constraints, to not make user to navigate in tree or to select all combinations to see why some things are not moving because some constraints are applied).&lt;br /&gt;&lt;br /&gt;Other thing I want to describe is that in my coding experience Resharper (no marketing intended, yet this software addon is one of the best I've found), had always some odd issues when is working with Visual Studio setup in Spanish (the language of my Windows + Visual Studio setup). This make me reticent every time I've upgraded that I will lose the keyboard mapping and was really odd to setup one by one key combination.&lt;br /&gt;So the tip is the following: go to Herramientas-&amp;gt;Opciones-&amp;gt;Teclado, set as default: Visual C++ 6 as default shortcut mapping and after this go to Resharper-&amp;gt;Options-&amp;gt;Visual Studio Integration and apply the Visual Studio style. After this you will be able go use great shortcut integration that Resharper provides.&lt;br /&gt;&lt;br /&gt;And let's not forget: Happy Easters for everyone! (for who celebrates it!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7170904248809560985?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7170904248809560985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7170904248809560985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7170904248809560985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7170904248809560985'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/solver-geometry-jumping-and-resharper.html' title='Solver Geometry Jumping and a Resharper tip'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-89977171221394959</id><published>2011-04-21T09:38:00.000-07:00</published><updated>2011-04-21T09:43:32.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Naro on OCC 6.5.0 wrappers</title><content type='html'>Built a 6.5.0 wrapper library for the wrappers used in NaroCAD. Fixed also Naro so that it compiles with the new library. Still have problems at starting it, possibly because of environment settings.&lt;br /&gt;&lt;br /&gt;Pushed the new compiled set of wrappers on SVN and also a 6.5.0 Naro on the bxtrx Mercurial repository.&lt;br /&gt;&lt;br /&gt;Next step is to fix Naro starting and investigate if it works correctly with the new wrappers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-89977171221394959?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/89977171221394959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=89977171221394959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/89977171221394959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/89977171221394959'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/naro-on-occ-650-wrappers.html' title='Naro on OCC 6.5.0 wrappers'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5031762799746962292</id><published>2011-04-19T13:38:00.000-07:00</published><updated>2011-04-19T13:45:38.768-07:00</updated><title type='text'>NaroCAD New Background Colors and a Twist</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-mLyvJtUpaF8/Ta3zd_iV2-I/AAAAAAAAAbo/5jUS26W1X0A/s1600/NaroLayout.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://4.bp.blogspot.com/-mLyvJtUpaF8/Ta3zd_iV2-I/AAAAAAAAAbo/5jUS26W1X0A/s400/NaroLayout.png" alt="" id="BLOGGER_PHOTO_ID_5597397608488623074" border="0" /&gt;&lt;/a&gt;NaroCAD had for some time background gradients, yet this made it awful to work with them, because sometimes they were flickering. This is the reason that we patched them using a patch from OpenCascade forum. We also made some ugly yet explicit tricks to make it happen right: we force updating screen after some seconds after NaroCAD starts. The flickering was still there but in rare cases after patching.&lt;br /&gt;I've eventually found another way to do it, flicker free as it seem and also the color theme is a bit more vivid.&lt;br /&gt;The reason is that we display a bitmap based background instead a layers based background which OCC (6.3) seemed to have that much problems with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5031762799746962292?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5031762799746962292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5031762799746962292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5031762799746962292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5031762799746962292'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/narocad-new-background-colors-and-twist.html' title='NaroCAD New Background Colors and a Twist'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-mLyvJtUpaF8/Ta3zd_iV2-I/AAAAAAAAAbo/5jUS26W1X0A/s72-c/NaroLayout.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4947801491031549051</id><published>2011-04-19T10:39:00.000-07:00</published><updated>2011-04-19T10:44:39.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net marshalling/wrapping'/><title type='text'>6.5.0 wrappers</title><content type='html'>Finalized wrapping the 6.5.0 packages, merged on them previous wrapper fixes and pushed on SVN. Next step (estimated to take 1-2 days) would be to fix the compiling errors.&lt;br /&gt;A problem that might appear after the new wrapper library is generated could be some problems on memory allocation deallocation caused by the fact that now all wrappers have finalizers (a good point will be that memory leaks will be greatly reduced).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4947801491031549051?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4947801491031549051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4947801491031549051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4947801491031549051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4947801491031549051'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/650-wrappers_19.html' title='6.5.0 wrappers'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3419219626966404709</id><published>2011-04-18T14:46:00.000-07:00</published><updated>2011-04-18T16:16:57.414-07:00</updated><title type='text'>Sketch Constraint Circle/Arc More Constraints</title><content type='html'>Based on SketchSolve's implementation more constraints are accessible. The code was changed at multiple levels to make constraints to be easy to set and less prone to errors (by using generics).&lt;br /&gt;&lt;br /&gt;See a demo here: &lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/T5X3WxkirGY?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/T5X3WxkirGY?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3419219626966404709?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3419219626966404709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3419219626966404709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3419219626966404709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3419219626966404709'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketch-constraint-circlearc-more.html' title='Sketch Constraint Circle/Arc More Constraints'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3955326206835881840</id><published>2011-04-17T09:50:00.000-07:00</published><updated>2011-04-17T09:52:35.051-07:00</updated><title type='text'>Sketch Hinter Preview</title><content type='html'>The Sketch's hinter will detect four combinations so far: if a line is horizontal/vertical and if two lines are parallel/perpendicular on each other.&lt;br /&gt;When you will click on it, it will actually check if those relations are possible and it will apply them as constraints.&lt;br /&gt;A video preview can be seen here:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6C04oIs4INM?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6C04oIs4INM?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3955326206835881840?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3955326206835881840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3955326206835881840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3955326206835881840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3955326206835881840'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketch-hinter-preview.html' title='Sketch Hinter Preview'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3970304133626927992</id><published>2011-04-15T06:11:00.000-07:00</published><updated>2011-04-15T06:17:14.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>6.5.0 wrapping status</title><content type='html'>Generated wrappers for the OpenCascade 6.5.0 and started verifying by hand and merging from previous version the compile fixes and bug fixes we made during time. Around 30% of the wrappers reviewed until now. After finishing will compile them and make tests to see if Naro crashes.&lt;br /&gt;All the new wrappers classes will have finalizers, this might lead to crashes during running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3970304133626927992?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3970304133626927992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3970304133626927992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3970304133626927992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3970304133626927992'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/650-wrapping-status.html' title='6.5.0 wrapping status'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1858473531463999489</id><published>2011-04-14T14:55:00.000-07:00</published><updated>2011-04-14T15:05:16.851-07:00</updated><title type='text'>Sketch Hinter Work</title><content type='html'>Hinter NaroCAD component have some limitation and it work odd for a sketch based drawing:&lt;br /&gt;- it practically have no high level information (and is really hard to achieve on complex shapes like a combination of results of different tooling). Sketch drawing works with much less shapes. For this reason a second point will likely become true:&lt;br /&gt;- the hinter will be able to introduce constraints automatically for shapes that can take advantage of it. Also the hinter may know some specific interactions to handle them in a proper way. To be more precise: the hinter in the past was simply know that an edge was parallel with the previous two points. The new hinter will likely know that you want a line with another line to be parallel and will do the corresponding work for you. In the global hinter, dragging the radius of a circle will give to you likely erroneous hints like line parallelism, which is at best useless&lt;br /&gt;- hinter will scale better: there will be no shape extraction logic, or a shape that is made of clone to simply pollute the entire scene with edges. If your sketch is unique, all the rest of scene will simply be ignored, so you will notice less clutter and will see it as working faster&lt;br /&gt;&lt;br /&gt;So you, the reader, already grasp the ideas and utility of the sketch hinter and when implementation will take shape, I hope you will enjoy working with it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1858473531463999489?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1858473531463999489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1858473531463999489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1858473531463999489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1858473531463999489'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketch-hinter-work.html' title='Sketch Hinter Work'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-147161497422338344</id><published>2011-04-14T03:15:00.000-07:00</published><updated>2011-04-14T03:17:23.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net marshalling/wrapping'/><title type='text'>6.5.0 wrappers</title><content type='html'>Today started working at updating the wrappers for the 6.5.0 version. Will analyze package differences and probably in a few days will have a new wrapper library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-147161497422338344?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/147161497422338344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=147161497422338344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/147161497422338344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/147161497422338344'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/650-wrappers.html' title='6.5.0 wrappers'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2195347144229203916</id><published>2011-04-13T06:16:00.000-07:00</published><updated>2011-04-13T07:56:53.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Release'/><title type='text'>1.6.1 Alpha preview</title><content type='html'>Today we made a 1.6.1 alpha build to offer users some preview on the latest features we plan to launch.&lt;br /&gt;&lt;br /&gt;We made a big rewrite on NaroCAD and added: integrated a solver algorithm, implemented the Sketch concept and 2D tools that use the Sketch, reimplemented Extrude to work with sketch shapes, added 2D dragging handles that work on the current sketch. A final updater version was also included in this build.&lt;br /&gt;&lt;br /&gt;A sample movie that demonstrates lines drawn having a perpendicular constraint on them. Demonstrates solver behavior when a point is dragged:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LgwZ1Kh19mo?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/LgwZ1Kh19mo?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Another sample that demonstrates drawing a rectangle (that is built from lines with constraints) and also a circle center connected to one rectangle corner:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tNZ2rvKCYPk?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/tNZ2rvKCYPk?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Download &lt;b&gt;NaroCAD 1.6.1 Alpha&lt;/b&gt; from &lt;a href="http://narocad.com/index.php?option=com_content&amp;view=article&amp;id=47&amp;Itemid=54"&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2195347144229203916?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2195347144229203916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2195347144229203916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2195347144229203916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2195347144229203916'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/161-alpha-preview.html' title='1.6.1 Alpha preview'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3604989508191261214</id><published>2011-04-12T19:02:00.000-07:00</published><updated>2011-04-12T19:04:28.061-07:00</updated><title type='text'>Rectangle as Constrained Lines</title><content type='html'>Rectangle implementation is defined right now as constrained based four lines shapes. &lt;br /&gt;This implementation shows lively how constrains work and will be a good test case to them too.&lt;br /&gt;So look here for details:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wY4quGUPRwc?hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wY4quGUPRwc?hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3604989508191261214?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3604989508191261214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3604989508191261214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3604989508191261214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3604989508191261214'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/rectangle-as-constrained-lines.html' title='Rectangle as Constrained Lines'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3093910579333459349</id><published>2011-04-09T17:07:00.000-07:00</published><updated>2011-04-09T17:12:27.638-07:00</updated><title type='text'>Sketch Constraint Document Apply</title><content type='html'>Sketch shapes that are referred by constraints if changed on commit they will trigger automatically the solver. This also implied a code refactor that exposes which shapes are lively changed in document. Also, based on Sami's work that when you press Sketch button, the sketch shapes buttons are enabled, the code was made better both as quality and how behaves making it more consistent and easy to use. The Sketch Constraints button was moved to the Sketch Section so will be easily accessible to access shapes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3093910579333459349?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3093910579333459349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3093910579333459349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3093910579333459349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3093910579333459349'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketch-constraint-document-apply.html' title='Sketch Constraint Document Apply'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4829426978862654901</id><published>2011-04-08T14:47:00.000-07:00</published><updated>2011-04-08T14:49:45.850-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>2D shapes dragging handles</title><content type='html'>Modified line dragging handles so that the user can drag 2D shapes only in their Sketch plane. Implemented also a new type of 2D rectangle dragging handles used for 2D shapes. Will apply these modifications also at the other 2D shapes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-wLfn1Mb9_wY/TZ-CZ5LDUeI/AAAAAAAAAWg/L7medwoyuyU/s1600/Naro0904.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 207px;" src="http://4.bp.blogspot.com/-wLfn1Mb9_wY/TZ-CZ5LDUeI/AAAAAAAAAWg/L7medwoyuyU/s320/Naro0904.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5593332643572961762" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4829426978862654901?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4829426978862654901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4829426978862654901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4829426978862654901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4829426978862654901'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/2d-shapes-dragging-handles.html' title='2D shapes dragging handles'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-wLfn1Mb9_wY/TZ-CZ5LDUeI/AAAAAAAAAWg/L7medwoyuyU/s72-c/Naro0904.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-316278999070628217</id><published>2011-04-07T15:22:00.000-07:00</published><updated>2011-04-07T15:32:11.369-07:00</updated><title type='text'>SketchSolve Action Preview</title><content type='html'>A full solver for sketch shapes (based on SketchSolve code) is right now in preview state in an easy to use action. So this video explains it how it works and how to use it:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OZClOG_kJZo?hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/OZClOG_kJZo?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-316278999070628217?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/316278999070628217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=316278999070628217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/316278999070628217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/316278999070628217'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketchsolve-action-preview.html' title='SketchSolve Action Preview'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-801592050903737770</id><published>2011-04-06T10:26:00.001-07:00</published><updated>2011-04-06T10:28:49.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>2D Sketching tools</title><content type='html'>Worked at porting the 2D drawing tools to use the Sketch concept. Implemented the Arc CSE (center, start, end), Arc SER (start, end, radius), Ellipse tools including animations. Fixed the line and circle tools, improved the sketch launch/close functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-801592050903737770?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/801592050903737770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=801592050903737770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/801592050903737770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/801592050903737770'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/2d-sketching-tools.html' title='2D Sketching tools'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5299631766936428782</id><published>2011-04-03T05:44:00.000-07:00</published><updated>2011-04-03T10:20:59.933-07:00</updated><title type='text'>SketchSolve NaroCAD Infrastructure Explained</title><content type='html'>SketchSolve is a 2D Sketch Constraint Solver and NaroCAD is a 3D based designer.&lt;br /&gt;SketchSolve have mostly a &lt;a href="http://en.wikipedia.org/wiki/Dynamic_programming"&gt;dynamic programming&lt;/a&gt; solution optimizer that will apply the constraints using a big dispatcher to compute the errors that may happen in applying the constraints.&lt;br /&gt;From NaroCAD standpoint challenges are at two levels: sketch shapes need to be sketch oriented, so by design all shapes get references to a sketch. The second problem is how to setup at programming level map the Line, Point, Arc and Circle from NaroCAD to SketchSolve semantics and after the SketchSolve is done, to make things back. Another small feature, yet useful is that those constraints are in a chain, so at programming level, the code at NaroCAD level is smart enough that by simply stating a shape, will build all the dependency chains to be computed in SketchSolve. To be both efficient, this code uses the GraphMapping component that compute back-references and get the mapped constraints.&lt;br /&gt;&lt;br /&gt;So let's take a simple(st) case:&lt;br /&gt;"NaroCAD have defined two points and one constraint (PointToPoint) and one point may be moved"&lt;br /&gt;How the back logic works:&lt;br /&gt;- the scene computes the back references: so P1, P2 are references by P2PC&lt;br /&gt;- BFS algorithm will find in P1 -&amp;gt; P2PC -&amp;gt; P2&lt;br /&gt;- a re-mapping will translate NaroCAD shapes and constraints will be converted in SketchSolve logic&lt;br /&gt;- SketchSolve will solve the the constraint system and will retranslate shapes to make the system to work&lt;br /&gt;- at the end shapes will be un-mapped from SketchSolve so the constraints will work accordingly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5299631766936428782?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5299631766936428782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5299631766936428782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5299631766936428782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5299631766936428782'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/04/sketchsolve-narocad-infrastructure.html' title='SketchSolve NaroCAD Infrastructure Explained'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2270992838477291182</id><published>2011-03-31T20:16:00.001-07:00</published><updated>2011-03-31T20:22:19.054-07:00</updated><title type='text'>SketchSolve Infrastructure Implemented</title><content type='html'>SketchSolve is a great project and offers inherited capabilities for 2D shapes yet a translation in between NaroCAD logic and SketchSolve data are needed. So I've ported an unit-test (yet the easiest one) to make possible to work with those two components (NaroCAD's document structure and SketchSolve data).&lt;br /&gt;&lt;br /&gt;In fact this code works with minimal code to include all existing SketchSolve in NaroCAD.&lt;br /&gt;This code is also an internal working feature and we are team are thinking the way things will work integrated eventually at UI level.&lt;br /&gt;&lt;br /&gt;This milestone is important as matches the most of refactors of NaroCAD were just in idea of separating the internal logic between sketch shapes to permit SketchSolve to operate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2270992838477291182?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2270992838477291182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2270992838477291182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2270992838477291182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2270992838477291182'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/sketchsolve-infrastructure-implemented.html' title='SketchSolve Infrastructure Implemented'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6558771260610035213</id><published>2011-03-30T08:03:00.000-07:00</published><updated>2011-03-30T08:07:20.645-07:00</updated><title type='text'>Close behavior on application button double click</title><content type='html'>A few fixes to the NaroCAD window were made: a few pixels were lost from the Quickaccess toolbar buttons when NaroCAD was in full-screen mode; The same fix was applied to the application button in full-screen mode.&lt;br /&gt;     I also implemented a close behavior when double clicking the application button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6558771260610035213?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6558771260610035213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6558771260610035213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6558771260610035213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6558771260610035213'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/close-behavior-on-application-button.html' title='Close behavior on application button double click'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-58014079857490384</id><published>2011-03-29T14:42:00.000-07:00</published><updated>2011-03-29T14:50:24.724-07:00</updated><title type='text'>Extrude Look&amp;Feel</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-9xYLW-MYgWI/TZJSkOqIVSI/AAAAAAAAAa4/X2GhW1w_Y6Q/s1600/combined_extrude_preview.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://1.bp.blogspot.com/-9xYLW-MYgWI/TZJSkOqIVSI/AAAAAAAAAa4/X2GhW1w_Y6Q/s400/combined_extrude_preview.png" alt="" id="BLOGGER_PHOTO_ID_5589620869883778338" border="0" /&gt;&lt;/a&gt;Extrude tool right now works concomitantly so you can select more face to extrude them. Also, auto-facing appears automatically (as semi-transparent faces.&lt;br /&gt;If you did click on an extrude and was a wrong choice, you will click once again and it will be removed from actual list of extrudes.&lt;br /&gt;Bugs are mostly in flickering area and sometimes auto-facing will not catch all faces. Probably when code will be ported to OpenCascade 6.5 a lot of fixes will appear in this area.&lt;br /&gt;Hopefully this new extrude will save clicks, will be more precise (as you can use both the slider and the values using expressions if needed). so enjoy using it! (after last of bug fixing will make it better)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-58014079857490384?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/58014079857490384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=58014079857490384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/58014079857490384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/58014079857490384'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/extrude-tool-right-now-works.html' title='Extrude Look&amp;Feel'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-9xYLW-MYgWI/TZJSkOqIVSI/AAAAAAAAAa4/X2GhW1w_Y6Q/s72-c/combined_extrude_preview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8363167567721020881</id><published>2011-03-28T22:29:00.000-07:00</published><updated>2011-03-28T22:44:01.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Sketch concept</title><content type='html'>Finalized implementing a Sketch concept like the ones used in other CAD applications. Each 2D shape will hold a reference to a sketch, a sketch holds as info a plane, the 2D shapes tools will not work without having a sketch active.&lt;br /&gt;The sketch will be useful also when integrating the solver, as the solver uses 2D coordinates to find solutions. We'll use the sketch plane to calculate the 2D points from the 3D ones.&lt;br /&gt;&lt;br /&gt;Modified the circle tool to work on sketch. It started to work. Some final polishing needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8363167567721020881?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8363167567721020881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8363167567721020881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8363167567721020881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8363167567721020881'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/sketch-concept.html' title='Sketch concept'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5488910917288137974</id><published>2011-03-28T05:30:00.001-07:00</published><updated>2011-03-28T05:33:46.224-07:00</updated><title type='text'>Extrude revamping (part II)</title><content type='html'>Extrude is improved by having a live drag handler and a dialog that you can put precise values to it.&lt;br /&gt;There are remaining bugs there but they are going down (mostly in auto-face area)and finishing the dialog that sets extrude.&lt;br /&gt;The code is a bit harder to work with cause can be as many extrudes at once and previously were bugs in how references are stored. Hopefully in short time the extrude will be previewed as a video to express it how it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5488910917288137974?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5488910917288137974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5488910917288137974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5488910917288137974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5488910917288137974'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/extrude-revamping-part-ii.html' title='Extrude revamping (part II)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2429245509709194639</id><published>2011-03-20T20:21:00.000-07:00</published><updated>2011-03-20T20:48:16.252-07:00</updated><title type='text'>Extrude Revamping (Part I)</title><content type='html'>Extrude tool is good but not that good. Some limitations are easy to spot and as we work extensively to improve the internal abstractions, one of them is how extrude tool will work.&lt;br /&gt;Some of the changes will be:&lt;br /&gt;- you can extrude more faces at once that are generated just in the moment you select extrude&lt;br /&gt;- there will be a non-intrusive mini-dialog specific for extrude&lt;br /&gt;&lt;br /&gt;Work is still ongoing, but I just wanted to post this as things start getting shape.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2429245509709194639?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2429245509709194639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2429245509709194639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2429245509709194639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2429245509709194639'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/extrude-revamping-part-i.html' title='Extrude Revamping (Part I)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6019480994107140944</id><published>2011-03-18T08:29:00.001-07:00</published><updated>2011-03-18T08:45:29.962-07:00</updated><title type='text'>Updater - Part VII</title><content type='html'>The updater is now mostly done. I added a few notification windows: if newer version are available and the appropriate update check boxes are checked, NaroCAD will show a window with the new features of the newer version and will give you the opportunity to update now, next time or never; the never option is not implemented yet, but it will only uncheck the update check boxes from options; After the main downloads are done, a small window will appear in the lower right side of your screen, telling you that the main downloads are completed; this window will automatically close in 5 seconds, and will not freeze NaroCAD, or do other nasty things. The last window that will bother you, will appear at the next NaroCAD restart, after the update has been successfully completed; as the last one, it will appear in the lower right side of the screen, and will close automatically&lt;br /&gt;     With this, the Updater is almost completed. The only things that need to be done are to implement the options from the first message box and to test it for any possible bugs.&lt;br /&gt;     The updater from the last release has a bigger problem than expected. If you want it to do nightly updates, you have to check both updater check boxes, and delete the "auxiliary' directory from NaroCAD. This problem only appears for nightly updates, but even so, it's not quite what I had expected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6019480994107140944?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6019480994107140944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6019480994107140944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6019480994107140944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6019480994107140944'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/updater-part-vii.html' title='Updater - Part VII'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-321549610879902955</id><published>2011-03-15T10:40:00.000-07:00</published><updated>2011-03-15T19:02:30.534-07:00</updated><title type='text'>Line Internal Changes (Part III)</title><content type='html'>Circle and Line was migrated to reference based points. This obviously make that tools that depend on it, to crash if they will not use the same constructs (like circle will use direct point instead a reference to an existing point).&lt;br /&gt;The places where this code which fails were around (and now are fixed):&lt;br /&gt;- face picker feedback (a circle that shows the plan you're in)&lt;br /&gt;- some actions will have a skeleton to be fixed that they are dependent (here is about the Arc actions)&lt;br /&gt;- another action (Extrude) have a skeleton that will be developed in future to be smarter, right now the skeleton code is here, but more will follow in another blog post&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-321549610879902955?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/321549610879902955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=321549610879902955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/321549610879902955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/321549610879902955'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/line-internal-changes-part-iii.html' title='Line Internal Changes (Part III)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7167920889660685852</id><published>2011-03-13T12:27:00.000-07:00</published><updated>2011-03-13T12:34:23.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Solver algorithm started working</title><content type='html'>Debugged and fixed the Sketchsolve algorithm ported to C# by my colleague. Made unit tests for basic use cases. For point to point, horizontal and vertical constraints it seems to find correct solutions.&lt;br /&gt;Next steps would be to add also parallelism and perpendicular constraints (to cover cases like a rectangle made from lines with constraints) then start integrating into Naro the solver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7167920889660685852?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7167920889660685852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7167920889660685852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7167920889660685852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7167920889660685852'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/solver-algorithm-started-working.html' title='Solver algorithm started working'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7965416415850924570</id><published>2011-03-12T12:26:00.000-08:00</published><updated>2011-03-12T12:31:46.729-08:00</updated><title type='text'>Line Internal Changes (Part II)</title><content type='html'>The line was internally simplified and more cases of the code were replaced. Line in poly mode and Line angle does not work yet, but soon will be. Practically almost all lines were replaced with those changes. Still crashes are waiting over the corner, but I will continue diligently to fix those cases and to break others (mostly circle based shapes will also be moved in the same framework) and fix them back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7965416415850924570?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7965416415850924570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7965416415850924570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7965416415850924570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7965416415850924570'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/line-internal-changes-part-ii.html' title='Line Internal Changes (Part II)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1178835934916736562</id><published>2011-03-09T17:19:00.000-08:00</published><updated>2011-03-09T17:29:19.302-08:00</updated><title type='text'>Line Internal Changes</title><content type='html'>Line is changed to be expressed as reference to a shared net of points. AutoGroup/AutoFace is also disabled by default.&lt;br /&gt;This will make really easy from internal logic point of view things like smarter common point dragging will make all shapes related to move, without any "constraint" logic and so on.&lt;br /&gt;Also the code is made fairly simple by making that mostly the changes to go from:&lt;br /&gt;  builder[1].Point3D = Points[0];&lt;br /&gt;to:&lt;br /&gt;  var documentPointLinker = new DocumentPointLinker(_previewDocument);&lt;br /&gt;  var firstPointBuilder = documentPointLinker.GetPoint(Points[0]).Node;&lt;br /&gt;  builder[1].Reference = firstPointBuilder;&lt;br /&gt;&lt;br /&gt;This will make automatically all "magic" to reference external points.&lt;br /&gt;The external code that uses internal line structure, change minimalistic too, like from:  axis.SetLocation(Dependency[3].TransformedPoint3D.GpPnt);&lt;br /&gt;to:&lt;br /&gt;axis.SetLocation(Dependency[3].RefTransformedPoint3D.GpPnt);&lt;br /&gt;&lt;br /&gt;As user, you will see somelike this:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u7QPhWuPZGI?hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/u7QPhWuPZGI?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1178835934916736562?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1178835934916736562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1178835934916736562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1178835934916736562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1178835934916736562'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/line-internal-changes.html' title='Line Internal Changes'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3384400197710619074</id><published>2011-03-09T16:20:00.000-08:00</published><updated>2011-03-09T16:38:24.709-08:00</updated><title type='text'>Why 1.6.x?</title><content type='html'>We know many +1 versions and version names are mostly esoteric for all purposes. For example Linux Kernel is "forever" 2.6 (from 2004, and the previous releases are +0.2 every two years, so in 1998 you will probably get installed in your distro a 2.0 kernel, in 2000 a 2.2, in 2002 a 2.4, etc.) and not changed for a long time and 1.6.0 brings little changes compared to 1.5.7 version.&lt;br /&gt;NaroCAD tries to keep the cadence of a new release at every 3 weeks (and we focus to do development for first three weeks) and we mostly consider a line of releases and at every new release we will add a 0.0.1 to its number.&lt;br /&gt;Anyway, as people we judge version numbers. Windows 7 even is like a new Explorer and a Windows Vista SP2 kernel, we consider Windows 7 as being "vastly superior" to Vista bad reputation.&lt;br /&gt;So we did jump to 1.6 line as we considered that if you did not like the 1.5.0, it worth the upgrade. Doing a bit of cherry picking, you will find that 1.6 will have back the updater, will have a smoother experience all over the place, a faster hinter (both UI wise and how is computed internally), you have gizmos. So if you refrained to use NaroCAD as it was missing this or that feature, was an invitation just to check if it does really gets better.&lt;br /&gt;So in short what should be to learn: we do development incrementally, we try to make all builds stable (yet some specific tools lack on it, we love crash reports, and if we can reproduce we work hard to fix those tools, or rewrite them to be easier to use and to make more sense). Also we do at every around 3 weeks a new release, if you will like to know if you are ready to upgrade, try this blog to get the announcement and to see if new features make you love those tools and if they do, you're more than welcome to update.&lt;br /&gt;At the end, we want to increase the version number to you to know that it worth the upgrade, if you had a 1.5.0 like release, and was something you dislike (who knows, maybe 1.6 it will be the case for you) and as you may see that this development of 1.6.1 will not fully fill your needs (we cannot rewrite all NaroCAD in 3 weeks), you can certainly try 1.7.x and you will likely be more than impressed. We also have an updater that makes it easier to you to be up-to-date so you're encouraged to test releases, and every crash will make for us possible to test and fix your problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3384400197710619074?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3384400197710619074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3384400197710619074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3384400197710619074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3384400197710619074'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/why-16x.html' title='Why 1.6.x?'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5077012182965933526</id><published>2011-03-08T06:25:00.000-08:00</published><updated>2011-03-08T06:31:35.563-08:00</updated><title type='text'>Updater - Part VI</title><content type='html'>The updater is now working correctly. I also made some improvements:&lt;br /&gt;- duplicate code was removed. At the beginning, the version files were added manually in our projects. After the changes, the version files are red from the full.iss files.&lt;br /&gt;- another improvement is a project that automatically generates all the version data ( the version XML file and all compressed files)&lt;br /&gt;     The only thing that's missing is a window that tells the user if newer versions are available and the new tools. At the moment, the updater will automatically search for new versions if the appropriate check boxes are checked from the options menu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5077012182965933526?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5077012182965933526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5077012182965933526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5077012182965933526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5077012182965933526'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/updater-part-vi.html' title='Updater - Part VI'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5101494728516264172</id><published>2011-03-08T05:39:00.000-08:00</published><updated>2011-03-08T07:50:41.931-08:00</updated><title type='text'>NaroCAD 1.6.0 Released</title><content type='html'>NaroCAD team worked to improve in many areas and really notable features are:&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Updater:&lt;/span&gt; is much better than previous iterations: it have better consistency checks. You will use much less bandwidth, because it will download just necessary files, even for us, the versioning is made in a much smoother way. We will continue to make the updating experience as smooth as possible.&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Spline interpolated, Control point spline&lt;/span&gt;: they will work more precise and smooth than ever: you will see live how they are made, you are able to use command line to set precise coordinates, you can combine and split them with an intuitive way to do it: click on the points that are automatically computed to show to you where you can split those lines, and those splines will be cut accordingly&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Gizmo points are hinter aligned&lt;/span&gt;: gizmo will work more precise as hinter will automatically align with various geometry you will have around&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Edge intersection for horizontal, vertical lines&lt;/span&gt;: horizontal and vertical lines did not compute previously the intersection points, and right now they do and they do it in a correct way&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Fixed fillet/chamfer 2D&lt;/span&gt;: and you can use them in your designs. Another&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Angle between lines&lt;/span&gt;: if you have various lines in your scene and you want a precise drawing&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt; Hinter toolbar:&lt;/span&gt; user can enable with just one click point alignment, line continuation and so on. It is much faster and enjoyable to work!&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Redo tool&lt;/span&gt;: pressing Tilde key and if you have selected any tool, NaroCAD will switch automatically to the same shape/tool creation context.&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Customizable per action toolbar&lt;/span&gt;: so future actions (today Spline and Angle Between Lines are using it) may have specific customization without having a floating (sometimes modal) dialog box making it less intrusive and let you focus on design.&lt;br /&gt;&lt;br /&gt;Interested? &lt;a href="http://www.narocad.com/"&gt;Download it from here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5101494728516264172?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5101494728516264172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5101494728516264172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5101494728516264172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5101494728516264172'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/narocad-160-released.html' title='NaroCAD 1.6.0 Released'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6747779613339336861</id><published>2011-03-07T19:13:00.000-08:00</published><updated>2011-03-07T19:24:11.045-08:00</updated><title type='text'>Layer 2D Manager Bugs</title><content type='html'>&lt;a href="http://narocad.blogspot.com/2010/12/visual-hints-solver-related.html"&gt;Layers mouse-following text was appear to be broken in some cases&lt;/a&gt;.&lt;br /&gt;I found that causes were mostly for two reasons: was a bug in the way this code was used (by mistake, every time an action was started, was creating a new layer manager), the way it was updated (hinter component of our code may call update view just before adding layer, so nothing visible) and also I think an OCC related bug (that layers seems to not update if no scene (OCC context) changes are made).&lt;br /&gt;So the whole code was moved up and down (in the idea that View component will include the OCC layer manager) so will not make possible cases like previous told. Also those layer structures are cleaned up every time you switch an action (making this code less prone to memory leaks) and will be less prone for API misuse. This refactor make it possible to discover that spline tools show mouse coordinate juxtaposed with hinter text, and this was also fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6747779613339336861?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6747779613339336861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6747779613339336861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6747779613339336861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6747779613339336861'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/layer-2d-manager-bugs.html' title='Layer 2D Manager Bugs'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2597297472496866946</id><published>2011-03-04T17:27:00.000-08:00</published><updated>2011-03-04T17:31:36.988-08:00</updated><title type='text'>Re(do) Shapes Pressing Tilde</title><content type='html'>Pressing Tilde will switch to the tool that will create the same shape.&lt;br /&gt;&lt;br /&gt;See a small demo here:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tAum0HdSDwI?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/tAum0HdSDwI?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2597297472496866946?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2597297472496866946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2597297472496866946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2597297472496866946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2597297472496866946'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/redo-shapes-pressing-tilde.html' title='Re(do) Shapes Pressing Tilde'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2771004971803013458</id><published>2011-03-04T14:51:00.000-08:00</published><updated>2011-03-04T16:10:36.112-08:00</updated><title type='text'>Bug Fixing Again</title><content type='html'>All splines (regular, interpolated, control point and regular "old" one) have accessible and exposed the dragging control points. They are more useful than normal ones. &lt;br /&gt;I've updated the code of Line angle to compute the regular one and give an exception, so you always lose the angle if you will do a Line Set angle, but hopefully I'll find why (or who knows, bxtrx ;) ).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9xozVbvsuqw?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9xozVbvsuqw?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2771004971803013458?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2771004971803013458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2771004971803013458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2771004971803013458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2771004971803013458'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/bug-fixing-again.html' title='Bug Fixing Again'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2430379107735149899</id><published>2011-03-03T00:22:00.000-08:00</published><updated>2011-03-03T00:23:06.520-08:00</updated><title type='text'>Updater - Part V</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;I changed the versioning file from txt to xml. The advantage is that I have more control over the code because I serialize and deserialize with the help of a special class. This way, it’s enough to deserialize the versioning data once, in order to obtain and easily use all information stored in it. Of course, the older versions with the versioning file as txt won’t work with this one. Even more, the updater code is not completed yet. It is possible that some nightly builds had old updater code. If you have problems starting NaroCAD in the last period, it might be due to unfinished code. If you have such problems, it is best to reinstall NaroCAD. Also be aware that nightly builds might not always work correctly due to unfinished tools. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2430379107735149899?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2430379107735149899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2430379107735149899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2430379107735149899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2430379107735149899'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/updater-part-v.html' title='Updater - Part V'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3698612555763598890</id><published>2011-03-02T14:35:00.000-08:00</published><updated>2011-03-02T14:45:14.718-08:00</updated><title type='text'>Bug Fixing</title><content type='html'>I work on bug fixing and I will work on spline area to do more fixes to be more complete as coding goes. I've also worked a little reviewing Sami's code on updater.&lt;br /&gt;Editing works different for Spline new code as editing tools work by scanning automatically the internal structure of shapes dependency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3698612555763598890?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3698612555763598890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3698612555763598890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3698612555763598890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3698612555763598890'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/03/bug-fixing.html' title='Bug Fixing'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1885129690872310275</id><published>2011-02-28T18:37:00.000-08:00</published><updated>2011-02-28T18:51:03.294-08:00</updated><title type='text'>Combine Spline Tool. Angle Between Lines Tool</title><content type='html'>Spline have a new tool that is used to combine two coincident splines. It is useful if you will work with multiple splines or you split an already existing spline and you found (later) that you want to be again in one piece.&lt;br /&gt;A tool to chose the angle between lines (this tool is a bit unpolished, so may change a little in future). &lt;br /&gt;A preview is shown below:&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nMc_Db_is0Y?hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/nMc_Db_is0Y?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1885129690872310275?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1885129690872310275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1885129690872310275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1885129690872310275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1885129690872310275'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/combine-spline-tool-angle-between-lines.html' title='Combine Spline Tool. Angle Between Lines Tool'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3000187975517325179</id><published>2011-02-28T07:35:00.001-08:00</published><updated>2011-02-28T07:35:59.764-08:00</updated><title type='text'>Updater - Part IV</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;The updater now does a file compression. This means that NaroCAD downloads the compressed files, makes an uncompressing and continues with its job. By downloading compressed files, the download is 3-4 times smaller. One other advantage is that NaroCAD can detect if the file was downloaded correctly by trying to uncompress. If it works, the download was successful. If not, the uncompressing will fail. This way, it’s much easier to determine if a file was downloaded correctly or not. While this change is definitely good for the user, it also benefits us, because it doesn’t take so much time to upload NaroCAD and makes testing the updater a bit faster. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3000187975517325179?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3000187975517325179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3000187975517325179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3000187975517325179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3000187975517325179'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/updater-part-iv.html' title='Updater - Part IV'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3160841381309865090</id><published>2011-02-27T13:43:00.001-08:00</published><updated>2011-02-27T13:55:17.482-08:00</updated><title type='text'>Spline Tools Improvements</title><content type='html'>Split Spline is a new tool. It will preview the points you defined your spline so you can split in parts. Spline tools have a fast-access buttons (this view right under ribbon control) will make much faster to access without going to contextual spline menu over and over (you may try for example to define an interpolated spline, then try to split and then go back to interpolated spline and you will understand right away what I'm talking about :) ).&lt;br /&gt;Interpolated Spline and Control Point spline have two small improvements:&lt;br /&gt;- pressing shift for a point on a spline will delete it. This is useful if you made a point that was defined on a wrong coordinate and you don't want to remake it&lt;br /&gt;- if you start dragging a point, you can insert the coordinate from command line, so you may can work right away and fix it later.&lt;br /&gt;The editing component of spline is not yet finished, but expect more goodies in this area.&lt;br /&gt;&lt;br /&gt;See a small demo here:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Fjy3r_M7rSg?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Fjy3r_M7rSg?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3160841381309865090?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3160841381309865090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3160841381309865090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3160841381309865090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3160841381309865090'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/spline-tools-improvments.html' title='Spline Tools Improvements'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-983895620435764586</id><published>2011-02-27T03:15:00.000-08:00</published><updated>2011-02-27T03:17:43.477-08:00</updated><title type='text'>Spline Undo/Redo Fixes</title><content type='html'>Spline have a representation that was prone to Undo/Redo errors as there is a need for custom logic for having a dynamic sized shape. This logic is fixed&lt;br /&gt;Also I've did the skeleton work for Split Spline tool but this will be described (most likely) in the next blog post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-983895620435764586?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/983895620435764586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=983895620435764586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/983895620435764586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/983895620435764586'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/spline-undoredo-fixes.html' title='Spline Undo/Redo Fixes'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-433176751584435656</id><published>2011-02-25T15:31:00.000-08:00</published><updated>2011-02-28T15:27:04.664-08:00</updated><title type='text'>Block Plane Enhancement</title><content type='html'>Block Plane is smarter: if you will select a face like on XOY, YOZ or ZOX plane, the view will also follow suit (for example if you picked XOY design, the view will switch to Top), so you can start doing designs right away.&lt;br /&gt;Hinter is also shown live how it works as it can be seen here:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WFr9ybfx9zg?hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/WFr9ybfx9zg?hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-433176751584435656?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/433176751584435656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=433176751584435656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/433176751584435656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/433176751584435656'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/block-plane-enhancement.html' title='Block Plane Enhancement'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1605091197116445403</id><published>2011-02-24T16:48:00.000-08:00</published><updated>2011-02-24T16:56:52.334-08:00</updated><title type='text'>TreeView Assert Fix and Solver Quick Enablement</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-OZvvPKM-Eho/TWb8lRbpEeI/AAAAAAAAAaU/txh00f2JIkQ/s1600/solver_rule.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 234px; height: 128px;" src="http://3.bp.blogspot.com/-OZvvPKM-Eho/TWb8lRbpEeI/AAAAAAAAAaU/txh00f2JIkQ/s400/solver_rule.png" alt="" id="BLOGGER_PHOTO_ID_5577422905809637858" border="0" /&gt;&lt;/a&gt;TreeView can assert (and crash) sometimes with an assertion. This assertion is made to not introduce twice the same element. Right now even if an element is introduced twice, the event is logged but will not crash NaroCAD.&lt;br /&gt;Solver options are exposed from the main interface to be one click away. One other change is that (excluding this screenshot that was a development photo) is changed to be named Hinter. In this way I will not use erroneously interchangeably those two words.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1605091197116445403?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1605091197116445403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1605091197116445403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1605091197116445403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1605091197116445403'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/treeview-assert-fix-and-solver-quick.html' title='TreeView Assert Fix and Solver Quick Enablement'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-OZvvPKM-Eho/TWb8lRbpEeI/AAAAAAAAAaU/txh00f2JIkQ/s72-c/solver_rule.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8808006536804163625</id><published>2011-02-24T07:22:00.001-08:00</published><updated>2011-02-24T07:22:50.761-08:00</updated><title type='text'>Updater - Part III</title><content type='html'>I managed to solve all the problems related to downloading the needed files. The main problem was that I made too many tests after downloading the files, so many that the integrity of files was never ok. I also made a cool trick while fixing these problems. NaroCAD will not only download the newer files, but will also check if the current files are still valid. Because I couldn’t use the hash code for many of the files, I checked the file lengths (in case they even exist on disk). What does this mean? Let’s say that the user “accidentally” deletes the help files, some NaroCAD icons, and more. If NaroCAD needs update and still has enough files to start, the update will verify that even the unchanged files still exist on disk and that they have the correct size. This way, the updater will automatically download those files for you, and will fix and update NaroCAD at the next start-up. Even if you have the latest version, and “accidentally” delete some files that are not critical to NaroCAD at start-up, just change the version number from the Version file to a lower one. NaroCAD will try an update and will heal itself :) Don’t worry if the internet connection is lost during that process. NaroCAD will try again at the next start-up, not from scratch, but it will continue from where it had left off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8808006536804163625?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8808006536804163625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8808006536804163625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8808006536804163625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8808006536804163625'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/updater-part-iii.html' title='Updater - Part III'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2672480427896750903</id><published>2011-02-23T14:25:00.000-08:00</published><updated>2011-02-23T16:19:58.407-08:00</updated><title type='text'>Cubic Spline Improvments</title><content type='html'>I've finished polishing spline related tools in NaroCAD to be more complete and easier to use.&lt;br /&gt;So you will have three spline types under NaroCAD and they will work a bit better than in the past.&lt;br /&gt;Some fixes may be still needed but at large Spline related tools are nice to work with and you may enjoy using them (in next releases). OpenCascade 2D layers do not work concomitantly (or I've misunderstood how they work) but I've rewrite to make possible to write multiple texts so when you will use Spline you will see coordinates)&lt;br /&gt;Note: cause of internal changes, if you was using in the past Spline Path tool, I do recommend you to work with nighties, because this functionality is rewritten in a non compatible way. Also the old code was making to add features on it (like a proper editing code) very hard, so will be unlikely to get fixes will be in that area.&lt;br /&gt;So take a look:&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Yw0-fQZPjK8?hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Yw0-fQZPjK8?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Mistake: cubic splines are defined by 4 points.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2672480427896750903?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2672480427896750903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2672480427896750903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2672480427896750903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2672480427896750903'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/cubic-spline-improvments.html' title='Cubic Spline Improvments'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1787755649864958761</id><published>2011-02-23T07:32:00.000-08:00</published><updated>2011-02-23T07:37:44.293-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Arc gizmos</title><content type='html'>For simpler editing of Arc(start, end, radius) and Arc (radius, start, end) added Gizmos for them. Made Gizmos also for the cone base, that would allow users to modify the cone base by dragging with mouse.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-ez2VUacGvb0/TWUpCSLL04I/AAAAAAAAAWY/Q2CELv3ia5Q/s1600/NaroCAD2302.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 171px;" src="http://4.bp.blogspot.com/-ez2VUacGvb0/TWUpCSLL04I/AAAAAAAAAWY/Q2CELv3ia5Q/s320/NaroCAD2302.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5576908832783455106" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1787755649864958761?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1787755649864958761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1787755649864958761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1787755649864958761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1787755649864958761'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/arc-gizmos.html' title='Arc gizmos'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ez2VUacGvb0/TWUpCSLL04I/AAAAAAAAAWY/Q2CELv3ia5Q/s72-c/NaroCAD2302.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5771507034638478858</id><published>2011-02-23T07:08:00.001-08:00</published><updated>2011-02-23T07:08:58.158-08:00</updated><title type='text'>Updater - Part II</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;Yesterday I told you that NaroCAD will only download the files that were changed during the new release. Although I encountered problem with checking the file length, the hash code was a bit tricky. The main problem is that the hash code had different values depending on the time the file was created, and other parameters.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;The main problem was that every build changed the hash code of the project files. The only solution to this problem would be to study how the date information is stored in files, study the encryption and decide whether the new file has useful information or not. Still, we mustn’t forget that the size of these files is small (very small if compressed). Even if I were to study these changes, I would still have to download the file in order to do the analysis. Even more, the analysis would be time consuming. The best way is to download all the generated files and check if changes were made to all the other files. This is a bit easier because these files don’t suffer from small changes, usually no changes at all. Given that the files without such problems are more than 70% of all NaroCAD files, the updater will prove much faster than actually downloading and installing NaroCAD.&lt;/p&gt;&lt;p class="MsoNormal"&gt; To tell the truth, even the other files have different hash code when created by the installer. The advantage is that building the projects will not change these files. This means that the developers will not store different hash code for these files when generating the information of the versioning files. If these files are changed, the information from the versioning files will also change. Knowing this helps me to implement a faster updater. The only trick is that the newer hash code of these files (for example OpenCascade libraries, icons, etc) will be compared with the hash code from the current versioning files. This way, the contents of these files will not be red. What does this mean? If someone changes a character of such a file on purpose (so that the length remains the same) the updater will not be able to tell the difference. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, to make it brief: the files generated by the NaroCAD projects will always be replaced in the new versions, and all other files will be downloaded only if needed. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5771507034638478858?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5771507034638478858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5771507034638478858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5771507034638478858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5771507034638478858'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/updater-part-ii.html' title='Updater - Part II'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5577794731559012705</id><published>2011-02-22T14:48:00.000-08:00</published><updated>2011-02-22T15:16:54.997-08:00</updated><title type='text'>NaroCAD Startup Time And Lazy Loading</title><content type='html'>NaroCAD historically was used to use SCSF and as it was removed for some time, NaroCAD improves start time from like (I will use timing from my machine) 7-8 seconds to 4 seconds. Most of this time was because of &lt;a href="http://en.wikipedia.org/wiki/Just-in-time_compilation"&gt;JIT&lt;/a&gt; of SCSF and SCSF related logic.&lt;br /&gt;As of today the startup time is splitted like this: library startup (.Net, DirectX subset used by WPF, OpenCascade startup, browser control that is used both on Tips window and on Help view), JIT (still, but at a smaller margin), layouting (Ribbon control will layout all buttons to fit right, all menu items and so on), NaroCAD framework logic and some Boo evaluation code.&lt;br /&gt;So as for now on my machine (which is an i5M CPU class laptop) is around 3 seconds and I will explain what was changed in mostly the last 2 months, from when SCSF was removed and how JIT time was also greatly removed.&lt;br /&gt;When we register things in NaroCAD (like actions, buttons) we always hit constructors. And this constructors are compiled with everything is in them. So, the logic that was in the past, regarding them was moved to an external method, that can be overriden named OnRegister. This will be called &lt;a href="http://en.wikipedia.org/wiki/Lazy_loading"&gt;lazily as needed&lt;/a&gt;, so you will likely you will not see that an action will need a list of inputs to be setup. Another thing is that most actions will inherit mostly two classes (ModifierContainer or DrawingLiveShape) making precompiling to happen just once.&lt;br /&gt;Another small issue was that layouting of all tabs take around 0.7 seconds, so tabs are also layouted from first time when you activate them. This will add just 0.2 seconds on average (for first time) when you will switch tab, but is much better if you will start often NaroCAD (hopefully not for crashing reasons).&lt;br /&gt;Another section that was seen in profiling, and was made in 1.5.7 timeframe (so you get this even without nightly builds) is that Boo expression evaluator will be used in any instance using an &lt;a href="http://en.wikipedia.org/wiki/Interpreter_%28computing%29"&gt;interpreter&lt;/a&gt;. This will mean that your expresions if are like loops, they will likely execute slower (yet, external methods are executed through a compiler). To run as an interpreter, makes the logic of the code much simpler from Boo parsing and executing side and will likely speedup 3x in most cases.&lt;br /&gt;At the end, regular poly tool was compiled at NaroCAD startup, but today is compiled just first time when is used.&lt;br /&gt;Why I wrote this post? Mostly to know that we do keep an eye on how NaroCAD works both outside (we get on average fewer errors than in previous releases as bug reports even as  &lt;a href="http://narocad.blogspot.com/2011/01/10000.html"&gt;download count goes up&lt;/a&gt;) and from inside.&lt;br /&gt;Also, I wanted to you to know how and why "NaroCAD is slow": WPF is like starting a small DirectX game, and similarly when we start OpenCascade libraries (that load OpenGL libraries), Internet Explorer control, Ribbon to do layouting, and so on, at the end you will get this startup time.&lt;br /&gt;Do you have a specific case when NaroCAD works slow for you? May you share it with us? Use NaroCAD and with your feedback we will make it better.&lt;br /&gt;As an update: sometimes Polar Coordinate setup may lose its values from options and all around bugs were fixed. We use cubic spline "magic number", so if you will draw splines that are placed in corned of a square, the 4 leg spline will approximate a circle as &lt;a href="http://www.tinaja.com/glib/ellipse4.pdf"&gt;described here&lt;/a&gt;. The next nightly may show it to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5577794731559012705?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5577794731559012705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5577794731559012705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5577794731559012705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5577794731559012705'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/narocad-startup-time-and-lazy-loading.html' title='NaroCAD Startup Time And Lazy Loading'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4508949256975988334</id><published>2011-02-22T01:10:00.000-08:00</published><updated>2011-02-22T01:11:02.534-08:00</updated><title type='text'>Updater - Part I</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;     I’ve started to implement an updater. Since it’s a lot to explain and since my work is not done yet, I will do it step by step. The user will be able to use 2 check boxes that allow NaroCAD to search for nightly builds, stable builds or nothing at all. I will use a button with different colors in order to tell the user if new updates are available, if files are being downloaded, or if the latest download is finished. One of my purposes is to download as less as possible in order to update NaroCAD. This is why I will use a versioning file that contains the current version (nightly or stable) and information about critical files in NaroCAD. As expected, newer versions will have a different version number and some of the files will disappear, new ones might probably appear or some of them might change because new features were implemented. In order to investigate if one of these files was changed, I decided to check the length of the file and its hash code. With this strategy, just a few files will be downloaded for each new NaroCAD version. I will end for today with the explanation of the 2 check boxes: the first one is called “Check for updates”; if this check box is unchecked, NaroCAD will not search for any new updates. When checking it, a new check box will appear “Experimental builds (nightly)”; if the user doesn’t check it, only the stable builds will be downloaded. If both of them are checked, NaroCAD will search for every Nightly Build. Note that the nightly builds contain the stable builds, so don’t worry, no features will be lost. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4508949256975988334?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4508949256975988334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4508949256975988334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4508949256975988334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4508949256975988334'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/updater-part-i.html' title='Updater - Part I'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7795343895002446638</id><published>2011-02-21T17:02:00.000-08:00</published><updated>2011-02-21T17:37:23.753-08:00</updated><title type='text'>Polar Coordinate Match</title><content type='html'>The last release (1.5.7) have a nice tool that locks lines on three major axis (OX, OY and OZ) that can be enabled/disabled (named Ortho tool). At the end I hope that you will feel more at home with free angles.&lt;br /&gt;Look how it works in this small video. If you want to test it, pick the nightly build from right:&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;embed src="http://www.youtube.com/v/K1VAIZc7r9Y?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Note, if you will want to test the new spline code, this code is fairly broken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7795343895002446638?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7795343895002446638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7795343895002446638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7795343895002446638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7795343895002446638'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/polar-coordinate-match.html' title='Polar Coordinate Match'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5410666602207602985</id><published>2011-02-19T15:54:00.000-08:00</published><updated>2011-02-19T16:27:10.384-08:00</updated><title type='text'>Non Common Cases Crash Fixes. Reviewed To Improve Spline</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-ZOlNYShRv4A/TWBehcsec_I/AAAAAAAAAaI/1LUX69Cn-Mk/s1600/SplinePreview.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://2.bp.blogspot.com/-ZOlNYShRv4A/TWBehcsec_I/AAAAAAAAAaI/1LUX69Cn-Mk/s400/SplinePreview.png" alt="" id="BLOGGER_PHOTO_ID_5575560267416105970" border="0" /&gt;&lt;/a&gt;Some categories of bugs are named "bugs that are not in normal flow". One of those bugs was noticed by Sami and is that some parts of the code are done "just in the right moment", like "Tree View node creation". Sometimes this Tree View can be updated forcifully and can lead to crashes because scanning of shapes in scene can encounter invalid shapes when is populated, or can appear artifacts. Sadly this crash can be triggered in cases when you change solver options.&lt;br /&gt;So the solution is for now to not update any time tree view, and when is needed, will restore everything in a stable state (to be certain that those crashes will not happen).&lt;br /&gt;Splines  in major design tools are of three types:&lt;br /&gt;- one of as many points as possible, being the equation that is defined by all points of it. Was our original spline tool implementation&lt;br /&gt;- another two are based on 4 point spline "legs", one is made by using control points and other one for simplicity uses the same control points but will interpolate the values for user, because it reduces the click count by a third&lt;br /&gt;So logically the "Control Point" and "Interpolated" spline are both implemented in the same time, anyway, as both shapes have some exceptions from other shapes, some problems in implementation were obvious (like is one shape that transformation is handled separately). Editing in 1.5.7 works just for first leg of Spline, and so on.&lt;br /&gt;I was evaluated problems of it and I've looked to other how they do it, and I found and I'm on the right track to solve all class of problems: Spline (interpolate and control point) will be consolidated in a single shape), also the actions that expose it will share a good bunch of code (excluding the interpolate "automatical generation of points" that will be different between those two tools). In this time I've also evaluated and solve some small issues I've found around the way: NaroCAD had no dashed fixed distance (not infinite) line that I wanted to use it for previewing the control lines. Also a small bug, but for certain annyoing was that the code for setup the color was not working for "interactives", and the root cause was that we setup style for shapes (a great thing for rectangles).&lt;br /&gt;So in short hopefully soon you will see a spline that will work fairly right in most design ways and will be a useful and friendly tool.&lt;br /&gt;Note: Did you know that you can insert coordinates for Spline from command line? In case you wanted a precise tunning?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5410666602207602985?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5410666602207602985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5410666602207602985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5410666602207602985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5410666602207602985'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/non-common-cases-crash-fixes-reviewed.html' title='Non Common Cases Crash Fixes. Reviewed To Improve Spline'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZOlNYShRv4A/TWBehcsec_I/AAAAAAAAAaI/1LUX69Cn-Mk/s72-c/SplinePreview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7272774689842927881</id><published>2011-02-18T07:26:00.000-08:00</published><updated>2011-02-18T07:28:11.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Magic points with Gizmos</title><content type='html'>Enabled magic points on Gizmos. The feature seems to behave well and is useful in many situations/ Will work with it more to see if it has problems.&lt;br /&gt;&lt;br /&gt;A video sample of using it:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hX5IrgyYQOU?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hX5IrgyYQOU?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7272774689842927881?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7272774689842927881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7272774689842927881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7272774689842927881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7272774689842927881'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/magic-points-with-gizmos.html' title='Magic points with Gizmos'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4067184847371579596</id><published>2011-02-18T02:33:00.000-08:00</published><updated>2011-02-18T02:35:54.657-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Horizontal and Vertical lines intersection points</title><content type='html'>Finalized the horizontal vertical lines intersection magic points. This feature will allow users to use horizontal and vertical lines as guidelines for other geometry.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-nsIKk0Thqo8/TV5LEPHGVmI/AAAAAAAAAWQ/eHJRJ9F4dJU/s1600/NaroCAD1802.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 220px;" src="http://3.bp.blogspot.com/-nsIKk0Thqo8/TV5LEPHGVmI/AAAAAAAAAWQ/eHJRJ9F4dJU/s320/NaroCAD1802.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5574975924879119970" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4067184847371579596?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4067184847371579596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4067184847371579596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4067184847371579596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4067184847371579596'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/horizontal-and-vertical-lines.html' title='Horizontal and Vertical lines intersection points'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-nsIKk0Thqo8/TV5LEPHGVmI/AAAAAAAAAWQ/eHJRJ9F4dJU/s72-c/NaroCAD1802.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6976121852641499425</id><published>2011-02-17T09:31:00.001-08:00</published><updated>2011-02-17T09:38:37.949-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Fixed and improved Fillet and Chamfer tools</title><content type='html'>Fixed the Fillet 2D, Fillet 3D, Chamfer 2D and Chamfer 3D tools.&lt;br /&gt;&lt;br /&gt;Simplified the usage of all these tools. Now the usage flow is the following: click on the tool icon, the tool when starts automatically changes selection mode to edge (where needed), the user clicks on the edge/wire to fillet/chamfer, a dialog appears on which the user can enter the fillet/chamfer radius (the modifications on the dialog are previewed live on scene).&lt;br /&gt;&lt;br /&gt;Because fillet/chamfer were the last tools that needed the selection change tool, disabled for the moment the change selection tool.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-3SjQGJfXe6k/TV1ceTFosgI/AAAAAAAAAWI/vJ74FbLVa5M/s1600/NaroCAD1702.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/-3SjQGJfXe6k/TV1ceTFosgI/AAAAAAAAAWI/vJ74FbLVa5M/s320/NaroCAD1702.png" alt="" id="BLOGGER_PHOTO_ID_5574713589344285186" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6976121852641499425?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6976121852641499425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6976121852641499425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6976121852641499425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6976121852641499425'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/fixed-and-improved-fillet-and-chamfer.html' title='Fixed and improved Fillet and Chamfer tools'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3SjQGJfXe6k/TV1ceTFosgI/AAAAAAAAAWI/vJ74FbLVa5M/s72-c/NaroCAD1702.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8739222005196545336</id><published>2011-02-16T05:51:00.000-08:00</published><updated>2011-02-16T07:01:29.632-08:00</updated><title type='text'>NaroCAD 1.5.7 Released</title><content type='html'>"Thinking in 2D": A lot of 2D related work was done inside NaroCAD codebase and you can enjoy it by downloading the last release (link bellow):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Added Ortho tool:&lt;/span&gt; Blocks drawing on horizontal vertical direction:&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Added Trim tool:&lt;/span&gt; so you can make proper designs combining 2D shapes&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Block plane tool:&lt;/span&gt; The user can block drawing on a specific plane: you can work without annoyances in any free form plane so you can make your designs to really work&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Measurement tool:&lt;/span&gt; so you can see distances without actually creating geometry&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Enhanced line tool:&lt;/span&gt; The line length can be inserted on command line.&lt;/li&gt;&lt;li&gt;Added spline path tool: is an enhanced spline, with fewer of "multi-point" spline. It is more precise and you will get more changes later.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Copy paste tool&lt;/span&gt;: combines copy paste with precision translate: so will make repetitive shape creation even nicer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Modify solver precision with scene zoom level&lt;/span&gt;: so the solver will feel both precise and useful&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The solver returns the closest point, not the first solution found&lt;/span&gt;: making an "non-calibrated" solver to give relevant point that you may search&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Download it &lt;a href="http://www.narocad.com"&gt;from here&lt;/a&gt;.&lt;br /&gt;We &lt;a href="http://narocad.blogspot.com/2011/02/line-improvements.html"&gt;also ported &lt;/a&gt;(mostly, some bugs stop to make it even as a future prospect, but who knows, we welcome reviewing code) &lt;a href="http://code.google.com/p/sketchsolve/"&gt;SketchSolve&lt;/a&gt;, and in case it will be finished, a full 2D solver, C# based may be a part of NaroCAD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8739222005196545336?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8739222005196545336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8739222005196545336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8739222005196545336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8739222005196545336'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/narocad-157-released.html' title='NaroCAD 1.5.7 Released'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7565536112471540276</id><published>2011-02-12T15:15:00.000-08:00</published><updated>2011-02-12T15:18:57.422-08:00</updated><title type='text'>Bug Fixing and Zoom</title><content type='html'>I've work on bug fixing as the next week will go in this area. One small feature is implemented also, so is existing framework so when is computed the zoom level to view, this will be used to have "around area" solver sensitivity. This will make it more smooth "around point" experience.&lt;br /&gt;Line as it was rewritten to handle command line differently, a bug was that you could possibly create a zero length line. Right now the "double clicks" are ignored.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7565536112471540276?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7565536112471540276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7565536112471540276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7565536112471540276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7565536112471540276'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/bug-fixing-and-zoom.html' title='Bug Fixing and Zoom'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7756571660407255735</id><published>2011-02-10T13:05:00.001-08:00</published><updated>2011-02-10T13:33:06.731-08:00</updated><title type='text'>Line Improvements</title><content type='html'>I've mostly fixed problems with Line tool handling in two kind of fixes:&lt;br /&gt;- Line will not compute parallel line solver checks with points from previous line&lt;br /&gt;- command line was fixed to handle custom "Unknown" type (previously command line was used to work with specifed types only) to make&lt;br /&gt;In the last days I've converted line to line to C# &lt;a href="http://code.google.com/p/sketchsolve/"&gt;SketchSolve&lt;/a&gt;. Anyway, there are some problems and that code works a lot with pointers/references and for this reason, the code does not work as it should. There may be little mistakes, but are enough to make this code to break. Most likely I do work on a copy when I should not, or vice-versa. If are any takers that need a full solver in 2D (with constraints) and want to be C# ready, please take a look to this project and try to spot where are the problems. The code include both code-bases in a project under: Lib\Install\Lib\NaroSketchSolve\NaroSketchSolve\. I'll put the code as LGPL, so if you will fix, please contribute back this source code but also you will be able later to put it under your project, even is comercial. If you are pleased with the original C only implementation, you may wrap it using P/Invoke, so you will not have any LGPL restriction, but will be hard to see where are problems and why. (The original code is under BSD) This project is also better written as is OOP, it mostly respect NaroCAD codestyle, (even will keep for now a lot of variables and names from original code), so you may find it easier to navigate than the original code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7756571660407255735?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7756571660407255735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7756571660407255735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7756571660407255735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7756571660407255735'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/line-improvements.html' title='Line Improvements'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7118990442295655458</id><published>2011-02-10T00:05:00.000-08:00</published><updated>2011-02-10T00:42:36.031-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>NaroCAD shape locations on scene</title><content type='html'>Lately we had a lot of problems at tools like Trim and Mirror caused by the way we generate shapes vs the way Opencascade generates shapes:&lt;br /&gt;- when building a line let's say as example the (10, 10, 0) to (20, 20, 0) line we generate internally the (0, 0, 0) to (10, 10, 0) line and hold on some transformation interpreter the transformations applied on the shape, in our case a translation to (10, 10, 0). In this way we can expose to the user on the property grid the shape transformations and allow user to change them. A simulated shape in Draw Test Harness is like the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;vertex v1 0 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;vertex v2 10 10 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;edge e1 v1 v2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ttranslate e1 10 10 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;dump e1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The dump result is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Dump of 1 Curves&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; -------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   1 : Line&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Origin :0, 0, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Axis   :0.707106781186547, 0.707106781186547, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Dump of 1 Locations&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; -------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Elementary location&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(               1               0               0              10  )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(               0               1               0              10  )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(               0               0               1               0  )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The shape geometry is generated on (0, 0, 0) and holds the shape transformation on Location.&lt;br /&gt;&lt;br /&gt;- When applying Opencascade algorithms like Trim or Mirror on our geometry like the one described above the result is a shape with Geometry generated in (10, 10, 0) and Location to (0, 0, 0). This creates us a lot of problems because we don't know where geometry is located, we don't have access to transformations, we have problems when a shape generated like this is passed to an algorithm together with a shape generated like in the case below. A Draw Test Harness sample of this type of shape:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;vertex v1 10 10 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;vertex v1 20 20 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;edge e1 v1 v2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;dump e1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The dump result:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Dump of 1 Curves&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; -------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   1 : Line&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Origin :20, 20, 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Axis   :-0.707106781186547, -0.707106781186547, 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; -------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Dump of 0 Locations&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; -------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The solution:&lt;br /&gt;&lt;br /&gt;We decided to use everywhere only shapes located on (0, 0, 0) and hold transformations on our internal interpreter. That assumes an extra step on our side to prepare geometry before using OCC API: we have to save current transformations, translate all shapes involved towards origin, apply the API, translate the result at the saved transformations by applying the transformations on the interpreter.&lt;br /&gt;&lt;br /&gt;Modified the Pipe and Trim tool to work like this and it seems to work well even on shapes that have rotations applied on them. If testing passes successfully we'll start modifying tools like mirror, extrude, cut to use this approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7118990442295655458?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7118990442295655458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7118990442295655458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7118990442295655458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7118990442295655458'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/narocad-shape-locations-on-scene.html' title='NaroCAD shape locations on scene'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4744494139310141391</id><published>2011-02-09T23:57:00.000-08:00</published><updated>2011-02-10T00:04:36.623-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Trimming tool</title><content type='html'>Finalized a first version of the Trim tool that works on basic situations like line intersecting line or line intersecting circle. Had difficulties making the tool work not because of the trimming algorithm but mostly because of the way we and Opencascade generate shapes. Will make another post with technical details related to this issue.&lt;br /&gt;&lt;br /&gt;A circle and 2 lines trimmed with another line:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BaLXwf6fxTg/TVOaoDx5izI/AAAAAAAAAWA/n-3C0EKyd7U/s1600/NaroCAD1002.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://3.bp.blogspot.com/-BaLXwf6fxTg/TVOaoDx5izI/AAAAAAAAAWA/n-3C0EKyd7U/s320/NaroCAD1002.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5571967176987478834" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4744494139310141391?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4744494139310141391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4744494139310141391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4744494139310141391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4744494139310141391'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/trimming-tool_09.html' title='Trimming tool'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-BaLXwf6fxTg/TVOaoDx5izI/AAAAAAAAAWA/n-3C0EKyd7U/s72-c/NaroCAD1002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7033743727835681770</id><published>2011-02-06T15:22:00.000-08:00</published><updated>2011-02-06T15:24:56.130-08:00</updated><title type='text'>Copy/Paste Fix</title><content type='html'>Copy/Paste when you copy and nothing is selected crash is fixed. I've did some work on an improved 2D solver logic but yet the advances are there but is not yet something substantial, because I've started from a C codebase, but I will be back with details if things will get in a proper direction.&lt;br /&gt;So make sure that you select something before you try using Ctrl+C to copy an object to not crash on Paste.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7033743727835681770?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7033743727835681770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7033743727835681770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7033743727835681770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7033743727835681770'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/copypaste-fix.html' title='Copy/Paste Fix'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7350251270909431501</id><published>2011-02-02T16:17:00.001-08:00</published><updated>2011-02-02T16:21:30.511-08:00</updated><title type='text'>Lines' Length and Orthogonal Axis Lock</title><content type='html'>You will be able to set either the next coordinate or to write just the length for line (in command line) and the line will be drawn accordingly.&lt;br /&gt;You can also lock drawing to make it that you can move mouse just parallel with main axis. This works internally as a Solver mechanism, so in some cases that disable solver all-together may seem to not work, but in general with every shape drawn you will have this possibility.&lt;br /&gt;To use it, you may check the nightly build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7350251270909431501?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7350251270909431501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7350251270909431501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7350251270909431501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7350251270909431501'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/lines-length-and-orthogonal-axis-lock.html' title='Lines&apos; Length and Orthogonal Axis Lock'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3822799559268516446</id><published>2011-02-01T16:31:00.000-08:00</published><updated>2011-02-01T16:40:02.818-08:00</updated><title type='text'>New Spline Code</title><content type='html'>Spline will have a new way of creation. The original spline used an equation that will add-up as much as many points are done. This is both imprecise and fairly unconventional. So the design worked to improve this are by making spline as defined in portions that are defined by &lt;a href="http://en.wikipedia.org/wiki/B%C3%A9zier_curve"&gt;two end points and two control points&lt;/a&gt;. This also scales better, as the old spline was limited to around 20 points, this one will get as many points you will throw to it, because the full spline is a chain of smaller splines. The implementation was mostly done from yesterday, but the work was done to define automatically good defaults for handlers, so you will have a precise spline with a clear preview. So, enjoy using it (is named Spline Path and is under the Spline drop down).&lt;br /&gt;A handy tool is the measure tool: you will click between points and you will get the distance between them. It may be used to define distances between shapes without defining extra geometry in scene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3822799559268516446?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3822799559268516446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3822799559268516446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3822799559268516446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3822799559268516446'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/new-spline-code.html' title='New Spline Code'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8203132451976829958</id><published>2011-02-01T08:39:00.000-08:00</published><updated>2011-02-01T08:48:32.343-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Trimming tool</title><content type='html'>Implemented a Trim method that receives as parameters two edges and a point in space. The method trimms one of the edges with the second one on the side shown by the point in space. For now it seems to work well on unit tests made for it.&lt;br /&gt;&lt;br /&gt;The output of Trim is for the moment a wire in space. In order to make the tool much more powerful the plan for the final Trim tool is to generate geometry that we "know" in Naro. Ex: a trimmed Circle will create an Arc Node in Tree View editable in Property Grid, a trimmed Line will generate a Line Node.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8203132451976829958?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8203132451976829958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8203132451976829958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8203132451976829958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8203132451976829958'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/trimming-tool.html' title='Trimming tool'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7518687069546674402</id><published>2011-02-01T04:20:00.000-08:00</published><updated>2011-02-01T04:24:14.799-08:00</updated><title type='text'>Smart Copy Tool</title><content type='html'>This tool isn't as simple as Ctrl+C and Ctrl+V. The main idea is to create more copies of an object. We saw that the circular and array pattern create copies of an object that have a calculated location compared to the base shape. What if the copies are to be made at locations that do not correspond with any pattern? The idea is to copy a shape at any desired location with just one mouse click.&lt;br /&gt;    Copy works like this:&lt;br /&gt;        - The user presses the "Copy" button&lt;br /&gt;        - The user selects the shape to be copied&lt;br /&gt;        - The user selects the desired base point&lt;br /&gt;        - The user selects a location where the copy is to be made. The base point of the copy will become the selected location&lt;br /&gt;        - The user selects other locations where other copies are to be made&lt;br /&gt;     Be careful that this command does not end. Any given point will generate a copy of the desired object. The user can create as many copies as necessary. The base point is required, because NaroCAD needs it in order to calculate the translation vector (move the object from the base point to the given location). Without giving the base point, NaroCAD would have to use the pivot or the gravity center as default. I prefer not to use values that cannot be changed when making a new feature. This way, the user has enough control over the shapes that are to be copied. After selecting the base shape and the base point, the user just has to select the desired locations where the copy is to be made. At every mouse click, a new copy will be generated. In order to try out this tool, you can download the last nightly build from www.narocad.com, under the downloads section.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7518687069546674402?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7518687069546674402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7518687069546674402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7518687069546674402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7518687069546674402'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/02/smart-copy-tool.html' title='Smart Copy Tool'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6247936495538582385</id><published>2011-01-31T03:30:00.000-08:00</published><updated>2011-02-01T03:45:45.628-08:00</updated><title type='text'>Block Drawing Plane</title><content type='html'>&lt;p style="margin-bottom: 0.17in;"&gt;     This command allows the user to block the drawing plane by selecting a surface. The idea is to block the current drawing plane, so that all shapes that are to be drawn should be generated only in the desired plane. If this tool is not activated, the drawing plane changes as the user moves the mouse over surfaces or solid faces.&lt;br /&gt;   Block drawing plane works like this:&lt;br /&gt;        - The user presses the "Block Drawing Plane" button&lt;br /&gt;        - The user selects a surface / does nothing&lt;br /&gt;   The selected surface should be planar. NaroCAD tries to extract the normal line of the selected surface. If it fails, the blocked plane will be the last one used. If the user selects an invalid surface from the very beginning, NaroCAD will set the drawing plant to the XOY plane. The user also has the option to simply push the "Block Drawing Plane" button, without selecting any other shape. As expected, NaroCAD will block the last defined plane.&lt;br /&gt;   Notice that the solver points have bigger priority compared to this tool. This means that solver endpoints will work even if the block plane is activated. For example, if the user starts a line and selects the first point as the endpoint of another line that is not in the current drawing plane, that point will be recognized as valid. If the second point is not generated with the help of the solver, it will be generated in the drawing plane.&lt;br /&gt;   The last thing to mention is the difference between the activated and non-activated drawing plane. When the user blocks the drawing plane, the "Block Drawing Plane" button will change its background color to red, and its text to white. This way, the user knows when this tool is active. Deactivating it will return its colors to default.&lt;/p&gt;&lt;p style="margin-bottom: 0.17in;"&gt;     You can test this new tool by downloading the last nightly build from www.narocad.com, under the download section.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0.17in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6247936495538582385?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6247936495538582385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6247936495538582385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6247936495538582385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6247936495538582385'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/block-drawing-plane.html' title='Block Drawing Plane'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-4890268564686626842</id><published>2011-01-30T15:46:00.000-08:00</published><updated>2011-01-30T15:52:06.217-08:00</updated><title type='text'>Some Changes</title><content type='html'>I've did working on a new Spline some changes as were noticed as missing. They are more or less like a bugfixing/features completeness and they are in short:&lt;br /&gt;- Boo expressions will work for integer based expressions&lt;br /&gt;- almost all cases (excluding cases that can work with impracticable large shape count) will update tree-view correctly. As code level some cases will get easier to make populating this code easier to do (it can be defined a root node, and all nodes will be added in cascade)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-4890268564686626842?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/4890268564686626842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=4890268564686626842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4890268564686626842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/4890268564686626842'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/some-changes.html' title='Some Changes'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7387905067482634665</id><published>2011-01-26T04:50:00.001-08:00</published><updated>2011-01-27T02:30:07.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Release'/><title type='text'>NaroCAD 1.5.6 Released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_D8oWEMdg-0g/TUAvJLKnD7I/AAAAAAAAAZw/_JAAo1YgqbE/s1600/Tortchen.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://2.bp.blogspot.com/_D8oWEMdg-0g/TUAvJLKnD7I/AAAAAAAAAZw/_JAAo1YgqbE/s400/Tortchen.png" alt="" id="BLOGGER_PHOTO_ID_5566500974092554162" border="0" /&gt;&lt;/a&gt;- &lt;span style="font-style: italic;"&gt;TreeView speed improvement for big scenes&lt;/span&gt; - all simple shapes will do minimal updates on tree view&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Boo script evaluator on property grid, command line&lt;/span&gt; - input is evaluated thought the Boo compiler making possible to use sine, cosine, operators, parentheses, and so on,&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Scene export as Boo script&lt;/span&gt; - to make transition to future versions and integrating with Boo code easier&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Linear pattern &lt;/span&gt;- an advanced yet simple to use pattern over a line&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Circular pattern &lt;/span&gt;- an advanced yet simple to rotate a shape and clone it over a line&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Support for composed shapes from basic shapes &lt;/span&gt;- to make possible to make regular or shapes depending on other shapes easy&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Fixed mirror&lt;/span&gt; - solids will mirror nicely by using right OpenCascade code to do it&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Fixed color picker, solver hint positioning &lt;/span&gt;- so you will enjoy even more using NaroCAD&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://www.narocad.com/"&gt;it from here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;we have problems with SourceForge hosting so we put it on alternate link. Please refollow the download site and we will use NaroCAD site till SF will work back reliable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7387905067482634665?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7387905067482634665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7387905067482634665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7387905067482634665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7387905067482634665'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/narocad-156-released.html' title='NaroCAD 1.5.6 Released'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_D8oWEMdg-0g/TUAvJLKnD7I/AAAAAAAAAZw/_JAAo1YgqbE/s72-c/Tortchen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-8574571279145721776</id><published>2011-01-25T11:34:00.000-08:00</published><updated>2011-01-25T11:57:14.892-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Status reports'/><title type='text'>Fixed mirror tools</title><content type='html'>On last two days studied OpenCascade shape topology especially because the mirrored shapes had some "inside out" look.&lt;br /&gt;&lt;br /&gt;Made a change at the TopoDsShapeInterpreter that affects the way that all shapes generated on scene are built. It seems to work well. On the interpreter we're now using BRepBuilderAPI_Transform to apply transformations on all generated shapes.&lt;br /&gt;Fixed also the mirror point/line/plane tools. Visually the shapes look ok.&lt;br /&gt;We don't fully understand yet how OpenCascade generates shapes in cases like mirroring (with a reversed local coordinate system and a transformation on them), in time this area will be improved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-8574571279145721776?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/8574571279145721776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=8574571279145721776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8574571279145721776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/8574571279145721776'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/fixed-mirror-tools.html' title='Fixed mirror tools'/><author><name>bxtrx</name><uri>http://www.blogger.com/profile/02536262903679342844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-5149823043128098323</id><published>2011-01-25T08:24:00.000-08:00</published><updated>2011-01-25T08:32:27.340-08:00</updated><title type='text'>Array Pattern</title><content type='html'>Array Pattern is now finished. The user can now draw an array of objects as described in the earlier post. The attached image shows array pattern in action. The board was generated with the help of one of the initial rectangles. for the sphere, 2 array pattern were used, each with 2 rows and 8 colomns.&lt;br /&gt;         Be careful though, because array pattern is made in the current drawing plane. This means that hovering the mouse over surfaces or faces, might change the drawing plane without giving any warning :P&lt;br /&gt;          The array pattern is available in the last nightly build. Please post on the forum if you want to comment about anything about it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-GHsJhB3Sso/TT769no0UwI/AAAAAAAAAAs/CpmK3ZnLiBw/s1600/ArrayPattern.png"&gt;&lt;img style="cursor: pointer; width: 372px; height: 256px;" src="http://3.bp.blogspot.com/_-GHsJhB3Sso/TT769no0UwI/AAAAAAAAAAs/CpmK3ZnLiBw/s320/ArrayPattern.png" alt="" id="BLOGGER_PHOTO_ID_5566162125995660034" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-5149823043128098323?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/5149823043128098323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=5149823043128098323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5149823043128098323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/5149823043128098323'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/array-pattern.html' title='Array Pattern'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-GHsJhB3Sso/TT769no0UwI/AAAAAAAAAAs/CpmK3ZnLiBw/s72-c/ArrayPattern.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7018830338883925737</id><published>2011-01-24T12:54:00.000-08:00</published><updated>2011-01-24T13:34:35.192-08:00</updated><title type='text'>Boo-gfixes and updates</title><content type='html'>As my previous development was more or less related with Boo integration (and some other development, mostly on fixing) Samy found on usage some bugs and here are those fixes:&lt;br /&gt;- Boo will have an option to evaluate (or not) your double based values. This will bring faster response time when you will input values (because to evaluate 5+5 will mostly imply a small class compilation)&lt;br /&gt;- when Boo Gear was made some Boo compiler bugs were encountered which makes NaroCAD to take the version their Git. This made that the old Boo compiler version accepted a construct (that after review, I found that was a mistake) and the new version give correctly a compiler error. This affected using Export to Boo plugin so I've fixed this&lt;br /&gt;- BooView for this very reason will not enable the Execute button when compiler error are pending. This will remove the annoyance and discomfort for people did not look down and make a small typo and will be bombarded with Boo messages. Anyway, if you're fast, you can still get them (like writing ;  and go as fast as possible to Execute button before is disabled)&lt;br /&gt;- &lt;a href="http://narocad.blogspot.com/2010/12/visual-hints-solver-related.html"&gt;solver's visual hints&lt;/a&gt; were bad placed, so I've found why: the TextOut method in OpenCascade API seems to not position them right on the coordinate, but is sensible also to the width/height factor, so this is fixed now :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7018830338883925737?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7018830338883925737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7018830338883925737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7018830338883925737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7018830338883925737'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/boo-gfixes-and-updates.html' title='Boo-gfixes and updates'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1565835704004943795</id><published>2011-01-24T07:52:00.000-08:00</published><updated>2011-01-24T08:06:51.594-08:00</updated><title type='text'>Array Pattern - first steps</title><content type='html'>I started to implement the array pattern command. It can be used to make something similar with a chess board.&lt;br /&gt;     Before starting the command, the user will select the desired object to pattern and a direction. It seems pretty normal that array pattern should work in a plane. This is why I will use current drawing plane as the pattern plane(without asking the user). So, be careful with the drawing planes. But still, the drawing plane is not enough to even start the command. It is pretty obvious that the rows have some king of direction; the same goes for the colomns. this is why I will ask the user to select the row direction. Still, I will not ask the user to select the colomns direction because it must be perpendicular with the rows direction. So, NaroCAD will do it for you. 4 more parameters are: the number of rows and colomns and the distance between the objects(row distance and colomn distance).&lt;br /&gt;    The row direction will depend on how the line is drawn: from the first point, to the second point. Due to the fact that the patterned objects might not appear in the desired direction, I added 2 check-boxes in order to allow the user to reverse the desired direction, if necessary.&lt;br /&gt;    With this functionality, I hope that I covered everything a user needs in order to make an array pattern. If you have any new ideas, or wish to ask questions about this command, do not hesitate to post on the forum. The command will be available tomorrow in the last nightly build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1565835704004943795?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1565835704004943795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1565835704004943795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1565835704004943795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1565835704004943795'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/array-pattern-first-steps.html' title='Array Pattern - first steps'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-13429215613930266</id><published>2011-01-21T11:08:00.000-08:00</published><updated>2011-01-21T12:34:08.073-08:00</updated><title type='text'>Boo Shapes Plugin (Part IV)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D8oWEMdg-0g/TTngDjEfzXI/AAAAAAAAAZc/BEFQzHJ1gyQ/s1600/HighLevelDesign.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 332px;" src="http://1.bp.blogspot.com/_D8oWEMdg-0g/TTngDjEfzXI/AAAAAAAAAZc/BEFQzHJ1gyQ/s400/HighLevelDesign.png" alt="" id="BLOGGER_PHOTO_ID_5564725166151290226" border="0" /&gt;&lt;/a&gt;And the last part. Probably for a regular polygon (and a gear) seems to be described in too many blog posts. Anyway, they do stress development in the idea that NaroCAD will have more external code in its package. Library shapes infrastructure support was the next logical and I will explain it using this shown diagram.&lt;br /&gt;Let's say you will want to draw an OpenCascade shape: you will have to define a function that draws the topological shape, after this an action will use a NodeBuilder to instantiate it, to create it's corresponding shape, to set up extra attributes and at the end will put it in document.&lt;br /&gt;A LibraryShape implementation works in a similar way with a Function (a shape generator) but instead using low level OpenCascade calls, will use Functions and will do it by using directly NodeBuilder and document.&lt;br /&gt;So in this manner actions can take one step further and generate complex shapes on top of already existing shapes in NaroCAD (mostly as shapes are any item you will see on your tree of objects).&lt;br /&gt;As Functions wrap OpenCascade code (so it need to be written just once!), they will need a component to get parameters. This component is the dependency part: this will make notifications automatically. So you will get both shape generation and propagation for free.&lt;br /&gt;A library Shape will have dependencies, or arguments, but they will simply mean a creator framework. So a gear is simply defined as: tooth count, smaller range, bugger range and extrusion value. A regular polygon is defined as two points (center, the second to define its range) and the edges count.&lt;br /&gt;Both will iterate and create the result combining functions (in both cases are lines, auto-face and an extrude).&lt;br /&gt;The last fixes and improvements permit not only to register those LibraryShape globally as a function, but to you to be able to write them both in C# and in Boo (in fact the yesterday's screenshot was rewritten in Boo), and will make possible to change this script dynamically.&lt;br /&gt;In fact the code was made accessible to make possible that from one LibraryShape to access another shape.&lt;br /&gt;So if in future I want to make a gear with a hole in it, where is it's revolution axis, I will instantiate a gear, I will create an cylinder where I want to make extrusion happen, and at the end I will do a boolean substract between two.&lt;br /&gt;So in fact the possibilities are much greater as the level of accessing shapes is at a much higher level than OpenCascade is.&lt;br /&gt;At the end, you will get huge possibilities by customizing Library Shapes and if you don't know how to create a shape, just use the BooExporter plugin to your simple shapes as starting point and add loops and your extra tricks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-13429215613930266?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/13429215613930266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=13429215613930266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/13429215613930266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/13429215613930266'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/boo-shapes-plugin-part-iv.html' title='Boo Shapes Plugin (Part IV)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_D8oWEMdg-0g/TTngDjEfzXI/AAAAAAAAAZc/BEFQzHJ1gyQ/s72-c/HighLevelDesign.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-6228406916204852360</id><published>2011-01-21T07:59:00.000-08:00</published><updated>2011-01-21T08:19:14.848-08:00</updated><title type='text'>Circular Pattern</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-GHsJhB3Sso/TTmxsaeR6tI/AAAAAAAAAAk/JhvBsK8fdGw/s1600/1.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 283px;" src="http://2.bp.blogspot.com/_-GHsJhB3Sso/TTmxsaeR6tI/AAAAAAAAAAk/JhvBsK8fdGw/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5564674191171644114" border="0" /&gt;&lt;/a&gt;         This command allows the user to generate  shapes along a line, at a specified angle. The main purpose of this  command is to generate shapes that can be used to draw stairs . Due to  the user-friendly parameters, the user can also choose a 0 height. This  way, the circular pattern command can be used in 2D.     &lt;p style="text-indent: 0.5in;"&gt;Circular  pattern is described in better detail in the forum and in NaroCad  documentation. You can download the last nightly, where the last version  of circular pattern can be found. Please tell me in forum if there are  any other options you would like to have in circular Pattern.&lt;/p&gt;  &lt;p style="text-indent: 0.5in;"&gt;The attached image show a 2D and 3D circular Pattern.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-6228406916204852360?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/6228406916204852360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=6228406916204852360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6228406916204852360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/6228406916204852360'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/circular-pattern.html' title='Circular Pattern'/><author><name>Frunza</name><uri>http://www.blogger.com/profile/06033707149857879587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-GHsJhB3Sso/TTmxsaeR6tI/AAAAAAAAAAk/JhvBsK8fdGw/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-7139086549786165370</id><published>2011-01-20T12:44:00.000-08:00</published><updated>2011-01-20T12:58:00.235-08:00</updated><title type='text'>Boo Shapes Plugin (Part III)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D8oWEMdg-0g/TTihsm1AKNI/AAAAAAAAAZU/ECIapUFKmoU/s1600/RegularPolyPreview.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://1.bp.blogspot.com/_D8oWEMdg-0g/TTihsm1AKNI/AAAAAAAAAZU/ECIapUFKmoU/s400/RegularPolyPreview.png" alt="" id="BLOGGER_PHOTO_ID_5564375127325419730" border="0" /&gt;&lt;/a&gt;Almost succeeded to make Boo shapes to have library like coding.&lt;br /&gt;This code have little relation with the previous post about Boo shapes. The previous code was to export your code to Boo, to make possible to "survive" to NaroCAD XML document changes.&lt;br /&gt;This code changes are shapes that if they implement ShapeLibrary class (or for Boo: BooShapeLibrary) they are accessible in an unified way and they can be made to NaroCAD as composed shapes.&lt;br /&gt;I've bin hit by some Boo compiler bugs so this is a new BooShapeLibrary class defined which did make me to not finish yet (probably tomorrow or over the weekend will be last issues pinned down).&lt;br /&gt;What will mean for now? That will be defined two actions/shapes (regular polygon and gear) as live shapes and the code will be separated by a &lt;a href="http://en.wikipedia.org/wiki/Design_by_contract"&gt;contract based design&lt;/a&gt;, and as in future if desired any complex shapes can be defined using the same template, will make possible to define and compose shapes from here. So both gear and regular polygon are defined on top of simple shapes. Another part is that you can define complex shapes from both from Boo/C# and looking from BooGearPlugin source-code you can identify easier where is shape creation and where is event creation. This is important for complex shape creation and when you want to separate preview from code.&lt;br /&gt;What may mean for future? It may mean that a Library View may be added and will expose all those shapes in an unified manner, and all dependencies will be solved in a similar fashion as MetaActions/Property grid. At the end you will be able to benefit from shapes that will be hard to be defined just from clicks, but also imply some more complex definition with relation with extern code and some default values that also may be provided as shape dependencies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-7139086549786165370?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/7139086549786165370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=7139086549786165370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7139086549786165370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/7139086549786165370'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/boo-shapes-plugin-part-iii.html' title='Boo Shapes Plugin (Part III)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_D8oWEMdg-0g/TTihsm1AKNI/AAAAAAAAAZU/ECIapUFKmoU/s72-c/RegularPolyPreview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-9095904199482075485</id><published>2011-01-20T03:21:00.000-08:00</published><updated>2011-01-20T04:20:51.639-08:00</updated><title type='text'>10.000 ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_D8oWEMdg-0g/TTgjAPv8xzI/AAAAAAAAAZM/fW-zMFlC6c8/s1600/Narocad1000.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 396px;" src="http://3.bp.blogspot.com/_D8oWEMdg-0g/TTgjAPv8xzI/AAAAAAAAAZM/fW-zMFlC6c8/s400/Narocad1000.png" alt="" id="BLOGGER_PHOTO_ID_5564235826750867250" border="0" /&gt;&lt;/a&gt;Hello world, we are here... today we just reached 10000 downloads.&lt;br /&gt;We cannot do it without you and we are really happy to achieve it.&lt;br /&gt;Also we just hope that you will enjoy what we will add to NaroCAD in future to be the best Free/OpenSource CAD you can use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-9095904199482075485?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/9095904199482075485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=9095904199482075485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/9095904199482075485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/9095904199482075485'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/10000.html' title='10.000 ...'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_D8oWEMdg-0g/TTgjAPv8xzI/AAAAAAAAAZM/fW-zMFlC6c8/s72-c/Narocad1000.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-2898436917956566037</id><published>2011-01-19T16:12:00.000-08:00</published><updated>2011-01-19T16:32:56.449-08:00</updated><title type='text'>Boo Shapes Plugin (Part II)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_D8oWEMdg-0g/TTd_85fdyaI/AAAAAAAAAZE/k96UOzzOAtE/s1600/BooDocumentExport.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://2.bp.blogspot.com/_D8oWEMdg-0g/TTd_85fdyaI/AAAAAAAAAZE/k96UOzzOAtE/s400/BooDocumentExport.png" alt="" id="BLOGGER_PHOTO_ID_5564056548841212322" border="0" /&gt;&lt;/a&gt;One hard category of bugs that NaroCAD can fix are those bugs that are reported in one version and we have no clue if they are fixed or regressed on shapes that are sometimes just +0.0.1 newer.&lt;br /&gt;The reason is that at times for the very good reasons we rewrite some data representation that makes NaroXml incompatible with earlier versions. Also another hard topic is that we (NaroCAD devs) do know what to do with Boo scripting (I think I'm the only one for now that masters how to use it to almost full potential) but for most users is hard to start.&lt;br /&gt;So one of the best solutions I've found is this: the user creates a scene, and NaroCAD will generate it's Boo script. Also, the start of script will be exposed in BooScriptTemplate.boo file, so when you will want to add/extend your header of your script you will be more than easy to do.&lt;br /&gt;This exporter will navigate throughout the entire scene and will make all constructions that may be needed to remake the scene based on interpreters. This design will permit that in future (or by other developer that wants to export information like layers, colors (which are not yet supported for now) to be able to extend this code. Also will make this code less fragile if big format changes will happen. At the end this code is separated in a plugin, so you may enable just if will make sense to you to update your NaroCAD files. In this way is a nice way to have guaranteed that your hard done scenes will not be lost over changes that happen from time to time in NaroCAD internal format. And if those changes will happen, eventually the Boo script is exposed and you will be able to fix it with replaces.&lt;br /&gt;At the end you are are encouraged to make shapes and to try to combine with Boo to get all power available to make your complex designs to shine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-2898436917956566037?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/2898436917956566037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=2898436917956566037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2898436917956566037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/2898436917956566037'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/boo-shapes-plugin-part-ii.html' title='Boo Shapes Plugin (Part II)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_D8oWEMdg-0g/TTd_85fdyaI/AAAAAAAAAZE/k96UOzzOAtE/s72-c/BooDocumentExport.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-480318084610365598</id><published>2011-01-17T14:10:00.000-08:00</published><updated>2011-01-17T14:17:40.809-08:00</updated><title type='text'>Boo Shapes Plugin (Part I)</title><content type='html'>I am working to make some "high level shapes" like the gear or a regular polygon as part of NaroCAD accessible via actions. This work is directed in two parts: to make at least as a sample how to integrate Boo shapes to NaroCAD, and to reuse as much code in a possible future library of Boo based shapes.&lt;br /&gt;The first part may be more or less clear for developers, but in short is to make the code to implement an extra action of a boo based shape as short as possible.&lt;br /&gt;The second part will not create a library before of release, but will provide a framework to make a Boo shape to explicitly show it's dependencies and those can be solved by two ways: via an action (like for every required point will give the coordinate) or via a dialog (think to property grid). As property grid in itself may be a bit big to handle in a stable way all cases (and some questions appaear if the action works on an external shape, as an action can be theoretically to change the selected shape transparency) may be implemented in subsequent releases.&lt;br /&gt;But the separation between Action/Boo shapes will be in an explicit fashion (at least this is intended to do).&lt;br /&gt;Out of the topic, the build will separate the unit tests assemblies of out final installer. So you may not ask yourself why moq,dll is a part of final installer and what it does there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-480318084610365598?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/480318084610365598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=480318084610365598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/480318084610365598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/480318084610365598'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/boo-shapes-plugin-part-i.html' title='Boo Shapes Plugin (Part I)'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-3902627148369197659</id><published>2011-01-13T17:27:00.001-08:00</published><updated>2011-01-13T17:37:18.485-08:00</updated><title type='text'>Fixed (Again) Nant Building</title><content type='html'>Visual Studio uses a build algorithm different from .Net standard one (named MSBuild) so Visual Studio may work if you will build with right click and build, but when you will want to make your NaroCAD automated build, you may notice issues that the build will fail with a WPF related error. I've pin down why the error appear, and I fixed putting the direct class name. Anyway this fix will likely will not stand for long as much as most people will still use Visual Studio/SharpDevelop. Another issue is that the command line will fail initially, but will generate the assembly so you can do more iterations until the build will pass.&lt;br /&gt;So if you will find errors when you will try to launch the build script via nant tooling (under Lib\Install folder) and your build will give to you errors related with WPF/Xaml properties that are not found, just execute it once or twice and most likely the build will eventually pass. If you will just take the code from lordcip branch, you will not have issues, but anyway, if you will see those kind of build breakage, it will be nice to contact me and I will pin them down and fix them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-3902627148369197659?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/3902627148369197659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=3902627148369197659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3902627148369197659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/3902627148369197659'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/fixed-again-nant-building.html' title='Fixed (Again) Nant Building'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5209110565444405198.post-1660390183471479671</id><published>2011-01-12T13:11:00.000-08:00</published><updated>2011-01-12T14:07:09.137-08:00</updated><title type='text'>New Selection Code</title><content type='html'>Selection Code is advancing by making able to select AIS_InteractiveObjects as TopoDS_Shapes too. This simply means that you can delete right now dimensions. Also you can select shapes that are related with it, like: radius circle constraint and so on.&lt;br /&gt;Enjoy using the new selection mode!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209110565444405198-1660390183471479671?l=narocad.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narocad.blogspot.com/feeds/1660390183471479671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5209110565444405198&amp;postID=1660390183471479671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1660390183471479671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5209110565444405198/posts/default/1660390183471479671'/><link rel='alternate' type='text/html' href='http://narocad.blogspot.com/2011/01/new-selection-code.html' title='New Selection Code'/><author><name>ciplogic</name><uri>http://www.blogger.com/profile/05409605028353356569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
