Merge branch 'v0.8.0' into ifcmax/initial-refresh

This commit is contained in:
Josef Wienerroither
2026-05-01 11:21:15 +02:00
15 changed files with 40 additions and 29 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ jobs:
python ../nix/cache_dependencies.py unpack python ../nix/cache_dependencies.py unpack
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: mac-${{ matrix.arch }} key: mac-${{ matrix.arch }}
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
python ../IfcOpenShell/nix/cache_dependencies.py unpack python ../IfcOpenShell/nix/cache_dependencies.py unpack
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: ubuntu-22.04-${{ runner.arch }} key: ubuntu-22.04-${{ runner.arch }}
+2 -2
View File
@@ -10,7 +10,7 @@ jobs:
steps: steps:
- name: Set up uv - name: Set up uv
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0 uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
- name: Install Python - name: Install Python
# Installs latest Python version so it's preferred by uv over Rocky's system Python. # Installs latest Python version so it's preferred by uv over Rocky's system Python.
@@ -54,7 +54,7 @@ jobs:
uv run ../nix/cache_dependencies.py unpack uv run ../nix/cache_dependencies.py unpack
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: ubuntu-22.04-${{ runner.arch }}-rockylinux9 key: ubuntu-22.04-${{ runner.arch }}-rockylinux9
+2 -2
View File
@@ -10,7 +10,7 @@ jobs:
steps: steps:
- name: Set up uv - name: Set up uv
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0 uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
- name: Install Python - name: Install Python
# Installs latest Python version so it's preferred by uv over Rocky's system Python. # Installs latest Python version so it's preferred by uv over Rocky's system Python.
@@ -54,7 +54,7 @@ jobs:
uv run ../nix/cache_dependencies.py unpack uv run ../nix/cache_dependencies.py unpack
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: ubuntu-22.04-${{ runner.arch }}-rockylinux9 key: ubuntu-22.04-${{ runner.arch }}-rockylinux9
+1 -1
View File
@@ -52,7 +52,7 @@ jobs:
} }
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: win-${{ matrix.arch }} key: win-${{ matrix.arch }}
# Windows ccache needs ~1GB # Windows ccache needs ~1GB
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
- -
name: ccache name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
- -
name: Build ifcopenshell name: Build ifcopenshell
+1 -1
View File
@@ -79,7 +79,7 @@ jobs:
libhdf5-dev libcgal-dev libeigen3-dev libhdf5-dev libcgal-dev libeigen3-dev
- name: ccache - name: ccache
uses: hendrikmuhs/ccache-action@v1.2.22 uses: hendrikmuhs/ccache-action@v1.2.23
with: with:
key: ubuntu-22.04-${{ runner.arch }} key: ubuntu-22.04-${{ runner.arch }}
@@ -7,9 +7,9 @@ jobs:
publish: publish:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v3 - uses: astral-sh/setup-uv@v7
- run: uv run .github/scripts/publish-bonsai-releases.py - run: uv run .github/scripts/publish-bonsai-releases.py
env: env:
+10 -5
View File
@@ -1,6 +1,11 @@
#!/usr/bin/bash #!/usr/bin/bash
set -ex set -ex
PYODIDE_VERSION=0.29.3
PYODIDE_BUILD_VERSION=0.33.0
PYODIDE_XBUILDENV_ROOT="${HOME}/.cache/.pyodide-xbuildenv-${PYODIDE_BUILD_VERSION}"
PYODIDE_XBUILDENV="${PYODIDE_XBUILDENV_ROOT}/${PYODIDE_VERSION}"
# Script is assuming that it will be possible to execute it multiple times # Script is assuming that it will be possible to execute it multiple times
# therefore we're clearing venv each time and ignoring existing 'emsdk' folder. # therefore we're clearing venv each time and ignoring existing 'emsdk' folder.
@@ -11,15 +16,15 @@ source .venv/bin/activate
# Install pyodide cross build environment. # Install pyodide cross build environment.
# Instructions: https://pyodide.org/en/stable/development/building-packages.html # Instructions: https://pyodide.org/en/stable/development/building-packages.html
uv pip install pyodide-build uv pip install "pyodide-build==${PYODIDE_BUILD_VERSION}"
# `uv run` is required, so xbuildenv would skip using `pip`. # `uv run` is required, so xbuildenv would skip using `pip`.
uv run pyodide xbuildenv install uv run pyodide xbuildenv install "${PYODIDE_VERSION}"
uv run pyodide xbuildenv install-emscripten uv run pyodide xbuildenv install-emscripten
EMSDK_ROOT=$(pyodide config get emscripten_dir) EMSDK_ROOT="${PYODIDE_XBUILDENV}/emsdk"
[ -f ${EMSDK_ROOT}/emsdk_env.sh ] && source ${EMSDK_ROOT}/emsdk_env.sh source "${EMSDK_ROOT}/emsdk_env.sh"
[ -f ${EMSDK_ROOT}/../../emsdk_env.sh ] && source ${EMSDK_ROOT}/../../emsdk_env.sh
which emcc which emcc
emcc --version
mkdir -p packages/ifcopenshell mkdir -p packages/ifcopenshell
VERSION=`cat IfcOpenShell/VERSION` VERSION=`cat IfcOpenShell/VERSION`
+2 -2
View File
@@ -3,9 +3,9 @@ name = "IfcOpenShell"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"black==26.3.1", "black==26.3.1",
"ruff==0.15.10", "ruff==0.15.12",
"poethepoet", "poethepoet",
"ty==0.0.29", "ty==0.0.32",
"gersemi==0.26.1", "gersemi==0.26.1",
] ]
@@ -630,7 +630,7 @@ class EditAssignedMaterial(bpy.types.Operator, tool.Ifc.Operator):
slab.DumbSlabPlaner().regenerate_from_layer_set(layer_set) slab.DumbSlabPlaner().regenerate_from_layer_set(layer_set)
if material_set_usage.is_a("IfcMaterialProfileSetUsage"): if material_set_usage.is_a("IfcMaterialProfileSetUsage"):
if "CardinalPoint" in attributes: if "CardinalPoint" in attributes and attributes["CardinalPoint"] is not None:
attributes["CardinalPoint"] = int(attributes["CardinalPoint"]) attributes["CardinalPoint"] = int(attributes["CardinalPoint"])
ifcopenshell.api.material.edit_profile_usage( ifcopenshell.api.material.edit_profile_usage(
self.file, self.file,
+10 -8
View File
@@ -468,14 +468,16 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator):
existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, 0, tolerance=0.001) else existing_x_angle existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, 0, tolerance=0.001) else existing_x_angle
existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, pi, tolerance=0.001) else existing_x_angle existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, pi, tolerance=0.001) else existing_x_angle
coord_list = builder.get_polyline_coords(extrusion.SweptArea.OuterCurve) profiles = extrusion.SweptArea.Profiles if extrusion.SweptArea.is_a("IfcCompositeProfileDef") else [extrusion.SweptArea]
coord_list = [ for profile in profiles:
(p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list coord_list = builder.get_polyline_coords(profile.OuterCurve)
] # Reset the transformation and returns to the original points with 0 degrees coord_list = [
coord_list = [ (p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list
(p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list ] # Reset the transformation and returns to the original points with 0 degrees
] # Apply the transformation for the new x_angle coord_list = [
builder.set_polyline_coords(extrusion.SweptArea.OuterCurve, coord_list) (p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list
] # Apply the transformation for the new x_angle
builder.set_polyline_coords(profile.OuterCurve, coord_list)
# The extrusion direction calculated previously default to the positive direction # The extrusion direction calculated previously default to the positive direction
# Here we set the extrusion direction to negative if that's the case # Here we set the extrusion direction to negative if that's the case
+4
View File
@@ -1756,6 +1756,10 @@ class Drawing(bonsai.core.tool.Drawing):
# For section/elevation views, elevate the segment vertically # For section/elevation views, elevate the segment vertically
if not (points := helper.elevate_segment(bounds, [v1, v2])): if not (points := helper.elevate_segment(bounds, [v1, v2])):
return return
elif target_view == "MODEL_VIEW":
# For model views, clip to XY bounds and keep Z (3D line at true elevation)
if not (points := helper.clip_segment(bounds, [v1, v2])):
return
else: else:
return return
@@ -58,7 +58,7 @@ Fields
Class** based on the IFC Schema version. Class** based on the IFC Schema version.
**Unit System** **Unit System**
Choose between metric and imperial units of measurement when creating a project. Choose between metric and imperial units of measurement when creating a project. Project data is stored in this Unit System and displayed according to e.g. Length Unit, Area Unit, Volume Unit. Properly changing the Unit System after project creation requires conversion. See `Blender Manual : Scene Properties : Units <https://docs.blender.org/manual/en/latest/scene_layout/scene/properties.html#units>`_ for a description of changing the display units e.g. from Feet to Adaptive (enable Separate Units option) for Feet-and-Inches.
**Length Unit** **Length Unit**
Depending on the unit system, choose the default unit to be used for all length measurements. Lengths are used for moving objects around in the 3D scene, as well as lengths, widths, height, and depth quantity take-off data. Depending on the unit system, choose the default unit to be used for all length measurements. Lengths are used for moving objects around in the 3D scene, as well as lengths, widths, height, and depth quantity take-off data.