Commit Graph

281 Commits

Author SHA1 Message Date
Andrej730 dfc91e6639 ifcopenshell-python - clean up unused imports 2026-01-16 17:16:24 +05:00
Andrej730 153de70a71 black . 2026-01-12 18:20:10 +05:00
Ryan Schultz 7f87f1fb89 fix #7537 - Layer thickness correct when slab is rotated and few other features...
- Add dual-rotation support for AXIS3 slabs (IFC angle + object rotation)
- Fix profile editing to display horizontal projection for tilted slabs
- Fix AXIS2 layer slicing to use local extrusion direction for walls
- Fix ChangeExtrusionDepth to refresh geometry after depth changes
- Remove rotation lock on slabs to allow free rotation
- Fix undefined variable bug in add_slab_representation.py
2026-01-11 18:43:07 -06:00
Andrej730 13be6ccd45 Sort imports 2025-12-19 18:53:14 +05:00
Andrej730 29176330e8 Revert "Make dataclasses args optional to support Python 3.9 #6725"
This reverts commit ad7473ff1f.
2025-12-19 18:43:17 +05:00
Andrej730 b784cb06ae Revert "Make zip strict argument optional to support Python 3.9"
This reverts commit 3bdce4fbc3.
2025-12-19 18:43:17 +05:00
Andrej730 8c12bd0322 Reuse builder.create_axis2_placement_3d 2025-09-04 19:09:18 +05:00
Andrej730 a4045a37f1 typing 2025-08-12 19:05:52 +05:00
Andrej730 9f92e4853f assign_representation - assign repr only to occurrence for profile- or layer-based types #6934 2025-08-11 12:25:32 +05:00
Andrej730 05a8824019 typing 2025-07-25 18:22:16 +05:00
Andrej730 d08756d1b4 typing 2025-07-08 21:20:57 +05:00
Bruno Perdigão 6c4e4e5f91 Partial solution for #6775.
The issue happens when a wall has a "ATPATH" connection and has a
negative direction sense. It mixes the profile points in an incorrect
order. This commit seems to fix it, but maybe there is a better solution.
2025-06-30 19:50:41 -03:00
Andrej730 cd1bda5311 regenerate_wall_representation - remove debug prints 2025-06-20 18:48:38 +05:00
Andrej730 47da4ef3ae Fix overlook in 67b539aba 2025-06-18 19:12:11 +05:00
Andrej730 67b539aba1 remove_representation - optimization
In some cases remove_representation got 2x times faster (when there were a lot representation items that are not IfcTessellatedFaceSets).

