IfcConvert: An application for converting ifc geometry into several file formats

Installation instructions for Windows, Linux and Mac OSX

Installation on other platforms

Usage

Command line arguments

IfcOpenShell IfcConvert 0.6.0 (OCC 7.3.0)
Usage: IfcConvert [options] <input.ifc> [<output>]

Converts (the geometry in) an IFC file into one of the following formats:
  .obj   WaveFront OBJ  (a .mtl file is also created)
  .dae   Collada        Digital Assets Exchange
  .glb   glTF           Binary glTF v2.0
  .stp   STEP           Standard for the Exchange of Product Data
  .igs   IGES           Initial Graphics Exchange Specification
  .xml   XML            Property definitions and decomposition tree
  .svg   SVG            Scalable Vector Graphics (2D floor plan)
  .ifc   IFC-SPF        Industry Foundation Classes

If no output filename given, <input>.obj will be used as the output file.


Command line options:
  -h [ --help ]                        display usage information
  --version                            display version information
  -v [ --verbose ]                     more verbose log messages
  -q [ --quiet ]                       less status and progress output
  --stderr-progress                    output progress to stderr stream
  -y [ --yes ]                         answer 'yes' automatically to possible 
                                       confirmation queries (e.g. overwriting 
                                       an existing output file)
  --no-progress                        suppress possible progress bar type of 
                                       prints that use carriage return
  --log-format arg                     log format: plain or json
  --log-file arg                       redirect log output to file

Geometry options:
  -j [ --threads ] arg (=1)            Number of parallel processing threads 
                                       for geometry interpretation.
  --plan                               Specifies whether to include curves in 
                                       the output result. Typically these are 
                                       representations of type Plan or Axis. 
                                       Excluded by default.
  --model                              Specifies whether to include surfaces 
                                       and solids in the output result. 
                                       Typically these are representations of 
                                       type Body or Facetation. Included by 
                                       default.
  --weld-vertices                      Specifies whether vertices are welded, 
                                       meaning that the coordinates vector will
                                       only contain unique xyz-triplets. This 
                                       results in a manifold mesh which is 
                                       useful for modelling applications, but 
                                       might result in unwanted shading 
                                       artefacts in rendering applications.
  --use-world-coords                   Specifies whether to apply the local 
                                       placements of building elements directly
                                       to the coordinates of the representation
                                       mesh rather than to represent the local 
                                       placement in the 4x3 matrix, which will 
                                       in that case be the identity matrix.
  --convert-back-units                 Specifies whether to convert back 
                                       geometrical output back to the unit of 
                                       measure in which it is defined in the 
                                       IFC file. Default is to use meters.
  --orient-shells                      Specifies whether to orient the faces of
                                       IfcConnectedFaceSets. This is a 
                                       potentially time consuming operation, 
                                       but guarantees a consistent orientation 
                                       of surface normals, even if the faces 
                                       are not properly oriented in the IFC 
                                       file.
  --center-model                       Centers the elements by applying the 
                                       center point of all placements as an 
                                       offset.Can take several minutes on large
                                       models.
  --center-model-geometry              Centers the elements by applying the 
                                       center point of all mesh vertices as an 
                                       offset.
  --model-offset arg                   Applies an arbitrary offset of form 
                                       'x;y;z' to all placements.
  --model-rotation arg                 Applies an arbitrary quaternion rotation
                                       of form 'x;y;z;w' to all placements.
  --disable-opening-subtractions       Specifies whether to disable the boolean
                                       subtraction of IfcOpeningElement 
                                       Representations from their 
                                       RelatingElements.
  --disable-boolean-results            Specifies whether to disable the boolean
                                       operation within representations such as
                                       clippings by means of IfcBooleanResult 
                                       and subtypes
  --enable-layerset-slicing            Specifies whether to enable the slicing 
                                       of products according to their 
                                       associated IfcMaterialLayerSet.
  --layerset-first                     Assigns the first layer material of the 
                                       layerset to the complete product.
  --include arg                        Specifies that the instances that match 
                                       a specific filtering criteria are to be 
                                       included in the geometrical output:
                                       1) 'entities': the following list of 
                                       types should be included. SVG output 
                                       defaults to IfcSpace to be included. The
                                       entity names are handled 
                                       case-insensitively.
                                       2) 'layers': the instances that are 
                                       assigned to presentation layers of which
                                       names match the given values should be 
                                       included.
                                       3) 'attribute <AttributeName>': products
                                       whose value for <AttributeName> should 
                                       be included
                                       . Currently supported arguments are 
                                       GlobalId, Name, Description, and Tag.
                                       
                                       The values for 'layers' and 'arg' are 
                                       handled case-sensitively (wildcards 
                                       supported).--include and --exclude 
                                       cannot be placed right before input file
                                       argument and only single of each 
                                       argument supported for now. See also 
                                       --exclude.
  --include+ arg                       Same as --include but applies filtering 
                                       also to the decomposition and/or 
                                       containment (IsDecomposedBy, 
                                       HasOpenings, FillsVoid, 
                                       ContainedInStructure) of the filtered 
                                       entity, e.g. --include+=arg Name "Level 
                                       1" includes entity with name "Level 1" 
                                       and all of its children. See --include 
                                       for more information. 
  --exclude arg                        Specifies that the entities that match a
                                       specific filtering criteria are to be 
                                       excluded in the geometrical output.See 
                                       --include for syntax and more details. 
                                       The default value is '--exclude=entities
                                       IfcOpeningElement IfcSpace'.
  --exclude+ arg                       Same as --exclude but applies filtering 
                                       also to the decomposition and/or 
                                       containment of the filtered entity. See 
                                       --include+ for more details.
  --filter-file arg                    Specifies a filter file that describes 
                                       the used filtering criteria. Supported 
                                       formats are '--include=arg GlobalId ...'
                                       and 'include arg GlobalId ...'. Spaces 
                                       and tabs can be used as 
                                       delimiters.Multiple filters of same type
                                       with different values can be inserted on
                                       their own lines. See --include, 
                                       --include+, --exclude, and --exclude+ 
                                       for more details.
  --no-normals                         Disables computation of normals. Saves 
                                       time and file size and is useful in 
                                       instances where you're going to 
                                       recompute normals for the exported model
                                       in other modelling application in any 
                                       case.
  --deflection-tolerance arg (=0.001)  Sets the deflection tolerance of the 
                                       mesher, 1e-3 by default if not 
                                       specified.
  --force-space-transparency arg       Overrides transparency of spaces in 
                                       geometry output.
  --angular-tolerance arg (=0.5)       Sets the angular tolerance of the mesher
                                       in radians 0.5 by default if not 
                                       specified.
  --generate-uvs                       Generates UVs (texture coordinates) by 
                                       using simple box projection. Requires 
                                       normals. Not guaranteed to work properly
                                       if used with --weld-vertices.
  --default-material-file arg          Specifies a material file that describes
                                       the material object types will haveif an
                                       object does not have any specified 
                                       material in the IFC file.
  --validate                           Checks whether geometrical output 
                                       conforms to the included explicit 
                                       quantities.
  --no-wire-intersection-check         Skip wire intersection check.
  --no-wire-intersection-tolerance     Set wire intersection tolerance to 0.
  --strict-tolerance                   Use exact tolerance from model. Default 
                                       is a 10 times increase for more 
                                       permissive edge curves and fewer 
                                       artifacts after boolean operations at 
                                       the expense of geometric detail due to 
                                       vertex collapsing and wire intersection 
                                       fuzziness.

