You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Changed `SceneObject.frame` to read-only result of `Frame.from_transformation(SceneObject.worldtransformation)`, representing the local coordinate system of the scene object in world coordinates.
19
+
* Changed `SceneObject.worldtransformation` to the multiplication of all transformations from the scene object to the root of the scene tree, there will no longer be an additional transformation in relation to the object's frame.
20
+
* Fixed call to `astar_shortest_path` in `Graph.shortest_path`.
21
+
22
+
### Removed
23
+
24
+
25
+
## [2.10.0] 2025-03-03
26
+
27
+
### Added
28
+
29
+
* Added `flip` to `compas.geometry.Brep`.
30
+
* Added implementation of `flip` to `compas_rhino.geometry.RhinoBrep`.
31
+
32
+
### Changed
33
+
34
+
* Fixed unexpected behavior for method `Plane.is_parallel` for opposite normals.
35
+
36
+
### Removed
37
+
38
+
39
+
## [2.9.1] 2025-02-06
40
+
41
+
### Added
42
+
43
+
* Added method `frame_at` to `compas.geometry.BrepFace`.
44
+
* Added method `frame_at` to `compas_rhino.geometry.RhinoBrepFace`.
45
+
* Added property `is_reversed` to `compas.geometry.BrepFace`.
46
+
* Added property `is_reversed` to `compas_rhino.geometry.RhinoBrepFace`.
47
+
48
+
### Changed
49
+
50
+
* Fixed publish to YAK via CI workflow.
51
+
* Added selector for `test` and `prod` to CI workflow.
52
+
* Fixed `AttributeError` in `compas.data.DataEncoder.default` due to `np.float_` no longer being available in `numpy>=2`.
53
+
54
+
### Removed
55
+
56
+
57
+
## [2.9.0] 2025-02-04
58
+
59
+
### Added
60
+
61
+
* Added `DevTools` with support for automatic reloading of local python modules.
62
+
* Added implementation for `compas_rhino.geometry.RhinoBrep.from_step`.
63
+
* Added CPython implementations of GH components for Rhino8.
64
+
* Added import to new `yakerize` task from `compas_invocations2`.
65
+
* Added import to new `publish_yak` task from `compas_invocations2`.
66
+
12
67
### Changed
13
68
69
+
* Moved `unload_modules` to be a static method of `DevTools`. The `unload_modules` function is an alias to this.
70
+
* Fixed unexpected behavior in `compas.geometry.bbox_numpy.minimum_area_rectangle_xy`.
71
+
* Changed `requirements.txt` to allow `numpy>=2`.
72
+
* Fixed bug in `compas.geometry.Polygon.points` setter by removing duplicate points if they exist.
73
+
* Fixed bug in `compas.geometry.Polygon.plane` by aligning the normal of the bestfit plane with the approximate normal of the polygon faces.
74
+
* Changed the order of face vertices in `compas.geometry.Surface.to_vertices_and_faces` to a counter clockwise cycling direction and outward facing normals for curved surfaces.
75
+
* Deprecated the `-v8.0` flag in `compas_rhino.install`. Install to Rhino8 by following: https://compas.dev/compas/latest/userguide/cad.rhino8.html.
76
+
* Fixed `Info` Grasshopper component for cpython to handle non-bootstrapped environments.
Developing Python scripts outside of Rhino/Grasshopper allows you to take advantage of
73
+
modern code editors. However, this workflow requires two key steps: ensuring the Python
74
+
interpreter can access your script's location and enabling automatic reloading of the
75
+
script when changes are made in your external editor.
76
+
If the scripts or modules you are working on are located in the same folder as the Rhino/Grasshopper file you are editing, the ``DevTools`` class can be used to make them importable and reload them automatically when modified.
77
+
78
+
This approach provides a seamless workflow for developing Python scripts in modern IDEs,
79
+
such as Visual Studio Code, while running and testing the code inside Rhino/Grasshopper
80
+
with minimal interruptions.
81
+
82
+
Enabling Auto-Reloading
83
+
-----------------------
84
+
85
+
To enable this feature, use the ``enable_reloader`` method of the ``DevTools`` class.
86
+
This makes all Python scripts in the same folder as the Grasshopper file importable
87
+
and ensures they automatically reload when changes are applied.
88
+
89
+
.. code-block:: python
90
+
91
+
from compas_rhino import DevTools
92
+
DevTools.enable_reloader()
93
+
94
+
.. note::
95
+
96
+
Call this method early in your script to start the monitoring service immediately.
97
+
98
+
Importing Local Modules
99
+
-----------------------
100
+
101
+
Once auto-reloading is enabled, any script component that needs to use local modules can include the following at the top of the script:
102
+
103
+
.. code-block:: python
104
+
105
+
from compas_rhino import DevTools
106
+
DevTools.ensure_path()
107
+
108
+
This ensures local modules are accessible. For instance, if a file named ``my_module.py`` is in
109
+
the same folder as your Grasshopper file, you can import it in a script component like this:
0 commit comments