               
               
 #include "colors.inc"
  #include "shapes.inc"
  #include "textures.inc" 
  #include "stones.inc" 
  #include "metals.inc"  
  #include "woods.inc" 


plane { <0, 1, 0>, -0.01 pigment { color rgb<1.15, 0.9, .22>}
                finish {crand 0.05
         roughness 1000  } }

#declare H0 = 1; #declare H1 = H0 + 9; #declare H2 = H1 + 10; #declare H3 = H2 + 8.75; #declare H4 = H3 + 5;
#declare EleDpth = 9; #declare EleWdt = 12; #declare BotWdt = 11; #declare PitDpth = 16; #declare RmpWdt = 1.7*BotWdt; 
#declare MiddleRmp = 0.425;

#declare Cement_Color = texture { pigment { color rgb<1.4, 1.27, .82>} finish {crand 0.05 roughness 10 } }
#declare Dirt = texture { pigment {color rgb<.8, 0.7, .42>} normal { gradient x normal_map { [ 0.0 bumps 1 scale .01] } } }



// Bottom Half and the Pit 
difference { 
union {  
        box { <-BotWdt, H0, -EleDpth> < BotWdt, H1-.7,  EleDpth> }
        triangle { <-BotWdt, H1-3, EleDpth>,    <-BotWdt, H1, EleDpth>, <-BotWdt, H1-3, PitDpth+.2> }
        triangle { < BotWdt, H1-3, EleDpth> ,    <BotWdt, H1, EleDpth>, < BotWdt, H1-3, PitDpth+.2> } 
        
        triangle { <-BotWdt-.2, H1, EleDpth>,     <BotWdt+.2, H1, EleDpth>, <-BotWdt-.2, H1-3.0, PitDpth+.3> }
        triangle { <-BotWdt-.2, H1-3.0, PitDpth+.3>, <BotWdt+.2, H1, EleDpth>, < BotWdt+.2, H1-3.0, PitDpth+.3> } 
        box      { <-BotWdt, H0, EleDpth>       <BotWdt, H1-3, PitDpth> }
        pigment {Green} finish {crand 0.02}                                                                    
}
        box      { <-BotWdt-1, H0, EleDpth+1> <BotWdt+1, H1-4, PitDpth-1> pigment {Green}}  
}       
// Windows on the Pit
#declare Index = BotWdt - ( BotWdt / 4 );
#while (Index > -BotWdt + ( BotWdt / 4 + BotWdt / 3) )        
        box { <Index, H1-4.2, PitDpth+.01> <Index - ( BotWdt / 3), H1-3.1, PitDpth> pigment { Yellow } finish { crand 0.05 reflection {.125} } }
        #declare Index = Index - ( BotWdt / 4 + BotWdt / 3);
#end


//Bottom Cement Foundation
        box { <-BotWdt+.1, 0, -EleDpth+.1> <BotWdt-.1, H0, PitDpth-.1> pigment {color rgb<1.3, 1.17, .72>} finish {crand 0.05 roughness 10 } }                                                                                  

//Pipes Along the Ramp
#declare Index = 1;
#while ( Index <= 2 ) 
union { 
        //Top Rail
        cylinder { <.99*RmpWdt, .45*H0+0.75, PitDpth-MiddleRmp> <1.01*BotWdt, 1.55*H0+0.75, PitDpth-MiddleRmp> .05 }       
        //Poles of ++Z Ramp 
        cylinder { <0.99*RmpWdt, 0, PitDpth - MiddleRmp> <0.99*RmpWdt, 0.45*H0+0.75, PitDpth - MiddleRmp> .05 }
        cylinder { <1.01*BotWdt, 0, PitDpth - MiddleRmp> <1.01*BotWdt, 1.55*H0+0.75, PitDpth - MiddleRmp> .05 }        
        sphere { <.99*RmpWdt, .45*H0+0.75, PitDpth-MiddleRmp> .05 }
        sphere { <1.01*BotWdt, 1.55*H0+0.75, PitDpth - MiddleRmp> .05 }
                                                              
        #declare Tangent = tanh(1.15/(RmpWdt-BotWdt));                                                              
        #declare MidPole    = (.99*RmpWdt + 1.01*BotWdt ) / 2;           
        #declare MidHeight    = tan(Tangent) * (MidPole)- .45;                                                                                              
        #declare SecondPole = (1.01*RmpWdt + MidPole) / 2;
        #declare FourthPole = (.99*BotWdt + MidPole ) / 2;                            
        #declare SecondHeight = tan(Tangent) * (FourthPole)- .45;                                                
        #declare FourthHeight = tan(Tangent) * (SecondPole)- .45; 
              
        cylinder { <MidPole, 0,    PitDpth - MiddleRmp> <MidPole, MidHeight, PitDpth - MiddleRmp> .05 }        
        cylinder { <SecondPole, 0, PitDpth - MiddleRmp> <SecondPole, SecondHeight, PitDpth - MiddleRmp> .05 }        
        cylinder { <FourthPole, 0, PitDpth - MiddleRmp> <FourthPole, FourthHeight, PitDpth - MiddleRmp> .05 }                          
                          
