Save facets into file STL.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
||
| character(len=*), | intent(in) | :: | file_name | File name. |
||
| logical, | intent(in) | :: | is_ascii | Sentinel to check if file is ASCII. |
subroutine save_facets_into_file_stl(self, file_name, is_ascii)
!< Save facets into file STL.
class(aabb_object), intent(in) :: self !< AABB.
character(*), intent(in) :: file_name !< File name.
logical, intent(in) :: is_ascii !< Sentinel to check if file is ASCII.
integer(I4P) :: file_unit !< File unit.
integer(I4P) :: f !< Counter.
if (self%facets_number > 0) then
call open_file
if (is_ascii) then
do f=1, self%facets_number
call self%facet(f)%save_into_file_ascii(file_unit=file_unit)
enddo
else
do f=1, self%facets_number
call self%facet(f)%save_into_file_binary(file_unit=file_unit)
enddo
endif
call close_file
endif
contains
subroutine open_file()
!< Open STL file.
if (is_ascii) then
open(newunit=file_unit, file=trim(adjustl(file_name)), form='formatted')
write(file_unit, '(A)') 'solid '//trim(adjustl(file_name))
else
open(newunit=file_unit, file=trim(adjustl(file_name)), access='stream', form='unformatted')
write(file_unit) repeat('a', 80)
write(file_unit) self%facets_number
endif
endsubroutine open_file
subroutine close_file()
!< Close STL file.
if (is_ascii) write(file_unit, '(A)') 'endsolid '//trim(adjustl(file_name))
close(unit=file_unit)
endsubroutine close_file
endsubroutine save_facets_into_file_stl