• 1

# 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?

## Recommended Posts

• 0

... perhaps I should add some context to this question.

The solid I'm trying to create above, is one that I want to use to subtract from the larger solid shown in this post (and in teh attached file).

Essentially I want to cleanly slice off a portion of the parapet wall, above the level of the highlighted red line. This seems very tricky to achieve. Doing a subtraction is one approach but there may be other better ones. You may need to look at the file itself to understand the geometry here as it's not as simple as it may appear (it's not just a straight extrusion).

• 0

I just did a quick play and I think you can get the surface you are looking for.

Use the Extract Tool in Extract Curves mode along one side. Enter the group created, select all, and Modify:Compose. You will now have a single NURBS curve inside the group. Exit the group and Ungroup to get just the NURBS curve.

Repeat on the other side.

Draw a 2 point NURBS curve between the two extracted/composed curves. Loft the three curves using the Birail Sweep mode. If you check the Create Solids in the Loft settings, you will end up with a Generic Solid that is the same size as the bottom of the parapet.

If you select the new Generic Solids and Wall assembly, you can Section Solid to get either the wall or the parapet.  Duplicate the objects first and Section Solid the other way and you will end up with two Solid Sections, one representing the wall, one representing the parapet.

Ask again if not clear enough.

HTH.

• 0

Thanks for the response @Pat Stanford

So, I managed to get the solid I wanted in my first post. In fact, it seems possible to do it slightly differently than your suggestion: I can extract a surface from each side; VW will not let me use the loft command on these but if I convert them to 3d polys, then back to NURBs (why is this?), then it will, and I can use the "no rail" mode. This gives me a solid that I can subtract, which cleanly removes a section of the wall, but not the parapet.

So I can get this far:

But you have lost me a bit in the second part of your description - what do you mean I should use to do the solid section - this needs to be a surface, no?

What I tried was to set the working plane to the "cut end" of the wall, and draw a 2d polygon:

Converting this to NURBs gave me something that the solid section command would not let me use, but converting it to a 3d polygon worked.

One thing I am unclear about - what's the difference between a NURBs surface and a NURBs curve, and what's the proper way to convert one to the other?

• 0

It strikes me that what I really want to do is use a section surface like this to cut the solid:

I have drawn that in 2d polys using working planes - there are 3 polygons each on a different plane but their edges meet.

What I don't know is how to make them into something that I can use as a solid section. I can convert those polygons into NURBs curves or 3d polygons, but I can't then see how to compose them into one surface (the compose command doesn't do anything).

The VW help page on Solid Sections is not very helpful - doesn't tell me anything about what kind of surfaces I can use, whether they can be made up of multiple planes, etc.

• 0

Did you get this sorted? Or do you still need more explanation?

• 0

@Pat Stanford I managed to do what I was trying to do, by other means in the end, thanks.

There remain a couple of questions that would be useful to understand for the future though:

1) Is there a way of creating a solid from enclosing surfaces, when the loft command isn't an option?

2) Can I convert a NURBs "curve" directly to a NURBs "surface" and vice versa

3) What kinds of objects can I use for solid sections (missing information in VW help)

• 0

As you have the solid you require you could simply

1.   Switch to top or top/plan view

2.   Place a line perpendicular to the curve at the point you want to trim the parapet back to

3.   Using the Split Tool (second mode “Line Split mode”) cut your solid using the line in (2) as a guide.

4.   Using the “Extract Tool” (Preferences – Tick Create Planar Object”), select the top faces of the wall (use Shift to select multiple)

5.   Ungroup and extrude above the top of parapet, then extrude the back face beyond the outside faces of the parapet

6.   Use the “Taper Face Tool” to close any gaps in the extrusions)

7.   Select the extruded blocks and “Add Solid”

8.   Select the block with the parapet and the new block created in (7) and then “Subtract Solid”… no parapet 🙂

9.   Select the two and "Add Solid" to get back to one object

• 0
3 hours ago, axhake said:

As you have the solid you require you could simply

1.   Switch to top or top/plan view

2.   Place a line perpendicular to the curve at the point you want to trim the parapet back to

3.   Using the Split Tool (second mode “Line Split mode”) cut your solid using the line in (2) as a guide.

4.   Using the “Extract Tool” (Preferences – Tick Create Planar Object”), select the top faces of the wall (use Shift to select multiple)

5.   Ungroup and extrude above the top of parapet, then extrude the back face beyond the outside faces of the parapet

6.   Use the “Taper Face Tool” to close any gaps in the extrusions)