        // Side of --Z Ramp 
        cylinder { <.99*RmpWdt, 0, EleDpth + MiddleRmp> <.99*RmpWdt, .45*H0+0.75, EleDpth + MiddleRmp> .05 }
        cylinder { <1.01*BotWdt, 0, EleDpth+MiddleRmp> <1.01*BotWdt, 1.55*H0+0.75, EleDpth+MiddleRmp> .05 }
        cylinder { <.99*RmpWdt, .45*H0+0.75, EleDpth+MiddleRmp> <1.01*BotWdt, 1.55*H0+0.75, EleDpth+MiddleRmp> .05 }       
        sphere { <.99*RmpWdt, .45*H0+0.75, EleDpth+MiddleRmp> .05 }
        sphere { <1.01*BotWdt, 1.55*H0+0.75, EleDpth + MiddleRmp> .05 } 
        cylinder { <MidPole, 0,    EleDpth + MiddleRmp> <MidPole, MidHeight, EleDpth + MiddleRmp> .05 }        
        cylinder { <SecondPole, 0, EleDpth + MiddleRmp> <SecondPole, SecondHeight, EleDpth + MiddleRmp> .05 }        
        cylinder { <FourthPole, 0, EleDpth + MiddleRmp> <FourthPole, FourthHeight, EleDpth + MiddleRmp> .05 }  
                 
        pigment {White} 
  }

// Cement Ramps 
 
union { 
// Side of ++Z Ramp
        box { <RmpWdt, 0, PitDpth-0.25> <BotWdt, 0.45*H0, PitDpth-.6> }
        triangle { <RmpWdt, .45*H0, PitDpth-0.25>, <BotWdt, 1.55*H0, PitDpth-0.25>, <BotWdt, .45*H0, PitDpth-0.25> }                                                            
        triangle { <RmpWdt, 0.45*H0, PitDpth-.6>, <BotWdt, 1.55*H0, PitDpth-.6>, <BotWdt, .45*H0, PitDpth-.6> }
// Top of ramp ++Z Ramp
        triangle { <RmpWdt, .45*H0, PitDpth-0.25>, <BotWdt, 1.55*H0, PitDpth-.25>, <BotWdt, 1.55*H0, PitDpth-.6> }
        triangle { <RmpWdt, .45*H0, PitDpth-0.25>, <RmpWdt, 0.45*H0, PitDpth-.6>, <BotWdt, 1.55*H0, PitDpth-.6> }
// Top of --Z Ramp
        triangle { <RmpWdt, .45*H0, EleDpth+0.25>, <BotWdt, 1.55*H0, EleDpth+0.25>, <BotWdt, 1.55*H0, EleDpth+.6> }
        triangle { <RmpWdt, .45*H0, EleDpth+0.25>, <RmpWdt, 0.45*H0, EleDpth+.6>, <BotWdt, 1.55*H0, EleDpth+.6> }
// Side of --Z Ramp
        box { <RmpWdt, 0, EleDpth+0.25> <BotWdt, 0.45*H0, EleDpth+.6> }        
        triangle { <RmpWdt, .45*H0, EleDpth+0.25>, <BotWdt, 1.55*H0, EleDpth+0.25>, <BotWdt, .45*H0, EleDpth+0.25> }                                                            
        triangle { <RmpWdt, .45*H0, EleDpth+.6>, <BotWdt, 1.55*H0, EleDpth+.6>, <BotWdt, .45*H0, EleDpth+.6> }        
        pigment {color rgb<1.3, 1.17, .72>} 
        finish {crand 0.05
                roughness 10 }         
       }
// Dirt on the Ramp                                                                     
         union {        
                triangle { <RmpWdt, 0, PitDpth-0.6>, <BotWdt, H0, PitDpth-.6>, <BotWdt, H0, EleDpth+.6> }
                triangle { <RmpWdt, 0, PitDpth-0.6>, <BotWdt, H0, EleDpth+.6>, <RmpWdt, 0, EleDpth+.6> } 
                texture {Dirt}
                }
                
        #declare Index = Index + 1;
        #declare RmpWdt = RmpWdt * -1; #declare BotWdt = BotWdt * -1;       
#end  

// Pit Doors
union {
        box { <-BotWdt+0.25, H0, EleDpth+1> <BotWdt-0.25, H1-4, PitDpth-1> pigment {White}}  //Door
        
#declare Index = EleDpth + ( .25*PitDpth / 4 ) +.25;
#while (Index < PitDpth -1)        
        box { <-BotWdt+0.20, H0+1.5, Index> <BotWdt-0.20, H0+1.75,Index + ( .25*EleDpth / 3)> pigment { Black } finish { reflection {.15} ambient 0 diffuse 0} }
        #declare Index = Index + ( .45*EleDpth / 4 + .25*EleDpth / 3);
#end


}



