20191 Commits

Author SHA1 Message Date
Bruno Postle b709f355ae README and pyproject.toml fixes for ifcquery, ifcedit, ifcmcp 2026-03-23 23:41:17 +00:00
Bruno Postle de2d2c4e3b Remove ifcquery build artifacts and add to .gitignore 2026-03-23 23:17:21 +00:00
Bruno Postle 901306a3fd black and ruff 2026-03-23 23:15:08 +00:00
Bruno Postle b52a23cb93 Add geometry.copy_representation API
Deep-copies the named representation from a source element to a target
element.

Generated with the assistance of an AI coding tool.
2026-03-21 07:50:32 +00:00
Bruno Postle b45cbefdd9 ifcquery info: add geometry_summary for Body representations
When an element has a Body representation, ifc_info now includes a
geometry_summary key with representation type and geometry details.

Generated with the assistance of an AI coding tool.
2026-03-20 22:57:54 +00:00
Bruno Postle a95c9fcaab ifcedit discover: fix param/return doc truncation on RST inline roles
Generated with the assistance of an AI coding tool.
2026-03-20 22:14:52 +00:00
Bruno Postle c078b5f255 geometry_creation.rst: add sections for assemblies, clipping normals, openings 2026-03-20 22:07:11 +00:00
Bruno Postle 7197d79dd9 clip_solid/clip_solid_bounded: add element param to register BBIM_Boolean
Add an optional element parameter to geometry.clip_solid and
geometry.clip_solid_bounded. When provided, the resulting
IfcBooleanClippingResult is registered in the element's BBIM_Boolean
property set so that regenerate_wall_representation preserves it during
regeneration.

Generated with the assistance of an AI coding tool.
2026-03-20 21:30:00 +00:00
Bruno Postle c3ca969e32 Doc clarification for api.geometry.add_wall_representation clippings normal
Generated with the assistance of an AI coding tool.
2026-03-20 21:28:47 +00:00
Bruno Postle 49bda7d8ba Doc clarification for api.feature.remove_feature
Generated with the assistance of an AI coding tool.
2026-03-20 20:51:19 +00:00
Bruno Postle 4c1f79f6ab Doc clarification for api.geometry.edit_object_placement
Generated with the assistance of an AI coding tool.
2026-03-20 20:45:45 +00:00
Bruno Postle 5de76cf5f9 Doc clarification for api.sequence.assign_process
Generated with the assistance of an AI coding tool.
2026-03-20 20:36:37 +00:00
Bruno Postle 76f073d9e7 ifcmcp can now save drawings and renders to files
Generated with the assistance of an AI coding tool.
2026-03-20 00:20:39 +00:00
Bruno Postle c23dfcf82e Add geometry.clip_solid_bounded API
Generated with the assistance of an AI coding tool.
2026-03-18 23:01:57 +00:00
Bruno Postle 80922fcd9a Add geometry.clip_solid API and fix half_space_solid docstring
clip_solid(file, item, location, normal) wraps Clipping.apply() to
clip any solid with a half-space plane. Normal points toward the
removed material — same convention as add_wall_representation clippings.

Clarifies that agreement_flag=False means the normal direction is the
void (removed) side.
2026-03-12 21:54:00 +00:00
Bruno Postle 75cfbd40b1 ifcquery: render types with material profile sets
Generated with the assistance of an AI coding tool.
2026-03-11 20:39:24 +00:00
Bruno Postle cd8199d3c4 ifcquery: diagnose empty drawings and fix test fixture
Generated with the assistance of an AI coding tool.
2026-03-10 07:30:16 +00:00
Bruno Postle ad2dc8c38e ifcquery/ifcmcp: fix plot bugs and add ifc_plot MCP tool
Generated with the assistance of an AI coding tool.
2026-03-10 07:14:09 +00:00
Bruno Postle 4d564f00aa Set _HAS_DRAW correctly 2026-03-09 23:10:07 +00:00
Bruno Postle 5b3960c9e5 Merge branch 'tfk-cli-plot' of github.com:IfcOpenShell/IfcOpenShell into ifc_cli 2026-03-09 23:08:00 +00:00
Bruno Postle 01d7c4dea8 ifcquery: render element types when asked
Generated with the assistance of an AI coding tool.
2026-03-09 21:09:09 +00:00
Bruno Postle 1d56736d75 shape_builder: warn about mixed item types in get_representation
Generated with the assistance of an AI coding tool.
2026-03-06 15:18:55 +00:00
Bruno Postle 06548c5db2 ifcmcp: add ifc_shape_list, ifc_shape_docs, ifc_shape tools
Exposes ShapeBuilder geometry methods via the MCP server: discovery
(list), documentation (docs), and execution (shape) with entity ID
coercion and numpy serialisation.

