Closed vs Open Surfaces in Dynamo and retriving their UVs


I started by making a complex surface. It’s edges can be seen joined at the left of the attached image. However, the surface doesn’t seem to be automatically closed even though the input curve is, and therefore, when I try to do further processing on the surface, the points of the UVs spills outside it’s bounds. I’m not exactly sure why the node spills UV points outside the surface, they all seem to be interpolated for what I can tell. I’m not sure if this is the normal behaviour of the node and therefore I have to do further filtering of the points which intersect my surface or whether the spilling of points outside the surface is the result of Dynamo returning an open surface. I, for they life of me, was unable to find a way to close the surface.


This is the standard behavior for trimmed surfaces unfortunately. What’s your end goal? If you describe it, maybe someone who’s faced the same limitation will have an available workaround.


One such workaround: isocurve in one direction, then intersection with the surface, then point at parameter on the resulting lines. Doesn’t like openings in surfaces for that case though. Then I like osocurves in both directions and intersect the two.


Interesting to know this is the node’s standard behavior. Still, finding the intersections for points or curves seems pretty straightforward and predictable. Now, however, the big question is whether it’s possible to control the rotation of the UV grids? My searches suggest it’s possible in REVIT and Grasshopper, but the results for Dynamo are thin. I’m going see what some of the other smaller surface packages have but certainly it must be possible to rotate the UV grids. How else is one suppose to do advance surface manipulation and analysis?


Sounds like you want to make smaller cells out of your dynamo surface. If you provide an RVT and a dyn that produces the geometry you want to analyze, I can show you how to break them down in a few nodes.


I’ll probably try to take you up on that but it doesn’t squash my curiosity about how Dynamo determines the UV layout. :grin: Hopefully we will get a chance to meet at AU sometime. I’m really trying to understand as comprehensively as possible the different ways surfaces can be manipulated, the final aim being the ability to pick the best one to shove off into Refinery on any given project.


The nice thing with this is that you can create a dictionary giving each cell a row and column designation, add parameters (ie: area, normal, classification, row, column, use, etc) and use that for your generation efforts.


hehe. :grinning: You’re going to give me the honour of presenting the final output?

I think it does the job. (I scaled it up for the image.) There’s quite a lot of geometry outputted at the end for designers to work with, however, it failed with my more advanced 3D surface. I’m still working through some of the possible fixes. I guess using this method you’d have to rotate it back into place but that shouldn’t be too much trouble if one kept track of the UV rotation angle in the first place. I’ve attached the original dyn file and lightweight REVIT model that I used.

Example Surface Lite.rvt (2.0 MB)
Example Dyn Code.dyn (50.7 KB)

I also wanted to reference this old thread about the spilling of points / isocurves beyond the limits of the surface as others such as @Dimitar_Venkov and @Ben_Osborne have already noticed the issue.


The honor of acting as an advisor is the only one I’m ever after. :slight_smile:

I’ll look into more advanced 3D surfaces too.


Is this shape advanced enough?

Had to change up how I did the division, as extruding vertically along the pass-under areas caused a geometry error related to points being coincident. In any case, there are many a way to do something like this. Just gotta be willing to play.

Making more complex cells.dyn (138.4 KB)

Move a point and keep lines and faces connected to it

Taking a quick look at that dyn this morning, it’s going to take me a while to reverse engineer it, but it looks like it will do the job. This is great information for the forum and your time is appreciated. Once a surface can be broken down like this into its constituent geometry, the possibilities to manipulate artfully and meaningfully are, in my opinion, endless. The attached link has lots of good information too. It’s nice too see lots of activity for this topic.

To show what we talking about in this thread (about rotating UVs on a surface), for reference I plotted the result in Mathematica 11.3 which just applies a rotation transform to its mesh function. Very straightforward and all those curves can be extracted easily (dividing the surface accordingly is a whole other process). One can see the isoline rotation through 45 degrees without moving the surface (as my reply above in Dynamo illustrates).


I believe you could use Isocurve.ByParametersOnSurface (or similar names - there are two Isocurve nodes in the default library) to achieve what you’re after. The math for the parameters being the hard part. Could (should?) be scriptable though.


After reverse engineering your node and understanding the approach, with some slight modifications one can see progress made in my test case. I really appreciate your time and hopefully this thread can help others who stumble upon it. There really is a ton of geometry to work with at the end and some of the other fine tuning I have in mind can wait. Having so much trouble getting Refinery installed and working on my computer this week :frowning:.