// W+ Side of Reinforcement Pillars
#declare PlrDpth = EleDpth - .2;  
#while (PlrDpth >= -EleDpth )   
 union {
 box { < BotWdt+.25, H0,    PlrDpth - .2>       <BotWdt, H1-2, PlrDpth + .2> } 
 box { < BotWdt+.50, H1-2, PlrDpth - .2>        <BotWdt, H1,   PlrDpth + .2> } 
 box { < EleWdt+0.001, H1-.5, PlrDpth-.2>      <EleWdt-.2, H2, PlrDpth+.2> }
 box { < EleWdt+0.001, H1-.5, PlrDpth-.2>      <BotWdt, H1, PlrDpth+.2> }         
 triangle { <BotWdt + .5, H1-1, PlrDpth + .2 >, <BotWdt + .5, H1-.5, PlrDpth + .2>,     <EleWdt, H1-.5, PlrDpth+ .2> }
 triangle { <BotWdt + .5, H1-1, PlrDpth - .2>,  <BotWdt + .5, H1-.5, PlrDpth - .2>,     <EleWdt, H1-.5, PlrDpth - .2> }
 triangle { <BotWdt + .5, H1-1, PlrDpth - .2>,  <BotWdt + .5, H1- 1, PlrDpth + .2>,     <EleWdt, H1-.5, PlrDpth+ .2> }
 triangle { <EleWdt, H1-.5, PlrDpth+ .2>,       <EleWdt, H1-.5, PlrDpth - .2>,          <BotWdt + .5, H1-1, PlrDpth - .2> }
 pigment {color rgb<1.3, 1.17, .72>} 
 finish {crand 0.05 roughness 10 }    
}       
 #declare PlrDpth = PlrDpth - ( ( EleDpth*2 - .4 ) / 5);  
#end 


// W- Side of Reinforcement Pillars
#declare PlrDpth = EleDpth -.2 ;
#while (PlrDpth >= -EleDpth )   
 union {
         box { < -BotWdt-.25, H0,    PlrDpth-.2>        <-BotWdt, H1-2, PlrDpth+.2> } 
         box { < -BotWdt-.50, H1-2, PlrDpth-.2>         <-BotWdt, H1,  PlrDpth+.2> } 
         box { < -EleWdt-0.001, H1-.5, PlrDpth-.2>      <-EleWdt+.2, H2, PlrDpth+.2> }
         box { < -EleWdt-0.001, H1-.5, PlrDpth-.2>      <-BotWdt, H1, PlrDpth+.2> }         
         triangle { <-BotWdt - .5, H1-1, PlrDpth+.2 >,  <-BotWdt - .5, H1-.5, PlrDpth+.2>,     <-EleWdt, H1-.5, PlrDpth+.2> }
         triangle { <-BotWdt - .5, H1-1, PlrDpth-.2>,   <-BotWdt - .5, H1-.5, PlrDpth-.2>,     <-EleWdt, H1-.5, PlrDpth-.2> }
         triangle { <-BotWdt - .5, H1-1, PlrDpth-.2>,   <-BotWdt - .5, H1- 1, PlrDpth+.2>,     <-EleWdt, H1-.5, PlrDpth+.2> }
         triangle { <-EleWdt, H1-.5, PlrDpth+.2>,       <-EleWdt, H1-.5, PlrDpth-.2>,       <-BotWdt - .5, H1-1, PlrDpth-.2> }
         pigment {color rgb<1.3, 1.17, .72>}  finish {crand 0.05 roughness 10 }    
}       
 #declare PlrDpth = PlrDpth - ( ( EleDpth*2 - .4 ) / 5);  
#end

//lines across the middle section
union {
box { <-BotWdt, H1-0.7, -EleDpth> < BotWdt, H1, -EleDpth+.2> } 
#declare PlrHt = H1+.05;
#while (PlrHt <= H2 )   
        box { <-EleWdt-.01, PlrHt-.05, EleDpth+0.01> <EleWdt+0.01, PlrHt+.05, -EleDpth-0.01> }
        #declare PlrHt = PlrHt + ( ( H2 - H1 - .1 ) / 4);        
#end
// Small Lines Across The Middle
#declare PlrHt = H1+.05;
#while (PlrHt <= H2 )   
        box { <-EleWdt+0.01, PlrHt-.05, EleDpth+0.01> <EleWdt-0.01, PlrHt+.05, -EleDpth-0.01> }
        #declare PlrHt = PlrHt + ( ( H2 - H1 - .1 ) / 8);        
#end
        pigment {color rgb<1.3, 1.17, .72>}  finish {crand 0.05 roughness 10 } 

}

