Files
IfcOpenShell/src/ifcpatch
Dion Moult e678012c71 ifcpatch: run FixArchiCADToRevitSpaces headlessly
The recipe loaded the model into Blender purely to reach its geometry
engine, so it could only run inside Bonsai and needed a filepath instead
of a file. It is now a plain BasePatcher.

The three fixes Revit needs are unchanged. To lower each space onto its
storey we take the storey elevation from util.placement and the space
placement from util.shape, instead of from Blender object matrices. To
convert to an extruded area solid we triangulate the space with
ifcopenshell.geom, union its downwards facing triangles with shapely to
get the footprint and its voids, and rebuild the body with
util.shape_builder.

Unioning every downwards facing face, rather than only the vertices
sitting at z=0, means stepped and clipped spaces keep their full
footprint, columns poking through a room become profile voids, and
disjoint footprints extrude as one item each. Spaces that cannot be
patched are logged and skipped rather than aborting the run, and a
storey above the top of a space falls back to the space's own height
instead of asking for a negative extrusion depth.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 12:16:46 +10:00
..
2026-01-26 17:10:03 +05:00
2024-06-27 11:49:12 +10:00

IfcPatch

Utility for applying modification recipes to IFC files. IfcPatch enables programmatic editing and correction of IFC models through a collection of patches that can fix common issues, migrate data, or transform models.

Available Recipes

Alignment and Linear Placement

  • AddGeometricRepresentationToAlignment - Add geometric representations to alignment elements
  • AddLinearPlacementFallbackPosition - Add fallback positions for linear placements
  • AddZeroLengthSegmentToAlignment - Add zero-length segments to alignments
  • PatchStationReferentPosition - Patch station referent positions

Data Conversion and Migration

  • AGS2IFC - Convert AGS (geotechnical) data to IFC
  • ConvertLengthUnit - Convert between length units
  • ConvertNestToAggregate - Convert nesting relationships to aggregations
  • ConvertPropertiesToQuantities - Convert properties to quantities
  • Migrate - Migrate between IFC schema versions

Element Extraction and Manipulation

  • ExtractElements - Extract specific elements into a new model
  • ExtractPropertiesToSQLite - Export properties to SQLite database
  • Ifc2Sql - Convert IFC to SQL database
  • TessellateElements - Tessellate elements into triangulated geometry

Fixing Software-Specific Issues

  • FixArchiCADToRevitDoorSwings - Fix door swing orientation from ArchiCAD for Revit
  • FixArchiCADToRevitSpaces - Fix space data from ArchiCAD for Revit
  • FixRevit2025TINs - Fix TIN (Triangulated Irregular Network) issues from Revit 2025
  • FixRevitClassificationCodeTypes - Fix classification code data types from Revit
  • FixRevitTINs - Fix TIN issues from Revit

Geometry and Representation

  • AssignConstituentFractions - Assign fractions to material constituents
  • DowngradeIndexedPolyCurve - Convert indexed poly curves to simpler representations
  • RemoveSiteRepresentation - Remove geometric representation from site elements

Merging and Optimization

  • MergeDuplicateTypes - Merge duplicate element types
  • MergeProjects - Merge multiple IFC projects
  • MergeStyles - Merge duplicate styles
  • Optimise - Optimize file size and structure
  • PurgeData - Remove unused data from model

Spatial and Coordinate Systems

  • OffsetObjectPlacements - Offset object placement coordinates
  • OffsetStoreyElevations - Offset storey elevations
  • ResetAbsoluteCoordinates - Reset absolute coordinates to origin
  • ResetSpatialElementLocations - Reset spatial element locations
  • SetFalseOrigin - Set a false origin for coordinates
  • SetRefElevation - Set reference elevation
  • SetWorldCoordinateSystem - Set world coordinate system
  • SplitByBuildingStorey - Split model by building storeys

Utilities

  • RecycleNonRootedElements - Remove or recycle non-rooted elements
  • RegenerateGlobalIds - Regenerate GlobalId values for elements
  • RemoveRevitUniformatClassification - Remove Revit Uniformat classification
  • UnsharePsets - Unshare property sets between elements