7.   Select the extruded blocks and “Add Solid”

8.   Select the block with the parapet and the new block created in (7) and then “Subtract Solid”… no parapet 🙂

9.   Select the two and "Add Solid" to get back to one object

Thanks for the suggestion...

Step 4 (even when I use the "create planar object") doesn't seem to give me an object(s) that I can extrude.

• 0

Have a look at this, I created in V21 and exported to 2018 so you should be able to open OK

See if you can trim the parapet back a bit by following what I did.

Alan

• 0
5 hours ago, axhake said:

Have a look at this, I created in V21 and exported to 2018 so you should be able to open OK

See if you can trim the parapet back a bit by following what I did.

Alan

Thanks - I've looked at that and I can see how you have done it, and you have done it cleanly.

However - when I go into the history of the solids, and go right back to the original object, it's not quite the same as what I see in my original file.

In mine, if I try to extract one of those top surfaces, I don't get something I can extrude (I get a NURBS surface as per my screenshot above).

In yours, I do: I am able to extract a polygon.

I'm not sure if this is the result of something working differently in vw2021 vs vw2018.

I don't want to take lots of your time on this - because it's something I have got around in a different way in the end. But still useful and interesting to understand what's going on.

Edited by line-weight

• 0

Sir line-weight

Geeze, what a post to wake up to!  :-)

Before I put in my 2 cents,

1) I noticed that the object in your file is a generic solid....was there a reason you didn't just leave it as the original objects?

2) IF I understand the basics, you just wanted to have that parapet object(above your red line) as a separate object??

3) did you consider simply doing an extrude along path for the parapet part?

As is often the case, there are several ways to accomplish things in VW, but....there is usually one best way...meaning less tweaking and mouse clicks. Not sure exactly what that would be in this case until I mess with the file.

Pat S usually has a good handle on all things VW, so I see he offered up a solution.

• 0
14 minutes ago, Kevin K said:

Sir line-weight

Geeze, what a post to wake up to!  🙂

Before I put in my 2 cents,

1) I noticed that the object in your file is a generic solid....was there a reason you didn't just leave it as the original objects?

2) IF I understand the basics, you just wanted to have that parapet object(above your red line) as a separate object??

3) did you consider simply doing an extrude along path for the parapet part?

As is often the case, there are several ways to accomplish things in VW, but....there is usually one best way...meaning less tweaking and mouse clicks. Not sure exactly what that would be in this case until I mess with the file.

Pat S usually has a good handle on all things VW, so I see he offered up a solution.

1) How long have you got?! The answer is to do with the messy way VW deals with very gradual curves where they end up as very faceted (thread somewhere about this) so I had to convert the spline type path to a segmented one, and then EAP doesn't work (I now forget why, there's a thread on that too) so I had to generate as a lofted object instead which gives me a generic solid as the output.

2) I wanted it removed, in that case.

3) Actually, that's kind of what I ended up doing (except as a lofted profile, for same reasons above) and then the 'parapet' was separate from the 'body' which made doing the edits I wanted rather easier.

• 0

I got time...its only 7:20 am in Tahiti. :-)

Stand by.....I have some ideas

• 0

Ok, after a bit of analysis a few things come to mind.

1) I think if I were doing what you wanted to achieve, if I understand it correctly, I would have probably just made two extrude along path items.....Done....and simple.

One for the basic shape and one for the parapet. Pretty simple. Keep in mind that the profile object must be planer!

2) one other thought, the faceting you are seeing with the curves has to do with two things.

a) if you set your open GL settings to 'very high' you should see those facets kind of smooth out.

b) also, I noticed the file is in millimeters at a 1:1 scale . since it is decimal if you increase the precision a bit, using a few more zero's after the decimal point, sometimes that helps with smoothness of curves as well. In addition, its a good idea to set you prefs to use very high for the 3d conversion resolution if you have objects in the file that have curves.

3) I also noticed that the basic shape is 'non-planer' so using the 'split tool' can get tricky.  IF you put the file in an elevational view you will see that there is a slight slope to that object, so, sectioning can be a bit dodgy.

Anyway....I updated your file to show your original generic solid along with my two extrude along path objects.

They look a bit smoother by just setting the open gl to extra high.

See what you think.

• 0

I think I missed the whole gist of what you wanted to do.

sorry about that. I was thinking you just wanted to separate the parapet object from the main shape.

• 0

First, the main difference between nurbs curve and nurbs surface.....nurbs curves have no solid mass. think of it as a polygon with a none fill.

