Class STLGeomReader

  • All Implemented Interfaces:
    GeomReader, java.lang.Comparable

    public class STLGeomReader
    extends AbstractGeomReader
    A GeomReader for reading and writing geometry from/to a binary STL (STereoLithography) formatted geometry file.

    Modified by: Joseph A. Huwaldt

    Version:
    September 9, 2016
    Author:
    Joseph A. Huwaldt, Date: September 4, 2015
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String EXTENSION  
    • Constructor Summary

      Constructors 
      Constructor Description
      STLGeomReader()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int canReadData​(java.io.File inputFile)
      Method that determines if this reader can read geometry from the specified input file.
      boolean canWriteData()
      Returns true.
      java.lang.String getExtension()
      Returns the preferred file extension (not including the ".") for files of this GeomReader's type.
      boolean isUnitAware()
      This method always returns false as STL files do not encode the units that are being used.
      TriangleList read​(java.io.File inputFile)
      Reads in a binary STL formatted geometry file from the specified input file and returns a TriangleList object that contains the triangle geometry from the file.
      java.lang.String toString()
      Returns a string representation of the object.
      void write​(java.io.File outputFile, GeometryList geometry)
      Writes out an binary STL formatted geometry file for the geometry contained in the supplied geometry list.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • toString

        public java.lang.String toString()
        Returns a string representation of the object. This will return a brief description of the format read by this reader.
        Overrides:
        toString in class java.lang.Object
        Returns:
        A brief description of the format read by this reader.
      • getExtension

        public java.lang.String getExtension()
        Returns the preferred file extension (not including the ".") for files of this GeomReader's type.
        Returns:
        The preferred file extension for files of this readers type.
      • canReadData

        public int canReadData​(java.io.File inputFile)
                        throws java.io.IOException
        Method that determines if this reader can read geometry from the specified input file.
        Specified by:
        canReadData in interface GeomReader
        Overrides:
        canReadData in class AbstractGeomReader
        Parameters:
        inputFile - The input file containing the geometry to be read in.
        Returns:
        GeomReader.NO if the file format is not recognized by this reader. GeomReader.YES if the file has the extension ".geo" or ".mk5". GeomReader.MAYBE if the file has the extension ".lib".
        Throws:
        java.io.IOException - If there is a problem reading from the specified file.
      • read

        public TriangleList read​(java.io.File inputFile)
                          throws java.io.IOException
        Reads in a binary STL formatted geometry file from the specified input file and returns a TriangleList object that contains the triangle geometry from the file.

        WARNING: This file format is not unit aware. You must set the units to be used by calling "setFileUnits()" before calling this method!

        Specified by:
        read in interface GeomReader
        Overrides:
        read in class AbstractGeomReader
        Parameters:
        inputFile - The input file containing the geometry to be read in. May not be null.
        Returns:
        A TriangleList object containing the geometry read in from the file. If the file has no geometry in it, then this list will have no triangles in it (will have a size() of zero).
        Throws:
        java.io.IOException - If there is a problem reading the specified file.
        See Also:
        AbstractGeomReader.setFileUnits(javax.measure.unit.Unit)
      • write

        public void write​(java.io.File outputFile,
                          GeometryList geometry)
                   throws java.io.IOException
        Writes out an binary STL formatted geometry file for the geometry contained in the supplied geometry list. If the list contains triangles or lists of triangles, they are all written out to the file directly. If the list contains array based paneled geometry such as a PointVehicle or PointComponent, then all the arrays in these objects are converted into triangles and those triangles are written out to the file. If no triangle or point array based geometry can be found in the geometry list, then nothing will happen (the output file will not be created).

        The 80 byte header of the STL file is not used and is filled with zeros.

        WARNING: This format is not unit aware. The geometry will be written out in whatever its current units are! Make sure to convert to the desired units for the file before calling this method.

        Specified by:
        write in interface GeomReader
        Overrides:
        write in class AbstractGeomReader
        Parameters:
        outputFile - The output File to which the geometry is to be written. May not be null.
        geometry - The list of triangle or point array geometry to be written out. May not be null.
        Throws:
        java.io.IOException - If there is a problem writing to the specified file.
      • isUnitAware

        public boolean isUnitAware()
        This method always returns false as STL files do not encode the units that are being used. You must call setFileUnits to set the units being used before reading from a file of this format.
        Returns:
        This implementation always returns false.
        See Also:
        AbstractGeomReader.setFileUnits(javax.measure.unit.Unit)