// Lines Across the Width of the Middle Section
#declare PlrWdt = -EleWdt+.2;
#while (PlrWdt <= EleWdt )   
        box { <PlrWdt+0.0725, H1, EleDpth+0.01> <PlrWdt-0.0725, H2, -EleDpth-0.01>  
        pigment {color rgb<1.1, 0.97, .52>}  finish {crand 0.05 roughness 10 } }
        #declare PlrWdt = PlrWdt + ( ( 2*EleWdt - .15 ) / 6);        
#end


#declare FirstTriangle = -EleWdt+.15 + ( ( 2*EleWdt - .15 ) / 6);      #declare SecondTriangle = -EleWdt+.15 + 2 * ( ( 2*EleWdt - .15 ) / 6);
#declare FourthTriangle = -EleWdt+.15 + 4 * ( ( 2*EleWdt - .15 ) / 6); #declare FifthTriangle = -EleWdt+.15 + 5 * ( ( 2*EleWdt - .15 ) / 6);

union {
        triangle{ <FirstTriangle, H2, EleDpth+.01>, <0, H2 + 2* (H3-H2) / 3, EleDpth+.01>, <FifthTriangle, H2, EleDpth+.01>  }
        triangle{ <FirstTriangle, H2, -EleDpth-.01>, <0, H2 + 2* (H3-H2) / 3, -EleDpth-.01>, <FifthTriangle, H2, -EleDpth-.01> }         
        pigment {color rgb<1.1, 0.97, .52>}  finish {crand 0.05 roughness 10 } }
union {        
        triangle{ <FirstTriangle+.15, H2, EleDpth+.02>, <0, H2 + 2*(H3-H2) / 3-.15, EleDpth+.02>, <FifthTriangle-.15, H2, EleDpth+.02> } 
        triangle{ <FirstTriangle+.15, H2, -EleDpth-.02>, <0, H2 + 2*(H3-H2) / 3-.15, -EleDpth-.02>, <FifthTriangle-.15, H2, -EleDpth-.02> } 
        pigment {color rgb<1.4, 1.27, .82>} finish {crand 0.05 roughness 10 } } 
                
union {
        triangle { <SecondTriangle, H2, EleDpth+.03>, <0, H2 + (H3-H2) / 3, EleDpth+.03>, <FourthTriangle, H2, EleDpth+.03> }
        triangle { <SecondTriangle, H2, -EleDpth-.03>, <0, H2 + (H3-H2) / 3, -EleDpth-.03>, <FourthTriangle, H2, -EleDpth-.03> }
        pigment {color rgb<1.1, 0.97, .52>}  finish {crand 0.05 roughness 10 } }

//UpperHalf of Elevator
union { 
        triangle { <-EleWdt, H1, EleDpth>, <-EleWdt  , H1,   -EleDpth>, <-BotWdt, H1-.7, -EleDpth> }
        triangle { <-EleWdt, H1, EleDpth>, <-BotWdt, H1-.7, -EleDpth>,   <-BotWdt, H1-.7, EleDpth> }      
        
        triangle { <EleWdt, H1, EleDpth>, <EleWdt,     H1,     -EleDpth>, <BotWdt, H1-.8, -EleDpth> }
        triangle { <EleWdt, H1, EleDpth>, <BotWdt, H1 - .8, -EleDpth>, <BotWdt, H1-.8, EleDpth> }
         
        triangle { <EleWdt, H2, EleDpth>, <1, H2, EleDpth>, <1, H3, EleDpth> }
        triangle { <-EleWdt, H2, EleDpth>, <-1, H2, EleDpth>, <-1, H3, EleDpth> }
        box { <1, H2, -EleDpth> <-1, H3, EleDpth> }
        triangle { <EleWdt, H2, -EleDpth>, <1, H2, -EleDpth>, <1, H3, -EleDpth> }
        triangle { <-EleWdt, H2, -EleDpth>, <-1, H2, -EleDpth>, <-1, H3, -EleDpth> }       
        texture { Cement_Color } 
       // pigment {color rgb<1.4, 1.27, .82>} 
      //  finish {crand 0.05  roughness 10 } 
      }

        box { <-EleWdt, H1, -EleDpth+0.01> < EleWdt, H2, EleDpth> 
                texture { Cement_Color } }
        //pigment {color rgb<1.5, 1.37, .92> } finish {crand 0.05 roughness 100 } }

      
//Green Roof
union {
        triangle { <EleWdt+.3, H2-.2, EleDpth>,  < EleWdt+.3, H2-.2, -EleDpth>, < 1, H3, -EleDpth> }
        triangle { <EleWdt+.3, H2-.2, EleDpth>,  < 1,         H3,    -EleDpth>, < 1, H3,  EleDpth> }        
        triangle { <-EleWdt-.3, H2-.2, EleDpth>, <-EleWdt-.3, H2-.2, -EleDpth>, <-1, H3, -EleDpth> }
        triangle { <-EleWdt-.3, H2-.2, EleDpth>, <-1,         H3,    -EleDpth>, <-1, H3,  EleDpth> }
        pigment { Green } finish {crand 0.02}
}


