Index: src/Actions/SelectionAction/AllAtomsInsideCuboidAction.cpp
===================================================================
--- src/Actions/SelectionAction/AllAtomsInsideCuboidAction.cpp	(revision bf38179e7a1590020bad970c4931116d7d7e9bbb)
+++ src/Actions/SelectionAction/AllAtomsInsideCuboidAction.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
@@ -20,4 +20,5 @@
 #include "Helpers/Log.hpp"
 #include "Helpers/Verbose.hpp"
+#include "LinearAlgebra/Matrix.hpp"
 #include "LinearAlgebra/Vector.hpp"
 #include "Shapes/BaseShapes.hpp"
@@ -40,12 +41,18 @@
 class SelectionAllAtomsInsideCuboidState : public ActionState {
 public:
-  SelectionAllAtomsInsideCuboidState(std::vector<atom*> _selectedAtoms, const Vector &_position, const Vector &_extension) :
+  SelectionAllAtomsInsideCuboidState(std::vector<atom*> _selectedAtoms, const Vector &_position, const Vector &_extension, const double _Xangle, const double _Yangle, const double _Zangle) :
     selectedAtoms(_selectedAtoms),
     position(_position),
-    extension(_extension)
+    extension(_extension),
+    Xangle(_Xangle),
+    Yangle(_Yangle),
+    Zangle(_Zangle)
   {}
   std::vector<atom*> selectedAtoms;
   Vector position;
   Vector extension;
+  double Xangle;
+  double Yangle;
+  double Zangle;
 };
 
@@ -65,4 +72,13 @@
 };
 
+void SelectionAllAtomsInsideCuboid(const Vector &position, const Vector &extension, const double Xangle, const double Yangle, const double Zangle) {
+  ValueStorage::getInstance().setCurrentValue(SelectionAllAtomsInsideCuboidAction::NAME, extension);
+  ValueStorage::getInstance().setCurrentValue("position", position);
+  ValueStorage::getInstance().setCurrentValue("angle-x", Xangle);
+  ValueStorage::getInstance().setCurrentValue("angle-y", Yangle);
+  ValueStorage::getInstance().setCurrentValue("angle-z", Zangle);
+  ActionRegistry::getInstance().getActionByName(SelectionAllAtomsInsideCuboidAction::NAME)->call(Action::NonInteractive);
+};
+
 Dialog* SelectionAllAtomsInsideCuboidAction::fillDialog(Dialog *dialog) {
   ASSERT(dialog,"No Dialog given when filling action dialog");
@@ -78,12 +94,24 @@
   Vector position;
   Vector extension;
+  double Xangle = 0.;
+  double Yangle = 0.;
+  double Zangle = 0.;
+  Matrix RotationMatrix;
 
   ValueStorage::getInstance().queryCurrentValue("position", position);
   ValueStorage::getInstance().queryCurrentValue(NAME, extension);
+  // check whether a rotation is given.
+  if (ValueStorage::getInstance().queryCurrentValue("angle-x", Xangle, true))
+    Xangle = 0.;
+  if (ValueStorage::getInstance().queryCurrentValue("angle-y", Yangle, true))
+    Yangle = 0.;
+  if (ValueStorage::getInstance().queryCurrentValue("angle-z", Zangle, true))
+    Zangle = 0.;
+  RotationMatrix.rotation(Xangle, Yangle, Zangle);
 
-  DoLog(1) && (Log() << Verbose(1) << "Selecting all atoms inside a cuboid at " << position << " and extension of " << extension << "." << endl);
-  Shape s = translate(stretch(Cuboid(),extension),position);
+  DoLog(1) && (Log() << Verbose(1) << "Selecting all atoms inside a rotated " << RotationMatrix << " cuboid at " << position << " and extension of " << extension << "." << endl);
+  Shape s = translate(transform(stretch(Cuboid(),extension),RotationMatrix),position);
   World::getInstance().selectAllAtoms(AtomByShape(s));
-  return Action::state_ptr(new SelectionAllAtomsInsideCuboidState(selectedAtoms, position, extension));
+  return Action::state_ptr(new SelectionAllAtomsInsideCuboidState(selectedAtoms, position, extension, Xangle, Yangle, Zangle));
 }
 
