Surface to form

Age old question- how to bake Dynamo polysurface into Revit mass family?
So that I can later apply divide surface etc.

This topic seems outdated

Spring.Form.ByGeometrr [from spring] is not around anymore.

  1. DirectShape.ByGeometry
  2. ImportInstance.ByGeomtery
  3. ImportInstance.ByGeomteries
    are giving me direct shape that I cannot edit afterwards.
    I use Dynamo:
    Any ideas? :slight_smile:

Springs node should still be around, check your library closely.

I am without my computer for the weekend, but you can try sending a very simple cube (not a polysurface but a solid) using a Directshape.ByGeometry, ImportInstance.ByGeometry, or the FamilyType.ByGeometry (which is similar to the springs node, but does not generate it’s own instance so you will need a FamilyInstance.ByPoint node as well), and see if that allows editing.

If so I believe I know what is going on and I will do my best to elaborate.

thanks for quick reply!
I found ꟿ Form.ByGeometry which gives me Null output even with cuboid.

If I use Directshape.ByGeometry I get non-editable mass.
What category should I choose?
If I select Mass - I get mass that is not editable, even simple cuboid is not editable.

If I use FamilyType.ByGeometry > FamilyInstance.ByPoint how do I bake FamilyInstance?

What Revit year are you in? Can you post the image of your simple graph?

FamilyType.ByGeometry will create the geometry. The FamilyType.ByPoint will make the instance so you can see it in the project environment.

Revit 2022 - still this does not bake any instance

Start a Conceptual Mass Family, after that start Dynamo and create the Geometry.

1 Like

Needs a material input in the first light grey node.

And a point in the second.

1 Like

I did that, but how to create the Geometry in that mass family ? polysurface for instance

If I use ImportInstance.ByGeometry it bakes ‘Import symbol’ with mesh-like surface which cannot be edited.

Ok, the material did the trick. Coming from grasshopper background the Dynamo UI gives me headaches :smiley: why not throw an error if I need to input material for node to work?..

It was working - as a function. More on that in a minute.

The node colors indicate different “states”, as shown here: Nodes | The Dynamo Primer

Dark grey: executing and making new data.
Light grey: in a function state, not doing anything by itself but can be used in other nodes.

An example of using the node as a function:

Remove the “solidGeometry” input, and the familyType from the FamilyInstance.ByPoint node so they go light grey again. Place a Function.Compose node on the canvas.
Wire the output of the familyType.ByGeometry into the first input of the function.Compose node, and the FamillyInstance.ByPoint node into the second input.

Now place a Function.Apply node onto the canvas, and wire the Function.Compose node into the function, and the Cuboid into the argument input.

Assuming that my instructions were clear and my memory of the inputs correct, you should have the same results as when you had wired the nodes up completely.

There was a time (orange nodes!!!) when this was. Requirement as we didn’t have list levels, so you had to use List.Map, Function.Apply, List.Combine, etc. to make data structures mix well. I may miss the color scheme (again, ORANGE NODES!!!) but I do not miss the need to use these nodes.

Function passing like this does still have a place though. You should be aware of a few benefits and drawbacks.

The good is that it allows you to decide to ‘do this or that’ with a bunch of data.
The ‘both good and bad’ is that this suppresses element binding (a topic to search on the forum when you’re further along in your journey).
The bad is that this is slower than executing the nodes directly because the function has to be laced, and then the data laced inside the function.

1 Like

Oh, thank you, now I get it.
Still my initial question remains.
Tried this ImportInstance.ByGeometry- Export geometry Dynamo to Mass Revit - #8 by Vikram_Subbaiah
But I get mesh like surface ‘import symbol’ in the conceptual mass family which I cannot edit.

Seems like such a trivial task, what am I missing…?

It’s hard to know without seeing what you are up to. Also what seems trivial at first glance isn’t when you get to it.

Overall if you want editable stuff you need to make each sub component of the element in native Revit, using native Revit tools and limitations. I could (and may still yet) go into more detail, but effectively Dynamo’s geometry is another language than Revit’s, and the Revit language changed in 2022 to increase speed and stability, thereby reducing the likelihood of achieving what you are after.

oh… ok… Screengrab is bellow, maybe something you see can fix this issue

This isn’t going to give you what you are after for a few reasons, but mostly because of the language stuff I was getting to before.

To summarize the goal: You have a curve of some sort, and want to use that curve to host a series of ellipses, and loft between these profiles; with parameters to control the location along the curve, primary axis dimension, and secondary axis dimension for each ellipse.

You have done that in Dynamo using the following tools:

  1. Select base line drawn in Revit
  2. Convert the Revit line to a Dynamo line
  3. Place parametrically driven planes along the curve
  4. Draw parametrically driven ellipses on the planes
  5. Create a polysurface from the profiles
  6. Import the polysurface into Revit

Dynamo can do this without issue, because all of those things are Dynamo native things (can be done in a Dynamo Sandbox environment), or Dynamo for Revit things (can be done in Dynamo for Revit because of code which allows Dynamo to steer Revit. From Dynamo’s perspective everything looks good, you’re all set.

But then it comes to editing.

For Revit to edit all aspects of the tools which define the needs native Revit stuff, with the correct category and the underlaying base data.

While Dynamo’s doing all of the above, here is what Revit sees from it’s perspective:

  1. Here have a line based element.
  2. That element is defined by this line.
  3. Yeah I’ll wait.
  4. Hmmm, wonder what Dynamo is up to.
  5. What is taking so long?
  6. Oh cool geometry! I’ll store that right here.

In the end Revit has no record of the profiles parameters, or where you placed them along the plane. It just sees the final product.

If we were to make this in Revit (totally doable in the adaptive components environment btw) there would be real parametrically constrained profiles, placed at parametrically located portions of a line, resulting in that final form. Those ‘base steps’ are required to get editable geometry as you’re describing, otherwise the relationships which produce the next steps are stuck looking for base data which just isn’t there - you can’t move or adjust a profile loop of it wasn’t sent over.

So how do you solve the issue you are after?

  1. Well you could do all of the adjustments in the Dynamo environment, ignoring the lack of a base level. Classify the family as a mass, and host your curtain systems on that.
  2. Or you could create the mass in the Adaptive Component environment via native Revit toolsets, making everything by hand.
  3. Or you could utilize the Synthesize toolkit package to do some of the native element creation for you.
  4. Or you could dive into the Revit API via C# or Python and produce the code needed to build the types of form you’re after.

In addition to that you can consider using meshes
Opens all sorts of new possibilities. :slight_smile:

Ok, I understand what you mean.
I wonder how this guy did it though - Exporting Your Design from Dynamo to Revit | Search | Autodesk Knowledge Network
Probably because of different programming language for rvt2022 you mentioned.

Edit: And the answer to my question was the solution I was looking for!!
AS far as I have understood Revit hates solids but loves surfaces. So when I tried to model lofted ellipses by hand, it created loft and then when I applied divide surface, it created two surfaces split at ellipses Vertex. That does not work for me as divided surface divisions does not match. At that point I got it! The problem with my loft was that it was closed surface and in the previously mentioned tutorial the tutor made open surface. So I divided the ellipses, retraced with open nurbsCurves and lo and behold - the form is created in Revit. Hope this helps someone in the future! :slight_smile:

1 Like