I don’t know why but if i open the script with Dynamo BIM Studio it doesn’t work but, if i open it with dynamo 8.2 for revit it works!

@Blair - To create the geodesic sphere…

- Created an icosahedron
- Triangulated the faces of the icosahedron
- Projected the vertices on to a sphere

Thanks VS

@kulkul I probably should have clarified for the general knowledge of the thread I used “parameterize” above in the strict mathematical sense. For someone like myself with a background in the parameterization of systems it was a very specific question which helps define my approach. In this instance a parameterized sphere would be constructed with the angles *phi* and *theta* to define points on a given sphere which can then be reduced to a minimum number of equilateral triangles needed to approximate the surface of said sphere. Reading VS’s subsequent post it’s clear it was constructed geometrically and that he skipped the abstract construction of a sphere and just started with a polyhedron first before projecting triangles on to it. Probably saved a lot of time.

The code for the geodesic sphere…

That’s too cool VS.

I can’t believe I’m improving my coding skills that now I can actually read through some of these now. However, why did you split off the Triangulatin Function? I sense it’s connected but can’t understand how. B

I could have included the function code in the same code block, but for clarity I usually define functions in a separate code block.

In the first line under *//Triangulate the Icosahedron *I’ve called the function I’ve defined (*tri*) and it divides a triangle into 4 sub triangles. The function (*tri*) can be invoked multiple times and each time it will further divide each of the divided sub triangles into 4 more sub triangles.

The code could be developed and refined further to have a control that determines the levels of sub triangulation. The more the sub triangulation, the more the facets of the geodesic sphere. But that’s for another day

Hi Everyone! i’ve another script problem. I have to modify the @DIMITRAR 's scrip to do this:

so I have to divide the geodesic dome in this way (in height). Anyones can help me?

ps: I don’t Know why but I can’t rotate the image…I’m sorry.

Hello carlo,

that looks like an interesting exercise. But just to make sure i understand, what happens in the part circled in red?

Hi @MOSTAFA!

good question…i don’t know…i mean i didn’t think about this problem .

i see it right now when i was drawing th sketch.

if someone knows how to solve it (if it can be possible) can propose it.

Parametric domeHere’s a proposal it’s a little messy but it should get you where you want… I just completed that mysterious part with triangle that joint the top of the dome. Hope it helps (i joined to .dyn)

Could you not continue on the entire process to a set ‘cap’ of say 5mm? That way you have a gradation scale consistent with the rest.

Very cool though

Hi!

I set beams using dynamo on my dome but i have a problem with the intersections points…anyones can halp me?

@Vikram_Subbaiah Not sure if you noticed, but I’d want to know: After starting to investigate, interestingly, the highlighted portion of your code does not appear to produce equalaterial triangles. I’m just working backward now to track it down and fix it: Not sure if I need to use another method or just tweak the code I have.

Using the other method to generate the icosahedron…

GeodesicSphere3.dyn (6.6 KB)

