//base of structure Base=cube(100,5,100).translateY(-1).union(cube(22,5,8).translate(0,-1,49)); //pillars Pilla=cone(3,2,50).translate(50,22.5,50).union(sphere(2.7).translate(50,49,50)).union(cone(1.7,0.1,1.5).translate(50,51.8,50)).union(cylinder(3.5,1.1).translate(50,14,50)).union(cylinder(3.5,1.1).translate(50,29,50)).union(cylinder(3.5,1.1).translate(50,44,50)); Pillar=Pilla.translateY(-1); Pillars=Pillar.clone(); for (i=0; i<3; i++) { Pillar.rotateY(90); Pillars=Pillars.merge(Pillar); } //center piece and dome pts = [[0,8],[8,0],[42,0],[50,8],[50,42],[42,50],[8,50],[0,42]]; s = polygon(pts); CP=extrudeShape(s,30).rotateX(90).translate(-25,36.5,-25).union(cylinder(12.5,40).translateY(26.5)).union(sphere(14).translateY(49.5)).union(cone(9,0.1,8).translateY(63.5)); //Large door a = 1.5; arc1 = [0,22.5,-a,15.0-a,false]; arc2 = [-7.5,15,a,15-a,false]; s = polyarc([ [7.5,0], [7.5,15],arc1,arc2,[-7.5,0] ]); g= extrudeShape(s,10).union(cube(15,4,10).translate(0,-2,5)).translate(0,9,20); BDoors=g.clone(); for (i=0; i<3; i++) { g.rotateY(90); BDoors=BDoors.merge(g); } //small entrance a = 1.5; arc1 = [0,10,-a,7.0-a,false]; arc2 = [-3,7,a,7-a,false]; s = polyarc([ [3,0], [3,7],arc1,arc2,[-3,0] ]); window1=extrudeShape(s,6).translate(13,6.5,22).union(extrudeShape(s,6).translate(-13,6.5,22)).union(extrudeShape(s,6).translate(13,18,22)).union(extrudeShape(s,6).translate(-13,18,22)).union(extrudeShape(s,6).rotateY(45).translate(19,6.5,19)).union(extrudeShape(s,6).rotateY(45).translate(19,18,19)); windows=window1.clone(); for (i=0; i<3; i++) { window1.rotateY(90); windows=windows.merge(window1); } CP=CP.difference(BDoors).difference(windows); //small domes small=cylinder(4,5).translate(17,39,17).union(sphere(4.3).translate(17,41,17)).union(cone(3.2,0.1,2.5).translate(17,45,17)).union(cube(22,5,2).translate(0,39,24)); smalls=small.clone(); for (i=0; i<3; i++) { small.rotateY(90); smalls=smalls.merge(small); } CPCP=CP.union(smalls).translateY(-5); TAJMAHAL = Base.union(Pillars).union(CPCP); TAJMAHAL = TAJMAHAL.rotateX(90); TAJMAHAL.display();