# Upload Options

Within Paragon Design Layout mode, it's possible to upload certain files to expedite 3D layout creation.&#x20;

Additional methods for referencing external files in Paragon layouts are documented in the following topics:&#x20;

* [PDF Underlays](/layout/layout-overview-1/interface-overview/layout-options-toolbar/pdf-underlay.md)&#x20;
* [Import DXF Work Lines](/layout/how-to/work-lines.md#import-dxf-work-lines)

## Upload IFC Files (BETA)

Supported IFC (Industry Foundation Class) files can be uploaded into Paragon Design to expedite layout creation by automatically inserting Paragon objects into layouts.&#x20;

The following objects are supported:&#x20;

* Bearing Envelopes
* Roof Planes

{% hint style="danger" %}
Beta Feature

This feature requires IFC files to follow certain guidelines to successfully upload into Paragon. If your file fails to upload, please email the .ifc file to <help@paragontruss.com> to help us refine and improve the IFC upload feature.
{% endhint %}

<figure><img src="/files/bAj0UbTdE2BIC76rG3pD" alt=""><figcaption></figcaption></figure>

### IFC File Guidelines

Since this is a specialized feature, your IFC files must follow certain guidelines to be successfully imported. If your file depends on objects Paragon does not support, the import may fail or be incomplete.

### Scope

Paragon tries to generate two [Layout objects](https://docs.paragontruss.com/layout/reference/layout-composition) from IFC files: Roof Planes and Bearing Envelopes. No other objects will ever be generated by importing IFC files.

<details>

<summary>We only support a limited subset of all IFC objects. IFC files that depend upon objects that we do not support for the definition of roof- and wall-related objects may not import. Expand for the list of objects supported for IFC file uploads in Paragon:</summary>

* ActorRole
* Application
* ArbitraryClosedProfileDef
* ArbitraryProfileDefWithVoids
* Axis2Placement (2D and 3D)
* BooleanClippingResult
* BooleanResult
* BuildingElementPart
* BuildingStorey
* CartesianPoint
* CartesianPointList3D
* CartesianTransformationOperator (2D and 3D)
* CircleProfileDef
* ClosedShell
* CompositeCurve
* CompositeCurveSegment
* ConnectedFaceSet
* ConversionBasedUnit
* Covering
* DimensionalExponents
* Direction
* ElementAssembly
* ExtrudedAreaSolid
* Face
* FaceBound
* FaceOuterBound
* FacetedBrep
* GeometricCurveSet
* GeometricRepresentationContext
* GeometricRepresentationSubContext
* HalfSpaceSolid
* LocalPlacement
* MappedItem
* MeasureWithUnit
* Member
* MonetaryUnit
* OpenShell
* Organization
* OwnerHistory
* Person
* PersonAndOrganization
* Plane
* Plate
* PolygonalBoundedHalfSpace
* PolyLine
* PolyLoop
* ProductDefinitionShape
* ProfileDef
* RectangleProfileDef
* RelAggregates
* RelContainedInSpatialStructure
* RepresentationMap
* Roof
* ShapeRepresentation
* ShellBasedSurfaceModel
* SIUnit
* Slab
* Space
* TriangulatedFaceSet
* UnitAssignment
* Wall
* WallStandardCase

</details>

### Roof Planes

Paragon attempts to construct Roof Planes from [Slabs](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSlab.htm) where the [predefined type](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSlabTypeEnum.htm) is ROOF or NOTDEFINED and from [Roofs](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoof.htm) (hereafter, Slabs). For each Slab, a solid is constructed using the standard procedure (described below). Each Slab is then converted into polygons representing the Roof Planes by taking the faces that at least partially face upward. If the Slab is less than 3.5" thick, then we follow the same procedure but use the faces that at least partially face downward instead, selecting the single face with the largest area.

In short, we use the top faces of Slabs that are at least 3.5" thick and the largest bottom face for all others. 3.5" is the minimum thickness that a Slab could be to contain part of a roof truss within it (thus making the roof plane be the top face). Otherwise, the Slab clearly isn't supposed to contain the truss but rather bound it, hence why we use the bottom face.

Each face is then passed to [our standard polygon to Roof Plane conversion process](https://designserver.paragontruss.com/api-docs/#tag/layouts/PUT/api/public/projects/%7BprojectGuid%7D/roofPlanes). Slabs that we are unable to turn into Roof Planes during the import process are, in general, ignored rather than throwing an error.

Note that Slabs intended to represent Ceiling Planes will be imported as Roof Planes.

### Bearing Envelopes

Paragon attempts to construct Walls from [Walls](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcWall.htm), [WallStandardCases](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcWallStandardCase.htm), and [BuildingElementParts](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcBuildingElementPart.htm) (hereafter, Walls). For each Wall, a solid is constructed using the standard procedure (described below). If the solid is not convex, we attempt to construct and use a convex hull. Each Wall is then converted to a Bearing Envelope.

Walls in Paragon must have a rectangular footprint and have top and bottom heights. Because of that, we don't support Walls with sloped top or bottom faces. To account for the potential for sloped faces when importing IFC files, we determine the top and bottom elevations by taking the height of the vertices of the faces that face the most up and down of each Wall that produce the smallest solid. For instance, if a Wall has bottom faces that slope from 0' to 1' and top faces that slope from 8' to 10', the Wall produced from it will have a bottom elevation of 1' and a top elevation of 8'.

The rectangular footprint of the constructed Wall is a rectangle that contains all of the points of the top face of the Wall solid cut off at the top height.

Each Wall is then added to the Layout. Walls that we are unable to turn into Walls during the import process are, in general, ignored rather than throwing an error.

### Constructing Solids

We attempt to construct the proper 3D geometry of each object that we want to use, but we try to be flexible if the geometry is wrong. If an object only has one face, we extrude that face upward slightly to construct a valid 3D solid (less than 3.5” so that the bottom face original to the file is used). If an object has extra faces (or can't form a valid solid for other reasons), we construct the convex hull of the faces that we have and use that.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paragontruss.com/layout/reference/upload-options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
