def METHOD_NAME(self, stl_filename, name='main', plot=True):
    model_name = name
    skip_reading = self.gui._remove_old_geometry(stl_filename)
    if skip_reading:
        return
    model = read_stl(stl_filename, remove_elements_with_bad_normals=True,
                     log=self.gui.log, debug=False)
    #self.model_type = model.model_type
    nodes = model.nodes
    elements = model.elements
    normals = model.get_normals(elements, stop_on_failure=False)
    areas = model.get_area(elements, stop_on_failure=False)
    #nnormals = model.get_normals_at_nodes(elements)
    self.gui.nnodes = nodes.shape[0]
    self.gui.nelements = elements.shape[0]
    self.gui.log.info('nnodes=%s nelements=%s' % (self.gui.nnodes, self.gui.nelements))
    grid = self.gui.grid
    grid.Allocate(self.gui.nelements, 1000)
    points = numpy_to_vtk_points(nodes)
    self.gui.nid_map = {}
    #elem.SetNumberOfPoints(nnodes)
    assert nodes is not None
    unused_nnodes = nodes.shape[0]
    xmax, ymax, zmax = nodes.max(axis=0)
    xmin, ymin, zmin = nodes.min(axis=0)
    self.gui.log.info('xmax=%s xmin=%s' % (xmax, xmin))
    self.gui.log.info('ymax=%s ymin=%s' % (ymax, ymin))
    self.gui.log.info('zmax=%s zmin=%s' % (zmax, zmin))
    dim_max = max(xmax-xmin, ymax-ymin, zmax-zmin)
    self.gui.create_global_axes(dim_max)
    etype = 5  # vtkTriangle().GetCellType()
    create_vtk_cells_of_constant_element_type(grid, elements, etype)
    grid.SetPoints(points)
    grid.Modified()
    # loadSTLResults - regions/loads
    self.gui.scalar_bar_actor.VisibilityOff()
    self.gui.scalar_bar_actor.Modified()
    cases = {}
    self.gui.isubcase_name_map = {}
    ID = 1
    form, cases, node_ids, element_ids = self._fill_stl_case(
        cases, ID, elements, nodes, normals, areas)
    self.gui.node_ids = node_ids
    self.gui.element_ids = element_ids
    self.gui._finish_results_io2(model_name, form, cases)