Jump to content
  • 1
line-weight

Creating solids from enclosing surfaces

Question

Never quite sure what the best way to approach this sort of thing is.

 

In this case, I have 8 NURBS surfaces which I've extracted from an existing solid. 2 chains of 4 connected surfaces, and essentially I want to fill in the space between them to make a solid.

 

(None of those surfaces are coplanar, nor are they rectangular)

 

So, the red lines I've indicated would be some of the new edges on that solid.

 

What's the most efficient way of doing this?

 

265082690_ScreenShot2020-11-24at23_15_43.thumb.jpg.79160733bddbb79bd271008aaf9c2250.jpg

surfaces.vwx

Share this post


Link to post

Recommended Posts

  • 0
Posted (edited)
17 minutes ago, axhake said:

Hi @line-weight, hopefully this will show you how to get things aligned.

 

Thanks! That all makes sense.

 

Having understood your method, I can suggest a slightly different way, which avoids having to split the NURBS curve:

 

1) Activate working plane tool, planar face mode

2) Click on arbitrary point along NURBS curve to establish working plane perpendicular to curve at that point

3) Place a 3d locus at that point (ie where working plane and NURBS intersect

4) Select the locus > move 3D and make sure "cartesian" rather than "working plane" is ticked, and move the locus some distance along 'Z'

5) Now use that 3d locus as the reference point to rotate the working plane, in the same way you used the line drawn on the layer plane.

 

 

 

Edited by line-weight

Share this post


Link to post
  • 0
Posted (edited)

Yep, that will do it.

I suggest splitting the NURBS curve so that when applying my workflow to smooth the NURBS curve it actually passes through the point (to be more accurate) and not along the facet if that makes sense.

Splitting the NURBS curve at that point is Key point to do.

 

 

Edited by axhake

Share this post


Link to post
  • 0

I'm not managing to get the Marionette network to work - if I drop it in the file and press "run" or "select curves..." nothing happens. I've successfully converted to a menu command but choosing the menu command doesn't result in anything happening. It might be a result of it being converted to 2018?

 

I do get this message when I copy the network into the file

 

1307945226_ScreenShot2021-01-07at17_42_32.thumb.jpg.14d7240514935831afc663de4265fb0f.jpg

 

Not to worry though - I will continue through the steps using the nurbs-segmenting command I already had from before.

 

Share this post


Link to post
  • 0

In the meantime though - I've successfully built one of the sections and it looks good - nice clean geometry.

 

204033423_ScreenShot2021-01-07at18_00_00.thumb.jpg.fb08cc614b9a8dfd54d18fab944d423b.jpg

 

Going to mess with things a bit now and try it on some different profiles.

 

Your step 6 can be simplified a little, I think. Instead of creating 7 individual lofts - it seems to work to select all 7 lines as 'rails' in sequence - and then tick the "ruled" box as well as the others (this makes it join them with straight lines instead of a crazy loopy one) and then you can do the whole lot on one go. Unfortunately, it doesn't make a solid with end caps on - you still have to add these as you describe.

Share this post


Link to post
  • 0
Posted (edited)

There's a question that this method raises for me:

- I draw a NURBS path, through each of the control points I want

- assume the profile, set perpendicular to the path, at each control, is exactly the same at each of those points

- then I draw all of my other NURBS paths, using the vertices of the control profiles along the way

- am I right in saying that all of those NURBS parts I've drawn are not necessarily exactly parallel?

 

To test this I've made a very simple example... the profile is exactly square, 690 by 690. There's just a start profile, an end profile and a mid profile. It's curved in plan only. I've constructed the 'wall' using the method described. If I measure the width of that wall at each of the profiles, it's 690 as expected. But if I measure its width between each of the segment vertices (which ought to be at positions exactly on the 'generating' NURBS curves) then it varies very slightly... in this example between 687 and 691.

 

Is that just an inevitable result of the way VW produces the NURBS curves?

 

I expect that this is something which in practice usually wouldn't matter... but it might in certain use cases, and maybe it would become more marked with more complicated curves.

 

I can see that maybe you could try generating the extra NURBS curves by doing them as a parallel offset from the originating one...would that work? I think it might when they are on a 2d plane but then things would get complicated in 3d.

 

1875563946_ScreenShot2021-01-07at18_50_00.thumb.jpg.1c4e695f1447db3d9a52ce54f6dce4a7.jpg

parallel-test.vwx

Edited by line-weight

Share this post


Link to post
  • 0
Posted (edited)

Looks like you are getting into this now.

 

