import sand3d as s3d
def airship():
main = s3d.at(hull(), x=4059, y=-6551, z=-2450)
return s3d.assembly(class="tok-string">"airship", main)
def hull(w=8800, d=26600, h=10096):
skin = s3d.scale(s3d.sphere(class="tok-string">"envelope", d=1), s=(w,d,h))
s3d.material(skin, class="tok-string">"aluminium", color=class="tok-string">"class="tok-comment">#a7aaac")
upper = s3d.at(dorsal_fin(), x=3790-4059, y=-5827+6551, z=5941+2450)
lower = s3d.at(ventral_fin(), x=3788-4059, y=-5697+6551, z=-9609+2450)
side = s3d.at(lateral_fin(), x=-650-4059, y=-8700+6551, z=2550+2450)
pod = s3d.at(side_pod(), x=8640-4059, y=-2956+6551, z=390+2450)
loop = s3d.at(nose_loop(), x=3980-4059, y=4250+6551, z=5810+2450)
fan = s3d.at(tail_fan(), x=4195-4059, y=-19650+6551, z=2598+2450)
return s3d.group(class="tok-string">"hull", skin, upper, lower, side, pod, loop, fan)
def dorsal_fin(w=1100, d=5000, h=8218):
fin = s3d.extrude(class="tok-string">"fin", s3d.poly([(-d/2,0),(d/2,0),(0,h)]), h=w)
fin = s3d.at(fin, rx=90, rz=90, x=-w/2)
s3d.material(fin,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#7f8284")
return s3d.group(class="tok-string">"dorsal_fin",fin)
def ventral_fin(w=1100, d=5100, h=7518):
fin = s3d.extrude(class="tok-string">"fin", s3d.poly([(-d/2,h),(d/2,h),(0,0)]), h=w)
fin = s3d.at(fin, rx=90, rz=90, x=-w/2)
s3d.material(fin,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#7f8284")
return s3d.group(class="tok-string">"ventral_fin",fin)
def lateral_fin(w=6100, d=4500, h=500):
fin=s3d.extrude(class="tok-string">"fin",s3d.poly([(w/2,-d/2),(w/2,d/2),(-w/2,-d/4)]),h=h)
s3d.material(fin,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#a7aaac")
return s3d.group(class="tok-string">"lateral_fin",fin)
def side_pod(w=1942, d=6961, h=3764, r=950):
pod=s3d.box(class="tok-string">"pod",w=w,d=d,h=h)
pod=s3d.fillet(pod,r=r)
s3d.material(pod,class="tok-string">"painted_metal",color=class="tok-string">"class="tok-comment">#d5b898")
block=s3d.at(s3d.box(class="tok-string">"block",w=w/2,d=d/3,h=h/12),z=h-r/3)
s3d.material(block,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#a7aaac")
return s3d.group(class="tok-string">"side_pod",pod,block)
def nose_loop(w=650, d=950, h=700, t=100):
loop=s3d.at(s3d.torus(class="tok-string">"loop",d=w,d_wire=t),rx=90,z=h/2)
s3d.material(loop,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#f5f6f7")
return s3d.group(class="tok-string">"nose_loop",loop)
def tail_fan(r=6300, depth=5566, t=60, hub=300, sweep=1150, root=1117):
blade=s3d.extrude(class="tok-string">"blade",s3d.poly([(0,0),(r,-sweep),(r*0.84,-depth)]),h=t)
blade=s3d.at(blade,rx=45,z=root)
blades=s3d.at(blade,on=s3d.ring(n=8,r=0,start=22.5,on=s3d.Frame(normal=(0,1,0))))
s3d.material(blades,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#a7aaac")
center=s3d.at(s3d.cylinder(class="tok-string">"hub",d=hub,h=depth/3),rx=90)
s3d.material(center,class="tok-string">"aluminium",color=class="tok-string">"class="tok-comment">#7f8284")
return s3d.group(class="tok-string">"tail_fan",blades,center)