```
//Icosahedron
p=(1+Math.Sqrt(5))/2;
a=Point.ByCoordinates({0,0,0,0,p,-p,-p,p,1,-1,-1,1},{1,-1,-1,1,0,0,0,0,p,p,-p,-p},{p,p,-p,-p,1,1,-1,-1,0,0,0,0});
b={{a[0],a[8],a[9]},{a[0],a[9],a[5]},{a[0],a[5],a[1]},{a[0],a[1],a[4]},{a[0],a[4],a[8]},
{a[1],a[5],a[10]},{a[1],a[10],a[11]},{a[1],a[11],a[4]},{a[2],a[3],a[7]},{a[2],a[7],a[11]},
{a[2],a[11],a[10]},{a[2],a[10],a[6]},{a[2],a[6],a[3]},{a[3],a[6],a[9]},{a[3],a[9],a[8]},
{a[3],a[8],a[7]},{a[4],a[11],a[7]},{a[4],a[7],a[8]},{a[5],a[9],a[6]},{a[5],a[6],a[10]}};
tri=Surface.ByPerimeterPoints(b);
//Sub dividing equilateral faces
//Edges of equilateral surface
crv1=tri.PerimeterCurves();
len1=List.GetItemAtIndex(crv1<1>,0).Length;
n=d<1?1:d;
len2=len1/n;
//Vertices of equilateral surface
pnt1=List.GetItemAtIndex(crv1<1>,0).StartPoint;
pnt2=List.GetItemAtIndex(crv1<1>,1).StartPoint;
pnt3=List.GetItemAtIndex(crv1<1>,2).StartPoint;
dir1=Vector.ByTwoPoints(pnt1,pnt2);
dir2=Vector.ByTwoPoints(pnt1,pnt3);
dir3=Vector.ByTwoPoints(pnt2,pnt3);
//Sub triangle 1
pnt4=pnt1.Translate(dir1,len2);
pnt5=pnt1.Translate(dir2,len2);
sub1=Polygon.ByPoints(Transpose({pnt1,pnt4,pnt5}));
//Repeating sub triangle
n2=(0..(n-1))*len2<1>;
sub2=sub1.Translate(dir1,n2);
n3=List.TakeItems(n2<1>,1..n);
sub3=sub2.Translate(dir3,n3);
//Sub triangle 2
pnt6=n<2?pnt1:pnt4.Translate(dir2,len2);
sub4=Polygon.ByPoints(Transpose({pnt4,pnt5,pnt6}));
n4=(0..(n-2))*len2<1>;
sub5=sub4.Translate(dir1,n4);
n5=List.TakeItems(n4<1>,1..n);
sub6=sub5.Translate(dir3,n5);
srf1=Display.ByGeometryColor(sub3.Patch(),Color.ByARGB(255,115,200,26));
srf2=Display.ByGeometryColor(sub6.Patch(),Color.ByARGB(255,105,100,26));
srf11=Flatten(List.TakeItems({srf1,srf2},n));
sub21=Flatten(List.TakeItems({sub3,sub6},n));
plPnt1=Flatten(sub21).Points;
plDir1=Vector.ByTwoPoints(Point.Origin(),plPnt1);
sph=Sphere.ByCenterPointRadius(Point.Origin(),rad);
plPnt21=Flatten(sph.ProjectInputOnto(plPnt1,plDir1)<1>);
pl1=Polygon.ByPoints(plPnt21);
sr1=pl1.Patch();
```

Ah so you have a proper golden ratio method there but have coded it so much nicer than what I was attempting on my screen at the moment. Thank you!

Finally my Geodesic Dome code is working. Only took 6 months of lunch hours but I learned a lot. Time to refine the code and start engineering the thing.

I hope I will be excused for bumping this old thread. I thought some who helped might be interested in the final product and also interested in a small update to the project. Please find attached an image of the final design poster. We will try to release the full high-rez version under a CC license in the new year (but I’m happy to send the full-rez verison directly beforehand if asked). The delay is a result of the poster being accepted for recognition at an educational conference in Florida; it being notoriously easy to tempt a Canadian to Florida in February.

Finally, I wish to extend a large thank you to the community for your help building. If there is anything I can help with, please ask.

**Computational Architecture Studies of Geodesic Domes by B. Birdsell**

Read more about architecture at wower.blogspot.ca

Text from the presentation board:

• I used this project about geodesic domes to teach myself about computational architecture and develop the coding skills required to practice the subject.

• Computational architecture has important implications for the design of complex buildings. It can help facilitate the smooth placement of building systems and develop architectural forms far more extreme than the simple domes shown here.

• Using my lunch hours at work, I started by working through DynamoBIM’s own free online tutorials.

• Next, I continued to develop my programming skills by exploring some basic geometric math proofs in Autodesk’s Revit.

• The first step in designing the geodesic dome was to derive geodesic spheres computationally. is included learning about the construction of perfect icosahedron, iterations of uniform surfaces, and compensating for deflection angle.

• To add depth to the project, my colleagues at the office (a structural engineering firm) were kind enough to give me feedback on a range of specific engineering details I had questions about.

Acknowledgements:

• DynamoBIM forums for patiently answering my questions.

• TRL & Associates for their feedback on the design and use of software.

• Tom Davis for his paper “Geodesic Domes”.

• DesertDomes.com was my source for numerically checking my calculations.

Puzzle: See if you can find the following items. (Hint: Zoom in.)

• Chewbacca

• Legoman

• Stormtropper

• Bi-plane

• Christmas tree

• Japanese tea set

• Go-cart

• Mini-digger

Did you plug it to RSA? Can we discuss this in email?