Curvilinear Scaffolding Subtraction - Grasshopper2024-03-28T19:30:27Zhttps://www.grasshopper3d.com/forum/topics/curvilinear-scaffolding-subtraction?commentId=2985220%3AComment%3A1711523&feed=yes&xn_auth=noThis is closer to what makes…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17126192017-03-14T17:46:28.758ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>This is closer to what makes sense to me. The only part I haven't figured out now is how to identify the yellow interior surface(s) automatically? It's a manual selection now and will fail if there are multiple surfaces. Otherwise, getting there:…</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257979?profile=original" target="_self"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2769257979?profile=original" width="691"></img></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258223?profile=original" target="_self"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2769258223?profile=original" width="552"></img></a></p>
<p>This is closer to what makes sense to me. The only part I haven't figured out now is how to identify the yellow interior surface(s) automatically? It's a manual selection now and will fail if there are multiple surfaces. Otherwise, getting there:</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257979?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769257979?profile=original" width="691" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258223?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258223?profile=original" width="552" class="align-full"/></a></p>
<p>This one happens by simply changing the 'Angle' slider in the pink "Interior Shape" group from 45 to 0:</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258357?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258357?profile=original" width="562" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258608?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/2769258608?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></p>
<p>I'm sure further improvements are possible.</p> I can't see your code so don'…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17126122017-03-14T17:35:13.421ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>I can't see your code so don't know what you did? The 'RevSrf' is an arbitrary shape; as long as it's a "Closed Brep", it doesn't matter what shape it is. Standby, posting new code.</p>
<p>I can't see your code so don't know what you did? The 'RevSrf' is an arbitrary shape; as long as it's a "Closed Brep", it doesn't matter what shape it is. Standby, posting new code.</p> Interesting project Joseph! I…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17123092017-03-14T17:28:04.726ZKim hauerhttps://www.grasshopper3d.com/profile/Kimhauer
<p>Interesting project Joseph! I was replacing your initial curve with one of my own. When I set the curve and plug it into the surface of revolution, the curve just sits there and does nothing?</p>
<p></p>
<p>In addition, it looks to me like the 2nd picture (grey 1 point perspective)</p>
<p>the shape looks more like a math type gyroid mesh with was subtracted from the 3d grid</p>
<p>Interesting project Joseph! I was replacing your initial curve with one of my own. When I set the curve and plug it into the surface of revolution, the curve just sits there and does nothing?</p>
<p></p>
<p>In addition, it looks to me like the 2nd picture (grey 1 point perspective)</p>
<p>the shape looks more like a math type gyroid mesh with was subtracted from the 3d grid</p> So, with some "engineering" t…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17123122017-03-14T16:02:58.672ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>So, with some "engineering" that basically works, the artistic part remains. Creating and positioning the interior volume to be removed and the size, shape and relative position of the enveloping box. For example, there is more "scaffolding" than necessary behind and above the interior shell. How do you reduce that?</p>
<p>What if you want all the scaffolding bits to be spaced at a fixed interval? It may appear that way now, but that's only because all the 'BBox' faces are nearly the…</p>
<p>So, with some "engineering" that basically works, the artistic part remains. Creating and positioning the interior volume to be removed and the size, shape and relative position of the enveloping box. For example, there is more "scaffolding" than necessary behind and above the interior shell. How do you reduce that?</p>
<p>What if you want all the scaffolding bits to be spaced at a fixed interval? It may appear that way now, but that's only because all the 'BBox' faces are nearly the same size. If you use 'Scale NU' instead of 'Scale' and apply different factors to X, Y and Z, strange things happen!</p>
<ol>
<li>Scaling around the 'Volume C (center)' ignores the "ground" the scaffold sits on.</li>
<li>Using 'Divide Surface (SDivide)' causes the scaffolding to be spaced closer together for smaller surfaces than larger ones.</li>
</ol>
<p>So for practical use, this isn't done yet.</p>
<p>Later... I was about to post the above and leave it to you but couldn't resist puttering further. This may look a little kludgy with separate components for X, Y and Z - but it's far more flexible. The scaffolding grid has separate controls for spacing and extent in X, Y and Z, independent of the clipping box.</p>
<p>Er... that's the intent anyway. Playing with it, I can see there is more work to do! So I'll hold off posting the new code for now. So far, it looks like this:</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257998?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769257998?profile=original" width="711" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258527?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258527?profile=original" width="597" class="align-full"/></a></p> tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17115382017-03-14T04:05:02.041ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258462?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258462?profile=original" width="576" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258462?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258462?profile=original" width="576" class="align-full"/></a></p> Got it! Subtle data tree mis…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17114732017-03-14T03:41:29.911ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>Got it! Subtle data tree mismatch stuff - tricky business. Perseverance furthers!</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258246?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258246?profile=original" width="510" class="align-full"/></a></p>
<p>Got it! Subtle data tree mismatch stuff - tricky business. Perseverance furthers!</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769258246?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769258246?profile=original" width="510" class="align-full"/></a></p> My pleasure. It's close but…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17114722017-03-14T03:31:00.398ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>My pleasure. It's close but the ragged edges indicate to me that there is a data mismatch somewhere... Aha, I found it but haven't got it fixed yet.</p>
<p>My pleasure. It's close but the ragged edges indicate to me that there is a data mismatch somewhere... Aha, I found it but haven't got it fixed yet.</p> That exactly what I want to a…tag:www.grasshopper3d.com,2017-03-14:2985220:Comment:17115232017-03-14T02:14:40.931ZAdolf.J Sanghttps://www.grasshopper3d.com/profile/EthanSang
<p>That exactly what I want to achieve. Thank you so much Joseph!</p>
<p>That exactly what I want to achieve. Thank you so much Joseph!</p> Here's a thing... I don't kn…tag:www.grasshopper3d.com,2017-03-13:2985220:Comment:17110032017-03-13T18:07:41.533ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>Here's a thing... I don't know why the "grid lines" stick up higher than the bounding box; they could be trimmed, though better to figure out why? Skip 'Pipe' to see the 'Trim - Inside (Ci)'.…</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769256799?profile=original" target="_self"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2769256799?profile=RESIZE_1024x1024" width="721"></img></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769256548?profile=original" target="_self"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2769256548?profile=RESIZE_1024x1024" width="721"></img></a></p>
<p>Here's a thing... I don't know why the "grid lines" stick up higher than the bounding box; they could be trimmed, though better to figure out why? Skip 'Pipe' to see the 'Trim - Inside (Ci)'.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769256799?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/2769256799?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769256548?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/2769256548?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></p> The shape to be subtracted fr…tag:www.grasshopper3d.com,2017-03-13:2985220:Comment:17111242017-03-13T16:04:28.256ZJoseph Osterhttps://www.grasshopper3d.com/profile/JosephOster
<p>The shape to be subtracted from the cube is totally arbitrary, so long as it's a "<strong>Closed Brep</strong>" (required for 'SDiff' to work).</p>
<p>To demonstrate the idea, I created a 'RevSrf' (surface of revolution) with 'Cap Holes (Cap)' to close the ends. The cube is arbitrary too; I used 'BBox (Bounding Box)' for the capped, revSrf (might be a good idea to scale that a bit larger?). Then I rotated the revSrf 45 degrees just to make it more interesting, before 'SDiff'.</p>
<p>There…</p>
<p>The shape to be subtracted from the cube is totally arbitrary, so long as it's a "<strong>Closed Brep</strong>" (required for 'SDiff' to work).</p>
<p>To demonstrate the idea, I created a 'RevSrf' (surface of revolution) with 'Cap Holes (Cap)' to close the ends. The cube is arbitrary too; I used 'BBox (Bounding Box)' for the capped, revSrf (might be a good idea to scale that a bit larger?). Then I rotated the revSrf 45 degrees just to make it more interesting, before 'SDiff'.</p>
<p>There is still no "grid" at that point. To create the grid, I used three edges of the 'BBox' corresponding to X, Y and Z directions and divided them using 'PFrames (Perpendicular Frames)'. The frames are planes used by 'Brep | Plane (Sec)' to intersect the 'SDiff' result.</p>
<p>You can hide the 'Preview' of 'SDiff' to leave only the intersection curves.</p>
<p>You can feed those intersection curves to 'Boundary' to get surfaces from many of them (the ones that are "Closed Planar"). Add 'Shift Paths', then 'Shift List' twice (1 and -1) with 'Wrap=False' to ignore the six outer surfaces.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257569?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/2769257569?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257724?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769257724?profile=original" width="527" class="align-full"/></a></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2769257907?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/2769257907?profile=original" width="527" class="align-full"/></a></p>
<p></p>
<p>A few simple tips for understanding GH code:</p>
<ul>
<li>Enable/disable preview one component at a time to see what each one does.</li>
<li>Use a 'Panel' to see a text version of what is coming out of each component. This also helps to understand data/tree structures (essential to grasp 'Shift Paths').</li>
<li>Try the attached 'vuTreeList' tool I wrote to examine the geometry being generated along the way, by path and item.</li>
</ul>
<p>Have fun!</p>
<p>P.S. I just realized I haven't really matched your desired result, which is a 3D grid of pipes... Will have to give that a little more thought.</p>