//Top of Elevator
union { 
        triangle { <1, H3, EleDpth>, <-1, H3,     EleDpth>, <-1, H4, .25*EleDpth> }
        triangle { <1, H3, EleDpth>, < 1, H4, .25*EleDpth>, <-1, H4, .25*EleDpth> }
        
        triangle { <1, H3, -EleDpth>, <-1, H3, -EleDpth>, <-1, H4, -.25*EleDpth> }
        triangle { <1, H3, -EleDpth>, <1, H4, -.25*EleDpth>, <-1, H4, -.25*EleDpth> } 
        
        triangle { <1, H3, EleDpth>, <1, H3, .25*EleDpth>, <1, H4, .25*EleDpth> }  
        triangle { <1, H3, -EleDpth>, <1, H3, -.25*EleDpth>, <1, H4, -.25*EleDpth> } 
        triangle { <-1, H3, EleDpth>, <-1, H3, .25*EleDpth>, <-1, H4, .25*EleDpth> }
        triangle { <-1, H3, -EleDpth>, <-1, H3, -.25*EleDpth>, <-1, H4, -.25*EleDpth> }
    pigment {Green } finish {crand 0.02}
} 

// Agricore United Sign
union {
cylinder { <EleWdt + 0.70, (H2+H1)/2+0.8, 2.2> <EleWdt + 0.64, (H2+H1)/2+0.8, 2.2> 1.8     }
cylinder { <EleWdt + 0.70, (H2+H1)/2+0.8, -2.2> <EleWdt + 0.64, (H2+H1)/2+0.8, -2.2> 1.8     }
box      { <EleWdt + 0.70, (H2+H1)/2+2.6, 2.2> <EleWdt + 0.64, (H2+H1)/2-1, -2.2>  }  

cylinder { <-EleWdt - 0.70, (H2+H1)/2+0.8, 2.2> <-EleWdt - 0.64, (H2+H1)/2+0.8, 2.2> 1.8     }
cylinder { <-EleWdt - 0.70, (H2+H1)/2+0.8, -2.2> <-EleWdt - 0.64, (H2+H1)/2+0.8, -2.2> 1.8     }
box      { <-EleWdt - 0.70, (H2+H1)/2+2.6, 2.2> <-EleWdt - 0.64, (H2+H1)/2-1, -2.2>  }


           pigment {Blue}      }


difference {        
        cylinder { <0, H4+1, -.25*EleDpth>, < 0, H4+1, .25*EleDpth>, 2 pigment { Green } }       
        box { <-2, H4, -EleDpth> < 2, H4 + 1, EleDpth> pigment {Black}}  
}
box { <-2, H3-2, -.25*EleDpth> < 2, H4, .25*EleDpth> pigment { Green } }           
box { <-1.9, H4, -.25*EleDpth> < 1.9, H4 + 1, .25*EleDpth> pigment { Yellow }}                                                                            



union { 
  box { <-EleWdt*(1/3)+.7, H1+(H2-H1)/4+0.75, (EleDpth+.17)> <EleWdt*(1/3)-.7,H1+(H2-H1)/4+1.75, (EleDpth+.18)>  pigment {White} } 
  text {
    ttf "arial.ttf" "FOREMOST" 0.001,0 
    pigment { Black } 
    Axis_Rotate_Trans(y, 180)
    translate (EleDpth+.181)*z
    translate (H1+(H2-H1)/4+.9)*y 
    translate (EleWdt*(1/4)-.3)*x     
  } 
 
} 
           
#declare MotorSt = .25*EleDpth - 1.2; #declare MotorEnd = EleDpth/2.2 ; 
#declare MotorMid = (MotorSt + MotorEnd)/2;          
 union {
        cylinder { < 0.31, H3, EleDpth/2.2>       < 0.31, H4+4.4, EleDpth/2.2> 0.3 }
        cylinder { <-0.31, H3, EleDpth/2.2>       <-0.31, H4+4.4, EleDpth/2.2> 0.3 }          

        cylinder { < 0.31, H3, .25*EleDpth + 0.3> < 0.31, H4+4.4, .25*EleDpth + 0.2> 0.3 }
        cylinder { <-0.31, H3, .25*EleDpth + 0.3> <-0.31, H4+4.4, .25*EleDpth + 0.2> 0.3 }           
 
        box { <-.61, H4+3, MotorSt> < 0.61, H4+4.4, MotorEnd> }
        pigment {Green}      
       }


// Top Platform and Rail                  
union {
        box { <1.25, H4+3, .25*EleDpth - 1.9> <-1.25, H4+3.15, EleDpth / 2.2 + 0.8>      } 
        cylinder { <-1.2, H4+3, .25*EleDpth - 1.85> <-1.2, H4+4.15, .25*EleDpth - 1.85> 0.05 }
        cylinder { < 1.2, H4+3, .25*EleDpth - 1.85> < 1.2, H4+4.15, .25*EleDpth - 1.85> 0.05 }
        cylinder { <-1.2, H4+3, EleDpth / 2.2 + 0.75> <-1.2, H4+4.15, EleDpth / 2.2 + 0.75> 0.05 }
        cylinder { < 1.2, H4+3, EleDpth / 2.2 + 0.75> < 1.2, H4+4.15, EleDpth / 2.2 + 0.75> 0.05 }
        
