code: def plot(self, numPoints=100):
      
      fig = plt.figure()
      ax = fig.add_subplot(111, projection='3d')
  
      # generate cylinder
      x = np.linspace(- self.dimensions[0]/2., self.dimensions[0]/2., numPoints)
      y = np.linspace(- self.dimensions[1]/2., self.dimensions[1]/2., numPoints)
      z = np.linspace(- self.dimensions[2]/2., self.dimensions[2]/2., numPoints)
  
      # plot
      Xc, Yc = np.meshgrid(x, y)
      ax.plot_surface(Xc, Yc, -self.dimensions[2]/2,
                      alpha=0.2, rstride=20, cstride=10)
      ax.plot_surface(Xc, Yc, self.dimensions[2]/2,
                      alpha=0.2, rstride=20, cstride=10)
      Yc, Zc = np.meshgrid(y, z)
      ax.plot_surface(-self.dimensions[0]/2, Yc, Zc,
                      alpha=0.2, rstride=20, cstride=10)
      ax.plot_surface(self.dimensions[0]/2, Yc, Zc,
                      alpha=0.2, rstride=20, cstride=10)
      Xc, Zc = np.meshgrid(x, z)
      ax.plot_surface(Xc, -self.dimensions[1]/2, Zc,
                      alpha=0.2, rstride=20, cstride=10)
      ax.plot_surface(Xc, self.dimensions[1]/2, Zc,
                      alpha=0.2, rstride=20, cstride=10)
  
      ax.set_xlabel("X")
      ax.set_ylabel("Y")
      ax.set_zlabel("Z")
  
      plt.title("{}".format(self))
      return fig, ax
docs: Specific plotting method for boxes.
  
      Only supports 3-dimensional objects.