curbs surfaces do have mass.  You can give them a solid fill as well as a few other options like extruding them by choosing the shell solids option.

Secondly....I am probably still way off here, but I created a small low res movie to attempt to explain one option as to what you wanted to achieve.

Again, I fully admit I could be wayyyy off.  This whole process involved 3 moves.

1) creating an extrude along path from the basic solid shape

2) creating an extrude along path

for the parapet object

3) using the split tool to shorten up the parapet.

Pretty fast and simple, really.

• 0

@Kevin K thanks for the responses.

What you have done - splitting the object into two parts, is essentially what I have ended up doing, because it makes it easier to do the kind of edits I want to do.

I should explain that the slight slope on the object is intentional, and it's this that makes things tricky, because it means that the top surface is not all on one flat plane. The slope itself is not even - it's a gradual curve in elevation - and again this is intentional and necessary to model.

I have understood most of the problems I've been having with this object, thanks to a little bit of behind-the-scenes help from @axhake. Some are due to the way I generated the original object (firstly as an EAP and then as a lofted solid) and things can be made cleaner by ensuring that the profile object is perpendicular to the path.

But there's another issue going on as well, which is to do with the faceting problem, and it means that to make things work, these objects (which are modelling railway viaducts) have to be generated using a segmented path rather than a smooth curve. The faceting problem, unfortunately, is not solved by changing the OpenGL settings. This issue is discussed in more detail on this thread:

Going back to my original question in this post - and for the benefit of anyone reading this with the same question - the answer is that you can create a solid from its enclosing surfaces simply by drawing those surfaces as 3d polygons, and then using the "add solids" command. This I didn't know - I might have expected nothing to happen because 3d polygons aren't "solids" to me, and/or maybe I'd have expected to get a hollow object. But it turns out this creates a properly solid object. Something useful to know for the future.

• 0
3 hours ago, Kevin K said:

First, the main difference between nurbs curve and nurbs surface.....nurbs curves have no solid mass. think of it as a polygon with a none fill.

curbs surfaces do have mass.  You can give them a solid fill as well as a few other options like extruding them by choosing the shell solids option.

On this, I've found this video quite helpful in understanding better what a NURBs surface is, and how to create one:

As far as I can make out, it's not possible to directly convert, say, a 3d polygon to a NURBS surface, only to a NURBS curve... have I got that right?

• 0

Ok, now I am much clearer on the big picture of what you are doing,  now that you have explained things in a bit more detail.
I had thought the slight slope in your object was unintentional ! Silly me!
And yes,, you are correct in that you can’t create a nurbs surface directly from 3d polys,  but.....if you have a nurbs curve, there is an option to create surface from curves option.  I use it quite often. You CAN convert a nurbs curve from a 3d poly, however, then convert surface from that nurbs curve. It does get a little finicky at times if your nurbs curve(s) are complex.

• 0
9 minutes ago, Kevin K said:

Ok, now I am much clearer on the big picture of what you are doing,  now that you have explained things in a bit more detail.
I had thought the slight slope in your object was unintentional ! Silly me!
And yes,, you are correct in that you can’t create a nurbs surface directly from 3d polys,  but.....if you have a nurbs curve, there is an option to create surface from curves option.  I use it quite often. You CAN convert a nurbs curve from a 3d poly, however, then convert surface from that nurbs curve. It does get a little finicky at times if your nurbs curve(s) are complex.

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.

• 0

Yep, you found it.

it is a bit fettered away, I agree.

• 0

Sorry for the delay in posting but few things came up.

After chatting with @line-weight I promised a workflow to try out.

I have also created a few Marionette network to make things a bit quicker.

Main NURBS problems:

Accuracy - Fail to pass through Control Points

Large curves display heavily facetted (segmented)

Often when used to creates solids they leak due to misalignment of surface edges.

Vectorworks segments (facettes) the curve into equal lengths throughout the whole curve when displayed, that’s why the NURBS curve appears not to pass through some of the control points.

We also know that if we try and snap to a NURBS it doesn’t snap to the facetted line work but to the geometry of the NURBS curve; from this we know that what we are seeing is a limitation of how Vectorworks is displaying the curve.

At the moment there is no workaround that will prevent this from happening until Vectorworks addresses the issues with curved geometry (NURBS and arcs) and gives them some long over due updates… I would vote that one up any day.

However there is a “workaround” that will allow us to create NURBS that display smoother.