        cylinder { <-1.2, H4+4.15, .25*EleDpth - 1.85> < 1.2, H4+4.15, .25*EleDpth - 1.85> 0.05 }
        cylinder { < 1.2, H4+4.15, .25*EleDpth - 1.85> < 1.2, H4+4.15, EleDpth / 2.2 + 0.75> 0.05 }
        cylinder { <-1.2, H4+4.15, .25*EleDpth - 1.85> <-1.2, H4+4.15, EleDpth / 2.2 + 0.75> 0.05 }
        cylinder { < 1.2, H4+4.15, EleDpth / 2.2 + 0.75> <-1.2, H4+4.15, EleDpth / 2.2 + 0.75> 0.05 }
        
        cylinder { <-1.2, H4+3.575, .25*EleDpth - 1.85> < 1.2, H4+3.575, .25*EleDpth - 1.85> 0.05 }
        cylinder { < 1.2, H4+3.575, .25*EleDpth - 1.85> < 1.2, H4+3.575, EleDpth / 2.2 + 0.75> 0.05 }
        cylinder { <-1.2, H4+3.575, .25*EleDpth - 1.85> <-1.2, H4+3.575, EleDpth / 2.2 + 0.75> 0.05 }
        cylinder { < 1.2, H4+3.575, EleDpth / 2.2 + 0.75> <-1.2, H4+3.575, EleDpth / 2.2 + 0.75> 0.05 }       
 
 difference {       
        cylinder { <0.8, H4 + 4.5, MotorMid+0.5> <-0.8, H4 + 4.5, MotorMid+0.5> .3 } 
        cylinder { <0.9, H4 + 4.5, MotorMid+0.5> <-0.9, H4 + 4.5, MotorMid+0.5> .1 }  }   
 difference {        
        cylinder { <0.77, H4 + 4.7, MotorMid+0.3> <-0.77, H4 + 4.7, MotorMid+0.3> .3 }    
        cylinder { <0.9, H4 + 4.7, MotorMid+0.3> <-0.9, H4 + 4.7, MotorMid+0.3> .1 }  }           
                        
        pigment {Grey}
      }                                                                           

// Black Ring Under the Elevator Motor
union {
        cylinder { < 0.31, H4+4.3, EleDpth/2.2> < 0.31, H4+4.4, EleDpth/2.2> 0.5 }
        cylinder { <-0.31, H4+4.3, EleDpth/2.2> <-0.31, H4+4.4, EleDpth/2.2> 0.5 }
                
        cylinder { <0.7, H4 + 4.5, MotorMid+0.5> <0.72, H4 + 4.5, MotorMid+0.5> .32 }
        cylinder { <0.7, H4 + 4.7, MotorMid+0.3> <0.72, H4 + 4.7, MotorMid+0.3> .32 }
        cylinder { <-0.7, H4 + 4.5, MotorMid+0.5> <-0.72, H4 + 4.5, MotorMid+0.5> .32 }
        cylinder { <-0.7, H4 + 4.7, MotorMid+0.3> <-0.72, H4 + 4.7, MotorMid+0.3> .32 }
                
        box { <-.63, H4+4.3, MotorSt-.1> < 0.63, H4+4.4, MotorEnd+.2> }   
        pigment {Black}
      }       
difference  {                                                                                                   
        cylinder {  <.61, H4+4.3,MotorMid+.15>  <-.61, H4+4.3, MotorMid+.15>   (MotorEnd-MotorSt)/2+.15  }
        box { <-.9, H4, MotorSt-.4> < 0.9, H4+4.4, MotorEnd+.4>  } pigment {Yellow}
}    



// Truck Unload Pipe  
union {
cylinder { <0, H3-.3, EleDpth + 0.25>, <0, H1+1.8, EleDpth + 0.4> 0.15 }
cylinder { <0, H3+.15, EleDpth-1>      <0, H3-.3, EleDpth + 0.25> 0.15 }
sphere   { <0, H3-.3, EleDpth + 0.25> 0.15 }

cylinder { <0, H1+1.8, EleDpth + 0.4>, <0, H1+1.8, EleDpth + 0.6> 0.15 }  
sphere { <0, H1+1.8, EleDpth + 0.4> 0.15 }
cylinder { <0, H1+1.8, EleDpth + 0.6>, <0, H1-3, PitDpth + 3> 0.15 } 
sphere { <0, H1+1.8, EleDpth + 0.6> 0.15 }
sphere { <0, H1-3, PitDpth + 3> 0.15 }  
        pigment {Red}
       }
