Commit Graph

2717 Commits

Author SHA1 Message Date
Andrej730 cce2fee1fa More descriptive error setting non-present attributes
Example:

```
import ifcopenshell

ifc_file = ifcopenshell.file(schema="IFC2X3")
# ifc_file.begin_transaction()

wall = ifc_file.createIfcWall()
wall.Identification = "25"

# Before:
# Traceback (most recent call last):
#   File "test.py", line 4, in <module>
#     wall.Identification = "25"
#     ^^^^^^^^^^^^^^^^^^^
#   File "\ifcopenshell\entity_instance.py", line 279, in __setattr__
#     self[index] = value
#     ~~~~^^^^^^^
#   File "\ifcopenshell\entity_instance.py", line 293, in __setitem__
#     method = self.method_list[idx]
#              ~~~~~~~~~~~~~~~~^^^^^
# IndexError: list index out of range

# or this (if file had a transaction going)
#   File "\ifcopenshell\entity_instance.py", line 279, in __setattr__
#     self[index] = value
#     ~~~~^^^^^^^
#   File "\ifcopenshell\entity_instance.py", line 288, in __setitem__
#     self.wrapped_data.file.transaction.store_edit(self, idx, value)
#   File "\ifcopenshell\file.py", line 101, in store_edit
#     "old": self.serialise_value(element, element[index]),
#                                          ~~~~~~~^^^^^^^
#   File "\ifcopenshell\entity_instance.py", line 283, in __getitem__
#     raise IndexError("Attribute index {} out of range for instance of type {}".format(key, self.is_a()))
# IndexError: Attribute index 4294967295 out of range for instance of type IfcWall

# After:
# Traceback (most recent call last):
#   File "test.py", line 4, in <module>
#     wall.Identification = "25"
#     ^^^^^^^^^^^^^^^^^^^
#   File "ifcopenshell\entity_instance.py", line 283, in __setattr__
#     raise AttributeError(
# AttributeError: entity instance of type 'IFC2X3.IfcWall' has no attribute 'Identification'

```
2024-04-25 18:05:47 +05:00
Andrej730 f1037de14d small fix for 60a70f523 2024-04-25 18:05:46 +05:00
Andrej730 716a33f347 convert_file_length_units - fix issue converting to imperial units
ifcpatch ConvertLengthUnit - change used units from plural to singular names, to make it consistent across the api

more test coverage - test converting to more units and back from them
2024-04-24 15:15:30 +05:00
Andrej730 1c729a74d1 util.unit to support converting aggregate of aggregates 2024-04-24 14:12:13 +05:00
Andrej730 db31574103 typing 2024-04-24 14:12:13 +05:00
Andrej730 fabebb4ff6 use IFC4X3_ADD2 for ifcopenshell.schema_by_name
as it is the main IFC4X3 schema
2024-04-22 17:31:49 +05:00
Andrej730 aeb64acc07 util.doc - use release schema version for IFC4X3
As it will be more like to be available in the ifcopenshell package. Related to #4565
2024-04-22 17:31:49 +05:00
Andrej730 f94aecbbff typing 2024-04-22 17:31:49 +05:00
Andrej730 d33fdbba69 small optimization 2024-04-22 17:31:49 +05:00
Andrej730 0ddbcd98ea use column-major reshape for matrices #4565 2024-04-22 17:31:16 +05:00
Andrej730 4efe284338 use IFC4X3_ADD2 for ifcopenshell.schema_by_name
as it is the main IFC4X3 schema
2024-04-22 17:30:25 +05:00
Andrej730 34a4e3f37a util.doc - use release schema version for IFC4X3
As it will be more like to be available in the ifcopenshell package. Related to #4565
2024-04-22 17:30:25 +05:00
Andrej730 889c9a9e9f typing 2024-04-22 17:30:25 +05:00
Andrej730 9e79499532 small optimization 2024-04-22 17:30:24 +05:00
Thomas Krijnen 71c9066dc7 Fallback to C++ impl of IfcAxis2PlacementLinear #4565 2024-04-21 11:27:22 +02:00
Thomas Krijnen 0793ae539e Merge remote-tracking branch 'origin/v0.7.0' into v08attempt1 2024-04-21 11:26:06 +02:00
Andrej730 60a70f5236 support IfcAxis1Placement and warn on IfcAxis2PlacementLinear #4565 2024-04-19 17:11:56 +05:00
Andrej730 757a010172 typing 2024-04-19 16:18:57 +05:00
Andrej730 447625bffd fix failing test in util.selector.format with imperial_length
the error is below, not sure how I haven't noticed it before 🤔

