--- a
+++ b/Application/Examples/SeatedHuman/Model/Environment.any
@@ -0,0 +1,450 @@
+/// This folder contains the environment, i.e. the chair
+AnyFolder EnvironmentModel = {
+  
+  /// The global reference frame, i.e. ground.
+  AnyFixedRefFrame GlobalRef = {
+    
+    AnyFolder &Dim = .Seg.ChairDimensions;
+    
+    AnyRefNode GroundNode = {
+      sRel = {1/2*.Dim.SeatLength, -.Dim.BackRestHeight, 0};
+    };
+  };  // Global reference frame
+  
+  //-----------------------------------------------------
+  // Segments
+  //-----------------------------------------------------  
+  AnyFolder Seg = {
+    
+    AnyFolder ChairDimensions = {
+      AnyVar FootRestLength = 0.50;
+      AnyVar FootRestWidth = 0.40;
+      AnyVar FootRestThickness = 0.05;
+      AnyVar BackRestHeight = 0.90;
+      AnyVar BackRestWidth = 0.40;
+      AnyVar BackRestThickness = 0.05;
+      AnyVar SeatLength = 0.50;
+      AnyVar SeatWidth = 0.40;
+      AnyVar SeatThickness = 0.05;
+      AnyVar HeadRestHeight = 0.2;
+      AnyVar HeadRestWidth = 0.2;
+      AnyVar HeadRestThickness = 0.05;
+      AnyVar LegRestLength = 0.6;
+      AnyVar LegRestWidth = 0.3;
+      AnyVar LegRestThickness = 0.05;
+      AnyVar ArmRestX = 0.30;
+      AnyVar ArmRestY = 0.3;
+      AnyVar ArmRestZ = 0.05;      
+      AnyVar ArmRestHeight = 0.32;    
+    }; // ChairDimensions  
+    
+    //--------------------------------------------------------
+    // BackRest
+    //--------------------------------------------------------
+    AnySeg BackRest = {
+      
+      AnyFolder &Dim = .ChairDimensions;
+      Mass = 0.0;
+      AnyVar Ixx = 1/12*(Dim.BackRestHeight^2+Dim.BackRestWidth^2);
+      AnyVar Iyy = 1/12*(Dim.BackRestThickness^2+Dim.BackRestWidth^2);
+      AnyVar Izz = 1/12*(Dim.BackRestHeight^2+Dim.BackRestThickness^2);
+      Jii = {Ixx, Iyy, Izz};
+      
+      AnyRefNode BackRestSeatJntNode = {
+        sRel = {0, -1/2*.Dim.BackRestHeight, 0};
+      };
+      
+      AnyRefNode BackRestHeadRestJntNode = {
+        sRel = {0, 1/2*.Dim.BackRestHeight, 0};
+      };
+      AnyRefNode BackRestSupportNode = {
+        sRel = {-0.2, -0.2, 0};
+      };
+      
+      AnyRefNode BackArmRestRightJntNode = {
+        sRel = {0, .Dim.ArmRestHeight-1/2*.Dim.BackRestHeight, 1/2*.Dim.BackRestWidth};
+      };
+      
+      AnyRefNode BackArmRestLeftJntNode = {
+        sRel = {0, .Dim.ArmRestHeight-1/2*.Dim.BackRestHeight, -1/2*.Dim.BackRestWidth};
+      };
+      
+      AnyDrawSTL BackRest = {
+        FileName = "../Input/BackRest.stl";
+        RGB = {0, 0, 1};
+        Opacity = 0.2;
+        AnyStyleDrawMaterial1 style = 
+        {
+          EnableCreasing = On;
+          CreasingAngle = 0.524;
+          SpecularRGB = 0.05*{1,1,1};
+        };
+      };
+    }; // BackRest        
+    
+    //--------------------------------------------------------
+    // Seat
+    //--------------------------------------------------------
+    AnySeg Seat = {
+      AnyFolder &Dim = .ChairDimensions;
+      Mass = 0.0;
+      AnyVar Ixx = 1/12*(Dim.SeatWidth^2+Dim.SeatThickness^2);
+      AnyVar Iyy = 1/12*(Dim.SeatLength^2+Dim.SeatWidth^2);
+      AnyVar Izz = 1/12*(Dim.SeatLength^2+Dim.SeatThickness^2);
+      Jii = {Ixx, Iyy, Izz};
+      AnyRefNode SeatNode = {
+        sRel = {0, 0, 0};
+        ARel = {{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}};
+        
+        AnyDrawSTL Seat = {
+          FileName = "../Input/Seat.stl";
+          RGB = {0, 0, 1};
+          Opacity = 0.2;
+          AnyStyleDrawMaterial1 style = 
+          {
+            EnableCreasing = On;
+            CreasingAngle = 0.524;
+            SpecularRGB = 0.05*{1,1,1};
+          };
+        };
+      };
+      
+      AnyRefNode SeatBackRestJntNode = {
+        sRel = {0, 1/2*.Dim.SeatLength, 0};
+      };
+      
+      AnyRefNode SeatAdjNode = {
+        sRel = {0, 0, 0};
+      };
+      
+      AnyRefNode SeatLegRestJntNode = {
+        sRel = {0, -1/2*.Dim.SeatLength, 0};
+      };    
+    }; // Seat 
+    
+    //-----------------------------------------------------
+    // HeadRest
+    //-----------------------------------------------------
+    AnySeg HeadRest = {
+      AnyFolder &Dim = .ChairDimensions;
+      Mass = 0.0;
+      AnyVar Ixx = 1/12*(Dim.HeadRestHeight^2+Dim.HeadRestWidth^2);
+      AnyVar Iyy = 1/12*(Dim.HeadRestWidth^2+Dim.HeadRestThickness^2);
+      AnyVar Izz = 1/12*(Dim.HeadRestHeight^2+Dim.HeadRestThickness^2);
+      Jii = {Ixx, Iyy, Izz};
+      
+      AnyRefNode HeadRestBackRestJntNode = {
+        sRel = {0, -1/2*.Dim.HeadRestHeight, 0};
+        // AnyDrawNode DrwNode = {};
+      };
+      
+      // AnyDrawSeg HeadRest = {};
+      AnyDrawSTL HeadRest = {
+        FileName = "../Input/HeadRest.stl";
+        RGB = {0, 0, 1};
+        Opacity = 0.4;      
+        AnyStyleDrawMaterial1 style = 
+        {
+          EnableCreasing = On;
+          CreasingAngle = 0.524;
+          SpecularRGB = 0.05*{1,1,1};
+        };
+      };
+    }; // HeadRest
+    
+    //-------------------------------------------------------
+    // LegRest
+    //-------------------------------------------------------
+    AnySeg LegRest = {
+      AnyFolder &Dim = .ChairDimensions;
+      Mass = 0.0;
+      AnyVar Ixx = 1/12*(Dim.LegRestLength^2+Dim.LegRestWidth^2);
+      AnyVar Iyy = 1/12*(Dim.LegRestWidth^2+Dim.LegRestThickness^2);
+      AnyVar Izz = 1/12*(Dim.LegRestLength^2+Dim.LegRestThickness^2);
+      Jii = {Ixx, Iyy, Izz};
+      
+      AnyRefNode LegRestSeatJntNode = {
+        sRel = {0, 1/2*.Dim.LegRestLength, 0};
+      };
+      
+      AnyRefNode LegRestFootRestJntNode = {
+        sRel = {0, -1/2*.Dim.LegRestLength, 0};
+      };    
+      
+      AnyDrawSTL LegRest = {
+        FileName = "../Input/LegRest.stl";       
+        RGB = {0, 0, 1};
+        Opacity = 0.2;
+        AnyStyleDrawMaterial1 style = 
+        {
+          EnableCreasing = On;
+          CreasingAngle = 0.524;
+          SpecularRGB = 0.05*{1,1,1};
+        };
+      };
+    }; // LegRest 
+    
+    //---------------------------------------------------
+    // FootRest
+    //---------------------------------------------------
+    AnySeg FootRest = {
+      AnyFolder &Dim = .ChairDimensions;
+      Mass = 5.0;
+      AnyVar Ixx = 1/12*(Dim.FootRestThickness^2+Dim.FootRestWidth^2);
+      AnyVar Iyy = 1/12*(Dim.FootRestLength^2+Dim.FootRestWidth^2);
+      AnyVar Izz = 1/12*(Dim.FootRestLength^2+Dim.FootRestThickness^2);
+      Jii = {Ixx, Iyy, Izz};     
+      
+      AnyRefNode FootRestLegRestJntNode = {
+        sRel = {0, 1/3*.Dim.FootRestLength, 0};
+        ARel = {{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}};
+        /*
+        AnyDrawRefFrame DrwRefFrame = {
+        RGB = {1, 1, 0};
+        ScaleXYZ = {0.3, 0.3, 0.3};
+        };
+        */
+      };
+      // AnyDrawSeg DrwSeg = {};
+      
+      AnyDrawSTL DrwSTL = {
+        FileName = "../Input/FootRest2.stl";
+        RGB = {0,0, 1};
+        Opacity = 0.2;
+        AnyStyleDrawMaterial1 style = 
+        {
+          EnableCreasing = On;
+          CreasingAngle = 0.524;
+          SpecularRGB = 0.05*{1,1,1};
+        };
+      };
+      
+    }; // FootRest    
+    
+    //---------------------------------------------------
+    // ArmRestRight
+    //---------------------------------------------------
+    AnyFolder Right = {
+      AnySeg ArmRest = {
+        AnyFolder &Dim = ..ChairDimensions;
+        Mass = 1.0;
+        AnyVar Ixx = 1/12*(Dim.ArmRestZ^2+Dim.ArmRestX^2);
+        AnyVar Iyy = 1/12*(Dim.ArmRestY^2+Dim.ArmRestX^2);
+        AnyVar Izz = 1/12*(Dim.ArmRestY^2+Dim.ArmRestZ^2);
+        Jii = {Ixx, Iyy, Izz};     
+        
+        AnyRefNode BackArmRestJntNode = {
+          sRel = {0, .Dim.ArmRestX, -1/2*.Dim.ArmRestZ};       
+        };
+        
+        AnyRefNode ArmRestUlnaJntNodeFront = {
+          sRel = {0, -1/2*.Dim.ArmRestY, 0};//-1/2*.Dim.ArmRestZ};
+        };
+        
+        AnyRefNode ArmRestUlnaJntNodeBack = {
+          sRel = {0, 1/2*.Dim.ArmRestY, 0};//-1/2*.Dim.ArmRestZ};
+        };
+        
+        AnyRefNode STLholder = {
+          sRel = {-0.45, 0, 0};
+          AnyDrawSTL DrwSTL = {
+            FileName = "../Input/ArmRest3.stl";
+            RGB = {0, 0, 1};
+            Opacity = 0.2;
+            AnyStyleDrawMaterial1 style = 
+            {
+              EnableCreasing = On;
+              CreasingAngle = 0.524;
+              SpecularRGB = 0.05*{1,1,1};
+            };
+          };
+        };     
+      }; // ArmRest    
+    }; // Right
+    
+    AnyFolder Left = {
+      AnySeg ArmRest = {
+        AnyFolder &Dim = ..ChairDimensions;
+        Mass = 1.0;
+        AnyVar Ixx = 1/12*(Dim.ArmRestZ^2+Dim.ArmRestX^2);
+        AnyVar Iyy = 1/12*(Dim.ArmRestY^2+Dim.ArmRestX^2);
+        AnyVar Izz = 1/12*(Dim.ArmRestY^2+Dim.ArmRestZ^2);
+        Jii = {Ixx, Iyy, Izz};     
+        
+        AnyRefNode BackArmRestJntNode = {
+          sRel = {0, .Dim.ArmRestX, 1/2*.Dim.ArmRestZ};       
+        };
+        
+        AnyRefNode ArmRestUlnaJntNodeFront = {
+          sRel = {0, -1/2*.Dim.ArmRestY, 0};//-1/2*.Dim.ArmRestZ};
+        };
+        
+        AnyRefNode ArmRestUlnaJntNodeBack = {
+          sRel = {0, 1/2*.Dim.ArmRestY, 0};//-1/2*.Dim.ArmRestZ};
+
+        };
+        
+        AnyRefNode STLholder = {
+          sRel = {-0.45, 0, 0};
+          AnyDrawSTL DrwSTL = {
+            FileName = "../Input/ArmRest3.stl";
+            RGB = {0, 0, 1};
+            Opacity = 0.2;
+             AnyStyleDrawMaterial1 style = 
+             {
+               EnableCreasing = On;
+               CreasingAngle = 0.524;
+               SpecularRGB = 0.05*{1,1,1};
+             };
+          };
+        };     
+      }; // ArmRest    
+    }; // Left
+  }; // Seg
+  
+  //--------------------------------------
+  // Joints
+  //--------------------------------------
+  
+  AnyFolder Jnt = {
+    AnyKinLinear SeatGlobalLinMeasure = {
+      AnyRefNode &SegNode = ..Seg.Seat.SeatAdjNode;
+      AnyRefNode &GroundNode = ..GlobalRef.GroundNode;
+    };        
+    
+    AnyKinRotational SeatGlobalRotMeasure = {
+      AnyRefNode &SegNode = ..Seg.Seat.SeatAdjNode;
+      AnyRefNode &GroundNode = ..GlobalRef.GroundNode;
+      Type = RotVector;
+    };        
+    
+    AnyKinEq SeatGlobalConst = {
+      AnyKinLinear &LinMeasure = .SeatGlobalLinMeasure;
+      AnyKinRotational &RotMeasure = .SeatGlobalRotMeasure;
+      MeasureOrganizer = {0, 2, 3, 4};
+    };        
+    
+    AnyRevoluteJoint SeatBackRestJnt = {
+      Axis = z;
+      AnyRefNode &Seatnode = ..Seg.Seat.SeatBackRestJntNode;  
+      AnyRefNode &BackRestNode = ..Seg.BackRest.BackRestSeatJntNode;
+    }; // SeatBackRestLink
+    
+    AnyRevoluteJoint BackRestHeadRestJnt = {
+      Axis = z;
+      AnyRefNode &BackRestNode = ..Seg.BackRest.BackRestHeadRestJntNode;
+      AnyRefNode &HeadRestNode = ..Seg.HeadRest.HeadRestBackRestJntNode;
+    }; // BackRestHeadRestLink
+    
+    AnyRevoluteJoint SeatLegRestJnt = {
+      Axis = z; 
+      AnyRefNode &LegRestNode = ..Seg.LegRest.LegRestSeatJntNode;
+      AnyRefNode &SeatNode = ..Seg.Seat.SeatLegRestJntNode;
+    }; // SeatLegRestLink
+    
+    AnyPrismaticJoint LegRestFootRestJnt = {
+      Axis = y;
+      Ref = 1;
+      AnyRefNode &LegRestNode = ..Seg.LegRest.LegRestFootRestJntNode;
+      AnyRefNode &FootRestNode = ..Seg.FootRest.FootRestLegRestJntNode;
+    };  
+    
+    AnyFolder Right = {
+      AnyRevoluteJoint BackArmRestJoint = {
+        AnyRefNode &BackNode = ...Seg.BackRest.BackArmRestRightJntNode;
+        AnyRefNode &ArmRestNode = ...Seg.Right.ArmRest.BackArmRestJntNode;
+        Ref = 1;
+      };        
+      
+      AnyKinRotational GlobalArmRestRotMeasure = {
+        AnyRefFrame &Global = Main.Model.EnvironmentModel.GlobalRef;
+        AnyRefNode &ArmRestNode = ...Seg.Right.ArmRest.BackArmRestJntNode;
+        Type = RotVector;
+      };        
+      
+      AnyKinEqSimpleDriver GlobalArmRestAngle = {
+        AnyKinRotational &RotMeasure = .GlobalArmRestRotMeasure;
+        MeasureOrganizer = {2};
+        DriverPos = {90*pi/180};
+        DriverVel = {0};
+      };
+      
+    }; // Right
+    
+    AnyFolder Left = {
+      AnyRevoluteJoint BackArmRestJoint = {
+        AnyRefNode &BackNode = ...Seg.BackRest.BackArmRestLeftJntNode;
+        AnyRefNode &ArmRestNode = ...Seg.Left.ArmRest.BackArmRestJntNode;
+        Ref = 1;
+      };        
+      
+      AnyKinRotational GlobalArmRestRotMeasure = {
+        AnyRefFrame &Global = Main.Model.EnvironmentModel.GlobalRef;
+        AnyRefNode &ArmRestNode = ...Seg.Left.ArmRest.BackArmRestJntNode;
+        Type = RotVector;
+      };        
+      
+      AnyKinEqSimpleDriver GlobalArmRestAngle = {
+        AnyKinRotational &RotMeasure = .GlobalArmRestRotMeasure;
+        MeasureOrganizer = {2};
+        DriverPos = {90*pi/180};
+        DriverVel = {0};
+      };
+    }; // Left    
+    
+  }; // Joints
+  
+  /// This folder contains drivers for the chair segments.
+  AnyFolder Drivers = {
+    AnyFolder &DrvPos = Main.DrvPos;
+    AnyFolder &DrvVel = Main.DrvVel;
+    
+    //--------------------------------------------------------
+    // Drivers - Chair adjustments
+    //--------------------------------------------------------
+    AnyKinEqSimpleDriver GlobalBackRestDrv = {
+      AnyKinRotational rot = {
+        AnyRefFrame &Back = Main.Model.EnvironmentModel.Seg.BackRest;
+        Type = RotAxesAngles;
+      };
+      MeasureOrganizer = {0};
+      DriverPos = {.DrvPos.GlobalBackRestRotZPos*pi/180};
+      DriverVel = {.DrvVel.GlobalBackRestRotZVel*pi/180};
+      Reaction.Type = {On};
+    };  
+    
+    AnyKinEqSimpleDriver SeatGlobalDrv = {
+      AnyKinLinear &LinMeasure = ..Jnt.SeatGlobalLinMeasure;
+      AnyKinRotational &RotMeasure = ..Jnt.SeatGlobalRotMeasure;
+      MeasureOrganizer = {1,5};
+      DriverPos = {-.DrvPos.SeatGlobalLinYPos,(-90+.DrvPos.SeatGlobalZRot)*pi/180};
+      DriverVel = {-.DrvVel.SeatGlobalLinYVel,.DrvVel.SeatGlobalZRotVel*pi/180};
+      Reaction.Type = {On,On};
+    };
+    
+    AnyKinEqSimpleDriver BackRestHeadRestDrv = {
+      AnyRevoluteJoint &Jnt = ..Jnt.BackRestHeadRestJnt;
+      DriverPos = {.DrvPos.BackRestHeadResRotZPos*pi/180};
+      DriverVel = {0};
+      Reaction.Type = {On};
+    };  
+    
+    AnyKinEqSimpleDriver GlobalLegRestDrv = {
+      AnyKinRotational rot = {
+        AnyRefFrame &LegRest = Main.Model.EnvironmentModel.Seg.LegRest;
+        Type = RotAxesAngles;
+      };
+      MeasureOrganizer = {0};
+      DriverPos = {.DrvPos.GlobalLegRestRotZPos*pi/180};
+      DriverVel = {.DrvVel.GlobalLegRestRotZVel*pi/180};
+      Reaction.Type = {On};
+    };
+    
+    AnyKinEqSimpleDriver LegRestFootRestDrv = {
+      AnyPrismaticJoint &Jnt = ..Jnt.LegRestFootRestJnt;
+      DriverPos = {.DrvPos.LegRestFootRestLinYPos};
+      DriverVel = {.DrvVel.LegRestFootRestLinYVel};
+      Reaction.Type = {On};
+    };
+  };
+};