"am I right in saying that all of those NURBS parts I've drawn are not necessarily exactly parallel?"

They should be, there are two ways to check this:

a) Copy your profiles and paths and change one end profile to a NURBS, then select that profile and one of the paths, using "Extrude along a path" create the extrude. Now go to the other end, switch to Wireframe and see if the extrude aligns with your end profile. If you have accurately placed your start and end profiles it will align, if not they wont. 

 

b) For a 2D path switch to Top/Top Plan View and using the "Offset Tool" select one of the paths and offset, zoom into the end of the offset line and see if it aligns with the profile. If it does then the profile is perpendicular, if not use the rotate command and rotate the profile (Note: this only works with a path that is 2D)

 

As you hadn't left the paths in your file I recreated your profile and created paths between them.

moved the path and replaced the profile on the ends using the workflow to align the profile to end of paths as in my video and checked, all aligned OK so we know that the profiles have been placed square to the ends of the path ☺️

Checked both methods as above and all aligned OK.

 

I then run my network to re-create each NURBS between profiles with 30 points.

Switch to 3D View and changes display to "Polygon > Shaded" far easier to see what's happening. Then measured each crease line, I get 688 - 689 consistently so there is a very small rounding error., try setting your units to one decimal place and see what the numbers you get.

The rounding error using this workflow are far smaller than if you were to just use extrude along a path or loft.

1040213087_lw-1.thumb.png.933fbad2e1ff8a6099dac07195abb2b9.png

 

Now, if you go back to your original profiles copy them, place a NURBS curve through the same corner of each profile, then using the "Split Tool" split the path at the middle profile, then split the two NURBS in half again so that you are left with 4 path lengths.

Place a copy of the profile at the new end locations so that you have 5 profiles.

Add additional paths to the other corners as before, split these at the profile locations.

Select all 16 path NURBS curves and rebuild them.

1345031644_lw-2.thumb.png.d5d7d9ac5f27ff96b1eac13fb14950db.png

Follow the workflow you have been using and then check the length of each as above.... the accuracy should improve.

I am now getting 689 - 690.

So form this we can assume the more profiles used to form the shape we are trying to model the more accurate the final geometry will be.

 

Edited by axhake
Spelling mistake
  • Like 1

Share this post


Link to post
  • 0

Thanks. I guess that's what I'd 'intuitively' expect - that the more control profiles, the more accuracy.

 

Do you feel you understand sufficiently the maths behind the way NURBS curves are constructed, to say that in theory (assuming all the profiles are perpendicular etc) the NURBS should all be exactly parallel?

Share this post


Link to post
  • 0

My next question is about drawing a NURBS path where it needs to transition from a straight line (or even a radiused curve). For example, let's say this is plan view, and the grey rectangles represent straight sections of wall, or viaduct, or whatever. I want to create a curved connecting section using a NURBS path.

 

Drawing it in "interpolation point mode" doesn't work because (I think) there's no way to ensure that the ends of the NURBS curve are exactly square to the ends of the straight sections:

 

1947806848_ScreenShot2021-01-08at10_59_15.thumb.jpg.954ca2d35eee7d3891f70a5625c5e947.jpg

 

However it can be done in "control point mode":

 

1887459159_ScreenShot2021-01-08at11_22_17.thumb.jpg.33adf903c00a4b9e9e48bae0df97a7e4.jpg

 

If I then place a profile at each end of that NURBS curve ... how do I then find all the "parallel" curves? Because I have to draw them in interpolation mode. I'm not going to get the correct result by trying to draw an interpolated curve between two points. So I can split the curve and introduce a third profile in the middle somewhere. Will that give me a correct curve? Or is it a case of the "parallel curves" becoming more and more correct, the more intermediate profiles I introduce?

 

I have been too lazy to try this for myself out before typing this post... but suspect it's something you've already gone into.

 

 

 

 

Share this post


Link to post
  • 0

Doesn't matter how you create your first path NURBS curve to make it look right.

Once you have it then split (based on previous example, in the middle and then in half again so you are left with 4 paths), your only interested in the ends of each NURBS curve.

Now place your profiles (using your workflow as above) at the 5 locations.

Delete your original paths and recreate them with interpolation mode passing through each of your profiles.

split each path at the profile locations and rebuild............

 

Until VW give NURBS some love and attention this is the best we can do

  • Like 1

Share this post


Link to post
  • 0

"I have been too lazy to try this for myself out before typing this post... but suspect it's something you've already gone into"

Over several months I think I have a flat spot on the side of my head where I have been hitting it against a wall figuring this out and coming up with a workflow that works.