One of the problems is how NURBS are created and how we use them to generate our geometry.

If we look at the example below, the NURBS curve has been placed using Interpolation mode. The NURBS curve passes through a number of control points placed to define the curve which in this example is about 90m long.

Now think of how we would create the same curve using “arcs” and “lines” to approximate the NURBS curve – See image below:

Each arc/line (shown in RED and Blue) is tangential to the next at the points indicated by the “Tangent Points”.

This is how road and rail alignment is constructed using (Curves, Straights and Transitions) to generate a smooth alignment.

NOTE:

We can use the “Analysis Tool” found in the “3D modelling” Tool set to find the properties of a NURBS curve more accurately using the second option “Interrogation Mode.

If we now take the “Tangent Points” and overlay these onto our NURBS curve; notice the location of the “Control Points” in relation to the “Tangent Points”… they don’t align.

So to be able to create a smoother NURBS curves we need to create our curve taking in to account how we would have create the curve with arcs and lines, placing control points nearer to where a “Tangent Point” would be located and adding more control points to pull the curve to the desired position.

EXAMPLE: (NURBS - Example 1.vwx)

Consider how we would create a solid wall using these seven profiles (one to be placed at each control point – vertical and square to the control point/curve):

The control path is a NURBS curve (shown in plan)

and in front view:

and in 3D

(NOTE: I have placed a copy of the profile at all the control point locations, vertical and square to each of the control point).

Try and create a solid object that once created aligns with each of the profiles.

As the “V” in the top moves from left to right we cant use the “extrude along a path” tool.

If we try “Loft" – "One rail mode
Change the profiles to NURBS curves (select all the profiles then go to: Modify>Convert>Convert to NURBS) once done ungroup.
Select the rail (path) then each of the profiles (hold down “Shift key” to select multiple profiles) – Tip: select the same point on each profile to ensure no twisting.

Once done select the green tick to complete the operation.
From the pop up, select “Create Solid” and “Keep Curve”, select OK to finish

Move the created solid to the “Wall” Class

Not very smooth.

Try changing the “OpenGL Options” to improve curve display.

View > Rendering > OpenGL Options

Change “Detail” to High or Very High, then select OK.

Appearance looks smoother…but!

A - The solid created does not pass through the corners of the profile

B – Surfaces don’t appear to be coincident (there are gaps as facetted edges don’t align)

If we use the “Clip Cube” to have a look along the object created we notice some of the surface buckle and twist.

So how can we improve on this?

1.

Copy the path NURBS Curve and the profiles,

Then place additional NURBS curve through each vertex of the profile (selecting the same vertex in the other profiles as shown below)

You should have 7 NURBS curves in total.

You will notice that the NURBS facetted curve displayed doesn’t pass through the points on the profiles (however the underlying geometry does)

So to fix this we need to split the NURBS curves at each of the control points (where the profiles have been placed).

2.

At each profile (not start or end profiles)Set a working plane”, use “Three point mode

The from the mouse menu (right click) and select: Working Plane > Rotate Working Plane

Set “Rotation Angle” to 90

Set “Working Plane” to Y

Now from the mouse menu (right click) and select: Working Plane > Look at Working Plane

3.

Using the “Split Tool” second mode “Line Split Mode”  split the NURBS curves at the profile location

Repeat same process at the other profile locations.

You should be left with 42 NURBS curves, each will now start and end between profile vertexes.

Place these on class “AA_CurveToSmooth” or any other class to isolate them.

4. *******************************************************************************

IMPORTANT: strange things can happen with NURBS that have been modified.
Select all 42 NURBS curves and rebuild them:
Model > 3D power Pack > Rebuild NURBS
Number of points should be set to 4

Ungroup when complete.

**********************************************************************************

5.

I have created a Marionette network to do the next bit;

Smooth NURBS _ Keep as Individual Curve(s) _ v3

Place this network in your file and select it, or I have created a network wrapper that can be used to create a menu command,

In the OIP there are some options.

a) Select the curve by criteria:

Select:Type – is –  NURBS Curve

Class – is –  <the class you have placed the NURBS curves on to isolate them>

b)  NURBS curve degree: Keep this as 1

c)  Number of points to divide curve: Try something like 20 to start with

d)  Set colour PINK: Tick this (easier to see how the curve is smoothed in relation to original curve)

e)  Delete Original Curve: Leave this UN-TICKED for now.

