Thomas Krijnen 0f9c84c1ce Feature: express rules (#2662)
* temp reasonable state, missing rule_head contents

* better state, with init() and rule_id, but some missing parameters

* performance; embed root in dict; fix lookup

* Add ast_utils

* Fixes related to listnode and typo

* First steps with code gen

* Finalize first steps towards working code generation

* Backwards compat

* Rule execution, error formatting, test cases

* Where rule: support indexing, more expressions, test plane angle measure

* positive length measure test cases

* Venture into entity rules, test actor role

* Fixed for not unary op and address test cases

* Test group qualifier and air terminal type

* typeof() implementation and test annotation curve occ

* Flexible handling of expression, type set intersection, IfcAnnotationSurface test cases

* Functions, derived attrs, fix branch order, allow to terminate branches, apply -1 to index

* Implement express query(), test cases for 2x3 bspline curve

* Function args, if-else, repeat, entity instance construction, cshape test cases

* Multiple function call arguments and other small but influential changes. IfcDotProject() almost working except for variable case

* Make lowercase and fix assignment to qualified lhs

* Entity instance schema without file, aggregate assignment workaround, range fix, lowercase instance locals, extruded area direction test cases

* Enumeration item handling, query() robustness, arbitrary profile test cases

* Empty aggregate_initializer, xor and instance equality, nested expression fix in IfcCrossProduct, axis2-3d test cases

* Numeric stable sort with indices greater then 10, get ast node parent, redeclared derived support, nested expression robustness, define entity functions, case statements, xor, mod, bool literals, nvl, unknown, conversion based unit test cases

* Safeguard for schema name case norm, case norm query variable_id

* free instance comparison, supertype serialization fix, include inherited attributes in locals, proper elif-else in case stmt, loindex, shape rep test cases

* Union operator on set, retain general_aggr_types in parse tree, test cases for property set

* Escape stmt, rule locals and statements

* Return calculated values for redeclared derived attributes

* fix for rules without stmt, add derived and inverse attributes to locals, filter unused locals, wrap exists() arg with lambda to catch indexerror, support repeated aggr init element, typeof() none check, enum namespace uppercase

* Regen 2x3 rules

* Rule test filter only on basename

* Update fixtures for compliance with full body of rules

* Add rule support to ifcopenshell.validate

* Implement usedin() function, test cases for IfcWallSC MLS

* blength

* Run code generation on all schemas

* Try to eliminate runtime pyparsing dep

* Try to eliminate runtime pyparsing dep
2022-12-26 11:29:32 +01:00
2022-12-25 17:36:31 +01:00
2022-11-18 13:52:35 +01:00
2021-02-06 15:24:17 +00:00
2022-12-26 11:29:32 +01:00
2022-08-27 15:34:16 +02:00
2022-07-06 22:09:13 +02:00
2021-07-10 21:39:27 +02:00
2022-08-31 21:01:09 +02:00
2020-11-04 18:54:58 +11:00
2022-11-21 01:42:26 +01:00

IfcOpenShell

IfcOpenShell is an open source (LGPL) software library for working with Industry Foundation Classes (IFC). Complete parsing support is provided for IFC2x3 TC1, IFC4 Add2 TC1, IFC4x1, IFC4x3, and IFC4x3. Extensive geometric support is implemented for the IFC releases IFC2x3 TC1 and IFC4 Add2 TC1. Extending with support for arbitrary IFC schemas is possible at compile-time when using C++ and at run-time when using Python.

In addition to a C++ and Python API, IfcOpenShell comes with an ecosystem of tools, notably including IfcConvert (an application to convert IFC models to other formats), the BlenderBIM Add-on (an add-on to Blender providing a graphical IFC authoring platform), and many other libraries, CLI apps, and more. Support is also provided for auxiliary standards such as BCF and IDS.

For more information, see:

Service Status
Anaconda Daily Build Anaconda-Server Badge
Anaconda v0.7.0 Stable Anaconda-Server Badge
PyPi Daily Build PyPi Badge
ArchLinux AUR Package Stable AUR Badge
ArchLinux AUR Package git AUR Badge
BlenderBIM Add-on Chocolatey (under moderation) Chocolatey Badge
Sponsor development on OpenCollective Financial Contributors
Docker hub Docker Pulls

Contents

Those marked with an asterisk are part of IfcOpenShell.

Name Description License
bcf Library to read and write BCF-XML and query OpenCDE BCF-API modules LGPL-3.0-or-later
blenderbim Add-on to Blender providing a graphical native IFC authoring platform GPL-3.0-or-later
bsdd Library to query the bSDD API LGPL-3.0-or-later
ifc2ca Utility to convert IFC structural analysis models to Code_Aster LGPL-3.0-or-later
ifc4d Convert to and from IFC and project management software LGPL-3.0-or-later
ifc5d Report and optimise cost information from IFC LGPL-3.0-or-later
ifcbimtester Wrapper for Gherkin based unit testing for IFC models LGPL-3.0-or-later
ifcblender Historic Blender IFC import add-on LGPL-3.0-or-later*
ifccityjson Convert CityJSON to IFC LGPL-3.0-or-later
ifcclash Clash detection library and CLI app LGPL-3.0-or-later
ifccobie Extract IFC data for COBie handover requirements LGPL-3.0-or-later
ifcconvert CLI app to convert IFC to many other formats LGPL-3.0-or-later*
ifccsv Library and CLI app to export and import schedules from IFC LGPL-3.0-or-later
ifcdiff Compare changes between IFC models LGPL-3.0-or-later
ifcfm Extract IFC data for FM handover requirements LGPL-3.0-or-later
ifcgeom Internal library for IfcOpenShell LGPL-3.0-or-later*
ifcgeom_schema_agnostic Internal library for IfcOpenShell LGPL-3.0-or-later*
ifcgeomserver Internal library for IfcOpenShell LGPL-3.0-or-later*
ifcjni Internal library for IfcOpenShell LGPL-3.0-or-later*
ifcmax Historic extension for IFC support in 3DS Max LGPL-3.0-or-later*
ifcopenshell-python Python library for IFC manipulation LGPL-3.0-or-later*
ifcparse Internal library for IfcOpenShell LGPL-3.0-or-later*
ifcpatch Utility to run pre-packaged scripts to manipulate IFCs LGPL-3.0-or-later
ifcsverchok Blender Add-on for visual node programming with IFC GPL-3.0-or-later
ifctester Library, CLI and webapp for IDS model auditing LGPL-3.0-or-later
ifcwrap Internal library for IfcOpenShell LGPL-3.0-or-later*
qtviewer Internal library for IfcOpenShell LGPL-3.0-or-later*
serializers Internal library for IfcOpenShell LGPL-3.0-or-later*
S
Description
No description provided
Readme 507 MiB
Languages
C++ 57.4%
Python 36.2%
C 3.9%
Gherkin 0.7%
JavaScript 0.3%
Other 1.3%