Commit Graph

717 Commits

Author SHA1 Message Date
Dion Moult ac42318a64 Fix #3974. Bug where orphaned histories would be left in API remove operations. 2024-04-16 11:09:28 +02:00
Dion Moult d0cab0821d See #3974. WIP review to ensure history removal in API. 2024-04-16 11:09:28 +02:00
Bruno Postle c846edd896 Revert 1d972a6 as no datetime.UTC on CI server 2024-04-16 11:09:24 +02:00
Bruno Postle 98cba98f7d fix python 3.12 utcnow() deprecation warning
Warning is:

/usr/lib64/python3.12/site-packages/ifcopenshell/api/project/create_file.py:61:
DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.
Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
2024-04-16 11:09:24 +02:00
Andrej730 518f054cbd edit_object_placement optimization for objects with subchildren #4035
1) We were iterating over same subchildren 2 or more times.
2) There is no need to change subchildren position at all since their parent position is already adjusted.

Explained here in detail - https://github.com/IfcOpenShell/IfcOpenShell/issues/4035#issuecomment-1822824352
2024-04-16 11:05:27 +02:00
Andrej730 6fd629f707 Fixed issue reassigning class to type class with userdefined type #4018
When PredefinedType is not found in the related enum reassign_class is considering it USERDEFINED and trying to set .ObjectType. The problem was it was doing for type classes also, when it should have set .ElementType instead.

Why it crashed BlenderBIM - in IfcClassData.data["has_entity"] we store currently active IFC entity which is recreated during `ifcopenshell.util.schema.reassign_class` making old entity invalid. Since `root.reassign_class` was failing in the process, related BBIM operator was failing too, IfcClassData wasn't updated and removed entity was accessed from UI leading to crash.
2024-04-16 11:05:27 +02:00
Andrej730 8dc9376844 ClippingInfo util class to pass and apply plane clippings #3774
Co-Authored-By: Carlos Villagrasa <carvillasil@gmail.com>
2024-04-16 11:05:26 +02:00
VDobranov 8dfd122430 Update reference_structure.py
A mistype in docs: should be IfcRelReferencedInSpatialStructure instead of IfcRelContainedInSpatialStructure
2024-04-16 11:05:26 +02:00
Andrej730 944f8695c7 root.remove_product to remove IfcRelFlowControlElements 2024-04-16 11:05:25 +02:00
Andrej730 72b3f1e967 api for assigning/unassigning flow controls #3981 2024-04-16 11:05:25 +02:00
Andrej730 1bb5a14b65 Fixed typo in control.assign_control, added tests 2024-04-16 11:05:25 +02:00
Dion Moult 142968559d Minor fix 2024-04-16 11:05:24 +02:00
Dion Moult 7f1a500445 Fix #3957. Fix bug where shared properties were not edited independently. 2024-04-16 11:05:24 +02:00
Dion Moult 2bd7ce5996 Fix #3958. Bug where reassigning type class would incorrectly assign occurrence classes. 2024-04-16 11:05:24 +02:00
Dion Moult f9236f8b42 You can now assign and unassign styles to materials 2024-04-16 11:04:29 +02:00
Andrej730 6a7f8f65c7 move to tools methods for working with manual booleans #3709
Also fixed a bug adding boolean when pset is already added and representation type in add_boolean

```
  File "\addons\blenderbim\tool\ifc.py", line 201, in execute
    IfcStore.execute_ifc_operator(self, context)
  File "\addons\blenderbim\bim\ifc.py", line 336, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\addons\blenderbim\bim\module\model\opening.py", line 534, in _execute
    data = json.loads(pset["Data"])
  File "\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 248, in __getitem__
    if key < 0 or key >= len(self):
TypeError: '<' not supported between instances of 'str' and 'int'
```
2024-04-16 11:04:28 +02:00
Andrej730 f8a2946355 Support other voiding IfcFeatureElementSubtraction elements #3889
Support other voiding IfcFeatureElementSubtraction besides IfcOpeningElement.
2024-04-16 11:03:55 +02:00
Andrej730 4cf6d65e1a Fixed issue after 19345ff
It wasn't considering that EnumerationReference could be None
2024-04-16 11:03:55 +02:00
Andrej730 e1b64fba00 Keep placement axes recalculating profiles #3879 2024-04-16 10:56:22 +02:00
Andrej730 e2077c27dd small fix add_profile_representation - use of undefined variables 2024-04-16 10:56:22 +02:00
Dion Moult 00239234ff Manual booleans are now tracked via a Pset instead of arbitrary class conventions which should fix a bunch of issues. 2024-04-16 10:55:57 +02:00
Andrej730 739b793cd7 test for model.get_manual_booleans() #3709
added test that model.get_manual_booleans will ignore IfcBooleanClippings until we find some other solution to distinguish automatic and manual clippings. And some refactor along the way.
2024-04-16 10:55:56 +02:00
taylor c88b3a3ad8 Fixed model reference 2024-04-16 10:55:56 +02:00
Andrej730 984dca6408 Fixed #3832 2024-04-16 10:37:19 +02:00
Sigma Dimensions (Yass) 6b25a64976 fix typo 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) e9ed850b78 Proposal to use resource's parent cost, reducing manual insertions 2024-04-16 10:37:17 +02:00
Andrej730 1ae1e4c4f9 fixed error in api.system.disconnect_port
Error was:
TypeError: can only concatenate tuple (not "list") to tuple
2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) f79e6ada9b cascade schedule when adding a sequence relationship 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 8549debdc9 fix calculating critical path to consider:
- parent tasks with sequence assignments #3772
- tasks that are constrained by a schedule start
2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 46c775c585 fix cascading schedule when parent tasks have sequence relationships #3772 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 145f601a2e purge cost schedules 2024-04-16 10:37:16 +02:00
Andrej730 34a881da3a Remove orphaned IfcPropertyEnumeration
Noticed a couple hundreds of orphaned IfcPropertyEnumeration in my .ifc like below 😁

