ifc-commit/docs/commands.md
2026-03-25 10:36:30 +01:00

5 KiB

Commands

uv run ifccommit.py <command> [options]

List

List all IFC types present in a file and their element counts.

uv run ifccommit.py list <input.ifc>

Example:

uv run ifccommit.py list model.ifc

Info

Print attributes of each element matching a given IFC type.

uv run ifccommit.py info <input.ifc> <IfcType>

Example:

uv run ifccommit.py info model.ifc IfcWall

Extract

Extract elements of given IFC types (or presets) into a new IFC file.

uv run ifccommit.py extract <input.ifc> <output.ifc> <IfcType|preset> [...]

Presets:

  • walls — IfcWall, IfcWallStandardCase
  • storey — IfcBuildingStorey
  • furnitures — IfcFurnishingElement

Examples:

uv run ifccommit.py extract model.ifc walls.ifc walls
uv run ifccommit.py extract model.ifc slabs.ifc IfcSlab

Insert

Insert (merge) a part IFC file into a base IFC file.

uv run ifccommit.py insert <base.ifc> <part.ifc> <output.ifc>

Example:

uv run ifccommit.py insert base.ifc part.ifc merged.ifc

Replace

Remove a space and its contents from base, then merge the part file in its place.

uv run ifccommit.py replace <base.ifc> <space> <part.ifc> <output.ifc>

Example:

uv run ifccommit.py replace model.ifc A102 part.ifc result.ifc

Split

Split an IFC file into one file per storey, optionally filtered by type.

uv run ifccommit.py split <input.ifc> <outdir> [IfcType|preset ...]

Examples:

uv run ifccommit.py split model.ifc output/
uv run ifccommit.py split model.ifc output/ walls

Space

Extract an IfcSpace and all objects contained within it.

uv run ifccommit.py space <input.ifc> <output.ifc> <name> [--by name|longname]

Options:

  • --by name — Match against Name (default)
  • --by longname — Match against LongName

Examples:

uv run ifccommit.py space model.ifc output.ifc A102
uv run ifccommit.py space model.ifc output.ifc "Living Room" --by longname

Move

Translate an element by (x, y, z) metres and write to a new file.

uv run ifccommit.py move <input.ifc> <output.ifc> [entity_id] [--name X] [--x N] [--y N] [--z N]

Options:

  • entity_id — IFC entity id (e.g. 17902)
  • --name — Find element by name substring
  • --x, --y, --z — Offset in metres (default: 0.0)

Examples:

uv run ifccommit.py move model.ifc output.ifc 17902 --x 5.0 --z 1.5
uv run ifccommit.py move model.ifc output.ifc --name "Door" --x 2.0

Copy

Copy elements by entity ids or tags and translate copies by (x, y, z) metres.

uv run ifccommit.py copy <input.ifc> <output.ifc> [--entity-ids N ...] [--tags X ...] [--x N] [--y N] [--z N]

Options:

  • --entity-ids — IFC entity ids to copy
  • --tags — IFC element tags to copy
  • --x, --y, --z — Offset in metres (default: 0.0)

Examples:

uv run ifccommit.py copy model.ifc output.ifc --entity-ids 17902 17903 --x 5.0
uv run ifccommit.py copy model.ifc output.ifc --tags ABC123 --y 10.0

Diff

Show differences between two IFC files.

uv run ifccommit.py diff <source.ifc> <target.ifc> [-v] [-o FILE]

Options:

  • -v, --verbose — Show detailed changes (added, removed, modified elements)
  • -o, --output — Write results to output file

Examples:

uv run ifccommit.py diff old.ifc new.ifc
uv run ifccommit.py diff old.ifc new.ifc -v -o diff.txt

History

Write or read Pset_GitCommit properties on IFC elements.

Write mode — stamp Pset_GitCommit on all output elements using HEAD:

uv run ifccommit.py history --write-psets [--workdir DIR] [--yaml YAML]

Read mode — read Pset_GitCommit back and emit JSON:

uv run ifccommit.py history --input <file.ifc> [--output <out.json>]

Options:

  • --write-psets — Enable write mode; stamp elements with current HEAD
  • --input — IFC file to read Pset_GitCommit from (read mode)
  • --output — Output JSON file (read mode)
  • --workdir — Git repository root (default: cwd)
  • --yaml — Repo-relative path to the pipeline yaml (default: yaml/duplex.yaml)

Examples:

uv run ifccommit.py history --write-psets --yaml yaml/my-pipeline.yaml
uv run ifccommit.py history --input result.ifc --output history.json

Remove

Remove all elements contained within each instance of an IFC type.

uv run ifccommit.py remove <input.ifc> <IfcType> [--output FILE]

Options:

  • --output — Output IFC file (default: <input>_<IfcType>_removed.ifc)

Example:

uv run ifccommit.py remove model.ifc IfcSpace --output cleaned.ifc

Run

Browse and run a pipeline yaml from the demo repo.

uv run ifccommit.py run

This command fetches available pipeline YAML files from the demo repository, lets you select one, and executes it locally.

Example:

uv run ifccommit.py run