assert subject.format('imperial_length(1, 1)') == "1'"

>               raise VisitError(tree.data, tree, e)
E               lark.exceptions.VisitError: Error trying to process rule "imperial_length":
E
E               cannot access local variable 'output_unit' where it is not associated with a value
2024-04-19 16:18:46 +05:00
Andrej730 9da4215bac ifcopenshell.util.selector.filter_elements - inherited predefined types
mentioned by @theoryshaw on osarch - https://community.osarch.org/discussion/comment/20126/#Comment_20126
2024-04-19 16:05:33 +05:00
Thomas Krijnen d24d781674 Merge remote-tracking branch 'origin/v0.7.0' into v08attempt1 2024-04-18 21:39:33 +02:00
Dion Moult fa4239159d Fix incorrect dateutil dependency 2024-04-18 23:39:25 +10:00
Dion Moult 608904325a Fix #4525. Fix #4546. Specify dependencies for ifcopenshell and ifcpatch.
No longer optional for a better first experience. They aren't huge deps.
2024-04-18 10:48:25 +02:00
Dion Moult c2bb57d7de See #4546. Fix docs link to filtering elements query syntax. 2024-04-18 10:48:25 +02:00
Dion Moult 1e1451de03 See #4541. Clarify how to use include args for IfcConvert 2024-04-18 10:48:25 +02:00
Andrej730 657ff30883 material.unassign_material - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 cd25a50e96 material.assign_material - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 5562f35ed1 material.assign_material - update owner history 2024-04-18 10:48:25 +02:00
Andrej730 9e310318d4 ifcpatch - add ifc2x3 tests and test for MergeDuplicateTypes 2024-04-18 10:48:25 +02:00
Andrej730 67a6e4d258 typing 2024-04-18 10:48:25 +02:00
Dion Moult a752abf0a5 See #4541. Add documentation examples on how to use include filters in IfcConvert. 2024-04-18 10:48:25 +02:00
Andrej730 3478db67b9 system.unassign_system - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 9ee5cb7180 system.assign_system - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 b4658184de system.add_system - fix failing default agrument in ifc2x3 2024-04-18 10:48:25 +02:00
Andrej730 6e1688905f new util method ifcopenshell.util.element.get_groups 2024-04-18 10:48:25 +02:00
Andrej730 2460729e43 type.unassign_type - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 d6fb508517 assign_type not to remap if it's type was assigned previously 2024-04-18 10:48:25 +02:00
Andrej730 949ff535eb typing 2024-04-18 10:48:25 +02:00
Andrej730 fed23533a4 remove unused lines from tests 2024-04-18 10:48:25 +02:00
Vukas Pajic 5c0bbcf525 fix: address test fails 2024-04-18 10:48:24 +02:00
Vukas Pajic e73ff252bb fix: cascade_schedule correctly handles timelag with IfcRatioMeasure 2024-04-18 10:48:24 +02:00
Andrej730 74224676cd type.assign_type - support batching #4474 2024-04-18 10:48:24 +02:00
Andrej730 571892dd60 fix bug in nest.assign_object 2024-04-18 10:48:24 +02:00
Andrej730 fa2009418c unify tests for ifc4 and ifc2x3 2024-04-18 10:48:24 +02:00
Andrej730 7af1632c1a fix test files names 2024-04-18 10:48:24 +02:00
Andrej730 48e5d14817 nest.assign_object to support ifc2x3 2024-04-18 10:48:24 +02:00
Andrej730 ee7cf918ea get_pset() fix bug getting inherited psets with psets_only/qtos_only = True 2024-04-18 10:48:24 +02:00
Andrej730 b77df1892c further ifcopenshell.util.element optimization
and readibility for props addressed by the index
2024-04-18 10:48:24 +02:00
Andrej730 4f2c5e4571 maintain verbosity getting complex property subproperties 2024-04-18 10:48:24 +02:00
Andrej730 bea8b2cddc typing 2024-04-18 10:48:24 +02:00