IFCPROPERTYENUMERATION('Status',(IFCLABEL('NEW'),IFCLABEL('EXISTING'),IFCLABEL('DEMOLISH'),IFCLABEL('TEMPORARY'),IFCLABEL('OTHER'),IFCLABEL('NOTKNOWN'),IFCLABEL('UNSET')),$);
2024-04-16 10:37:16 +02:00
Andrej730 959f05d154 shapebuilder - replace y extrusion args with shortcut for readibility 2024-04-16 10:37:15 +02:00
Andrej730 7cef9ffe0e Bends - replace faceset with simple extrusion 2024-04-16 10:37:15 +02:00
Dion Moult 913ccd9289 Improve usability of pset template UI by removing save button and using new explicit applicable entity defaults to mitigate possible invalid pset templates. 2024-04-16 10:34:30 +02:00
Andrej730 a1bca1bb4a Fixed issue creating slabs in IFC2X3 #3696
Error traceback is below - it was trying to set IfcExtrudedAreaSolid.Position to None when in IFC2x3 Position wasn't optional, so now in IFC2X3 it's going to have some default position

RuntimeError: Error: Python: Traceback (most recent call last):
  File "\bim\module\model\product.py", line 123, in execute
    return IfcStore.execute_ifc_operator(self, context)
  File "\bim\ifc.py", line 336, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\bim\module\model\product.py", line 148, in _execute
    if self.generate_layered_element(ifc_class, relating_type):
  File "\bim\module\model\product.py", line 274, in generate_layered_element
    obj = slab.DumbSlabGenerator(relating_type).generate()
  File "\bim\module\model\slab.py", line 143, in generate
    return self.derive_from_cursor()
  File "\bim\module\model\slab.py", line 147, in derive_from_cursor
    return self.create_slab()
  File "\bim\module\model\slab.py", line 179, in create_slab
    representation = ifcopenshell.api.run(
  File "\libs\site\packages\ifcopenshell\api\__init__.py", line 66, in run
    result = usecase_class(ifc_file, **settings).execute()
  File "\libs\site\packages\ifcopenshell\api\geometry\add_slab_representation.py", line 42, in execute
    [self.create_item()],
  File "\libs\site\packages\ifcopenshell\api\geometry\add_slab_representation.py", line 58, in create_item
    extrusion = self.file.createIfcExtrudedAreaSolid(
  File "\libs\site\packages\ifcopenshell\file.py", line 337, in create_entity
    e[idx] = arg
  File "\libs\site\packages\ifcopenshell\entity_instance.py", line 260, in __setitem__
    self.wrapped_data.setArgumentAsNull(idx)
  File "\libs\site\packages\ifcopenshell\ifcopenshell_wrapper.py", line 4929, in setArgumentAsNull
    return _ifcopenshell_wrapper.entity_instance_setArgumentAsNull(self, i)
RuntimeError: Attribute not set
2024-04-16 10:34:29 +02:00
Dion Moult 59c8326c51 See #3682. You can now add symbols and multisymbols (i.e. one vertex per symbol) annotations. New default symbols for setout points in demo library. 2024-04-16 10:30:32 +02:00
Sigma Dimensions (Yass) a29ae07b72 updating a duration will not auto update schedule usage 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) b27262f81f Resource Features :
- Adding/removing and edit productivity data is now easier (+ cleaner UI)
- Pressing calculate schedule work on a parent resource will default to calculating its nested resources schedule work.
- Show derived Schedule Work for a parent resource
- Improve apperance of Resource Tree Structure
2024-04-16 10:25:01 +02:00
Dion Moult 1c016c4212 See #3581. Fix failing IOS tests. 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) ed58072d64 run black 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) 39d072d0ca Calculates the number of resources based on required person-hours. 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 53a43442fe implement calculating task duration based on resource usage change for fixed person-hours and prevent constrained attributes from updating 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 2e4e2c3173 improve purge of remove_metric usecase 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 2be46970fe api usecase to add a reference path to a metric objective 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 8b43767a6f fix updating an objective's metric 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) c16d8a39e9 ligten up add cost schedule UI 2024-04-16 10:24:58 +02:00
Dion Moult 7f34c54327 Close #3615. Follow (terrible, unofficial) convention that boolean result is intentional and boolean clipping result is automated. 2024-04-16 10:24:58 +02:00
Dion Moult f51f2a0e8c Fix #3614. Remove_pset API now supports removing predefined property sets (E.g. door lining properties). 2024-04-16 10:24:58 +02:00
Dion Moult 861659c212 Fix #3605. Bug where invalid representation type was created when booleans are added / removed. 2024-04-16 10:24:58 +02:00