mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
f7a7626575
Previously Bonsai would show a wall of errors, now it's show a simple error message and redirecting to system console for the details. Example error - https://i.imgur.com/uJJfjUW.png Example validation error details in console - https://i.imgur.com/3mcVBUh.png Same details but in text: Validation error details: failed validating {'dataType': 'IFCBOOLEAN', 'ursi': 'https://google.com', 'cardinality': 'required', 'instructions': "Make sure it's true"} with XsdAttributeGroup(['dataType', 'uri', 'cardinality', 'instructions']): Reason: 'ursi' attribute not allowed for element Schema component: <xs:extension xmlns:xs="http://www.w3.org/2001/XMLSchema" base="ids:propertyType"> <xs:attribute name="uri" type="xs:anyURI" use="optional" /> <xs:attribute name="cardinality" type="ids:conditionalCardinality" use="optional" default="required" /> <xs:attribute name="instructions" type="xs:string" use="optional"> <xs:annotation> <xs:documentation>Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool.</xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> Instance type: <class 'xml.etree.ElementTree.Element'> Instance: <ids:property xmlns:ids="http://standards.buildingsmart.org/IDS" dataType="IFCBOOLEAN" ursi="https://google.com" cardinality="required" instructions="Make sure it's true"> <ids:propertySet> <ids:simpleValue>Pset_WallCommon</ids:simpleValue> </ids:propertySet> <ids:baseName> <ids:simpleValue>Combustible</ids:simpleValue> </ids:baseName> <ids:value> <ids:simpleValue>false</ids:simpleValue> </ids:value> </ids:property> Path: /ids:ids/ids:specifications/ids:specification/ids:requirements/ids:property[1]
ifctester
With IfcTester, you can author and read Information Delivery Specification - IDS - files and validate your IFC models against IDS to see if your model is compliant. After the audit, you can generate reports in console, as a web page, JSON or BCF file. It works from the command line, as a web app, or as a library.
How to use it
Command line use
# run console reporter
python -m ifctester example.ids example.ifc
python -m ifctester example.ids example.ifc -r Html -o report.html
Available flags:
-r/--reporter: The reporting method to view audit results. Availabe reporters: Console, Txt, Json, Html, Ods, Bcf--no-color: Disable colour output (supported by Console reporting).--excel-safe: Make sure exported ODS is safely exported for Excel.-o/--output: Output file (supported for all types of reporting except Console).
Code example
import ifcopenshell
from ifctester import ids, reporter
# create new IDS
my_ids = ids.Ids(title="My IDS")
# add specification to it
my_spec = ids.Specification(name="My first specification")
my_spec.applicability.append(ids.Entity(name="IFCWALL"))
property = ids.Property(
baseName="IsExternal",
value="TRUE",
propertySet="Pset_WallCommon",
dataType="IfcBoolean",
uri="https://identifier.buildingsmart.org/uri/.../prop/LoadBearing",
instructions="Walls need to be load bearing.",
cardinality="required")
my_spec.requirements.append(property)
my_ids.specifications.append(my_spec)
# Save such IDS to file
result = my_ids.to_xml("SampleIDS.xml")
# open IFC file:
my_ifc = ifcopenshell.open("MyIfcModel.ifc")
# validate IFC model against IDS requirements:
my_ids.validate(my_ifc)
# show results:
reporter.Console(my_ids).report()
ifctester web app
Can be started by cd webapp && python app.py.