f)  Join to form one curve: Tick this (all adjoining short length will be joined to recreate the 7 NURBS curves.

Select RUN

• Each curve (between profiles) has now been recreated using the underlying geometry to define where each of the new 21 control points is placed (creating 20 facets) per curve
• Each curve between profiles has then been joined to form one NURBS curve (back to 7 NURBS curves)… now each of the curves has a control points display correctly passing through the vertex of each of the profiles.

If you are happy and the geometry looks smoother enough for your needs run the script again and tick “Delete Original Curve

If not run the network again and change the number of point:

• Smaller number less smoother (less vertices)
• Larger number smoother curve (more vertices)

g) You need to Ungroup the graphics after to break them from the script..

6.

Now using the “Loft Surface Tool”, first mode “No Rails Mode
Zoom to one end of the wall and select two adjacent NURBS curves

Select the Green Tick to complete

From the options box that is displayed select both “Create Solid” and “Keep Curve”

Select OK to finish.

With the solid still selected change the class to: AA_Surface Temp

Tip:

To make things easier set:  class visibility of: “AA_Surface Temp”  to Gray

Set Render Mode to: Wireframe

This makes it easier to see which NURBS curves have been Lofted and to be able to select the next set.

Repeat the same process with the last NURBS curve selected and the next adjacent curve.

Repeat this process until all sides have been created.

Set: AA_Surface Temp as the active class

As the end profiles are a simple shape Delete them and recreate them using the 3D Polygon Tool.

Repeat for the other end profile

Set “Render Mode” back to to: openGL

Set “class”: AA_Surface Temp as Active Only (don’t want to see anything else)

Select all solid surfaces and the two ends.

Right mouse button, and select “Add Solids

You should now be left with one nice smooth object created using NURBS with no buckling or twisting of surfaces and the solid generated passes through each of the control points/profiles.

Note:

If having set “Detail level” to High or Very High in OpenGL Options is slowing things down set it back to low and see how it looks.

You can use this process to create some very clean and smooth geometry or anywhere you need to display smoother curves.

Many thanks to @sbarrett for help with the network to find the control points.

I'm still trying to find a way to automate the splitting of NURB curves at the control points so will update if this can be done.

Edited by axhake
• 2
• 1

• 0

@axhake That is an amazing deep-dive explanation right there (I am sure I have used the exact same workaround in the past).

No wonder people get confused when trying to model in Vectorworks! Here's hoping Vectorworks Inc. can remove these NURBS interpolation/faceting bugs so we don't have to jump through so many hoops to get a correct result.

When you get out of lockdown, I think @line-weight owes you a beverage of some kind! 😎

• 0

Apologies to @axhake for taking so long to respond to this. I've finally found the time to sit down and look at it properly. As I'm still an upgrade refusenik, and using vw2018 I'm not able to open the attached files but that's fine, I think it would be good for me to test the method drawing somethig from scratch myself.

The first thing to get right is the placement of the "control profiles". @axhake you say you have placed them "vertical and square to each of the control points". It strikes me that there are two ways that you might want to place these, if you are building a wall-like object that is curved both in plan and elevation:

(a) The profiles are placed perpendicular to the path in plan and perpendicular to the path in elevation and and perpendicular to the horizon along the axis of the path

(b) The profiles are placed perpendicular to the path in plan and perpendicular to the horizon in elevation and and perpendicular to the horizon along the axis of the path

The diagram below shows what each looks like in elevation (for now ignoring any curve in plan) - think of the green line as a ground surface and the brown line the top of a wall built up from that surface. The red lines indicate the orientation of a constant-sized control profile in each case.

I think I'd like to test this method for each scenario.

My first question - what's the best way to get those profiles into location for each wall type? The first hurdle I've come to is a rather basic one: I can't work out how to generate a line that is perpendicular to a 3d NURBS curve in plan. This is easy with, say, a circle - if you draw a line starting at that circle, then one of the snap constraints you are offered is "perpendicular". This doesn't work with a NURBS curve though - am I missing something?

I've discovered that you can get a 3d working plane that's perpendicular to the NURBS curve simply by using the Planar Face Mode and clicking on a point on the curve. The problem with this is that it has no regard for the horizon and it rotates as you go along the curve. Is there a quick and easy way to establish this working plane and then (for wall type a) tell it to rotate so its X axis is horizontal or (for wall type b) rotate so its X axis is horizontal and its Y axis is fully vertical?

• 0

Sorry @line-weight, have just exported to 2018 and added to my original post with the other files.

Hope that helps

## 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.

×   Pasted as rich text.   Restore formatting

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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

×