//Top Unload Pipe Support Brace       
difference {
        cylinder { < 0, H3-.6, EleDpth+.1> <0, H3-.9, EleDpth+.1> 0.35 pigment {Black} }
        cylinder { < 0, H4, EleDpth+.1> <0, H2, EleDpth+.1> 0.34 pigment {Black} }
 } 
//Middle Unload Pipe Support Brace
difference {
        cylinder { < 0, (H2+H1)/2, EleDpth+.2> <0, (H2 + H1)/2+.2, EleDpth+.2> 0.35 pigment {Black}}
        cylinder { < 0, H1/2, EleDpth+.2> <0, H2, EleDpth+.2> 0.34 pigment {Black}}
}
union {
        cylinder {  <0.16, H1-5, EleDpth + .93> <0.16, H1+1.22, EleDpth+2> 0.04 pigment {Grey}}
        cylinder {  <-0.16, H1-5, EleDpth + .93> <-0.16, H1+1.22, EleDpth+2> 0.04 pigment {Grey}}
        cylinder {  <-0.16, H1+0.90, EleDpth + 1.9> <0.16, H1+.90, EleDpth + 1.9> 0.04 pigment {Grey} } 
        cylinder {  <-0.16, H1+1.25, EleDpth + 2> <0.16, H1+1.25, EleDpth + 2> 0.04 pigment {Grey} }
        sphere { <-0.16, H1+1.25, EleDpth + 2> 0.04 }
        sphere { <-0.16, H1+1.25, EleDpth + 2> 0.04  }
        pigment {Grey}
 }
union {
        cylinder {  <0.16, H0, PitDpth - 1.57> <0.16, H1-0.91, PitDpth - .5> 0.04 pigment {Grey}}
        cylinder {  <-0.16, H0, PitDpth - 1.57> <-0.16, H1-0.91, PitDpth - .5> 0.04 pigment {Grey}}
        cylinder {  <-0.16, H1-1, PitDpth - .6> <0.16, H1-1, PitDpth - .6> 0.04 pigment {Grey} } 
        cylinder {  <-0.16, H1-0.8, PitDpth - .5> <0.16, H1-0.8, PitDpth - .5> 0.04 pigment {Grey} }
        sphere { <-0.16, H1-0.9, PitDpth - .5> 0.04 }
        sphere { <-0.16, H1-0.9, PitDpth - .5> 0.04  }
        pigment {Grey}
 }
// Unload Pipe over Platform     
cylinder { <0, H1-3, PitDpth + 3>, <0, H1-5.5, PitDpth + 3> 0.14 pigment {Grey} }
cylinder { <0, H1-5.2, PitDpth + 3>, <0, H1-6.1, PitDpth + 3> 0.15 pigment {Black} }
// Cement Pad
union {
        box { < BotWdt-2, 0, PitDpth> < .1, .1, PitDpth + 7 > }
        box { < -.1, 0, PitDpth> < -BotWdt+2, .1, PitDpth + 7 > } 
        pigment {color rgb<1.4, 1.27, .82>} finish {crand 0.05  roughness 10 }  
} 


//Railroad Tracks  
#declare B11=<-1000,0,-EleDpth-7.7>; #declare B12=<-1000,.3,-EleDpth-5.5>; //
#declare B13=<-1000,.3,-EleDpth-4.0>; #declare B14=<-1000, 0,-EleDpth-4.0>; // row 1

#declare B21=<-500, 0, -EleDpth-7.5>; #declare B22=<-500,.28,-EleDpth-5.5>; //
#declare B23=<-500,.3, -EleDpth-4.0>; #declare B24=<-500, 0,-EleDpth-4.0>; // row 2

#declare B31=<500, 0, -EleDpth-7.7>; #declare B32=<500,.2,-EleDpth-5.5>; //
#declare B33=<500,.35, -EleDpth-4.0>; #declare B34=<500, 0,-EleDpth-4.0>; //row 3

#declare B41=<1000,0,-EleDpth-7.5>; #declare B42=<1000,.3,-EleDpth-5.5>; //
#declare B43=<1000,.3,-EleDpth-4.0>; #declare B44=<1000, 0,-EleDpth-4.0>; // row 4

bicubic_patch {
   type 1 flatness 0.001 u_steps 4 v_steps 4 uv_vectors <0,0> <1,0> <1,1> <0,1>
   B11, B12, B13, B14 
   B21, B22, B23, B24 
   B31, B32, B33, B34
   B41, B42, B43, B44
   uv_mapping  texture { pigment { Grey } finish {roughness 1000 crand 0.1 phong 0.6 phong_size 20} }
 }   
//Tracks 
box { < -9000, .2, -EleDpth-5.2>, <9000, .3, -EleDpth-5> pigment {Black} }
box { < -9000, .2, -EleDpth-6.2>, <9000, .3, -EleDpth-6> pigment {Black} }

