Commit Graph

205 Commits

Author SHA1 Message Date
Andrej730 fcb263f59a util.element.get_controls 2025-09-09 15:42:31 +05:00
falken10vdl 5304072892 dms2dd and dd2dms - fix doc-strings, refactor, add tests (#6763) 2025-09-04 11:55:13 +00:00
Thomas Krijnen aa97cc25d1 Support faceset face with voids in shape_builder 2025-08-16 15:02:17 +02:00
Richard Brice 3ef7f1c141 Alignment API updates to support new patch recipes 2025-07-27 15:10:22 -07:00
Andrej730 37d4ee97e7 alignment - fix missing imports 2025-07-10 19:42:29 +05:00
Andrej730 5a4ad69bf7 black . 2025-07-09 19:02:26 +05:00
Richard Brice 40f92d15c3 Alignment api update (#6817)
* Some basic COGO survey points functions

* Update alignment api

Includes defining alignment segment by segment, automatic geometry definitions, and automatric stationing and referents

* Fixes bonsai import alignment from csv

* Adds DMS angle conversion functions to COGO api

* Updated per @civilx64 review comments

* Fixes problem with segment representations

* Fixes problem with segment transition codes

* Allows for compound vertical and horizontal curves

* Implements callbacks for referent naming

* Renames angle_from_bearing to bearing2dd for consistency with ifcopenshell.util.geolocation.dms2dd. Removes angle_from_dms because it duplicates dms2dd

* Documents register_referent_name_callback

* Fixes all sorts of problems with Cant/SegRefCurve implementation

* refactor referent unit tests to use a fixture for test setup

* lint with black

---------

Co-authored-by: Scott Lecher <civilx64@gmail.com>
2025-07-08 10:09:14 -07:00
Andrej730 7f3860b025 util.attribute - add tests 2025-07-08 21:20:57 +05:00
Andrej730 c68b0c7280 typing 2025-06-18 19:12:10 +05:00
Andrej730 a12bb343ca Fix RUF015 (next() instead of list comprehensions[0])
https://docs.astral.sh/ruff/rules/-iterable-allocation-for-first-element/
2025-06-16 19:55:25 +05:00
Andrej 8b4683aef1 replace api.run with static methods 2025-06-09 18:03:19 +05:00
Andrej a16b8fa376 Fill ifcopenshell_wrapper.pyi with symbols #6684
As described in #6744 partial stub wrapper is completely replacing the type information from the wrapper, so having partial stub is making things worse than they were before.
This commit is adding all available symbols from the wrapper to the stub and allows to gradually include type information to the stub.
It also adds a safe net to ensure stub and wrapper won't go out of sync.
2025-05-28 18:24:10 +05:00
Andrej730 718254fe5e Fix regression parsing iso duration with floats (d1b1b08) #6715 2025-05-21 12:16:07 +05:00
Dion Moult 67016d6f90 See #2999. Reimplement basic creation of structural items. 2025-05-19 17:36:12 +10:00
Andrej730 558bda1aea black . 2025-04-21 19:00:23 +05:00
Dion Moult 426f1b91f2 See #2783. Don't show 0 durations for clarity. 2025-04-21 22:59:14 +10:00
Dion Moult d1b1b08174 See #2783. Duration parsing no longer uses isodate to remain faithful to formatting. 2025-04-21 22:39:23 +10:00
Andrej730 f8ad05cb54 Use isodate to parse iso durations #2783
Related #6585

Co-Authored-By: sboddy <12862430+sboddy@users.noreply.github.com>
2025-04-21 12:45:40 +05:00
Andrej730 b59e5b076d get_pset, get_psets - don't fail on ifc2x3 profile psets and partially handle ifc2x3 material psets #6538 2025-04-14 18:59:47 +05:00
Andrej730 778a839e5f get_shape_aspects to consider element's type #6374
See diagram in https://github.com/IfcOpenShell/IfcOpenShell/issues/5839#issuecomment-2661296683 when IfcShapeAspect assigned to IfcRepresentationMap instead of being assigned to IfcProductDefinitionShape directly.
2025-03-17 16:38:12 +05:00
Andrej730 6c04669543 ifc5d - add ifc4x3 base quantities #6325 2025-03-13 18:43:19 +05:00
Andrej730 71a7d0c086 Fix missing IfcDistributionCircuit and IfcElectricalCircuit #6202
When checking if element is assignable to the system.
2025-03-07 17:12:59 +05:00
Andrej730 79940641b2 typing 2025-03-06 18:43:54 +05:00
Andrej730 7458040949 Fix ifcpatch unit conversion for lists of ifc entities #6280 2025-03-06 16:14:02 +05:00
Andrej730 14eb543662 TestConvertFileLengthUnits - add attributes conversion tests 2025-03-06 16:14:02 +05:00
Andrej730 e786687882 ConvertFileLengthUnits - unify tests, add ifc4x3 tests 2025-03-06 16:14:02 +05:00
Andrej730 0783f8082e black . 2025-02-24 18:52:34 +05:00
Richard Brice 12f8a1f769 Adds utility to stringize station values 2025-02-22 16:15:00 -08:00
Andrej730 20e1fc2618 Fix bug in get_container not passing specified ifc_class to the parent #6155 2025-02-14 17:49:51 +05:00
Andrej730 59dd105e99 fix get_applicable_entities / get_applicable_types missing schema #6108 2025-02-08 07:54:49 +11:00
Dion Moult 03bfd828e2 See #5919. API now has support for features, not just openings. Void module is renamed to feature. 2025-01-28 14:18:17 +11:00
Andrej730 744487c786 fix test_element after 7b62b03 2025-01-27 17:41:31 +05:00
Andrej730 5fe77b659a ifcopenshell.util.element.get_elements_by_profile 2025-01-27 17:41:31 +05:00
Andrej730 7b4fa6b5c0 black . 2025-01-27 17:41:30 +05:00
Dion Moult 3582dc43d9 Add tests for PR #5257 (using cache for fetching units) 2025-01-27 14:40:15 +11:00
Andrej730 a968b61d02 np_matrix_to_euler, np_matrix_normalized 2025-01-13 17:53:01 +05:00
Andrej730 ff147a4c24 Fallback for queries if no elements filter is provided #5901 2024-12-25 17:40:51 +05:00
Andrej730 eae92b55bb shape_builder - np utils 2024-12-19 18:31:49 +05:00
Andrej730 5b315bfa8f shape_builder - add test for mirror 2024-12-19 18:31:49 +05:00
Andrej730 5cd769e5b4 shape_builder tests - remove mathutils dependency #5192 2024-12-19 18:31:49 +05:00
Andrej730 6e8815eacc mathutils deprecation - rotate #5192 2024-12-19 18:31:47 +05:00
Andrej730 63f56d2f21 mathutils -> numpy - polyline, rectangle #5192 2024-12-19 18:31:47 +05:00
Andrej730 c7af55183b set_element_value for enums - add a test 2024-12-06 18:57:54 +05:00
Andrej730 13106d255c int formatting function #5039
Example - https://i.imgur.com/wDGFNci.png
2024-12-05 15:52:27 +05:00
Andrej730 68208d88ea Migrate - convert IfcQuantityCounts using float values to IfcQuantityNumber in ifc4x3 #5752
Traceback:
Traceback (most recent call last):
File "\bonsai\bim\module\patch\operator.py", line 187, in execute
core.run_migrate_patch(tool.Patch, infile=self.infile, outfile=self.outfile, schema=self.schema)
File "\bonsai\core\patch.py", line 30, in run_migrate_patch
patch.run_migrate_patch(infile, outfile, schema)
File "\bonsai\tool\patch.py", line 28, in run_migrate_patch
output = ifcpatch.execute(
^^^^^^^^^^^^^^^^^
File "\ifcpatch\__init__.py", line 85, in execute
patcher.patch()
File "\ifcpatch\recipes\Migrate.py", line 58, in patch
new_element = migrator.migrate(element, self.file_patched)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\ifcopenshell\util\schema.py", line 363, in migrate
new_element = self.migrate_attributes(element, new_file, new_element, new_element_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\ifcopenshell\util\schema.py", line 393, in migrate_attributes
self.migrate_attribute(attribute, element, new_file, new_element, new_element_schema)
File "\ifcopenshell\util\schema.py", line 494, in migrate_attribute
new_value.append(self.migrate(item, new_file))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\ifcopenshell\util\schema.py", line 363, in migrate
new_element = self.migrate_attributes(element, new_file, new_element, new_element_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\ifcopenshell\util\schema.py", line 393, in migrate_attributes
self.migrate_attribute(attribute, element, new_file, new_element, new_element_schema)
File "\ifcopenshell\util\schema.py", line 497, in migrate_attribute
setattr(new_element, attribute.name(), value)
File "\ifcopenshell\entity_instance.py", line 325, in __setattr__
self[index] = value
~~~~^^^^^^^
File "\ifcopenshell\entity_instance.py", line 363, in __setitem__
raise TypeError(
TypeError: attribute 'CountValue' for entity 'IFC4X3_ADD2.IfcQuantityCount' is expecting value of type 'INT', got 'float'.
Error: Python: Traceback (most recent call last):
File "\ifcopenshell\entity_instance.py", line 361, in __setitem__
self.method_list[idx](self.wrapped_data, idx, entity_instance.unwrap_value(value))
File "\ifcopenshell\ifcopenshell_wrapper.py", line 9271, in setArgumentAsInt
return _ifcopenshell_wrapper.entity_instance_setArgumentAsInt(self, i, v)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: in method 'entity_instance_setArgumentAsInt', argument 3 of type 'int'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "\ifcopenshell\entity_instance.py", line 325, in __setattr__
self[index] = value
~~~~^^^^^^^
File "\ifcopenshell\entity_instance.py", line 363, in __setitem__
raise TypeError(
TypeError: attribute 'CountValue' for entity 'IFC4X3_ADD2.IfcQuantityCount' is expecting value of type 'INT', got 'float'.
2024-11-18 15:01:49 +05:00
Andrej730 466ba6c159 get_components - add test 2024-11-08 18:32:20 +05:00
Andrej730 1a19864e82 get_contained - add test 2024-11-08 18:32:20 +05:00
Andrej730 36f12b5145 Fix get_pset tests after 832ad6d31 2024-11-08 18:32:20 +05:00
Andrej730 eed4985957 get_parts - add test 2024-11-08 18:32:20 +05:00
Andrej730 4b39631b98 get_element_by_style to support IfcFillAreaStyleTiles 2024-10-01 15:38:46 +05:00