Bulb dome made of polar zonohedron

Sándor Kabai
Polar zonohedron is cut below the vertical axis of symmetry in order to depict a possible geometry of a building dome.
In[]:=
(*Varyfrequency"n"here*)​​n=20;​​(*Varyslenderness"slen"here*)​​slen=1;​​hh=slenSin[Pi/n];​​​​sptop=Sphere[{0,0,nhh/2},0.1];​​pol=Table[{2Sin[i2Pi/n+Pi/n],2Cos[i2Pi/n+Pi/n],0},{i,n}];​​deck=Polygon[{pol}];​​​​Do[zon[i,j]=​​{2Sin[πj/n]Cos[πi/n],2Sin[πj/n]Sin[πi/n],hh(n/2-j)},​​{i,0,3n},{j,0,n}];​​pz=Table[Polygon[{​​zon[i+j+1,j],​​zon[i+j+2,j+1],​​zon[i+j+1,j+2],​​zon[i+j,j+1]}],​​{i,0,2n,2},{j,0,n-2}];​​​​​​Graphics3D[{pz},BoxedFalse,SphericalRegionTrue,ViewPoint{10,10,4}]​​​​
Out[]=
In[]:=
(*Varyperforate"p1"here*)​​p1=0.3;​​pzperf=Normal[pz]/.p:Polygon[__](p/.pts:{{_?NumericQ,_,_},__}Module[{cent,innervtx},cent=Mean[pts];​​innervtx={1-p1,p1}.{#,cent}&/@pts;​​Join[pts,pts[[{1}]],innervtx,innervtx[[{1}]]]])//#&;​​Graphics3D[{Green,pzperf,Red,deck},BoxedFalse,SphericalRegionTrue,ViewPoint{10,10,4}]
Out[]=
In[]:=
column=Cylinder[{{0,0,0.01},{0,0,-2}},1];​​Graphics3D[{sptop,Green,pzperf,Red,deck,Yellow,column},BoxedFalse,SphericalRegionTrue,ViewPoint{10,10,4}]
Out[]=
In[]:=
(*Varytruncate"tr"here*)​​Needs["PolyhedronOperations`"];​​tr=0.2;​​pztrunc=Truncate[Scale[pz,0.999],tr];​​Graphics3D[{sptop,Green,pztrunc,Red,deck,Yellow,column},BoxedFalse,SphericalRegionTrue,ViewPoint{10,10,-4}]​​
Out[]=
In[]:=
Graphics3D[{Scale[pzperf,1.001],sptop,Red,pz,Yellow,column},BoxedFalse,SphericalRegionTrue,ViewPoint{10,10,-4}]
Out[]=