load_from_file_ascii Subroutine

private subroutine load_from_file_ascii(self, file_unit)

Load facet from ASCII file.

Arguments

Type IntentOptional AttributesName
class(facet_object), intent(inout) :: self

Facet.

integer(kind=I4P), intent(in) :: file_unit

File unit.


Source Code


Source Code

   subroutine load_from_file_ascii(self, file_unit)
   !< Load facet from ASCII file.
   class(facet_object), intent(inout) :: self      !< Facet.
   integer(I4P),        intent(in)    :: file_unit !< File unit.

   call load_facet_record(prefix='facet normal', record=self%normal)
   read(file_unit, *) ! outer loop
   call load_facet_record(prefix='vertex', record=self%vertex_1)
   call load_facet_record(prefix='vertex', record=self%vertex_2)
   call load_facet_record(prefix='vertex', record=self%vertex_3)
   read(file_unit, *) ! endloop
   read(file_unit, *) ! endfacet
   contains
      subroutine load_facet_record(prefix, record)
      !< Load a facet *record*, namely normal or vertex data.
      character(*),     intent(in)  :: prefix       !< Record prefix string.
      type(vector_R8P), intent(out) :: record       !< Record data.
      character(FRLEN)              :: facet_record !< Facet record string buffer.
      integer(I4P)                  :: i            !< Counter.

      read(file_unit, '(A)') facet_record
      i = index(string=facet_record, substring=prefix)
      if (i>0) then
         read(facet_record(i+len(prefix):), *) record%x, record%y, record%z
      else
         write(stderr, '(A)') 'error: impossible to read "'//prefix//'" from file unit "'//trim(str(file_unit))//'"!'
      endif
      endsubroutine load_facet_record
   endsubroutine load_from_file_ascii


aabb_assign_aabb aabb_node_assign_aabb_node aabb_tree_assign_aabb_tree add_facets add_facets add_vertex_occurrence allocate_facets analize bmax bmin build_connectivity check_normal check_vertices_occurrencies cli_parse cli_parse cli_parse cli_parse cli_parse cli_parse close_file closest_point closest_point compute_bb_from_facets compute_metrix compute_metrix compute_normal compute_normals compute_octants compute_octants compute_volume create_aabb_tree destroy destroy destroy destroy destroy distance distance distance distance distance distance_from_facets distance_from_facets do_ray_intersect do_ray_intersect do_ray_intersect edge_connection_in_other_ref facet_assign_facet file_stl_assign_file_stl first_child_node first_node flip_edge has_facets has_facets initialize initialize initialize initialize initialize is_allocated is_inside is_point_inside_polyhedron_ri is_point_inside_polyhedron_sa load_facets_number_from_file load_from_file load_from_file_ascii load_from_file_binary load_header_from_file make_normal_consistent mirror_by_matrix mirror_by_matrix mirror_by_normal mirror_by_normal nodes_number nodes_number_at_level open_file parent_node ray_intersections_number ray_intersections_number ray_intersections_number resize resize reverse_normal reverse_normals rotate_by_axis_angle rotate_by_axis_angle rotate_by_matrix rotate_by_matrix sanitize_normals save_facets_into_file_stl save_facets_into_file_stl save_geometry_tecplot_ascii save_geometry_tecplot_ascii save_geometry_tecplot_ascii save_header_into_file save_into_file save_into_file_ascii save_into_file_binary save_into_file_stl save_trailer_into_file solid_angle statistics tetrahedron_volume translate translate update_connectivity update_extents update_extents vertex vertex_global_id