# Commands ```bash uv run ifccommit.py [options] ``` ## List List all IFC types present in a file and their element counts. ```bash uv run ifccommit.py list ``` **Example:** ```bash uv run ifccommit.py list model.ifc ``` --- ## Info Print attributes of each element matching a given IFC type. ```bash uv run ifccommit.py info ``` **Example:** ```bash uv run ifccommit.py info model.ifc IfcWall ``` --- ## Extract Extract elements of given IFC types (or presets) into a new IFC file. ```bash uv run ifccommit.py extract [...] ``` **Presets:** - `walls` — IfcWall, IfcWallStandardCase - `storey` — IfcBuildingStorey - `furnitures` — IfcFurnishingElement **Examples:** ```bash 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. ```bash uv run ifccommit.py insert ``` **Example:** ```bash 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. ```bash uv run ifccommit.py replace ``` **Example:** ```bash 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. ```bash uv run ifccommit.py split [IfcType|preset ...] ``` **Examples:** ```bash 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. ```bash uv run ifccommit.py space [--by name|longname] ``` **Options:** - `--by name` — Match against Name (default) - `--by longname` — Match against LongName **Examples:** ```bash 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. ```bash uv run ifccommit.py move [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:** ```bash 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. ```bash uv run ifccommit.py copy [--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:** ```bash 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. ```bash uv run ifccommit.py diff [-v] [-o FILE] ``` **Options:** - `-v`, `--verbose` — Show detailed changes (added, removed, modified elements) - `-o`, `--output` — Write results to output file **Examples:** ```bash 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`: ```bash uv run ifccommit.py history --write-psets [--workdir DIR] [--yaml YAML] ``` **Read mode** — read `Pset_GitCommit` back and emit JSON: ```bash uv run ifccommit.py history --input [--output ] ``` **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:** ```bash 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. ```bash uv run ifccommit.py remove [--output FILE] ``` **Options:** - `--output` — Output IFC file (default: `__removed.ifc`) **Example:** ```bash uv run ifccommit.py remove model.ifc IfcSpace --output cleaned.ifc ``` --- ## Run Browse and run a pipeline yaml from the demo repo. ```bash 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:** ```bash uv run ifccommit.py run ```