headbang.thumb.gif.cc564521c91b2267bca27191fd489e57.gif

 

  • Like 1

Share this post


Link to post
  • 0
31 minutes ago, axhake said:

"I have been too lazy to try this for myself out before typing this post... but suspect it's something you've already gone into"

Over several months I think I have a flat spot on the side of my head where I have been hitting it against a wall figuring this out and coming up with a workflow that works.

headbang.thumb.gif.cc564521c91b2267bca27191fd489e57.gif

 

 

It seems to me that what you have come up with works as well as is possible within VW's limits and is a method that will be very useful to anyone trying to deal with this kind of geometry. I hope that some people at VW will take the time to go through it and understand it fully, most crucially understanding the problems that it solves.

 

I think the principle of making things "exactly correct" at the control profile locations is sound. And then what happens in between them is 99.9% correct but most importantly does not create the horrible buckled, messy geometry that you highlight in your examples of why the seemingly most obvious approaches don't work.

 

In my particular use case for this... the biggest test would be using it to try and create a junction between two converging viaducts. When they are only curving in plan, it's quite straightforward to see how to do this, but my brain starts to hurt when I try and think about the geometry if there are also curves in elevation. I'd be interested to see if you've managed to do something along those lines...but that perhaps should be a separate discussion.

 

In any case thanks very much for your work on this!

 

 

  • Like 1

Share this post


Link to post
  • 0
Posted (edited)

"Do you feel you understand sufficiently the maths behind the way NURBS curves are constructed, to say that in theory (assuming all the profiles are perpendicular etc) the NURBS should all be exactly parallel?"

 

You have to remember that curves are represented as length of short lines (faceted), some applications use smaller facets to represent smoother curves.

The mathematic behind NURBS and transitions is complicated to answer the question but if the NURBS curve is simple and fairly flat then YES they should be parallel.

 

Where the curve is more complicated is can be mathematic as close as possible, see the example below.

exc-1.thumb.png.cea8187e99a315f30798432a539745bb.png

 

Where the curve is tighter and we try and offset we get to a point where the facets fold over, some applications will draw it like this, others will throw up and error and wont complete the action.

exc-1a.thumb.png.4de57a597a59d46846a5de30da981232.png

sometimes the application will see this and remove the fold

exc-2.thumb.png.387c067d7028b5b3edf50a8f1c990447.png

at this point in this area it can no longer be exactly parallel.

It's more complicated than this but I hope this make some sense.

 

Edited by axhake
  • Like 1

Share this post


Link to post
  • 0
4 hours ago, axhake said:

Looks like you are getting into this now.

 

"am I right in saying that all of those NURBS parts I've drawn are not necessarily exactly parallel?"

They should be, there are two ways to check this:

a) Copy your profiles and paths and change one end profile to a NURBS, then select that profile and one of the paths, using "Extrude along a path" create the extrude. Now go to the other end, switch to Wireframe and see if the extrude aligns with your end profile. If you have accurately placed your start and end profiles it will align, if not they wont. 

 

 

 

 

This applies if I use the "true curve" rather than the faceted version for the path, right?

 

Because, once it's been converted to a segmented version, the end profiles are no longer perpendicular to the end segments of the path.

 

This started me thinking... is there a way to facet the path such that the end profiles *are* perpendicular to the end segments?

 

If there is, could this mean that each section of the wall/viaduct could be constructed from an EAP rather than a lofted object? The advantage of this would be that having constructed your wall/viaduct, you could make alterations to the profile without having to rebuild everything including the path.

 

As far as faceting the curve is concerned, I am thinking along these lines:

 

I have just shown a circle quadrant rather than a NURBS curve, for simplicity, but I think the principle would be the same (?)

 

921309255_ScreenShot2021-01-08at15_06_19.thumb.jpg.2bb4de14ce448cc447f232c428f11813.jpg

 

Black is original "true" curve, green is the method of faceting used by the current script, blue is an alternative, which means that the end facets would be at right angles to the true curve at its endpoints.

 

I expect there is some reason this wouldn't work!

Share this post


Link to post
  • 0
Posted (edited)
On 12/10/2020 at 3:16 AM, line-weight said:

 

Ah! In the 3D power pack tools, I see. "Create surface from curves".

 

A classic bit of VW user experience design that - give you a "convert to.." menu with lots of options, but then hide one of the actual options available, in another menu.

 

 

lol, so classic

 

& but great thread, so much useful info here

Edited by mjm

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×
×
  • Create New...