@@ -95,14 +123,16 @@
     World::getInstance().selectAtom(*iter);
 
-  return Action::state_ptr(new SelectionAllAtomsInsideCuboidState(state->selectedAtoms, state->position, state->extension));
+  return Action::state_ptr(_state);
 }
 
 Action::state_ptr SelectionAllAtomsInsideCuboidAction::performRedo(Action::state_ptr _state){
   SelectionAllAtomsInsideCuboidState *state = assert_cast<SelectionAllAtomsInsideCuboidState*>(_state.get());
+  Matrix RotationMatrix;
 
-  Shape s = translate(stretch(Cuboid(),state->extension),state->position);
+  RotationMatrix.rotation(state->Xangle, state->Yangle, state->Zangle);
+  Shape s = translate(transform(stretch(Cuboid(),state->extension),RotationMatrix),state->position);
   World::getInstance().selectAllAtoms(AtomByShape(s));
 
-  return Action::state_ptr(new SelectionAllAtomsInsideCuboidState(state->selectedAtoms, state->position, state->extension));
+  return Action::state_ptr(_state);
 }
 
Index: src/Actions/SelectionAction/AllAtomsInsideCuboidAction.hpp
===================================================================
--- src/Actions/SelectionAction/AllAtomsInsideCuboidAction.hpp	(revision bf38179e7a1590020bad970c4931116d7d7e9bbb)
+++ src/Actions/SelectionAction/AllAtomsInsideCuboidAction.hpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
@@ -17,4 +17,5 @@
 class SelectionAllAtomsInsideCuboidAction : public Action {
   friend void SelectionAllAtomsInsideCuboid(const Vector &position, const Vector &extension);
+  friend void SelectionAllAtomsInsideCuboid(const Vector &position, const Vector &extension, const double Xangle, const double Yangle, const double Zangle);
 
 public:
Index: src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.cpp
===================================================================
--- src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.cpp	(revision bf38179e7a1590020bad970c4931116d7d7e9bbb)
+++ src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
@@ -20,4 +20,5 @@
 #include "Helpers/Log.hpp"
 #include "Helpers/Verbose.hpp"
+#include "LinearAlgebra/Matrix.hpp"
 #include "LinearAlgebra/Vector.hpp"
 #include "Shapes/BaseShapes.hpp"
@@ -40,12 +41,18 @@
 class SelectionNotAllAtomsInsideCuboidState : public ActionState {
 public:
-  SelectionNotAllAtomsInsideCuboidState(std::vector<atom*> _selectedAtoms, const Vector &_position, const Vector &_extension) :
+  SelectionNotAllAtomsInsideCuboidState(std::vector<atom*> _selectedAtoms, const Vector &_position, const Vector &_extension, const double _Xangle, const double _Yangle, const double _Zangle) :
     selectedAtoms(_selectedAtoms),
     position(_position),
-    extension(_extension)
+    extension(_extension),
+    Xangle(_Xangle),
+    Yangle(_Yangle),
+    Zangle(_Zangle)
   {}
   std::vector<atom*> selectedAtoms;
   Vector position;
   Vector extension;
+  double Xangle;
+  double Yangle;
+  double Zangle;
 };
 
@@ -65,4 +72,13 @@
 };
 