Serialization options:
  --bounds arg                         Specifies the bounding rectangle, for 
                                       example 512x512, to which the output 
                                       will be scaled. Only used when 
                                       converting to SVG.
  --scale arg                          Interprets SVG bounds in mm, centers 
                                       layout and draw elements to scale. Only 
                                       used when converting to SVG. Example 
                                       1:100.
  --center arg                         When using --scale, specifies the 
                                       location in the range [0 1]x[0 1] around
                                       whichto center the drawings. Example 
                                       0.5x0.5 (default).
  --section-ref arg                    Element at which vertical cross sections
                                       should be created
  --elevation-ref arg                  Element at which vertical elevations 
                                       should be created
  --auto-section                       Creates SVG cross section drawings 
                                       automatically based on model extents
  --auto-elevation                     Creates SVG elevation drawings 
                                       automatically based on model extents
  --svg-xmlns                          Stores name and guid in a separate 
                                       namespace as opposed to data-name, 
                                       data-guid
  --svg-poly                           Uses the polygonal algorithm for hidden 
                                       line rendering
  --svg-project                        Always enable hidden line rendering 
                                       instead of only on elevations
  --door-arcs                          Draw door openings arcs for IfcDoor 
                                       elements
  --section-height arg                 Specifies the cut section height for SVG
                                       2D geometry.
  --section-height-from-storeys        Derives section height from storey 
                                       elevation. Use --section-height to 
                                       override default offset of 1
  --use-element-names                  Use entity instance IfcRoot.Name instead
                                       of unique IDs for naming elements upon 
                                       serialization. Applicable for OBJ, DAE, 
                                       and SVG output.
  --use-element-guids                  Use entity instance IfcRoot.GlobalId 
                                       instead of unique IDs for naming 
                                       elements upon serialization. Applicable 
                                       for OBJ, DAE, and SVG output.
  --use-element-numeric-ids            Use the numeric step identifier (entity 
                                       instance name) for naming elements upon 
                                       serialization. Applicable for OBJ, DAE, 
                                       and SVG output.
  --use-material-names                 Use material names instead of unique IDs
                                       for naming materials upon serialization.
                                       Applicable for OBJ and DAE output.
  --use-element-types                  Use element types instead of unique IDs 
                                       for naming elements upon serialization. 
                                       Applicable for DAE output.
  --use-element-hierarchy              Order the elements using their 
                                       IfcBuildingStorey parent. Applicable for
                                       DAE output.
  --site-local-placement               Place elements locally in the IfcSite 
                                       coordinate system, instead of placing 
                                       them in the IFC global coords. 
                                       Applicable for OBJ and DAE output.
  --y-up                               Change the 'up' axis to positive Y, 
                                       default is Z UP, Applicable for OBJ 
                                       output.
  --building-local-placement           Similar to --site-local-placement, but 
                                       placing elements in locally in the 
                                       parent IfcBuilding coord system
  --precision arg (=15)                Sets the precision to be used to format 
                                       floating-point values, 15 by default. 
                                       Use a negative value to use the system's
                                       default precision (should be 6 
                                       typically). Applicable for OBJ and DAE 
                                       output. For DAE output, value >= 15 
                                       means that up to 16 decimals are used,  
                                       and any other value means that 6 or 7 
                                       decimals are used.
  --print-space-names                  Prints IfcSpace LongName and Name in the
                                       geometry output. Applicable for SVG 
                                       output
  --print-space-areas                  Prints calculated IfcSpace areas in 
                                       square meters. Applicable for SVG output
  --edge-arrows                        Adds arrow heads to edge segments to 
                                       signify edge direction

follow the
development
on twitter