Generated with the assistance of an AI coding tool.
2026-03-05 00:11:52 +00:00
Bruno Postle b02321e3ed ifcmcp: fix tests to use IfcSession directly
Generated with the assistance of an AI coding tool.
2026-03-04 23:38:52 +00:00
Bruno Postle 3d2104d689 shape_builder: complete docstrings and return type annotations
Generated with the assistance of an AI coding tool.
2026-03-04 23:33:58 +00:00
Bruno Postle 9ecc587cb9 coerce: floatify mixed int/float lists in attribute dicts
JSON parses whole numbers as int, but ifcopenshell's C++ binding
requires Python floats for AGGREGATE OF DOUBLE attributes such as
DirectionRatios and Coordinates. Convert list elements to float when
the list already contains at least one float, leaving pure-integer
lists (face indices etc.) unchanged.

Generated with the assistance of an AI coding tool.
2026-03-01 20:27:38 +00:00
Thomas Krijnen e42acdfa86 ifcquery plot subcommand 2026-03-01 21:01:09 +01:00
Bruno Postle bf5b48d037 Add ifc_contexts and ifc_materials tools
New ifcquery modules list geometric representation contexts (with step
IDs, context type, identifier, target view, parent) and material sets
(IfcMaterial, layer sets, constituent sets, profile sets). Exposed as
CLI subcommands and MCP tools.

Generated with the assistance of an AI coding tool.
2026-03-01 19:49:53 +00:00
Bruno Postle 1cb298fa9c render: skip degenerate geometry instead of crashing
Guard the face array reshape so elements whose triangulation is not
divisible by 3 are silently dropped. Also wrap each _add_shape() call
in a try/except so a broken shape never aborts the whole render.

Generated with the assistance of an AI coding tool.
2026-03-01 19:49:13 +00:00
Bruno Postle 1801a768c1 Fix clipping when generating a wall 2026-03-01 17:07:50 +00:00
Bruno Postle 66f0b71c65 Add ifcmcp ifc_render tool and ifcquery render subcommand
Renders IFC model geometry to a PNG image using pyvista (off_screen).

ifcquery CLI:
  ifcquery <file> render [-o out.png] [--selector QUERY]
                         [--element ID[,ID...]] [--view iso|top|south|north|east|west]

ifcmcp MCP tool:
  ifc_render(selector, element_ids, view) -> list[ImageContent]
  Returns base64-encoded PNG as an MCP ImageContent block so the agent
  can inspect the model geometry inline.

Generated with the assistance of an AI coding tool.
2026-03-01 13:23:00 +00:00
Bruno Postle f4d7fda255 Support file paths in ifcedit project.append_asset
This now works:

  ifcedit run model.ifc project.append_asset --library library.ifc --element 5711

Generated with the assistance of an AI coding tool.
2026-02-28 07:19:51 +00:00
Bruno Postle c112c115ce Update README files
Generated with the assistance of an AI coding tool.
2026-02-23 23:30:07 +00:00
Bruno Postle 2a2ba45676 Add new ifcmcp tools to ifcchat tool schema
Adds ifc_validate, ifc_schedule, ifc_cost, ifc_schema, and ifc_quantify
to the hardcoded tool list in app.js to match the extended ifcmcp session.

