@Override
	public void undo() throws CannotUndoException {
		super.undo();
		if (selectedManipulable instanceof Part) {
			Shape shape = selectedManipulable.getShape();
			if (shape instanceof TransformableShape) {
				TransformableShape s = (TransformableShape) shape;
				s.rotateBy(-rotationAngle);
				if (s instanceof Blob2D) {
					((Blob2D) s).update();
				}
				model.refreshPowerArray();
				model.refreshTemperatureBoundaryArray();
				model.refreshMaterialPropertyArrays();
				if (view.isViewFactorLinesOn())
					model.generateViewFactorMesh();
			}
		} else if (selectedManipulable instanceof Particle) {
		} else if (selectedManipulable instanceof Fan) {
		} else if (selectedManipulable instanceof HeatFluxSensor) {
			HeatFluxSensor heatFluxSensor = (HeatFluxSensor) selectedManipulable;
			newAngle = heatFluxSensor.getAngle();
			heatFluxSensor.setAngle(oldAngle);
		}
		view.setSelectedManipulable(selectedManipulable);
		view.repaint();
	}