+void SelectionNotAllAtomsInsideCuboid(const Vector &position, const Vector &extension, const double Xangle, const double Yangle, const double Zangle) {
+  ValueStorage::getInstance().setCurrentValue(SelectionNotAllAtomsInsideCuboidAction::NAME, extension);
+  ValueStorage::getInstance().setCurrentValue("position", position);
+  ValueStorage::getInstance().setCurrentValue("angle-x", Xangle);
+  ValueStorage::getInstance().setCurrentValue("angle-y", Yangle);
+  ValueStorage::getInstance().setCurrentValue("angle-z", Zangle);
+  ActionRegistry::getInstance().getActionByName(SelectionNotAllAtomsInsideCuboidAction::NAME)->call(Action::NonInteractive);
+};
+
 Dialog* SelectionNotAllAtomsInsideCuboidAction::fillDialog(Dialog *dialog) {
   ASSERT(dialog,"No Dialog given when filling action dialog");
@@ -78,12 +94,25 @@
   Vector position;
   Vector extension;
+  double Xangle = 0.;
+  double Yangle = 0.;
+  double Zangle = 0.;
+  Matrix RotationMatrix;
 
   ValueStorage::getInstance().queryCurrentValue("position", position);
   ValueStorage::getInstance().queryCurrentValue(NAME, extension);
+  // check whether a rotation is given.
+  if (ValueStorage::getInstance().queryCurrentValue("angle-x", Xangle, true))
+    Xangle = 0.;
+  if (ValueStorage::getInstance().queryCurrentValue("angle-y", Yangle, true))
+    Yangle = 0.;
+  if (ValueStorage::getInstance().queryCurrentValue("angle-z", Zangle, true))
+    Zangle = 0.;
+  RotationMatrix.rotation(Xangle, Yangle, Zangle);
 
-  DoLog(1) && (Log() << Verbose(1) << "Unselecting all atoms inside a cuboid at " << position << " and extension of " << extension << "." << endl);
-  Shape s = translate(stretch(Cuboid(),extension),position);
+  DoLog(1) && (Log() << Verbose(1) << "Unselecting all atoms inside a rotated " << RotationMatrix << " cuboid at " << position << " and extension of " << extension << "." << endl);
+  Shape s = translate(transform(stretch(Cuboid(),extension),RotationMatrix),position);
+
   World::getInstance().unselectAllAtoms(AtomByShape(s));
-  return Action::state_ptr(new SelectionNotAllAtomsInsideCuboidState(selectedAtoms, position, extension));
+  return Action::state_ptr(new SelectionNotAllAtomsInsideCuboidState(selectedAtoms, position, extension, Xangle, Yangle, Zangle));
 }
 
@@ -95,14 +124,16 @@
     World::getInstance().selectAtom(*iter);
 
-  return Action::state_ptr(new SelectionNotAllAtomsInsideCuboidState(state->selectedAtoms, state->position, state->extension));
+  return Action::state_ptr(_state);
 }
 
 Action::state_ptr SelectionNotAllAtomsInsideCuboidAction::performRedo(Action::state_ptr _state){
   SelectionNotAllAtomsInsideCuboidState *state = assert_cast<SelectionNotAllAtomsInsideCuboidState*>(_state.get());
+  Matrix RotationMatrix;
 
-  Shape s = translate(stretch(Cuboid(),state->extension),state->position);
+  RotationMatrix.rotation(state->Xangle, state->Yangle, state->Zangle);
+  Shape s = translate(transform(stretch(Cuboid(),state->extension),RotationMatrix),state->position);
   World::getInstance().unselectAllAtoms(AtomByShape(s));
 
-  return Action::state_ptr(new SelectionNotAllAtomsInsideCuboidState(state->selectedAtoms, state->position, state->extension));
+  return Action::state_ptr(_state);
 }
 
Index: src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.hpp
===================================================================
--- src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.hpp	(revision bf38179e7a1590020bad970c4931116d7d7e9bbb)
+++ src/Actions/SelectionAction/NotAllAtomsInsideCuboidAction.hpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
@@ -17,4 +17,5 @@
 class SelectionNotAllAtomsInsideCuboidAction : public Action {
   friend void SelectionNotAllAtomsInsideCuboid(const Vector &position, const Vector &extension);
+  friend void SelectionNotAllAtomsInsideCuboid(const Vector &position, const Vector &extension, const double Xangle, const double Yangle, const double Zangle);
 
 public:
