Skip to content

IFC Parsing Setup (IFC PS) ​

Why this exists

The IFC standard is open and versatile, and every BIM application exports it in its own way. What one exporter calls REFERENCE another writes as a property set value, and a stud can be recognised by its name in one file and by its profile in the next. An IFC Parsing Setup is how you tell produuz.it to read your files.

A company can have several setups, and each project uses one version of one. Open them in Projects Settings → IFC Parsing Setups, in the company menu under Settings. A setup that projects use is never changed in place: saving it creates a new version. See Versions.

The ? button at the top of the editor opens the help panel on the right, with what a setup is and how it is read. Tabs, sections and settings that have a longer explanation have their own ?, and the panel follows whatever you pressed last. The panel stays closed until you open it, and the editor remembers whether you left it open.

Let Claude write it for you

Building a setup from scratch is the slowest part of onboarding, and it is what the Claude connector is most useful for. Give Claude the property list of a few elements from your BIM application, describe your panels in your own words, and ask it for the setup. It writes a JSON file you upload with the UPLOAD button, and you check it tab by tab before saving.

See: The setup file (JSON) · Claude connector (MCP)

How a setup is organised ​

The editor has seven tabs, in this order:

TabWhat you set there
Hierarchy and projectHow the file is split into modules and panels, where the names, phases and batches come from, and which assemblies are produced at all
Custom part branchesYour own kinds of part beyond the built-in ones
Panel part categoriesWhich elements are rails, studs, plates, bricks, openings and areas
Steel cage part categoriesThe same, for the steel cage flow
Part propertiesWhere each value of a part is read from
Custom part classesKinds of part you tell apart inside a category, and what they do to the panel measurements
Operations and machinesWhich elements are nail lines, cuts and drills, and what the machine files read

The filter box at the top left of each tab searches the settings by name, and also by the values inside their rules, so typing STIJL lands on every rule that uses it. The two tabs that hold a single list, custom part branches and custom part classes, show the list straight away.

Almost every setting changes what is stored on each design when it is analysed: the parts list, the part categories and branches, the measurements and the 3D viewer. Two kinds of section are different, and say so with a chip:

ChipWhat it means
Files onlyA change here only reaches the machine files, drawings and reports made from then on, which read the setup every time. Moving a project to a version that differs only here analyses nothing.
SplitThe setting is also read the next time the IFC files of a project are split.

The IFC Parsing Setup editor

  1. The seven tabs.
  2. The filter, and the sections of the tab with how many settings each holds.
  3. A setting with its rules, and its help button.
  4. A rule: property, type of match and value. A part matches the setting when any one of its rules matches.
  5. A rule that reads one property set only. See Reading from a specific property set.
  6. The help panel. It follows the last help button you pressed.

The two kinds of entry ​

Almost everything in a setup is one of two things.

Rules ​

Used by categories, by the assembly filter and by the machine flags. Each rule has three fields:

  • IFC Prop — the property to look into.
  • Type of match — Match full word, Match prefix or Contains word.
  • Value — what to look for.

A part matches the setting when any one of its rules matches.

Example

Two rules on the Top Rail Wood category:

IFC PropType of matchValue
REFERENCEMatch full wordTOPRAIL
REFERENCEMatch prefixTR

Parts with a REFERENCE of TOPRAIL, TR, TR12 or TR45 are top rails. TOPRAIL2, TOP_RAIL and 12TR are not.

Property names ​

Used by the properties. Here you only list the IFC property names that may hold the value, in order of preference. The first one present on the element wins.

Example

Two names on the Zone (layer) property, WorkPlane and Layer:

PartWorkPlaneLayerDetected zone
P1121
P2(absent)33
P31(absent)1

Case does not matter

Property names and values are matched case-insensitively. Reference, REFERENCE and reference are the same thing.

Reading from a specific property set ​

By default produuz.it looks for a property anywhere in the element: in any of its property sets, and among the element's own attributes. That is what you want almost always.

It becomes a problem when the same property name exists in two property sets with different values — the exporter's REFERENCE and your own REFERENCE, say. Then it is luck which one is read.

Every category rule, every filter and flag rule, and every property name has a Read from a specific property set checkbox for that case. The rules of custom part branches and custom part classes do not have it.

CheckboxFieldWhat is read
unticked—The property wherever it appears. The normal case.
tickedTekla_CommonThat property set only. Another set carrying a property of the same name is ignored.
ticked(left empty)The element's own attributes only: name, ifc_tag, ifc_id, object_type, description.

Tick it when you have a reason to. An unticked entry behaves exactly as it always has, and setups saved before this existed are untouched.

Hierarchy and project ​

How the file is split, what the pieces are called, and which of them you actually produce.

Levels detection ​

Says how elements are grouped into modules, assemblies and subassemblies. Each level has a Detection system and a Value: By IFC class (usually IfcElementAssembly), By part property, for exporters that write no containers at all, or By assembly property. When Update designs splits a building IFC, the Standard engine works with By IFC class and By part property on the assembly level, and the Legacy engine only with By IFC class. See Split building IFCs.

What the subassembly level finds, and what happens to it, is explained in Subassemblies.

Unit and project properties ​

Levels detection above says how a module and an assembly are recognised. These say what is read from each one once it has been: what it is called, which phase and batch it belongs to, and any extra values of yours that should travel with it.

They are read off the container — the module or the assembly — and not off its parts. Everything read off a part is in the Part properties tab.

Leave one empty and produuz.it falls back to its own default, which for a name is the container element's own name.

Module name ​

The properties holding the module design name, for example Modulenummer. Instances of the same design share this value.

Module unit ID ​

The properties holding the unique id of each module instance. Without it, modules sharing a name are merged into one and you get a warning.

It must be unique within the project, across all its IFC files. A unit ID is how produuz.it recognises a module from one file to the next: two modules with the same unit ID are taken as the same module and counted once.

Assembly name ​

The properties holding the panel name. Left empty, the container's own name is used.

Assembly unit ID ​

The properties holding the unique id of each panel instance, such as the element number your customer uses. Each assembly unit keeps it when it is generated, and it is used to recognise the same panel in a later IFC file.

It must be unique within the project, across all its IFC files: two panels with the same unit ID are taken as the same panel and counted once. Two buildings made from the same model need different unit IDs, for example A-101 and B-101. See How each file counts.

Phase Name ​

The property holding the phase a panel belongs to. Phases and batches are created from these values when the file is split.

Batch Name ​

The property holding the batch a panel belongs to.

Auto Parsed Client Meta ​

Properties copied onto the design as client data when the file is analysed. Useful for anything of yours that has no field of its own.

Module filter ​

The splitter always takes out everything the file holds: the modules, the assemblies in them and the assemblies outside them. Two lists leave modules out.

Split only these modules ​

Leave it empty and every module is split. With rules in it, only the modules matching one of them are split out as module IFCs.

Never split these modules ​

Modules matching one of these are never split out, even when the first list keeps them. The drop list always wins.

A module that is not split gives no module IFC and no module design. Its assemblies are still split, as the Assembly filter says.

A rule reads the module's name with the prop name, and the properties of its first assembly, such as the module number.

Example

Never split these modules: name starts with TEST

You get every module except the test ones, and the assemblies of the test modules are still split.

Assembly filter ​

A project file usually holds more than you produce: foundations, in-situ concrete, the building next door. Two lists decide what the splitter takes out of it.

Split only these assemblies ​

Leave it empty and every assembly is split. With rules in it, only the assemblies matching one of them are split out.

Never split these assemblies ​

Assemblies matching one of these are never split out, even when the first list keeps them. The drop list always wins, which is how you keep a whole prefix and still leave a few names out of it.

An assembly that is not split leaves nothing behind: no IFC file, no design, and nothing in the phase and batch counts.

Example

Split only these assemblies: ASSEMBLY_PREFIX starts with WA

Never split these assemblies: name contains _TEST

You get every wall except the ones whose name carries _TEST. Roofs, floors and everything else in the file are left alone.

Custom part branches ​

Branches are kinds of part beyond the built-in timber and plate: windows, connectors, airtightness, electrical, plumbing.

Each branch has a name, its own rules, the geometry it resembles — wood-like, plate-like or generic, so drawings, counts and cutting lists know how to treat it — and two switches.

Logistics enabled ​

The parts of this branch reach the parts list and go through logistics.

Counts in the panel measurements ​

The parts of this branch take part in the panel width, height, thickness and surface.

This exists because a branch is recognised before a part falls back to timber, plate or steel from its category. A part your setup recognises perfectly well as a window frame or a cladding profile can therefore have no category at all, and a part with no category is outside every measurement — which is why a panel can read thinner or smaller than it is, with no warning.

Leave it off for brackets, connectors and anything that sticks out past the frame: counting those makes the panel read wider and taller than it is. Turn it on for cladding, window frames and layers that are really part of the panel.

The measurements are not only a report figure

The rack loads are drawn from them. The width decides how many panels fit in a rack row and the thickness how deep the stack builds, so a panel measured short is a rack plan that does not fit on the floor. See: Delivery & Racks

It only decides whether the part takes part at all

Which measurements it is then left out of is a custom part class job. A window frame that should set the thickness but add no surface gets the switch here and a class with Ignore in surface. The branch says whether the part participates; the class says what it is out of. See: Custom part classes

Both switches are off by default

Turning this on changes the measurements of every panel holding parts of that branch, from its next analysis. Nothing moves until you tick it.

Panel part categories ​

The elements that make up a prefabricated panel. Every rule here matches the raw IFC properties of the element — its Name, Reference, Material and the rest, exactly as the modeller exported them.

Frame ​

Top Rail Wood ​

The horizontal wood at the top of the frame. The studs are nailed into it from above and the panel height is measured from its outer face.

Bottom Rail Wood ​

The horizontal wood at the bottom of the frame. The panel's zero height is its outer face.

Extra Top Wood ​

Woods over the top rail, usually fitted after the studs are nailed.

Extra Bottom Wood ​

Woods below the bottom rail, usually fitted after the studs are nailed.

Wood profile ​

Any wood of the frame that is not a rail, a batten or an extra piece: the studs, noggins and diagonals. This is the category the framing nail matrix applies to.

Extra Frame Wood profile ​

Additional frame woods that are not part of the standard framing.

Wood Batten ​

Battens fixed on the panel.

Plates ​

Plate ​

A sheet fixed on a face of the frame: OSB, plasterboard, fibreboard. Its layer decides the zone it is machined in.

Core Plate ​

A plate inside the frame rather than on a face, such as a shear panel.

Other parts ​

Bricks / Stones ​

Single bricks or stones.

Opening ​

Placeholders for doors and windows. They are not produced; they tell the machines where the frame has a hole and give the reports their opening list.

Areas and flags ​

Elements that are not produced but change how a panel is handled.

Lockout Area ​

Areas the machine must not work on.

Isolated Area ​

Areas that carry insulation.

Skip Framing Wood ​

Parts that would fall into the frame by geometry but must not be counted as framing wood.

Hiding and ignoring a part are on the classes now

Hidden Material and Ignored Part used to be categories here. They never said what a part is, they said how to treat it, so they are class behaviours — Ignore this part completely and Hide in the 3D viewer. Setups that had the old categories were moved across and behave exactly as they did.

Not Isolated Area is gone too. Nothing ever read it.

Steel cage part categories ​

A secondary flow. Leave it empty if you do not produce steel cages.

Top Steel Profile ​

Bottom Steel Profile ​

Steel Profile ​

Steel Plate ​

Welding Seam ​

Compute holes ​

Whether the holes of the profile are computed for the machine file.

Assembly ID Level1 ​

Assembly ID Level2 ​

The two levels of assembly id of a steel cage.

Part properties ​

Where produuz.it reads each value of a part from. Each entry is a list of IFC property names, tried in order.

Identity ​

Part Name ​

The name produuz.it uses for the part, shown in the parts list, the reports and the machine file templates.

Leave it empty and the part keeps the name the IFC element itself carries. Fill it in when the useful name lives in a property set instead, for example ELEMENT_NAME or Beschrijving.

  • The IFC name is always kept. It stays visible in the part drawer, in the Unknown parts dialog of the viewer, and as its own optional column in the parts list.
  • It does not change how parts are classified. The category and branch rules always match against the raw IFC properties. To match on the property you mapped here, add a rule on that property's own key.

Reference ​

An id expected to be the same across parts of the same shape. Usually reference in Tekla Structures, and available in other exporters too.

One reference is one shape within the project: two parts with different shapes must never share a reference.

Material Name ​

The material of the part.

Profile Name ​

The name of the shaped section, for profiles that are not rectangular.

Profile Joined ​

Whether the profile is extended or joined to another one.

Zone (layer) ​

The panel layer a part belongs to. 0 is the frame, and the layers on each face are numbered outwards from it: 1, 2 on the outside face (the front) and -1, -2 on the inside face (the back). The zones decide which face of the panel is its front, in the viewer, the drawings and the machine files. See Panel Sides and Coordinates.

Most IFC files write that layer with a letter instead of a sign, usually F for the front face and B for the back one. produuz.it reads the letter: a value holding a B becomes a negative zone, and anything else stays positive. So F must be the outside face and B the inside face.

IFC valueDetected zone
F11
F22
B1-1
B2-2
Back2-2
11
-1-1

Letters and other characters are stripped, so only the B changes the result. A value that already carries a minus sign is used as it is.

WARNING

The B rule applies to every numeric property, not only the zone. Keep a B out of the values you map to Nail/Screw CTC, Mill/Saw depth, Isolation order number and Tool ID, because it would turn them negative.

Positive side zones ​

Negative side zones ​

BTLx only. BTLx layer numbers come as plain numbers with no sign, so these two rule lists declare which layers belong to each face of the panel.

Details ​

Finish ​

The finish of the part.

Comment ​

A free comment shown with the part.

Weight (kg) ​

The weight of the part in kg. Some exporters write it in the element property sets (Weight, GEWICHT), others export only the volume.

Volume (m3) ​

The volume of the part in m³. Exported by nearly every application, and what a weight can be derived from when the exporter writes none.

Isolation order number ​

The order in which insulation areas are filled.

Custom part classes ​

A category says what a part is: a stud, a rail, a plate. A class says how your factory treats it. They are two different questions, and a part answers both at once.

Classes are entirely your own. Nothing is built in and nothing is detected automatically: a part is an I-beam only because a rule you wrote says so.

Give each class a name and add the rules that recognise it, with the same kind of rule as the categories. A part can match several classes. Its name is the first class in the list whose rules match, so put the more specific classes first. Its behaviours add up from every class it matches. A part that matches no class simply has none, and that is normal.

A class does two things.

Its name is what other settings look up when they behave differently per kind of part — the framing nail matrix of the machine setups first of all. See: Mobi One

Its behaviours say what the class does to the panel measurements. That is the Behaviours button on each class.

Behaviours ​

Every panel carries four measurements: its width, its height, its thickness and its surface. By default every part counts in all four. A behaviour takes the parts of one class out of one of them — or out of produuz.it altogether.

Whole part

BehaviourWhat it does
Ignore this part completelyThe part never reaches the parts list, the reports or the machine files. Use it for helper geometry, annotations and anything the modeller exported by accident.
Hide in the 3D viewerThe part is still measured and still produced, it is only not drawn. Use it for insulation, foils and fillers that would cover the frame.

Measurements

BehaviourWhat it leaves the part out of
Ignore in surfaceThe net area, the gross area and the opening areas of the panel
Ignore in width (X)The width of the panel
Ignore in height (Y)The height of the panel
Ignore in thickness (Z)The thickness of the panel

They are all off by default, and off means the part counts — which is what every part did before behaviours existed. Turning none on changes nothing.

The measurements are not only a report figure

The rack loads are drawn from them. The width decides how many panels fit in a rack row and the thickness how deep the stack builds, so a panel measured short is a rack plan that does not fit on the floor. See: Delivery & Racks

The four are separate because the measurements are separate, and that is what makes the useful cases possible.

Placeholder layers

The case behaviours were built for. Some modellers add a layer to a panel that is not produced but occupies the space a real one will take — an insulation layer, a finish, a service cavity.

That layer has to count for the thickness, because the panel really is that thick. It must not count for the surface, because nothing was produced.

Give it a class, turn on Ignore in surface, Ignore in width and Ignore in height, and leave Ignore in thickness off. The panel keeps its real thickness and its surface stops counting a layer nobody built.

A part that sticks out

A bracket or an anchor that reaches past the edge of the panel makes it read wider than it is. Give it a class and turn on Ignore in width, and only that one. It still counts everywhere else.

The class row shows what it ignores without opening anything, so a setup is readable at a glance.

A custom part class and its Behaviours dialog

  1. The summary of what the class ignores.
  2. Behaviours opens the dialog.
  3. The surface: the net, gross and opening areas.
  4. The three dimensions. For a placeholder layer, leave the thickness on.

When the numbers change

Panel measurements are worked out during the analysis of a design, not when you look at them. Saving the setup relaunches the analysis of the projects that use it, and the new numbers appear when it finishes.

If your company has Launch analysis automatically turned off in the company settings, nothing is relaunched and the old numbers stay until you launch the analysis yourself.

Operations and machines ​

Nail lines, saw cuts, drills and glue are modelled as elements too. These rules tell them apart from parts, and the properties below feed the machine files directly.

They are never measured

An operation says what a machine does, not what the panel is made of, so nothing here counts towards the width, height, thickness or surface of a panel. A saw mark that hangs below the bottom rail does not make the panel taller.

Operation lines ​

Frame Nail Lines ​

A group of frame nails represented as a line. The line goes through the heads of the nails.

Frame Nail Singles ​

A single frame nail represented as a line. The line goes through the body of the nail.

Plate Nail Lines ​

The same as frame nail lines, for nails into the plates.

Plate Screw ​

Lines representing screws, read like the nail lines.

Glue lines ​

Glue lines, used for bricks.

Glue areas ​

Areas to be covered with glue.

Cutting and milling ​

Frame Saw ​

Saw cuts on the frame.

Frame Drill ​

Drills on the frame.

Milling ​

Milling lines.

Sawing ​

Sawing lines on the plates.

Drilling ​

Drilling operations.

Machine parameters ​

Nail/Screw CTC ​

The centre-to-centre distance in nail and screw lines.

Mill/Saw depth ​

The depth of a milling or sawing line.

Tool ID for mob2 nailing ​

The tool the MOB2 machine must use for the nailing.

Frame Saw Size ​

The side of the frame the saw works on.

Brick Type ​

The type of the brick.

Machine flags ​

Each of these has an IFC property and, beside it, a BTLx rule list that does the same job for BTLx files.

Bricks: Machine Flag ​

Bricks: Machine Flag (BTLx) ​

A brick that is machine built rather than laid by hand.

Isolation: Machine Flag ​

Isolation: Machine Flag (BTLx) ​

Insulation applied by the machine.

Battens: Machine Flag ​

Battens: Machine Flag (BTLx) ​

Battens fitted by the machine.

Milling: V-Mill ​

Milling: V-Mill (BTLx) ​

A milling line that must be done as a V-mill.

Skip Framing Wood is on the other tab

It follows the same pattern — one IFC property and one BTLx rule list beside it — but it sits with the areas and flags, on Panel part categories.

BTLx files ​

BTLx files are read with the same setup, with two differences:

  • No property sets. BTLx parts carry plain attributes, so the Read from a specific property set checkbox is not offered on the BTLx rules, and a rule that names a property set never matches a BTLx part.
  • Zones need declaring. BTLx layer numbers have no sign, so the face of the panel comes from the Positive side zones and Negative side zones rules instead of from a letter.

The settings that are BTLx-only are marked with a BTLx chip in the editor.

Versions ​

A setup is shared by every project that uses it, and the machine files, drawings and reports of those projects read it every time they are made. So a setup that projects use is never changed in place.