//Wood Planks
#declare index = -9000;   
#while (  index < 9000 )
        box { < index, .08, -EleDpth-6.6>, <index+.5, .25, -EleDpth-4.6> pigment {color rgb<.8, .67, .22>} }                                  
#declare index = index + 1.1;                                  
#end              

             
//White Bin
lathe { linear_spline 4, <2,0>, <2,3>, <2,9>, <.4,10> pigment { White } finish { ambient .3  } translate 16*x translate -5*z }
cylinder { <16, 0, -5> < 16, 0.5, -5> 2.25 pigment {color rgb<.75, .67, .62>} finish {crand 0.05  roughness 10 }  }
lathe { linear_spline 6, <.7,9.9>, <.7,9.95>, <.65,9.95>, <.65,10.25>, <0.2,10.4>, <0, 10.4> pigment { Black } finish { ambient .3  } translate 16*x translate -5*z }
lathe { linear_spline 6, <.7,9.7>, <.7,9.95>, <.65,9.95>, <.65,10.15>, <0.2,10.3>, <0, 10.3> pigment { Grey } finish { ambient .3  }  Rotate_Around_Trans(x*90+y*45, <16,9.9, -5>) translate 12.75*x translate -3*y translate -9.75*z  }


//Dirt around the Elevator
  prism {
    cubic_spline
    0, // sweep the following shape from here ...
    0.0, // ... up through here
    9, // the number of points making up the shape ...
    < 3, -5>, // point#1 (control point... not on curve)
    < -40,  0>, // point#2  ... THIS POINT ...
    <30,  4>, // point#3
    < 30, 35>, // point#4
    <   0, 35>
    < -35, 35>
    < -40, 2>
    < -40,  0>, // point#5 ... MUST MATCH THIS POINT
    <-5,  0>  // point#6 (control point... not on curve)
    texture {Dirt}
  }    



//Grass
#declare Width = 40; #declare Depth = 30;  
//#while ( Width < 60 )

        //#while ( Depth < 60)
         union{
           cylinder { <Width, 0, Depth> <Width + .5, 1, Depth> .01}
           cylinder { <Width, 0, Depth> <Width - .5, 0.9, Depth> .01}
           cylinder { <Width+.5, 0, Depth> <Width + .6, 1, Depth-.5> .01}
           cylinder { <Width, 0, Depth> <Width + .5, 1, Depth+.5> .01}           
           cylinder { <Width-.6, 0, Depth> <Width - .5, 1, Depth+.5> .01}
           cylinder { <Width-1, 0, Depth-.5> <Width -1.5, 0.8, Depth-.6> .01}
           cylinder { <Width+1, 0, Depth-.6> <Width + .7, 1, Depth-.5> .01}
           cylinder { <Width-.7, 0, Depth+.2> <Width - .8, 1, Depth+.3> .01}

           cylinder { <Width-.25, 0, Depth-.95> <Width -.5, 0.8, Depth-.6> .01}
           cylinder { <Width+.75, 0, Depth-1.6> <Width + .7, 1, Depth-1.5> .01}
           cylinder { <Width-.3, 0, Depth+1.2> <Width - .4, 1, Depth+1.3> .01}


           pigment {color rgb<1, 0.7, .42>} finish {crand 0.05 roughness 1000 } 
           #declare Depth = Depth + 1.25;
         }
        //#end

  #declare Depth = 40;
  #declare Width = Width + 2.5;
//#end  


    camera { 

  location <-10, 45, 15>
//    location <-10, 30.3, 5>      
    look_at  <0, 30, 0 >
    focal_point < 0, 40,  0>    // green box in focus
    aperture 0.6     // a nice compromise
   blur_samples 30      // more samples, higher quality image
  }



                                                                                                                        
//  global_settings { ambient_light rgb<1, 1, 1> }          


  light_source { <-1000, 5000, 3500> color Gray75 }//  shadowless}  
  light_source { <0, 400, 35> color Gray25  shadowless}  
 light_source { <3000, 50, 350> color Gray25 shadowless} 
  light_source { <-3000, 50, -350> color Gray25 shadowless}        
    light_source { <-3000, 500, 350> color Gray25  shadowless}


  sky_sphere {
    pigment {
      gradient y
      color_map {
        [ 0.9  color CornflowerBlue ]
        [ 1.0  color MidnightBlue ]
      }
      scale 2
      translate -1
    } 
    pigment {
      bozo
      turbulence 0.65
      octaves 6
      omega 0.7
      lambda 2
      color_map {
          [0.0 0.1 color rgb <0.85, 0.85, 0.85>
                   color rgb <0.75, 0.75, 0.75>]
          [0.1 0.5 color rgb <0.75, 0.75, 0.75>
                   color rgbt <1, 1, 1, 1>]
          [0.5 1.0 color rgbt <1, 1, 1, 1>
                   color rgbt <1, 1, 1, 1>]
      }
      scale <0.2, 0.1, 0.2>
     }
  }


                     