getattr with attribute that might not be present on the element could be much slower then checking it's class explicitly.
2025-06-13 19:33:29 +05:00
Andrej730 176c5cc0fb typing 2025-06-13 19:33:29 +05:00
Andrej 1608677d40 ifcopenshell.api.run to use explicit kwargs instead of unpacking 2025-06-10 18:54:35 +05:00
Andrej a37d46ca3d typing 2025-06-10 18:54:33 +05:00
Andrej 2798bf3b68 ifcopenshell.api.geometry to fail more gracefully with fake-bpy
If user has fake-bpy-module for type hints, it will fail with `ImportError: cannot import name 'Vector' from 'mathutils' (unknown location)` instead of `ModuleNotFoundError`.
2025-05-30 18:13:11 +05:00
Andrej 3bdce4fbc3 Make zip strict argument optional to support Python 3.9 2025-05-30 18:13:11 +05:00
Andrej ad7473ff1f Make dataclasses args optional to support Python 3.9 #6725 2025-05-30 18:13:10 +05:00
Andrej 0663c5130a typing 2025-05-29 19:14:42 +05:00
Andrej 7cde9629f8 Fix Ruff UP034 (extraneous-parentheses)
https://docs.astral.sh/ruff/rules/extraneous-parentheses/
2025-05-28 18:24:13 +05:00
Andrej730 41eadf735e add_representation - more readable error on using panoramic camera 2025-05-07 18:54:56 +05:00
Andrej730 10f84537de typing 2025-04-28 19:14:19 +05:00
Andrej730 476604202a typing 2025-04-21 19:00:24 +05:00
Andrej730 53cd5f834e add_mesh_representation - reuse shape builder + numpy input support 2025-04-14 16:17:59 +05:00
Andrej730 6dc6fddd0e add_mesh_representation - expand documentation and typing #6541 2025-04-14 16:17:59 +05:00
Andrej730 cf1f74e260 typing 2025-04-09 18:26:53 +05:00
Dion Moult 963ba5fc30 See #6404. See #1227. Create axis context if it does not exist for walls. 2025-03-21 16:45:29 +11:00
Dion Moult 8e1e0aec79 Fix #6404. See #1227. Fix IFC2X3 wall creation with new wall engine. 2025-03-21 16:30:56 +11:00
Andrej730 0e8810c1f5 typing 2025-03-14 18:19:02 +05:00
Dion Moult 41188e26e1 See #1227. Don't touch manual booleans when regenerating wall body. 2025-03-10 22:54:42 +11:00
Dion Moult 4109b19c3a See #1227. Slightly more defensive to make sure ATPATH is between START and END 2025-03-09 18:31:49 +11:00
Dion Moult e78127d54f See #1227. Don't move any child at all when regenerating wall body. 2025-03-09 18:00:13 +11:00
Dion Moult e5027e0be8 See #1227. Implement updating of object position. 2025-03-09 08:52:05 +11:00
Dion Moult 01ec750814 See #1227. New connect wall API function since this can be done generically.
This will supersede the butt/mitre join functions we used to have.
2025-03-08 11:25:07 +11:00
Andrej730 590288496e typing 2025-03-07 17:12:58 +05:00
Dion Moult ed722c6f13 See #1227. Refactor out test waldo script into API function. 2025-03-07 19:05:24 +11:00
Andrej730 e1e51cbf26 black . 2025-03-05 18:53:56 +05:00
Andrej730 53a3afaded typing 2025-03-04 18:10:41 +05:00
Andrej730 33d3984990 add_profile_representation - reuse util.shape methods 2025-03-04 18:10:41 +05:00
Bruno Perdigão 1855ac421c Refactor slab addition to support obtuse x_angle. See #5938
To support obtuse x_angle a refactoring had to be made, which helped
improve the general code for slab addition.
This is challenging because there are a few features that interact
with each other to create slabs, like `depth`, `direction_sense`, `offset`
and `x_angle`. In addition, these interactions can happen in different parts
of the code. This refactor improves the coherence between those different parts.
Files changed:
- `api/geometry/add_slab_representation.py`
- `model/slab.py` - inside the function `change_thickness()`
File to be changed in a following commit:
- `model/wall.py` - inside the operator `ChangeExtrusionXAngle` - To-do
2025-02-28 13:02:02 -03:00
Bruno Perdigão 2609a8293c Fix issue where walls are created with obtuse x_angle. See #5938 2025-02-28 13:02:02 -03:00
Andrej730 aaf008f007 Fix adding transom to door #6230 (d23cfcb) 2025-02-25 18:28:48 +05:00
Andrej730 2f6ae1745f typing 2025-02-25 18:28:48 +05:00
Andrej730 f7efbe5924 remove_representation - optimizations
1) `do_not_delete` performs best when it's set
2) also_consider when `element` related elements go first, so there will be no need to traverse all other elements to see if they cover `element`'s inverses.
2025-02-21 18:45:11 +05:00
Andrej730 25d8fff5fd remove_representation - small optimizations
check schema version instead of accessing attribute directly (hasattr under the hood is just doing getattr and checking whether it returns AttributeError), so one less IFC access

Similar thing with element.Item to access IFC just once.
2025-02-20 19:12:24 +05:00
Andrej730 4efb79e472 fix missing get_spline_points in add_representation 2025-02-18 18:50:35 +05:00
Andrej730 17642ca4e9 typing 2025-02-18 18:50:34 +05:00