class_docstr: Structured environment version of the cutting 2D environment.
  The environment alternates between the two sub-steps:
  
  - Select cutting piece
  - Select cutting configuration (cutting order and cutting orientation)
  
  :param maze_env: The "flat" cutting 2D environment to wrap.
class_docstr_tok: ["Structured","environment","version","of","the","cutting","2D","environment",".","The","environment","alternates","between","the","two","sub-steps",":","-","Select","cutting","piece","-","Select","cutting","configuration","(","cutting","order","and","cutting","orientation",")",":","param","maze_env",":","The","``","flat","''","cutting","2D","environment","to","wrap","."]
docstr: Cutting rotation and cutting order selection step.
docstr_tok: ["Cutting","rotation","and","cutting","order","selection","step","."]
code: def _cutting_step(
      self, action: Dict[str, int]
  ) -> Tuple[Dict[str, np.ndarray], float, bool, Dict]:
      """Cutting rotation and cutting order selection step."""
      flat_action = {
          "piece_idx": self._action_0["piece_idx"],
          "cut_rotation": action["cut_rotation"],
          "cut_order": action["cut_order"],
      }
  
      self._flat_obs, self._last_reward, done, info = self.env.step(
          flat_action
      )
      self._flat_obs["ordered_piece"] = self._flat_obs["ordered_piece"]
  
      return (
          self._obs_selection_step(self._flat_obs),
          self._last_reward,
          done,
          info,
      )
  
imports: from copy import deepcopy
  from typing import Dict, Any, Union, Tuple, Optional, List
  import gym
  import numpy
  from maze.core.env.maze_action import MazeActionType
  from maze.core.env.maze_env import MazeEnv
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.structured_env import StructuredEnv, ActorID
  from maze.core.env.structured_env_spaces_mixin import StructuredEnvSpacesMixin
  from maze.core.wrappers.wrapper import Wrapper
  from .maze_env import maze_env_factory
label_desc: Use image node_id 7 for calling the StructuredCutting2DEnvironment obj's underlying member method code with example usage: obj._cutting_step(action) and returns: self,  self,  done,  info