Arc by 3 points

Hi. I’m new to Dynamo but I can already see the potential it has; Thanks to this forum & this community.

Require some guidance reg this: I am trying to create a simple parametric surface with user-defined dimensions. The base is an ellipse (center at 0,0,0) and there is an user-defined “rise” (say, 0,0,2). After dividing the ellipse into 4 EQ parts, we get 2 end points and the “rise” point will serve as the 3rd point; so we draw a curve thru these 3 points. Repeating it on the perpendicular direction, we get the 2nd curve, which will form the backbone for the surface. By (re)defining the “rise”, major & minor axes, we should be able to get a variety of surfaces - Is my understanding correct & is this doable?

What I have done till now:

Easy for me to parametrize the ellipse in Revit CDE; so I have done that & then trying to create the surface in Dynamo - Not a long way forward though…

How to go about this? Is there an easier way to draw the ellipse & ref points (at a different Z value) in Dynamo from scratch?

Any help would be greatly useful


R. Chandrasekar.


You can’t control elements that are modeled in Revit with dynamo yet, unless you make them as parametric families and manipulate their parameters through Dynamo. So what you need to do is first build up the underpinning geometry inside Dynamo and then send the end result to Revit.

I think what you’re looking for is something like this:






The sliders control the rise and axes. Hope that helps :slight_smile:

@ Dimitar - Thanks a lot for the prompt reply

Will recreate what you have shown (so I understand it fully) and then I will post my queries


Thanks a lot :slight_smile:

R. Chandrasekar.

@ Dimitar - This is where I have reached, thanks to your help… What is the code block that you have used - Can you please elaborate on that?

Couple of observations:

  1. I was using 0.6 of Dynamo before seeing your screenshot (so many of the nodes weren’t visible in the search)

  2. Don’t know if I am right reg this: Some nodes show up on the Search only after I start Dynamo with Revit open & not as a standalone package - Is this how it works?

Simply put, I am trying to create a surface which is part of an ellipsoid.

Query now is:

I have an ellipse; divided equally into 4 points & I am able to get the 4 points as a list. How do I extract & use these four (maybe “Filter” or sublists) different coordinates in the next step? I assume I can “refer” to these coordinates in some way as the end / start point of the 3-point arc(s). Then loft the curve to create the surface - Is my thought process correct or do I need to approach this differently?






Any help would def be useful & apologies for posting very basic questions…


R. Chandrasekar.

Hello Chandrasekar Rajamani,

Dynamo 0.7.1 is having new sets of Node Library along with old node from 0.6.3 (Few of them deprecated in 0.7.1). If you have created any graph in 0.6.3 then you can directly open that file in 0.7.1 and your old node will get migrate to new one.

Code Block: This is new in 0.7.1 where you can directly write your code. This you can search in library or just double click on Canvas to start Code Block Node (CBN)

When you run Dynamo standalone you will not be able to see Revit related node which can be loaded only when you are running on top of Revit. Please note that if your graph was created using few Revit nodes and if you open that graph on Standalone then these Revit node will mark as UnResolved with yellow color nodes.


Feel free to get back if you have few more questions.




Answer for your question on creating Surface from Ellipse.

You can simply pass that ellipse to Surface.ByPatch node and you will get Surface. (Look at the attached image)

Please let me know if I don’t understand your workflow. Actually I didnt get your point for dividing ellipse into 4 segment, why would you like to do that?




Thanks a lot @ Ritesh

Please refer the attached image (some little progress)


Basically we need a dome made of 2 user-defined curves (and whose base is an ellipse). Currently all the 3 points are entered but the idea was to have only the “rise” entered manually (as midpoint of both the arcs). The other 2 points required for creating the arc by 3 points would be “obtained”, by dividing the ellipse into 4 eq parts - Hope it is clear. This way, whenever the ellipse gets bigger, the points would also go along & hopefully so will the curves… thus the surface itself would be redefined (if possible)</span>


Even if we live with the situation of entering the 3 points manually, the extra portion (covered by the ellipse in the prev image) needs to be cut away - I tried “subtractfrom”; but think I am missing something… What would you recommend as the best way for such “void” situations?</span>

Thanks a lot again.

R. Chandrasekar.

Hah it seems I’ve misunderstood your initial intent by a lot :smiley:

The code block I used was a list “{}” containing two parameters. The parameters define a point along the length of the curve if the start and the end can me normalized as “0” and “1”.

To draw your ellipsoid, you should understand the specific geometrical inputs that revit requires. Zach Kron has a great video about ellipsoids that gives a good example:


Following Zach’s guide, I patched up something quickly. Hopefully it will get you to your final goal:












My example is a little convoluted and there are probably better ways to do some of the things. If something’s unclear just ask away and I’ll try to help. Good luck!


I am not sure if I am following you perfectly. Is this what you are trying?
You can trim, instead of making the split and selecting what is the resulting part you want
But why not just start with an ellipse and the point on top?

(note …I didn’t see the previous answer of Dimitar…)

Hey - That’s a lot of help - Thanks a lot :slight_smile:


How did you remove the extra “volume” overlap between the ellipsoid & the Elliptical solid?

If the Revit CDE is running behind, only the resultant (subtracted) volume gets drawin in Revit?


That would be cool…

Thanks once again for sparing so much time to answer my (rather noob) question

R. Chandrasekar.

Eduardo’s solution is much more elegant than mine and really shows off the power of design script. He uses the Geometry.Split node to split the extrusion with the XY plane.

Yes - I agree, it shows off the power of DesignScript :slight_smile:

But being new, I am yet to understand which node to use where… :frowning:

and if “Translate” is required to be used (Think it was used only to show the output separately) if I plan to pass the output to Revit or use it for placing adaptive component etc

Thanks a lot Edurado, this is what I intended :slight_smile: Can you help me understand how to automate it so the points are read and curves are drawn which form the backbone of the surface, as mentioned in my earlier post(s)?

R. Chandrasekar.

Some success in getting what I wanted

Again, wouldn’t b possible without your help - Thanks a lot :slight_smile:


Sorry for the confusion about what nodes to use. I am combining code and nodes all the time. In any case I used normal methods, nothing fancy…The name of the node is the same that the code you use, so putting the name of the method in the search field of the library can help to find the nodes.
For making the arcs from an ellipse and a point…
And yes. I just moved the surface for better showing the process.
I have seen that making the surface via sweep using the arcs make a plan a bit different that the real ellipse. It can be interesting to generate the surface in a way that is really following the ellipse…

(Note: again!!..just see your last post after posting this…we posted almost at the same time)