Saving ​

The setup is validated before it is saved. If something is missing — a rule with an empty value, typically — you get a message and the editor opens the tab holding the offending field and scrolls to it.

  • A version that projects use shows a banner, Version 3 is used by 24 projects. Saving it opens Publish version 4: it lists the sections you changed with their chips and lets you write what changed. Publishing creates version 4 and no project changes: they all stay on version 3. Nothing is analysed.
  • A version that no project uses is saved as it is, for example a version you have just published and not used yet.
  • The name, the default and the locks belong to the setup and all its versions. Change them from the setups list: Rename, Set as default, Lock. They never analyse anything.

New projects start on the newest version of the default setup, from the moment it is published.

Upgrading projects to a version ​

Moving a project to another version is the only way a change to a setup analyses designs. Choose Upgrade projects in the ⋮ menu of the setup row, or choose Publish and upgrade projects… when you publish.

The window lists the versions with their notes, and the projects that are on an older version. For each project it shows how many designs will be analysed, how many units are in production and how many are ready. The button says what the move costs, Upgrade 2 · analyse 228 designs, and the window estimates how long it takes. Projects with units in production are marked and are never ticked for you.

  • When the two versions differ only in Files sections, the window says Files only. No analysis. and the move analyses nothing.
  • Archived projects keep their version for good. They are counted, and cannot be moved.
  • Changing the setup in the project form is the same move for one project. When designs would be analysed, Save asks first and shows the same figures.
  • When Analyse new IFC files automatically is off for your company (Company → Viewer settings), you launch every analysis by hand, so upgrading a project analyses nothing. The window says how many designs need an analysis; run it from the Designs view, where those designs show the version they were analysed with.

The analysis reads the latest revision of each design, plus older revisions that still have units not ready. It skips subassemblies, which their panel analyses, and designs with no model file.

Ready parts are kept ​

An analysis never changes a part that is ready or in a started part batch: that part is the record of what was cut. When the new version sees it differently, the design shows N ready parts kept, and the design panel lists each part with what the analysis would have changed. Parts that are not ready follow the new version.

Outdated designs ​

Each design remembers the version it was analysed with. In the designs list, a design analysed with an older version than its project's shows that version as a chip, such as v3, and its ⋮ menu offers Analyse. While designs of a project are being analysed, a bar above the list shows how many are done.

History ​

Every change to a setup is recorded with who made it and when: creating it, publishing a version (with the sections it changed and its note), editing a version no project uses, renaming, setting the default, locking and unlocking, deleting a version, and upgrading projects to a version (which projects, from which version, and how many designs were analysed). Open it with History in the ⋮ menu of the setup row. The versions list of Upgrade projects also shows who published each version. The { } button of the history shows it as JSON, to copy or download.

The name is kept even if the account is later deleted or moves to another company. Setups changed before the history existed show No author recorded until their next change. Each project's own history also records when its setup changed, from which version to which, and who did it.

Try on a design ​

Before saving, Try on a design in the editor reads one design with the current version and with what you are editing, and shows the difference: parts per branch, category and class, the parts in the parts list and the measurements. Nothing is saved. It takes up to a minute.

Moving a setup around ​

The ↓ button on a setup row downloads it as a JSON file, and UPLOAD in the toolbar reads one back in. That is how you copy a setup between companies, keep a version outside the platform, or have Claude write one for you.

The IFC Parsing Setups card

  1. UPLOAD reads a setup file in.
  2. The default setup of the company.
  3. How many projects use the setup. Hover it to see which.
  4. The row actions: edit, and the ⋮ menu with clone, download JSON, lock and delete.

The list shows one row per setup with its newest version, and how many live projects are on each version: just the number for the newest version, and 6 on v3 for an older one. The ⋮ menu has Upgrade projects, which opens the window to move projects to the newest version, and Rename and Set as default. A setup can only be deleted when no project uses any of its versions.

New, clone and upload ask for the name first, and a clone or an upload is a new setup at version 1. Uploading saves nothing on its own: the file opens in this same editor, and it exists when you press Save.

See: The setup file (JSON)