Generated with the assistance of an AI coding tool.
2026-02-23 23:19:06 +00:00
Bruno Postle fd69c0534b Add validate, schedule, cost, schema, quantify to ifcquery/ifcedit/ifcmcp
ifcquery: validate [--rules], schedule [--depth N], cost [--depth N],
schema <EntityType>. ifcedit: quantify list/run subcommands using ifc5d
QTO rules. schedule and cost support max_depth to limit tree expansion,
replacing truncated levels with {truncated, count}. ifcmcp gains matching
session methods, @server.tool() decorators, and OpenAI tool schemas.

Generated with the assistance of an AI coding tool.
2026-02-23 23:11:35 +00:00
Thomas Krijnen 1226370b9e re-add AI generation disclosure 2026-02-21 09:37:29 +01:00
Thomas Krijnen 6e3eaa9b39 mv chat/ ifcchat 2026-02-21 09:34:42 +01:00
Bruno Postle 3ed2da23be Create missing CLI tools
Actually create the ifcquery, ifcedit and ifcmcp executables on pip
install instead of relying on `python3 -m ifcquery` style usage
2026-02-20 22:22:29 +00:00
Bruno Postle 249c498112 Add AGENTS.md contributor guide
Guidelines for external contributors using AI coding tools,
covering licensing, AI disclosure requirements, PR scope,
commit style, code formatting, and testing expectations.

Generated with the assistance of an AI coding tool.
2026-02-20 21:43:22 +00:00
Thomas Krijnen 2dde62803d Package ifcmcp as a HTML client-side chat app (#7697) 2026-02-20 20:54:16 +00:00
Bruno Postle d4ac3c36ce Add AI generation disclosure 2026-02-14 08:10:55 +00:00
Bruno Postle fecd4a810a black and ruff 2026-02-11 18:22:45 +00:00
Bruno Postle 060afb94b5 MCP wrapper for ifcquery and ifcedit
Model Context Protocol server implementation for AI agent access to IFC
projects
2026-02-10 22:32:43 +00:00
Bruno Postle b1f1de954d Rename ifcapi to ifcedit, README and black 2026-02-09 22:59:11 +00:00
Bruno Postle 12ed2d1ec3 Add ifcquery clash subcommand for geometric clash detection
Uses ifcopenshell.geom.tree API directly to check an element for
intersections and clearance violations against sibling elements
(--scope storey) or the entire model (--scope all).
2026-02-09 18:20:41 +00:00
Bruno Postle c77983ffe5 Add ifcquery relations subcommand for IFC relationship traversal
New subcommand: ifcquery <file> relations <element_id>
Returns all relationships for an element organised by category:
hierarchy (parent, container, aggregate, nest), children (contained,
parts, components, openings), type relationships, groups, systems,
zones, material, referenced structures, and connections/ports.
Empty categories are omitted from output.

Optional --traverse up flag walks the hierarchy from the element
up to IfcProject, returning the chain as a list.
2026-02-09 07:20:37 +00:00
Bruno Postle 78f26c2432 Add ifcapi CLI wrapper for ifcopenshell.api editor functions
Runtime introspection auto-discovers all API functions. Subcommands:
list (modules/functions), docs (parameter documentation), run (execute
with type-coerced CLI arguments). Output is JSON to stdout, supports
--dry-run validation and -o alternate output path.
2026-02-09 06:27:00 +00:00
Bruno Postle 39161e7256 Add ifcquery CLI tool for IFC model interrogation
Provides four subcommands for querying IFC models with JSON output:
- summary: schema, entity counts, project info
- tree: spatial hierarchy (Project > Site > Building > Storey > elements)
- info: deep element inspection (attributes, psets, type, material, container)
- select: filter elements using selector syntax
2026-02-08 23:24:48 +00:00
dependabot[bot] 17b88fff22 Bump aws-actions/configure-aws-credentials from 5 to 6
Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 5 to 6.
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/v5...v6)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
bonsai-0.8.5-alpha2602080817
2026-02-08 19:17:56 +11:00
dependabot[bot] 3fe9980aa4 Bump ruff from 0.14.14 to 0.15.0
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.14.14 to 0.15.0.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.14.14...0.15.0)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-08 19:17:45 +11:00