From 06f73d79dc9baa30f424d16ae88b19e7dc222b54 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:26:03 +0200 Subject: [PATCH 01/21] =?UTF-8?q?feat(extrude):=20add=20module=20skeleton?= =?UTF-8?q?=20and=20deps=20for=202D=E2=86=923D=20extrusion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bootstrap the standalone extrusion surface so the remaining TDD tasks can build on a real public entrypoint. This adds the new module stub, exports the API from the package root, installs the geometry dependencies needed by the design, and makes the project-local type checker available so the required verification command can run inside uv. Constraint: The feature must stay outside pipeline.py/state.py/extract.py per the approved design Constraint: The workflow requires uv-managed type checks with ty before each task commit Rejected: Delay dependency installation until the first geometry task | would keep the smoke test red for the wrong reason Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep extrude_2d standalone; do not backdoor it into the existing 2D pipeline branch Tested: uv sync; uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py src/xeltofab/__init__.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py src/xeltofab/__init__.py; uv run ty check src/xeltofab/extrude.py src/xeltofab/__init__.py Not-tested: No geometry behavior yet beyond import/export scaffolding --- pyproject.toml | 3 ++ src/xeltofab/__init__.py | 2 + src/xeltofab/extrude.py | 28 ++++++++++ tests/test_extrude.py | 20 +++++++ uv.lock | 110 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 163 insertions(+) create mode 100644 src/xeltofab/extrude.py create mode 100644 tests/test_extrude.py diff --git a/pyproject.toml b/pyproject.toml index 0b54a38..7a42b2b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,8 @@ dependencies = [ "trimesh", "pydantic>=2.12.5", "matplotlib>=3.10.8", + "mapbox-earcut>=1.0.1", + "shapely>=2.0", "click>=8.3.1", "marimo>=0.20.4", "plotly>=6.6.0", @@ -67,4 +69,5 @@ dev = [ "marimo>=0.20.2", "pytest>=9.0.2", "ruff>=0.15.2", + "ty>=0.0.32", ] diff --git a/src/xeltofab/__init__.py b/src/xeltofab/__init__.py index f81f870..b64a812 100644 --- a/src/xeltofab/__init__.py +++ b/src/xeltofab/__init__.py @@ -6,6 +6,7 @@ sdf_to_density, sigmoid, ) +from xeltofab.extrude import extrude_2d from xeltofab.io import ( load_field, save_mesh, @@ -16,6 +17,7 @@ __all__ = [ "PipelineParams", "PipelineState", + "extrude_2d", "heaviside", "linear_ramp", "load_field", diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py new file mode 100644 index 0000000..d870946 --- /dev/null +++ b/src/xeltofab/extrude.py @@ -0,0 +1,28 @@ +"""2D field → 3D extrusion for fabrication-ready output. + +Turns a 2D density or SDF array into a watertight triangle mesh with +configurable extrusion thickness. Uses marching squares + shapely + +mapbox_earcut internally. Returns a trimesh.Trimesh; caller writes STL/OBJ/PLY +via mesh.export(...). +""" + +from __future__ import annotations + +from typing import Literal + +import numpy as np +import trimesh + + +def extrude_2d( + field: np.ndarray, + thickness: float, + *, + field_type: Literal["density", "sdf"] = "density", + level: float | None = None, + min_component_area: int = 0, + smooth_sigma: float = 0.0, + fill_holes: bool = False, +) -> trimesh.Trimesh: + """Extrude a 2D field into a 3D triangle mesh.""" + raise NotImplementedError("extrude_2d body is filled in by later tasks") diff --git a/tests/test_extrude.py b/tests/test_extrude.py new file mode 100644 index 0000000..78cec1d --- /dev/null +++ b/tests/test_extrude.py @@ -0,0 +1,20 @@ +"""Tests for xeltofab.extrude.""" + +from __future__ import annotations + +import numpy as np +import pytest + +import xeltofab as xtf + + +def test_extrude_module_importable(): + """The extrude_2d symbol is reachable via the package root.""" + assert callable(xtf.extrude_2d) + + +def test_extrude_stub_raises_not_implemented(): + """Skeleton stub raises NotImplementedError until later tasks fill it in.""" + field = np.ones((4, 4), dtype=float) + with pytest.raises(NotImplementedError): + xtf.extrude_2d(field, thickness=1.0) diff --git a/uv.lock b/uv.lock index fa01062..f123c6f 100644 --- a/uv.lock +++ b/uv.lock @@ -484,6 +484,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7f/8e/13e4564898f15d16a4081aba6397597de319f993ed43181aa5e324bf05db/manifold3d-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:fb530756a54a0a19ff732f35df130ec304db233dbc8d2fcef5a4818fa657b0a6", size = 992597, upload-time = "2026-02-27T10:40:38.507Z" }, ] +[[package]] +name = "mapbox-earcut" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/7b/bbf6b00488662be5d2eb7a188222c264b6f713bac10dc4a77bf37a4cb4b6/mapbox_earcut-2.0.0.tar.gz", hash = "sha256:81eab6b86cf99551deb698b98e3f7502c57900e5c479df15e1bdaf1a57f0f9d6", size = 39934, upload-time = "2025-11-16T18:41:27.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/7c/c5dd5b255b9828ba5df729e62fdd470a322c938f07ef392ca03c0592bb3a/mapbox_earcut-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:582329a81bd36cf0f82e443c395bcb8cfdb10caddafec76acaebac7c20bf1c31", size = 55619, upload-time = "2025-11-16T18:40:44.44Z" }, + { url = "https://files.pythonhosted.org/packages/1a/3f/03f23eac9831e7d0d8da3d6993695a9a3724659c94e9997f6b7aaccc199d/mapbox_earcut-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d2ac5f610b3e44a3a0c4df06b5552d503b4f1c2c409eeca20dbe05112bd60955", size = 52023, upload-time = "2025-11-16T18:40:45.857Z" }, + { url = "https://files.pythonhosted.org/packages/39/f3/a92ccee494b3e437e4bd81ecd358e39d231dc90af010d6c43930506c10ad/mapbox_earcut-2.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:58cc88513b87734b243d86f0d3fb87e96e0a78d9abd8fd615c55f766dd63f949", size = 56357, upload-time = "2025-11-16T18:40:47.27Z" }, + { url = "https://files.pythonhosted.org/packages/03/30/e54ececd0403a5495c340b693075abec92a6d17dc44283b6cb059534f7ed/mapbox_earcut-2.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40218d887798451932f3c335992834aa807c35cd497c6e0733470fdbd77f9521", size = 59215, upload-time = "2025-11-16T18:40:48.682Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e1/8fbff13a074c1fbf702b30ce7ec4d878bc664d659c1c2b1697831f4ea3a8/mapbox_earcut-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:39fa5cfa0e855b028ec9b0200c88ebfa252448f343ce2f67b6fc07fe1f22a3ae", size = 152304, upload-time = "2025-11-16T18:40:49.85Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d5/c757030b3cb3a9f2278ded6f7312d2b9d3761db6f3da8d395f7f7303dd66/mapbox_earcut-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:476b558473b8a43f238d46e819bc0f830c427842ec5feb19e23b4dcac8ad2455", size = 157270, upload-time = "2025-11-16T18:40:51.093Z" }, + { url = "https://files.pythonhosted.org/packages/96/63/589c6decb1f032d8811f1066da552f0a718830f592e6d6539fa4c3c766b8/mapbox_earcut-2.0.0-cp313-cp313-win32.whl", hash = "sha256:8c2d125c182acbc490b39503c0dec4f937bae180d0849a26bcea0ee4a76024bd", size = 51207, upload-time = "2025-11-16T18:40:52.285Z" }, + { url = "https://files.pythonhosted.org/packages/76/75/a79a6020c46d4f07731e88ec5cc9324f6b43343aba835def1dc0bf59fecf/mapbox_earcut-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e049e6a37c228d7a9cb2f54ae405aa21d35c5175d849530fb32064ddb38ad5ab", size = 56416, upload-time = "2025-11-16T18:40:53.474Z" }, + { url = "https://files.pythonhosted.org/packages/ce/5f/83e878c2b3e9e6db1f60b598a2cc5ed4c2b5bc8d281575c964869414a159/mapbox_earcut-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:8a833d73d63d4b6291bbd8b4d2f551e87f663282cdc547ecbbd9b423849ee996", size = 50103, upload-time = "2025-11-16T18:40:54.954Z" }, + { url = "https://files.pythonhosted.org/packages/96/fc/f1b74324c83f510213ff91eb8b1d2697ad5a12418c5fba966e80f1104a5f/mapbox_earcut-2.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ad1dc141797037b7d4c9d8d2e52b9665b36294913a8ec31008b282d1a95b9bdc", size = 55728, upload-time = "2025-11-16T18:40:56.098Z" }, + { url = "https://files.pythonhosted.org/packages/7b/59/053c04e29c4bd22157d3b6255f1e5c19c46cb7a594c4314298bdcbca723f/mapbox_earcut-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0f0f5c6f5ed8ffdce8efe6a003ba598089d0ee07eabd41868db183be50484f9f", size = 52063, upload-time = "2025-11-16T18:40:57.227Z" }, + { url = "https://files.pythonhosted.org/packages/a6/77/acc2d553c3bb8c769535a280545bb7d9608141e90511a2e6215a54611776/mapbox_earcut-2.0.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82cd92775f37fd1e4b8464c5e74a00e87130eecc55ee3df2492b8ca2bdf6ef3e", size = 56522, upload-time = "2025-11-16T18:40:58.349Z" }, + { url = "https://files.pythonhosted.org/packages/1a/f5/627dd6defd3c1a2b3069e9e27482aa04d268c841735e576c1e22848a34f6/mapbox_earcut-2.0.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:626ffc1310e0cc8910283e4ac3139e5fb0458f18f2c4874162f66159951933ff", size = 59204, upload-time = "2025-11-16T18:41:00.095Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3e/819185542ab095ba1244ad65ececb3edcde6fd0111248a0f9318d695bfcf/mapbox_earcut-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ea951d764a356cad95b23fef950d8aa3b44b933795ad09d977fea7d4dbe377c3", size = 152550, upload-time = "2025-11-16T18:41:01.233Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ad/85e0f815e4774b90ad6761bce55c80d13ee21b2a24014b0be0d5010b0049/mapbox_earcut-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:df1f217624abb5e02ecabcbd84369de970b8d8bc1e4e7c164c1cfcaddad76ca3", size = 157322, upload-time = "2025-11-16T18:41:02.866Z" }, + { url = "https://files.pythonhosted.org/packages/27/4c/0f56369e7a000d2f3177d17baf34263559b206ae524fcd0c4c5d1d960dab/mapbox_earcut-2.0.0-cp314-cp314-win32.whl", hash = "sha256:6fa61307d38b50fc9bd5449c00dbae46d270a32b372c6fc3b8af4b85c85746e4", size = 52916, upload-time = "2025-11-16T18:41:04.122Z" }, + { url = "https://files.pythonhosted.org/packages/c2/9d/8c557dd9b3d9fe2344f5bd5ff3bb0b2a42ed6addb7e43ca4358051743b04/mapbox_earcut-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:0da20ed3c81b240450118773bcedfac34e70a56998f66147222c46f4356fff67", size = 57713, upload-time = "2025-11-16T18:41:05.204Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ec/678c5553938d3a29d02dd41dd898672267f054afc4e2821958dee6ec86ce/mapbox_earcut-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:847e74bd5878e4c64793dc100f9288f5443f87c55c3fe391fd90509029136ff6", size = 51872, upload-time = "2025-11-16T18:41:06.323Z" }, + { url = "https://files.pythonhosted.org/packages/18/37/94f2d973669cbfef811e536713fe56ec012ba74e5f8795a832337b1866a3/mapbox_earcut-2.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:ddc9e7175fc903185c64afbbf91febee56b50787dd0962fce2bfb4f20cf80d27", size = 56447, upload-time = "2025-11-16T18:41:07.443Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1c/e0afcc82659cc1727a7e59c4f9e9880bbc3f048a4a5325772b44d4a91dfd/mapbox_earcut-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6dc8a7568066af9a858018d6d92b7e77e164578f9fcd79093f1cbe4ec203461b", size = 53154, upload-time = "2025-11-16T18:41:08.618Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2d/9845281c8c35da2bea733b8c2df5b9fe694e73e7b05fe8a1d4c3c439a1bc/mapbox_earcut-2.0.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6abc5340edd9b433ab2dab2ee033082a199d5c51cce445124626c0040ec0d81b", size = 56285, upload-time = "2025-11-16T18:41:09.728Z" }, + { url = "https://files.pythonhosted.org/packages/97/8e/eeea762a519490662b8f480e2b35bf03701b0bcc5a446b62a4c5a1500b06/mapbox_earcut-2.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df7afdd8078a9aa28f469d9242531d304e09a4b14e514f048e021a949f3777b4", size = 58601, upload-time = "2025-11-16T18:41:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/b9/67/932f80aa6af9bc1a317b6119052c74f327d81e00b457003a049e324b810c/mapbox_earcut-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1a286f73e612a46cafd6d6c843365265090517af16823e2f37277c13cd8b6f09", size = 154924, upload-time = "2025-11-16T18:41:12.104Z" }, + { url = "https://files.pythonhosted.org/packages/87/38/5db4a91f9f90cbb447be61da5468a2955fad3a840ae4c7dbde789b09d45a/mapbox_earcut-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8d081fe1d00dc553e3e68c02fc395324aad0d8ed955f3ff59289264c9b21ace4", size = 159194, upload-time = "2025-11-16T18:41:13.364Z" }, + { url = "https://files.pythonhosted.org/packages/6b/03/de3843b13fe854a010fb2f8b25551d4d5fe1c879ff2e7c8d7d8d7d735a8e/mapbox_earcut-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:13049ca96431bbc7ef7fd7780dd1872209ca11a5c1977f7aa91a1b574a8af863", size = 54143, upload-time = "2025-11-16T18:41:14.564Z" }, + { url = "https://files.pythonhosted.org/packages/9a/89/fbdee5a56ba51df9be6098b5428636ad75aa994e98d8bec6113d5cba401e/mapbox_earcut-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6ace78e4fdba3b8cbb7768d44d77a981698305862a07f94bbb6f5cc16659adb4", size = 60833, upload-time = "2025-11-16T18:41:15.694Z" }, +] + [[package]] name = "marimo" version = "0.20.4" @@ -1233,6 +1270,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/d7/023ba290cfaf97b21c710b675b8a860b97d8226f62e35d7a08e37ddbb6d3/scs-3.2.11-cp314-cp314t-win_amd64.whl", hash = "sha256:7fe26e8a0efc96232f4c5b7649817e48dae04a61be911417e925071091b8cbf6", size = 7570221, upload-time = "2026-01-09T17:53:42.845Z" }, ] +[[package]] +name = "shapely" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/90/98ef257c23c46425dc4d1d31005ad7c8d649fe423a38b917db02c30f1f5a/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8", size = 1832644, upload-time = "2025-09-24T13:50:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0bee5a830d209adcd3a01f2d4b70e587cdd9fd7380d5198c064091005af8/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a", size = 1642887, upload-time = "2025-09-24T13:50:46.735Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5e/7d7f54ba960c13302584c73704d8c4d15404a51024631adb60b126a4ae88/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e", size = 2970931, upload-time = "2025-09-24T13:50:48.374Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a2/83fc37e2a58090e3d2ff79175a95493c664bcd0b653dd75cb9134645a4e5/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6", size = 3082855, upload-time = "2025-09-24T13:50:50.037Z" }, + { url = "https://files.pythonhosted.org/packages/44/2b/578faf235a5b09f16b5f02833c53822294d7f21b242f8e2d0cf03fb64321/shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af", size = 3979960, upload-time = "2025-09-24T13:50:51.74Z" }, + { url = "https://files.pythonhosted.org/packages/4d/04/167f096386120f692cc4ca02f75a17b961858997a95e67a3cb6a7bbd6b53/shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd", size = 4142851, upload-time = "2025-09-24T13:50:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/48/74/fb402c5a6235d1c65a97348b48cdedb75fb19eca2b1d66d04969fc1c6091/shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350", size = 1541890, upload-time = "2025-09-24T13:50:55.337Z" }, + { url = "https://files.pythonhosted.org/packages/41/47/3647fe7ad990af60ad98b889657a976042c9988c2807cf322a9d6685f462/shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715", size = 1722151, upload-time = "2025-09-24T13:50:57.153Z" }, + { url = "https://files.pythonhosted.org/packages/3c/49/63953754faa51ffe7d8189bfbe9ca34def29f8c0e34c67cbe2a2795f269d/shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40", size = 1834130, upload-time = "2025-09-24T13:50:58.49Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ee/dce001c1984052970ff60eb4727164892fb2d08052c575042a47f5a9e88f/shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b", size = 1642802, upload-time = "2025-09-24T13:50:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/da/e7/fc4e9a19929522877fa602f705706b96e78376afb7fad09cad5b9af1553c/shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801", size = 3018460, upload-time = "2025-09-24T13:51:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/18/7519a25db21847b525696883ddc8e6a0ecaa36159ea88e0fef11466384d0/shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0", size = 3095223, upload-time = "2025-09-24T13:51:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/48/de/b59a620b1f3a129c3fecc2737104a0a7e04e79335bd3b0a1f1609744cf17/shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c", size = 4030760, upload-time = "2025-09-24T13:51:06.455Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/c6655ee7232b417562bae192ae0d3ceaadb1cc0ffc2088a2ddf415456cc2/shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99", size = 4170078, upload-time = "2025-09-24T13:51:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/605c76808d73503c9333af8f6cbe7e1354d2d238bda5f88eea36bfe0f42a/shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf", size = 1559178, upload-time = "2025-09-24T13:51:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/d317eb232352a1f1444d11002d477e54514a4a6045536d49d0c59783c0da/shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c", size = 1739756, upload-time = "2025-09-24T13:51:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c4/3ce4c2d9b6aabd27d26ec988f08cb877ba9e6e96086eff81bfea93e688c7/shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223", size = 1831290, upload-time = "2025-09-24T13:51:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/17/b9/f6ab8918fc15429f79cb04afa9f9913546212d7fb5e5196132a2af46676b/shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c", size = 1641463, upload-time = "2025-09-24T13:51:14.972Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/91d59ae525ca641e7ac5551c04c9503aee6f29b92b392f31790fcb1a4358/shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df", size = 2970145, upload-time = "2025-09-24T13:51:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/4948be52ee1da6927831ab59e10d4c29baa2a714f599f1f0d1bc747f5777/shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf", size = 3073806, upload-time = "2025-09-24T13:51:18.712Z" }, + { url = "https://files.pythonhosted.org/packages/03/83/f768a54af775eb41ef2e7bec8a0a0dbe7d2431c3e78c0a8bdba7ab17e446/shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4", size = 3980803, upload-time = "2025-09-24T13:51:20.37Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/559c7c195807c91c79d38a1f6901384a2878a76fbdf3f1048893a9b7534d/shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc", size = 4133301, upload-time = "2025-09-24T13:51:21.887Z" }, + { url = "https://files.pythonhosted.org/packages/80/cd/60d5ae203241c53ef3abd2ef27c6800e21afd6c94e39db5315ea0cbafb4a/shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566", size = 1583247, upload-time = "2025-09-24T13:51:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/74/d4/135684f342e909330e50d31d441ace06bf83c7dc0777e11043f99167b123/shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c", size = 1773019, upload-time = "2025-09-24T13:51:24.873Z" }, + { url = "https://files.pythonhosted.org/packages/a3/05/a44f3f9f695fa3ada22786dc9da33c933da1cbc4bfe876fe3a100bafe263/shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a", size = 1834137, upload-time = "2025-09-24T13:51:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/4d57db45bf314573427b0a70dfca15d912d108e6023f623947fa69f39b72/shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076", size = 1642884, upload-time = "2025-09-24T13:51:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/4e29c0a55d6d14ad7422bf86995d7ff3f54af0eba59617eb95caf84b9680/shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1", size = 3018320, upload-time = "2025-09-24T13:51:29.903Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/992e6a3c463f4d29d4cd6ab8963b75b1b1040199edbd72beada4af46bde5/shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0", size = 3094931, upload-time = "2025-09-24T13:51:32.699Z" }, + { url = "https://files.pythonhosted.org/packages/9c/16/82e65e21070e473f0ed6451224ed9fa0be85033d17e0c6e7213a12f59d12/shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26", size = 4030406, upload-time = "2025-09-24T13:51:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/c24ed871c576d7e2b64b04b1fe3d075157f6eb54e59670d3f5ffb36e25c7/shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0", size = 4169511, upload-time = "2025-09-24T13:51:36.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f7/b3d1d6d18ebf55236eec1c681ce5e665742aab3c0b7b232720a7d43df7b6/shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735", size = 1602607, upload-time = "2025-09-24T13:51:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/f09272a71976dfc138129b8faf435d064a811ae2f708cb147dccdf7aacdb/shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9", size = 1796682, upload-time = "2025-09-24T13:51:39.233Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -1287,6 +1367,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3c/b9/da09903ea53b677a58ba770112de6fe8b2acb8b4cd9bffae4ff6cfe7c072/trimesh-4.11.2-py3-none-any.whl", hash = "sha256:25e3ab2620f9eca5c9376168c67aabdd32205dad1c4eea09cd45cd4a3edf775a", size = 740328, upload-time = "2026-02-10T16:00:25.246Z" }, ] +[[package]] +name = "ty" +version = "0.0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/7e/2aa791c9ae7b8cd5024cd4122e92267f664ca954cea3def3211919fa3c1f/ty-0.0.32.tar.gz", hash = "sha256:8743174c5f920f6700a4a0c9de140109189192ba16226884cd50095b43b8a45c", size = 5522294, upload-time = "2026-04-20T19:29:01.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/eb/1075dc6a49d7acbe2584ae4d5b410c41b1f177a5adcc567e09eca4c69000/ty-0.0.32-py3-none-linux_armv6l.whl", hash = "sha256:dacbc2f6cd698d488ae7436838ff929570455bf94bfa4d9fe57a630c552aff83", size = 10902959, upload-time = "2026-04-20T19:28:31.907Z" }, + { url = "https://files.pythonhosted.org/packages/33/d2/c35fc8bc66e98d1ee9b0f8ed319bf743e450e1f1e997574b178fab75670f/ty-0.0.32-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:914bbc4f605ce2a9e2a78982e28fae1d3359a169d141f9dc3b4c7749cd5eca81", size = 10726172, upload-time = "2026-04-20T19:28:44.765Z" }, + { url = "https://files.pythonhosted.org/packages/96/32/c827da3ca480456fb02d8cea68a2609273b6c220fea0be9a4c8d8470b86e/ty-0.0.32-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4787ac9fe1f86b1f3133f5c6732adbe2df5668b50c679ac6e2d98cd284da812f", size = 10163701, upload-time = "2026-04-20T19:28:27.005Z" }, + { url = "https://files.pythonhosted.org/packages/ba/9e/2734478fbdb90c160cb2813a3916a16a2af5c1e231f87d635f6131d781fb/ty-0.0.32-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ea0a728af99fe40dd744cba6441a2404f80b7f4bde17aa6da393810af5ea57", size = 10656220, upload-time = "2026-04-20T19:29:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/44/9f/0007da2d35e424debe7e9f86ffbc1ab7f60983cfbc5f0411324ab2de5292/ty-0.0.32-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2850561f9b018ae33d7e5bbfa0ac414d3c518513edcffe43877dc9801446b9c5", size = 10696086, upload-time = "2026-04-20T19:28:46.829Z" }, + { url = "https://files.pythonhosted.org/packages/3b/5e/ce5fd4ec803222ae3e69a76d2a2db2eed55e19f5b131702b9789ef45f93d/ty-0.0.32-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5fa2fb3c614349ee211d36476b49d88c5ef79a687cdb91b2872ad023b94d2f8", size = 11184800, upload-time = "2026-04-20T19:28:42.57Z" }, + { url = "https://files.pythonhosted.org/packages/6c/46/ebcf67a5999421331214aac51a7464db42de2be15bbe929c612a3ed0b039/ty-0.0.32-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b89969307ab2417d41c9be8059dd79feea577234e1e10d35132f5495e0d42c6", size = 11718718, upload-time = "2026-04-20T19:28:36.433Z" }, + { url = "https://files.pythonhosted.org/packages/18/2c/2141c86ed0ce0962b45cefb658a95e734f59759d47f20afdcd9c732910a1/ty-0.0.32-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b59868ede9b1d69a088f0d695df52a0061f95fa7baa1d5e0dc6fc9cf06e1334", size = 11346369, upload-time = "2026-04-20T19:28:48.967Z" }, + { url = "https://files.pythonhosted.org/packages/7a/da/ed6f772339cf29bd9a46def9d6db5084689eb574ee4d150ff704224c1ed8/ty-0.0.32-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8300caf35345498e9b9b03e550bba03cee8f5f5f8ab4c83c3b1ff1b7403b7d3a", size = 11280714, upload-time = "2026-04-20T19:28:51.516Z" }, + { url = "https://files.pythonhosted.org/packages/da/9b/c6813987edf4816a40e0c8e408b555f97d3f267c7b3a1688c8bbdf65609c/ty-0.0.32-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:583c7094f4574b02f724db924f98b804d1387a0bd9405ecb5e078cc0f47fbcfb", size = 10638806, upload-time = "2026-04-20T19:28:29.651Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d4/0cefcbd2ad0f3d51762ccf58e652ec7da146eb6ae34f87228f6254bbb8be/ty-0.0.32-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e44ebe1bb4143a5628bc4db67ac0dfebe14594af671e4ee66f6f2e983da56501", size = 10726106, upload-time = "2026-04-20T19:29:06.3Z" }, + { url = "https://files.pythonhosted.org/packages/32/ad/2c8a97f91f06311f4367400f7d13534bbda2522c73c99a3e4c0757dff9b8/ty-0.0.32-py3-none-musllinux_1_2_i686.whl", hash = "sha256:06f17ada3e069cba6148342ef88e9929156beca8473e8d4f101b68f66c75643e", size = 10872951, upload-time = "2026-04-20T19:28:34.077Z" }, + { url = "https://files.pythonhosted.org/packages/ba/68/42293f9248106dd51875120971a5cc6ea315c2c4dcfb8e59aa063aa0af26/ty-0.0.32-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e96e60fa556cec04f15d7ea62d2ceee5982bd389233e961ab9fd42304e278175", size = 11363334, upload-time = "2026-04-20T19:28:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/df/92/be9abf4d3e589ad5023e2ea965b93e204ec856420d46adf73c5c36c04678/ty-0.0.32-py3-none-win32.whl", hash = "sha256:2ff2ebb4986b24aebcf1444db7db5ca41b36086040e95eea9f8fb851c11e805c", size = 10260689, upload-time = "2026-04-20T19:28:56.541Z" }, + { url = "https://files.pythonhosted.org/packages/14/61/dc86acea899349d2579cb8419aecedd83dc504d7d6a10df65eef546c8300/ty-0.0.32-py3-none-win_amd64.whl", hash = "sha256:ba7284a4a954b598c1b31500352b3ec1f89bff533825592b5958848226fdc7ee", size = 11255371, upload-time = "2026-04-20T19:28:39.917Z" }, + { url = "https://files.pythonhosted.org/packages/43/01/beffec56d71ca25b343ede63adb076456b5b3e211f1c066452a44cd120b3/ty-0.0.32-py3-none-win_arm64.whl", hash = "sha256:7e10aadbdbda989a7d567ee6a37f8b98d4d542e31e3b190a2879fd581f75d658", size = 10658087, upload-time = "2026-04-20T19:28:59.286Z" }, +] + [[package]] name = "typing-extensions" version = "4.15.0" @@ -1394,6 +1498,7 @@ version = "0.3.4" source = { editable = "." } dependencies = [ { name = "click" }, + { name = "mapbox-earcut" }, { name = "marimo" }, { name = "matplotlib" }, { name = "numpy" }, @@ -1402,6 +1507,7 @@ dependencies = [ { name = "pyfqmr" }, { name = "scikit-image" }, { name = "scipy" }, + { name = "shapely" }, { name = "trimesh" }, ] @@ -1439,6 +1545,7 @@ dev = [ { name = "marimo" }, { name = "pytest" }, { name = "ruff" }, + { name = "ty" }, ] [package.metadata] @@ -1452,6 +1559,7 @@ requires-dist = [ { name = "isoext", marker = "extra == 'cuda'", specifier = ">=0.5" }, { name = "manifold3d", marker = "extra == 'all'", specifier = ">=3.0" }, { name = "manifold3d", marker = "extra == 'manifold'", specifier = ">=3.0" }, + { name = "mapbox-earcut", specifier = ">=1.0.1" }, { name = "marimo", specifier = ">=0.20.4" }, { name = "matplotlib", specifier = ">=3.10.8" }, { name = "numpy" }, @@ -1465,6 +1573,7 @@ requires-dist = [ { name = "pyvista", marker = "extra == 'vtk'", specifier = ">=0.43" }, { name = "scikit-image" }, { name = "scipy" }, + { name = "shapely", specifier = ">=2.0" }, { name = "trimesh" }, ] provides-extras = ["vtk", "hdf5", "mesh-quality", "manifold", "cuda", "all-formats", "all"] @@ -1474,4 +1583,5 @@ dev = [ { name = "marimo", specifier = ">=0.20.2" }, { name = "pytest", specifier = ">=9.0.2" }, { name = "ruff", specifier = ">=0.15.2" }, + { name = "ty", specifier = ">=0.0.32" }, ] From 08eb0a719f6df0aadfa5d00f348926257a670304 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:26:37 +0200 Subject: [PATCH 02/21] feat(extrude): add input validation for rank and thickness Establish the public guardrails before any geometry logic lands so callers get fast, deterministic failures for invalid inputs. This keeps later helper tests focused on extrusion behavior rather than stub exceptions. Constraint: Public API errors must match the approved design doc strings closely enough for CLI wrapping and tests Rejected: Leave validation until the end-to-end task | would blur invalid-input failures with unfinished geometry work Confidence: high Scope-risk: narrow Reversibility: clean Directive: Preserve these entrypoint checks at the top of extrude_2d even if helpers are refactored later Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: Geometry behavior remains stubbed --- src/xeltofab/extrude.py | 4 ++++ tests/test_extrude.py | 23 ++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index d870946..c92c672 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -25,4 +25,8 @@ def extrude_2d( fill_holes: bool = False, ) -> trimesh.Trimesh: """Extrude a 2D field into a 3D triangle mesh.""" + if field.ndim != 2: + raise ValueError(f"field must be 2D, got shape {field.shape}") + if thickness <= 0: + raise ValueError(f"thickness must be positive, got {thickness}") raise NotImplementedError("extrude_2d body is filled in by later tasks") diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 78cec1d..cb6b41f 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -13,8 +13,21 @@ def test_extrude_module_importable(): assert callable(xtf.extrude_2d) -def test_extrude_stub_raises_not_implemented(): - """Skeleton stub raises NotImplementedError until later tasks fill it in.""" - field = np.ones((4, 4), dtype=float) - with pytest.raises(NotImplementedError): - xtf.extrude_2d(field, thickness=1.0) +def test_rejects_1d_field(): + with pytest.raises(ValueError, match="2D"): + xtf.extrude_2d(np.ones(10), thickness=5.0) + + +def test_rejects_3d_field(): + with pytest.raises(ValueError, match="2D"): + xtf.extrude_2d(np.ones((4, 4, 4)), thickness=5.0) + + +def test_rejects_zero_thickness(): + with pytest.raises(ValueError, match="thickness"): + xtf.extrude_2d(np.ones((4, 4)), thickness=0.0) + + +def test_rejects_negative_thickness(): + with pytest.raises(ValueError, match="thickness"): + xtf.extrude_2d(np.ones((4, 4)), thickness=-1.0) From ad5fc29716a4453e54c352e5fef3c01fe1d886d1 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:27:45 +0200 Subject: [PATCH 03/21] feat(extrude): add _build_binary helper with density/SDF threshold Implement the preprocessing subset that extrusion owns: Gaussian smoothing, field-type-aware thresholding, optional pinhole cleanup, and small-component filtering. The helper mirrors preprocess.py behavior where appropriate while keeping the extrusion-only min_component_area contract explicit. Constraint: xelToFab's installed scikit-image uses remove_small_objects(max_size=...) semantics, not min_size Rejected: Reuse preprocess() through a synthetic PipelineState | cannot represent SDF thresholds or the extrusion-specific island filter knob cleanly Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep _build_binary and preprocess.py behavior aligned for shared density settings; the parity test later depends on this Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: End-to-end contour and mesh generation still unimplemented --- src/xeltofab/extrude.py | 31 ++++++++++ tests/test_extrude.py | 123 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index c92c672..7e24276 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -12,6 +12,37 @@ import numpy as np import trimesh +from scipy.ndimage import gaussian_filter +from skimage.morphology import closing, disk, opening, remove_small_objects + + +def _build_binary( + field: np.ndarray, + *, + field_type: Literal["density", "sdf"], + level: float | None, + smooth_sigma: float, + fill_holes: bool, + min_component_area: int, +) -> np.ndarray: + """Clean a 2D field to a bool binary mask.""" + eff_level = level if level is not None else (0.0 if field_type == "sdf" else 0.5) + smoothed = gaussian_filter(field, sigma=smooth_sigma) if smooth_sigma > 0.0 else field + + binary = smoothed <= eff_level if field_type == "sdf" else smoothed >= eff_level + + if fill_holes: + selem = disk(1) + binary = opening(binary, selem) + binary = closing(binary, selem) + + if min_component_area > 0: + binary = remove_small_objects(binary, max_size=min_component_area - 1) + + if not binary.any(): + raise ValueError("no material above threshold — check field values and level") + + return binary def extrude_2d( diff --git a/tests/test_extrude.py b/tests/test_extrude.py index cb6b41f..cc52c90 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -6,6 +6,7 @@ import pytest import xeltofab as xtf +from xeltofab.extrude import _build_binary def test_extrude_module_importable(): @@ -31,3 +32,125 @@ def test_rejects_zero_thickness(): def test_rejects_negative_thickness(): with pytest.raises(ValueError, match="thickness"): xtf.extrude_2d(np.ones((4, 4)), thickness=-1.0) + + +def test_binary_density_default_level(): + """Density field thresholds at 0.5 by default.""" + field = np.array([[0.2, 0.8], [0.6, 0.4]]) + binary = _build_binary( + field, + field_type="density", + level=None, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + np.testing.assert_array_equal(binary, [[False, True], [True, False]]) + + +def test_binary_density_custom_level(): + """Density field honors explicit level.""" + field = np.array([[0.2, 0.8], [0.6, 0.4]]) + binary = _build_binary( + field, + field_type="density", + level=0.7, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + np.testing.assert_array_equal(binary, [[False, True], [False, False]]) + + +def test_binary_sdf_inside_is_negative(): + """SDF threshold: material where value <= level (default 0.0).""" + field = np.array([[-0.5, 0.5], [-0.1, 0.1]]) + binary = _build_binary( + field, + field_type="sdf", + level=None, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + np.testing.assert_array_equal(binary, [[True, False], [True, False]]) + + +def test_binary_empty_raises(): + """All-below-threshold input raises ValueError.""" + field = np.zeros((4, 4)) + with pytest.raises(ValueError, match="no material"): + _build_binary( + field, + field_type="density", + level=None, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + + +def test_binary_gaussian_smooth_bridges_gap(): + """Smoothing a single-pixel gap between two blocks bridges it before threshold.""" + field = np.zeros((5, 9), dtype=float) + field[:, :4] = 1.0 + field[:, 5:] = 1.0 + b0 = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + assert not b0[:, 4].any() + b1 = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=2.0, + fill_holes=False, + min_component_area=0, + ) + assert b1[:, 4].any() + + +def test_binary_fill_holes_closes_pinhole(): + """fill_holes=True morphologically closes a 1-pixel pinhole.""" + field = np.ones((5, 5), dtype=float) + field[2, 2] = 0.0 + b_off = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + assert not b_off[2, 2] + b_on = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=0.0, + fill_holes=True, + min_component_area=0, + ) + assert b_on[2, 2] + + +def test_binary_min_component_area_drops_orphan(): + """min_component_area removes small disconnected islands.""" + field = np.zeros((10, 10), dtype=float) + field[1:4, 1:4] = 1.0 + field[7:9, 7:9] = 1.0 + b = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=5, + ) + assert b[1:4, 1:4].all() + assert not b[7:9, 7:9].any() From da2842e1f91fbeb68132cb244d5584dd521aa8e0 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:28:37 +0200 Subject: [PATCH 04/21] feat(extrude): add _trace_contours helper with boundary-closing pad Trace extrusion boundaries from the binary mask with the same marching-squares backend the repo already uses for 2D extraction, but normalize coordinates immediately into canonical (x, y) geometry space. The zero pad guarantees closed loops even for material that touches the image boundary. Constraint: find_contours emits (row, col) and must be normalized before shapely sees the data Rejected: Keep native row/col ordering until mesh assembly | would propagate axis ambiguity and make clipping rectangles easy to get wrong Confidence: high Scope-risk: narrow Reversibility: clean Directive: Treat _trace_contours as the only place allowed to convert from skimage row/col coordinates into geometry coordinates Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: Polygonization and mesh assembly are still pending --- src/xeltofab/extrude.py | 8 ++++++++ tests/test_extrude.py | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 7e24276..25b76eb 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -13,6 +13,7 @@ import numpy as np import trimesh from scipy.ndimage import gaussian_filter +from skimage.measure import find_contours from skimage.morphology import closing, disk, opening, remove_small_objects @@ -45,6 +46,13 @@ def _build_binary( return binary +def _trace_contours(binary: np.ndarray) -> list[np.ndarray]: + """Trace closed contours from a bool mask in canonical (x, y) coordinates.""" + padded = np.pad(binary.astype(float), 1, constant_values=0.0) + raw = find_contours(padded, 0.5) + return [np.column_stack([contour[:, 1] - 1.0, contour[:, 0] - 1.0]) for contour in raw] + + def extrude_2d( field: np.ndarray, thickness: float, diff --git a/tests/test_extrude.py b/tests/test_extrude.py index cc52c90..023fee5 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -6,7 +6,7 @@ import pytest import xeltofab as xtf -from xeltofab.extrude import _build_binary +from xeltofab.extrude import _build_binary, _trace_contours def test_extrude_module_importable(): @@ -154,3 +154,34 @@ def test_binary_min_component_area_drops_orphan(): ) assert b[1:4, 1:4].all() assert not b[7:9, 7:9].any() + + +def test_trace_contours_single_blob(): + """A single filled rectangle in the interior produces one closed contour.""" + binary = np.zeros((10, 10), dtype=bool) + binary[3:7, 3:7] = True + contours = _trace_contours(binary) + assert len(contours) == 1 + c = contours[0] + np.testing.assert_allclose(c[0], c[-1]) + assert c[:, 0].min() >= 2.4 + assert c[:, 0].max() <= 6.6 + + +def test_trace_contours_two_disjoint_blobs(): + """Two disjoint filled regions produce two contours.""" + binary = np.zeros((10, 20), dtype=bool) + binary[2:5, 2:5] = True + binary[2:5, 12:15] = True + contours = _trace_contours(binary) + assert len(contours) == 2 + + +def test_trace_contours_blob_on_boundary_is_closed(): + """Material touching the image edge still yields a closed contour (via the zero pad).""" + binary = np.zeros((10, 10), dtype=bool) + binary[0:5, 0:5] = True + contours = _trace_contours(binary) + assert len(contours) == 1 + c = contours[0] + np.testing.assert_allclose(c[0], c[-1]) From e5e45f259493a1cbdd8a08554f69637598f4cabc Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:29:49 +0200 Subject: [PATCH 05/21] feat(extrude): add _polygonize helper with flush-boundary snap Turn traced contour loops into clean polygonal regions that preserve holes and clip back to the image rectangle when the source material touches the domain boundary. The implementation assigns CW rings to their containing CCW shell, then normalizes shapely's post-intersection output back to a MultiPolygon for downstream mesh construction. Constraint: Hole loops cannot be modeled as standalone Polygon objects and unioned; that fills the void instead of preserving it Rejected: Build one Polygon per contour and rely on unary_union to infer holes | fails for nested rings and loses the extrusion voids Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep contour coordinates canonical (x, y) and clip with box(0, 0, width - 1, height - 1) Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: Earcut triangulation and 3D assembly are still pending --- src/xeltofab/extrude.py | 67 +++++++++++++++++++++++++++++++++++++++++ tests/test_extrude.py | 62 +++++++++++++++++++++++++++++++++++++- 2 files changed, 128 insertions(+), 1 deletion(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 25b76eb..c030b78 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -13,6 +13,8 @@ import numpy as np import trimesh from scipy.ndimage import gaussian_filter +from shapely.geometry import GeometryCollection, LinearRing, MultiPolygon, Polygon, box +from shapely.ops import unary_union from skimage.measure import find_contours from skimage.morphology import closing, disk, opening, remove_small_objects @@ -53,6 +55,71 @@ def _trace_contours(binary: np.ndarray) -> list[np.ndarray]: return [np.column_stack([contour[:, 1] - 1.0, contour[:, 0] - 1.0]) for contour in raw] +def _collect_polygons(geom: object) -> list[Polygon]: + """Recursively flatten polygonal output from shapely set operations.""" + if isinstance(geom, Polygon): + return [geom] if geom.area > 0 else [] + if isinstance(geom, (MultiPolygon, GeometryCollection)): + polygons: list[Polygon] = [] + for part in geom.geoms: + polygons.extend(_collect_polygons(part)) + return polygons + return [] + + +def _polygonize( + contours: list[np.ndarray], + *, + height: int, + width: int, +) -> MultiPolygon: + """Build a clean, flush-to-edge MultiPolygon from raw contours.""" + shells: list[LinearRing] = [] + holes: list[LinearRing] = [] + for contour in contours: + if len(contour) < 4: + continue + ring = LinearRing(contour) + if ring.is_ccw: + shells.append(ring) + else: + holes.append(ring) + + if not shells: + raise ValueError("no valid shell polygons after contour tracing") + + shell_polys = [Polygon(shell) for shell in shells] + shell_holes: list[list[np.ndarray]] = [[] for _ in shell_polys] + for hole in holes: + hole_poly = Polygon(hole) + containing = [ + idx for idx, shell_poly in enumerate(shell_polys) if shell_poly.contains(hole_poly.representative_point()) + ] + if not containing: + continue + target = min(containing, key=lambda idx: shell_polys[idx].area) + shell_holes[target].append(np.asarray(hole.coords)) + + polygons = [ + Polygon(np.asarray(shell.coords), holes_for_shell) + for shell, holes_for_shell in zip(shells, shell_holes, strict=True) + ] + merged = unary_union(polygons) + cleaned = merged.buffer(0) + image_rect = box(0, 0, width - 1, height - 1) + snapped = cleaned.intersection(image_rect) + + if isinstance(snapped, Polygon): + return MultiPolygon([snapped]) + if isinstance(snapped, MultiPolygon): + return snapped + + polygons = _collect_polygons(snapped) + if not polygons: + raise ValueError("snapped geometry empty — no extrudable region") + return MultiPolygon(polygons) + + def extrude_2d( field: np.ndarray, thickness: float, diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 023fee5..3c41024 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -4,9 +4,10 @@ import numpy as np import pytest +from shapely.geometry import MultiPolygon import xeltofab as xtf -from xeltofab.extrude import _build_binary, _trace_contours +from xeltofab.extrude import _build_binary, _polygonize, _trace_contours def test_extrude_module_importable(): @@ -185,3 +186,62 @@ def test_trace_contours_blob_on_boundary_is_closed(): assert len(contours) == 1 c = contours[0] np.testing.assert_allclose(c[0], c[-1]) + + +def _contour_square(x0, x1, y0, y1): + """Helper: closed contour for an axis-aligned rectangle in (x, y).""" + return np.array( + [[x0, y0], [x1, y0], [x1, y1], [x0, y1], [x0, y0]], + dtype=float, + ) + + +def test_polygonize_single_blob(): + """A single contour becomes one polygon inside a MultiPolygon.""" + contours = [_contour_square(2, 6, 2, 6)] + mp = _polygonize(contours, height=10, width=10) + assert isinstance(mp, MultiPolygon) + assert len(mp.geoms) == 1 + assert mp.geoms[0].area == pytest.approx(16.0, rel=0.05) + + +def test_polygonize_with_interior_hole(): + """Outer CCW + inner CW rings produce a polygon with one hole.""" + outer = _contour_square(1, 9, 1, 9) + inner = _contour_square(3, 7, 3, 7)[::-1] + mp = _polygonize([outer, inner], height=10, width=10) + assert len(mp.geoms) == 1 + poly = mp.geoms[0] + assert len(poly.interiors) == 1 + assert poly.area == pytest.approx(64 - 16, rel=0.05) + + +def test_polygonize_snaps_to_image_rectangle(): + """When material touches the image edge, the resulting polygon has flush coords.""" + contours = [_contour_square(-0.5, 9.5, -0.5, 9.5)] + mp = _polygonize(contours, height=10, width=10) + assert len(mp.geoms) == 1 + minx, miny, maxx, maxy = mp.geoms[0].bounds + assert minx == pytest.approx(0.0) + assert miny == pytest.approx(0.0) + assert maxx == pytest.approx(9.0) + assert maxy == pytest.approx(9.0) + + +def test_polygonize_two_disjoint(): + """Two separate contours → MultiPolygon with two geoms.""" + contours = [_contour_square(1, 3, 1, 3), _contour_square(1, 3, 6, 8)] + mp = _polygonize(contours, height=10, width=10) + assert len(mp.geoms) == 2 + + +def test_polygonize_corner_hugging_material(): + """Material touching two adjacent image edges snaps flush on both axes.""" + contours = [_contour_square(-0.5, 4.5, -0.5, 4.5)] + mp = _polygonize(contours, height=10, width=10) + assert len(mp.geoms) == 1 + minx, miny, maxx, maxy = mp.geoms[0].bounds + assert minx == pytest.approx(0.0) + assert miny == pytest.approx(0.0) + assert maxx == pytest.approx(4.5) + assert maxy == pytest.approx(4.5) From 0fa0eac485ddc59f8db8af6e7b2651490086a15a Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:30:43 +0200 Subject: [PATCH 06/21] feat(extrude): add _triangulate_polygon via mapbox_earcut Triangulate each cleaned polygon cap with earcut so the later prism builder can reuse the same 2D vertices for bottom, top, and wall construction. The helper drops shapely's closing duplicate per ring and preserves hole rings in the ordering earcut expects. Constraint: mapbox-earcut expects cumulative ring-end offsets and treats every coordinate row as a distinct vertex Rejected: Hand-roll cap triangulation | unnecessary complexity when earcut already handles polygons with holes Confidence: high Scope-risk: narrow Reversibility: clean Directive: Never pass shapely's duplicated closing coordinate into earcut; it creates degenerate vertices and unstable indexing Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: 3D cap orientation and side-wall assembly remain pending --- src/xeltofab/extrude.py | 23 +++++++++++++++++++++++ tests/test_extrude.py | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index c030b78..568cbfc 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -10,6 +10,7 @@ from typing import Literal +import mapbox_earcut import numpy as np import trimesh from scipy.ndimage import gaussian_filter @@ -120,6 +121,28 @@ def _polygonize( return MultiPolygon(polygons) +def _triangulate_polygon(poly: Polygon) -> tuple[np.ndarray, np.ndarray]: + """Triangulate a shapely Polygon (with holes) via mapbox_earcut.""" + + def _ring_coords(ring: LinearRing) -> np.ndarray: + coords = np.asarray(ring.coords, dtype=np.float64) + if len(coords) >= 2 and np.allclose(coords[0], coords[-1]): + coords = coords[:-1] + return coords + + exterior = _ring_coords(poly.exterior) + holes = [_ring_coords(interior) for interior in poly.interiors] + + vertices = np.concatenate([exterior, *holes], axis=0) if holes else exterior + ring_ends = [len(exterior)] + for hole in holes: + ring_ends.append(ring_ends[-1] + len(hole)) + + flat_triangles = mapbox_earcut.triangulate_float64(vertices, np.asarray(ring_ends, dtype=np.uint32)) + triangles = np.asarray(flat_triangles, dtype=np.int64).reshape(-1, 3) + return vertices, triangles + + def extrude_2d( field: np.ndarray, thickness: float, diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 3c41024..2e46004 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -4,10 +4,10 @@ import numpy as np import pytest -from shapely.geometry import MultiPolygon +from shapely.geometry import MultiPolygon, Polygon import xeltofab as xtf -from xeltofab.extrude import _build_binary, _polygonize, _trace_contours +from xeltofab.extrude import _build_binary, _polygonize, _trace_contours, _triangulate_polygon def test_extrude_module_importable(): @@ -245,3 +245,31 @@ def test_polygonize_corner_hugging_material(): assert miny == pytest.approx(0.0) assert maxx == pytest.approx(4.5) assert maxy == pytest.approx(4.5) + + +def test_triangulate_simple_square(): + """A 4-vertex square triangulates into 2 triangles, 4 vertices.""" + poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4)]) + verts, tris = _triangulate_polygon(poly) + assert verts.shape == (4, 2) + assert tris.shape == (2, 3) + assert tris.max() < len(verts) + assert tris.min() >= 0 + + +def test_triangulate_polygon_with_hole(): + """A square with a central hole yields outer+hole vertices and enough triangles.""" + outer = [(0, 0), (10, 0), (10, 10), (0, 10)] + hole = [(3, 3), (7, 3), (7, 7), (3, 7)] + poly = Polygon(outer, [hole]) + verts, tris = _triangulate_polygon(poly) + assert verts.shape == (8, 2) + assert len(tris) >= 8 + assert tris.max() < len(verts) + + +def test_triangulate_skips_closing_duplicate(): + """Shapely exteriors repeat the first point; _triangulate_polygon must drop it.""" + poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4), (0, 0)]) + verts, _ = _triangulate_polygon(poly) + assert verts.shape == (4, 2) From 8c56c2cfb05793440d6951de49c499241db6ec92 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:31:38 +0200 Subject: [PATCH 07/21] feat(extrude): add _build_prism_mesh (caps + walls) via trimesh Assemble the cleaned 2D polygons into closed prisms by reusing the cap triangulation for top and bottom faces and stitching every ring edge into side walls. The implementation uses the corrected cap winding (bottom reversed, top kept) and relies on ring orientation so holes generate inward cavity walls with outward-facing normals. Constraint: A CCW triangle in the xy-plane points +z, so the bottom cap must reverse earcut winding for outward normals Rejected: Swap x and y late in the pipeline | that would introduce a reflection and force a second round of winding fixes Confidence: high Scope-risk: moderate Reversibility: clean Directive: Preserve the ring order emitted by _triangulate_polygon when emitting walls; holes depend on that orientation Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: Public extrude_2d wiring and real fixture integration are still pending --- src/xeltofab/extrude.py | 48 +++++++++++++++++++++++++++++++++++++++ tests/test_extrude.py | 50 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 568cbfc..107a6b6 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -8,6 +8,7 @@ from __future__ import annotations +import warnings from typing import Literal import mapbox_earcut @@ -143,6 +144,53 @@ def _ring_coords(ring: LinearRing) -> np.ndarray: return vertices, triangles +def _build_prism_mesh(multi_poly: MultiPolygon, thickness: float) -> trimesh.Trimesh: + """Turn a MultiPolygon + thickness into a watertight trimesh.Trimesh.""" + all_vertices: list[np.ndarray] = [] + all_faces: list[np.ndarray] = [] + vertex_offset = 0 + + for poly in multi_poly.geoms: + vertices_2d, cap_triangles = _triangulate_polygon(poly) + count = len(vertices_2d) + + bottom = np.column_stack([vertices_2d, np.zeros(count)]) + top = np.column_stack([vertices_2d, np.full(count, thickness)]) + poly_vertices = np.vstack([bottom, top]) + + bottom_faces = cap_triangles[:, ::-1].copy() + top_faces = cap_triangles.copy() + count + + wall_faces: list[list[int]] = [] + ring_start = 0 + for ring in [poly.exterior, *poly.interiors]: + coords = np.asarray(ring.coords, dtype=np.float64) + if len(coords) >= 2 and np.allclose(coords[0], coords[-1]): + coords = coords[:-1] + ring_count = len(coords) + for idx in range(ring_count): + idx_next = (idx + 1) % ring_count + bottom_i = ring_start + idx + bottom_next = ring_start + idx_next + top_i = bottom_i + count + top_next = bottom_next + count + wall_faces.append([bottom_i, bottom_next, top_next]) + wall_faces.append([bottom_i, top_next, top_i]) + ring_start += ring_count + + poly_faces = np.vstack([bottom_faces, top_faces, np.asarray(wall_faces, dtype=np.int64)]) + all_vertices.append(poly_vertices) + all_faces.append(poly_faces + vertex_offset) + vertex_offset += len(poly_vertices) + + mesh = trimesh.Trimesh(vertices=np.vstack(all_vertices), faces=np.vstack(all_faces), process=True) + + if not (mesh.is_watertight and mesh.is_winding_consistent): + warnings.warn("extruded mesh is not watertight; printing may fail", stacklevel=2) + + return mesh + + def extrude_2d( field: np.ndarray, thickness: float, diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 2e46004..2b5f50a 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -7,7 +7,7 @@ from shapely.geometry import MultiPolygon, Polygon import xeltofab as xtf -from xeltofab.extrude import _build_binary, _polygonize, _trace_contours, _triangulate_polygon +from xeltofab.extrude import _build_binary, _build_prism_mesh, _polygonize, _trace_contours, _triangulate_polygon def test_extrude_module_importable(): @@ -273,3 +273,51 @@ def test_triangulate_skips_closing_duplicate(): poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4), (0, 0)]) verts, _ = _triangulate_polygon(poly) assert verts.shape == (4, 2) + + +def test_prism_mesh_from_square_is_watertight(): + poly = Polygon([(0, 0), (9, 0), (9, 9), (0, 9)]) + mp = MultiPolygon([poly]) + mesh = _build_prism_mesh(mp, thickness=5.0) + assert mesh.is_watertight + assert mesh.is_winding_consistent + + +def test_prism_mesh_volume_matches_extrusion(): + """Volume = polygon_area * thickness.""" + poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4)]) + mp = MultiPolygon([poly]) + mesh = _build_prism_mesh(mp, thickness=3.0) + assert mesh.volume == pytest.approx(4 * 4 * 3.0, rel=1e-6) + + +def test_prism_mesh_z_bounds_start_at_zero(): + poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4)]) + mp = MultiPolygon([poly]) + mesh = _build_prism_mesh(mp, thickness=7.0) + zmin = mesh.vertices[:, 2].min() + zmax = mesh.vertices[:, 2].max() + assert zmin == pytest.approx(0.0) + assert zmax == pytest.approx(7.0) + + +def test_prism_mesh_polygon_with_hole_is_watertight(): + """Annulus extrudes to a watertight genus-1 shell.""" + outer = [(0, 0), (10, 0), (10, 10), (0, 10)] + hole = [(3, 3), (7, 3), (7, 7), (3, 7)][::-1] + poly = Polygon(outer, [hole]) + mp = MultiPolygon([poly]) + mesh = _build_prism_mesh(mp, thickness=2.0) + assert mesh.is_watertight + assert mesh.volume == pytest.approx(168.0, rel=1e-3) + + +def test_prism_mesh_two_disjoint_blobs(): + a = Polygon([(0, 0), (2, 0), (2, 2), (0, 2)]) + b = Polygon([(5, 5), (7, 5), (7, 7), (5, 7)]) + mp = MultiPolygon([a, b]) + mesh = _build_prism_mesh(mp, thickness=1.0) + split = mesh.split(only_watertight=True) + assert len(split) == 2 + for piece in split: + assert piece.is_watertight From cad5e1610f69a2d447175059fdd0f6f6f715b944 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:33:01 +0200 Subject: [PATCH 08/21] feat(extrude): wire extrude_2d end-to-end with helper chain Replace the public stub with the full extrusion pipeline: binary cleanup, contour tracing, polygonization, and prism assembly. While wiring the helpers into the public API, the end-to-end tests exposed a real shapely post-clipping behavior: intersection/buffer can flip ring orientation, so the polygon output is normalized before meshing to keep cap and wall winding consistent. Constraint: The public extrusion path must stay standalone and avoid pipeline.py/state.py/extract.py changes Rejected: Fix negative volumes by swapping axes at the end | would mask the real winding problem and introduce a reflected coordinate frame Confidence: high Scope-risk: moderate Reversibility: clean Directive: After any shapely cleanup or clipping step, re-orient polygons before using ring direction for 3D face emission Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format src/xeltofab/extrude.py tests/test_extrude.py; uv run ruff check src/xeltofab/extrude.py tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: CLI and real-fixture integration remain pending --- src/xeltofab/extrude.py | 27 ++++++++++++++++++----- tests/test_extrude.py | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 107a6b6..8114305 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -16,6 +16,7 @@ import trimesh from scipy.ndimage import gaussian_filter from shapely.geometry import GeometryCollection, LinearRing, MultiPolygon, Polygon, box +from shapely.geometry.polygon import orient from shapely.ops import unary_union from skimage.measure import find_contours from skimage.morphology import closing, disk, opening, remove_small_objects @@ -69,6 +70,11 @@ def _collect_polygons(geom: object) -> list[Polygon]: return [] +def _orient_polygon(poly: Polygon) -> Polygon: + """Normalize a polygon to CCW exterior and CW holes.""" + return orient(poly, sign=1.0) + + def _polygonize( contours: list[np.ndarray], *, @@ -112,14 +118,14 @@ def _polygonize( snapped = cleaned.intersection(image_rect) if isinstance(snapped, Polygon): - return MultiPolygon([snapped]) + return MultiPolygon([_orient_polygon(snapped)]) if isinstance(snapped, MultiPolygon): - return snapped + return MultiPolygon([_orient_polygon(poly) for poly in snapped.geoms]) polygons = _collect_polygons(snapped) if not polygons: raise ValueError("snapped geometry empty — no extrudable region") - return MultiPolygon(polygons) + return MultiPolygon([_orient_polygon(poly) for poly in polygons]) def _triangulate_polygon(poly: Polygon) -> tuple[np.ndarray, np.ndarray]: @@ -201,9 +207,20 @@ def extrude_2d( smooth_sigma: float = 0.0, fill_holes: bool = False, ) -> trimesh.Trimesh: - """Extrude a 2D field into a 3D triangle mesh.""" + """Extrude a 2D field into a 3D triangle mesh for fabrication.""" if field.ndim != 2: raise ValueError(f"field must be 2D, got shape {field.shape}") if thickness <= 0: raise ValueError(f"thickness must be positive, got {thickness}") - raise NotImplementedError("extrude_2d body is filled in by later tasks") + binary = _build_binary( + field, + field_type=field_type, + level=level, + smooth_sigma=smooth_sigma, + fill_holes=fill_holes, + min_component_area=min_component_area, + ) + contours = _trace_contours(binary) + height, width = binary.shape + multi_poly = _polygonize(contours, height=height, width=width) + return _build_prism_mesh(multi_poly, thickness=thickness) diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 2b5f50a..c1b6261 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -321,3 +321,51 @@ def test_prism_mesh_two_disjoint_blobs(): assert len(split) == 2 for piece in split: assert piece.is_watertight + + +def test_extrude_2d_square_end_to_end(): + field = np.ones((10, 10), dtype=float) + mesh = xtf.extrude_2d(field, thickness=5.0) + assert mesh.is_watertight + assert mesh.volume == pytest.approx(9 * 9 * 5.0, rel=1e-3) + + +def test_extrude_2d_centered_hole(): + field = np.zeros((20, 20), dtype=float) + field[2:18, 2:18] = 1.0 + field[8:12, 8:12] = 0.0 + mesh = xtf.extrude_2d(field, thickness=3.0) + assert mesh.is_watertight + assert mesh.volume > 0 + assert mesh.volume < 20 * 20 * 3.0 + assert mesh.euler_number == 0 + + +def test_extrude_2d_two_disjoint_blobs(): + field = np.zeros((10, 20), dtype=float) + field[2:5, 2:5] = 1.0 + field[2:5, 12:15] = 1.0 + mesh = xtf.extrude_2d(field, thickness=2.0) + split = mesh.split(only_watertight=True) + assert len(split) == 2 + + +def test_extrude_2d_boundary_flush(): + """Full-image square produces a mesh with vertices at exactly x=0 and x=W-1.""" + field = np.ones((10, 10), dtype=float) + mesh = xtf.extrude_2d(field, thickness=1.0) + xs = mesh.vertices[:, 0] + ys = mesh.vertices[:, 1] + assert np.isclose(xs.min(), 0.0) + assert np.isclose(xs.max(), 9.0) + assert np.isclose(ys.min(), 0.0) + assert np.isclose(ys.max(), 9.0) + + +def test_extrude_2d_sdf_input(): + """SDF input with level=0.0 extrudes the inside (negative-value) region.""" + y, x = np.mgrid[-10:10, -10:10].astype(float) + sdf = np.sqrt(x**2 + y**2) - 5.0 + mesh = xtf.extrude_2d(sdf, thickness=2.0, field_type="sdf") + assert mesh.is_watertight + assert mesh.volume == pytest.approx(78.5 * 2.0, rel=0.15) From 724528a04c7a90796ad5ef6e946b0dc7e745b730 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:33:31 +0200 Subject: [PATCH 09/21] test(extrude): add property tests for volume scaling and area tracking Lock in two high-signal invariants for the public extrusion API: thicker extrusions scale volume linearly, and projected area stays close to the source material area despite marching-squares subpixel boundaries. These checks make future geometry refactors less likely to silently break physically meaningful behavior. Constraint: Marching-squares boundaries live on subpixel offsets, so area assertions must stay qualitative rather than exact Rejected: Assert exact projected area formulas for traced fields | too brittle against contour discretization and likely to flake Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep future extrusion tests tolerant of marching-squares half-pixel geometry unless the tracing algorithm itself changes Tested: uv run pytest tests/test_extrude.py -v; uv run ruff format tests/test_extrude.py; uv run ruff check tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: No new CLI or fixture coverage in this task --- tests/test_extrude.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/test_extrude.py b/tests/test_extrude.py index c1b6261..5423f0d 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -369,3 +369,23 @@ def test_extrude_2d_sdf_input(): mesh = xtf.extrude_2d(sdf, thickness=2.0, field_type="sdf") assert mesh.is_watertight assert mesh.volume == pytest.approx(78.5 * 2.0, rel=0.15) + + +def test_volume_monotone_in_thickness(): + """Same field, different thickness: volume scales linearly.""" + field = np.zeros((10, 10), dtype=float) + field[2:8, 2:8] = 1.0 + v1 = xtf.extrude_2d(field, thickness=1.0).volume + v5 = xtf.extrude_2d(field, thickness=5.0).volume + v10 = xtf.extrude_2d(field, thickness=10.0).volume + assert v5 == pytest.approx(v1 * 5.0, rel=1e-6) + assert v10 == pytest.approx(v1 * 10.0, rel=1e-6) + + +def test_cap_area_tracks_binary_pixel_count(): + """Projected area tracks material pixel count within a loose discretization bound.""" + field = np.zeros((12, 12), dtype=float) + field[3:9, 3:9] = 1.0 + mesh = xtf.extrude_2d(field, thickness=1.0) + projected_area = mesh.volume + assert projected_area == pytest.approx(36.0, rel=0.15) From 0a6d908096056f5af0bd501ee60430c89365e847 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:34:22 +0200 Subject: [PATCH 10/21] test(extrude): add EngiBench Beams2D fixtures and preprocess parity test Validate the public extrusion path on the checked-in Beams2D fixtures and lock in parity between extrusion's binary preprocessing and the existing density pipeline behavior. This catches regressions where the standalone extrusion cleanup drifts away from preprocess.py or becomes impractical on real dataset sizes. Constraint: The parity check must reflect preprocess.py's max_size-based small-component semantics exactly Rejected: Limit coverage to synthetic fields | would miss real contour complexity and fixture-scale performance surprises Confidence: high Scope-risk: narrow Reversibility: clean Directive: If preprocess.py changes its morphology or component filter semantics, update _build_binary and this parity test in the same change Tested: uv run pytest tests/test_extrude.py -v; uv run ruff check tests/test_extrude.py; uv run ruff format tests/test_extrude.py; uv run ty check src/xeltofab/extrude.py Not-tested: CLI wiring remains out of scope for this task --- tests/test_extrude.py | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 5423f0d..5b0428f 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -2,13 +2,18 @@ from __future__ import annotations +from pathlib import Path + import numpy as np import pytest +import trimesh as _trimesh from shapely.geometry import MultiPolygon, Polygon import xeltofab as xtf from xeltofab.extrude import _build_binary, _build_prism_mesh, _polygonize, _trace_contours, _triangulate_polygon +FIXTURE_DIR = Path(__file__).parent.parent / "data" / "examples" + def test_extrude_module_importable(): """The extrude_2d symbol is reachable via the package root.""" @@ -389,3 +394,45 @@ def test_cap_area_tracks_binary_pixel_count(): mesh = xtf.extrude_2d(field, thickness=1.0) projected_area = mesh.volume assert projected_area == pytest.approx(36.0, rel=0.15) + + +def test_beams2d_25x50_extrusion(tmp_path): + field = np.load(FIXTURE_DIR / "beams_2d_25x50_sample0.npy") + assert field.ndim == 2 + mesh = xtf.extrude_2d(field, thickness=10.0) + assert mesh.volume > 0 + stl_path = tmp_path / "beam.stl" + mesh.export(stl_path) + loaded = _trimesh.load(stl_path, force="mesh") + assert len(loaded.vertices) > 0 + + +def test_beams2d_100x200_extrusion(): + field = np.load(FIXTURE_DIR / "beams_2d_100x200_sample1.npy") + mesh = xtf.extrude_2d(field, thickness=15.0, min_component_area=10) + assert mesh.volume > 0 + assert len(mesh.faces) < 500_000 + + +def test_density_preprocess_parity(): + """extrude_2d's internal binary matches preprocess() when parameters align.""" + from xeltofab.preprocess import preprocess as pipeline_preprocess + from xeltofab.state import PipelineParams, PipelineState + + field = np.load(FIXTURE_DIR / "beams_2d_25x50_sample0.npy") + params = PipelineParams( + threshold=0.5, + smooth_sigma=1.0, + morph_radius=1, + ) + state = pipeline_preprocess(PipelineState(field=field, params=params)) + heur_max_size = max(field.size // 200, 8) - 1 + our_binary = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=1.0, + fill_holes=True, + min_component_area=heur_max_size + 1, + ) + np.testing.assert_array_equal(our_binary, state.binary.astype(bool)) From 9e2c69b4868202427dadcca4a649ae9c37104cc4 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:35:45 +0200 Subject: [PATCH 11/21] =?UTF-8?q?feat(cli):=20add=20`xtf=20extrude`=20subc?= =?UTF-8?q?ommand=20for=202D=E2=86=923D=20STL=20export?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose the standalone extrusion API through the CLI so 2D scalar fields can go straight from the existing loader stack to fabrication-ready mesh files. The command mirrors the Python API options, rejects 3D inputs with a friendly handoff to `xtf process`, and keeps output format inference delegated to trimesh via the destination suffix. Constraint: The CLI must reuse load_field instead of bypassing repo loaders for .mat/.npz/.csv inputs Rejected: Route 2D extrusion through the existing process command | conflicts with the deliberate standalone design and existing 2D contour behavior Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep CLI field_type typed as Literal[density, sdf] so ty can verify the handoff into extrude_2d Tested: uv run pytest tests/test_cli_extrude.py -v; uv run pytest -v; uv run ruff format src/xeltofab/cli.py tests/test_cli_extrude.py; uv run ruff check .; uv run ty check src/xeltofab/extrude.py src/xeltofab/cli.py Not-tested: Manual shell smoke against the real Beams2D fixture is deferred to final verification --- src/xeltofab/cli.py | 53 ++++++++++++++++++++++++++++++++++ tests/test_cli_extrude.py | 61 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 tests/test_cli_extrude.py diff --git a/src/xeltofab/cli.py b/src/xeltofab/cli.py index 414d0a0..5755d53 100644 --- a/src/xeltofab/cli.py +++ b/src/xeltofab/cli.py @@ -3,9 +3,11 @@ from __future__ import annotations from pathlib import Path +from typing import Literal import click +from xeltofab.extrude import extrude_2d from xeltofab.field_plots import plot_comparison from xeltofab.io import load_field, save_mesh from xeltofab.loaders import get_supported_formats @@ -201,3 +203,54 @@ def formats() -> None: exts = ", ".join(f["extensions"]) status = "available" if f["available"] else "missing" click.echo(f"{f['name']:<10} {exts:<20} {status:<12} {f['install_hint']}") + + +@main.command() +@click.argument("input_path", type=click.Path(exists=True, path_type=Path)) +@click.option("-o", "--output", "output_path", type=click.Path(path_type=Path), required=True) +@click.option("-t", "--thickness", type=float, required=True, help="Extrusion height in grid units (pixels)") +@click.option("-f", "--field-name", default=None, help="Field/variable name to extract from container formats") +@click.option("--shape", "shape_str", default=None, help="Grid shape for flat data, e.g. 25x50") +@click.option("--field-type", type=click.Choice(["density", "sdf"]), default="density", help="Input field type") +@click.option("--level", type=float, default=None, help="Threshold override (default: 0.5 density / 0.0 SDF)") +@click.option("--min-component-area", type=int, default=0, help="Drop components smaller than N pixels") +@click.option("--smooth-sigma", type=float, default=0.0, help="Pre-threshold Gaussian sigma (0 = disabled)") +@click.option("--fill-holes", is_flag=True, help="Morphologically close pinholes before tracing") +def extrude( + input_path: Path, + output_path: Path, + thickness: float, + field_name: str | None, + shape_str: str | None, + field_type: Literal["density", "sdf"], + level: float | None, + min_component_area: int, + smooth_sigma: float, + fill_holes: bool, +) -> None: + """Extrude a 2D scalar field into a 3D mesh (STL, OBJ, PLY, ...).""" + shape = _parse_shape(shape_str) if shape_str else None + + try: + state = load_field(input_path, field_name=field_name, shape=shape) + except (ValueError, KeyError, ImportError) as error: + raise click.ClickException(str(error)) from None + + if state.ndim != 2: + raise click.ClickException(f"extrude requires a 2D field; got {state.ndim}D. Use 'xtf process' for 3D inputs.") + + try: + mesh = extrude_2d( + state.field, + thickness=thickness, + field_type=field_type, + level=level, + min_component_area=min_component_area, + smooth_sigma=smooth_sigma, + fill_holes=fill_holes, + ) + except ValueError as error: + raise click.ClickException(str(error)) from None + + mesh.export(output_path) + click.echo(f"Saved extruded mesh to {output_path}") diff --git a/tests/test_cli_extrude.py b/tests/test_cli_extrude.py new file mode 100644 index 0000000..ebd8a21 --- /dev/null +++ b/tests/test_cli_extrude.py @@ -0,0 +1,61 @@ +"""Tests for the `xtf extrude` CLI subcommand.""" + +from pathlib import Path + +import numpy as np +import trimesh +from click.testing import CliRunner + +from xeltofab.cli import main + + +def test_cli_extrude_beam(tmp_path: Path): + """Full CLI round-trip: load .npy → extrude → STL.""" + field = np.zeros((10, 10), dtype=float) + field[2:8, 2:8] = 1.0 + input_path = tmp_path / "field.npy" + np.save(input_path, field) + output_path = tmp_path / "part.stl" + + runner = CliRunner() + result = runner.invoke( + main, + ["extrude", str(input_path), "-o", str(output_path), "-t", "5"], + ) + assert result.exit_code == 0, result.output + assert output_path.exists() + mesh = trimesh.load(output_path, force="mesh") + assert mesh.volume > 0 + + +def test_cli_extrude_obj_suffix(tmp_path: Path): + """Output format follows the file suffix — no --format flag needed.""" + field = np.ones((5, 5), dtype=float) + input_path = tmp_path / "field.npy" + np.save(input_path, field) + output_path = tmp_path / "part.obj" + + runner = CliRunner() + result = runner.invoke( + main, + ["extrude", str(input_path), "-o", str(output_path), "-t", "2"], + ) + assert result.exit_code == 0, result.output + assert output_path.exists() + + +def test_cli_extrude_rejects_3d_field(tmp_path: Path): + """3D input produces a friendly error pointing to the `process` subcommand.""" + field = np.ones((5, 5, 5), dtype=float) + input_path = tmp_path / "volume.npy" + np.save(input_path, field) + output_path = tmp_path / "part.stl" + + runner = CliRunner() + result = runner.invoke( + main, + ["extrude", str(input_path), "-o", str(output_path), "-t", "5"], + ) + assert result.exit_code != 0 + assert "2D" in result.output + assert "process" in result.output From e43b0621d6f36c45dc1593658efb3fd50cbedff2 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:36:12 +0200 Subject: [PATCH 12/21] =?UTF-8?q?docs:=20add=202D=E2=86=923D=20extrusion?= =?UTF-8?q?=20example=20to=20README=20quick=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document the new extrusion workflow where users already look first: the Quick Start section. The examples cover both the CLI path and the Python API so the feature is discoverable for dataset users and library consumers alike. Constraint: Website docs are intentionally out of scope for this implementation pass Rejected: Leave usage details only in code/tests | too hard for new users to discover the new command and API Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep README examples aligned with the actual CLI flags and public import surface whenever extrude_2d changes Tested: uv run python -c "import pathlib; print(pathlib.Path('README.md').read_text())" | head -80; uv run ty check src/xeltofab/extrude.py src/xeltofab/cli.py Not-tested: Markdown renderer-specific formatting outside the local text preview --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index c0c0dfe..f4e5611 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,27 @@ xtf process density.npy -o output.stl --threshold 0.4 --sigma 1.5 --viz xtf viz density_2d.npy -o comparison.png ``` +### 2D → 3D extrusion + +```bash +# Turn a 2D density field into a print-ready STL +xtf extrude density_2d.npy -o part.stl --thickness 10 + +# Printability cleanup: drop small islands + pre-smooth +xtf extrude beam.npy -o beam.stl -t 15 --min-component-area 20 --smooth-sigma 0.8 +``` + +From Python: + +```python +import numpy as np +import xeltofab as xtf + +field = np.load("density_2d.npy") +mesh = xtf.extrude_2d(field, thickness=10) +mesh.export("part.stl") +``` + ## Pipeline ``` From 9a60bfd6689b30e39eb52949deb04db5a80b6fb5 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 15:37:14 +0200 Subject: [PATCH 13/21] docs: record the canonical 2D extrusion print path in project memory Capture the new standalone extrusion workflow and the two failure modes that were easy to miss during implementation: keeping preprocess parity in sync and re-orienting polygons after shapely cleanup before using ring winding for 3D face emission. This preserves the feature's rationale for the next maintainer. Constraint: PROGRESS entries must record the concrete fix commit and prevention guidance immediately after the work lands Rejected: Leave the learning only in code comments and tests | easier for future work to miss the same geometry pitfall Confidence: high Scope-risk: narrow Reversibility: clean Directive: When extrusion geometry changes, update PROGRESS alongside code if the change teaches a non-obvious lesson Tested: Manual review of docs/PROGRESS.md entry against landed commits and final verification results Not-tested: No executable behavior change; documentation-only commit --- docs/PROGRESS.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 1fd43f3..465a104 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -280,3 +280,15 @@ Images output to `website/public/images/getting-started/` and embedded in MDX pa **Resolution:** Updated both locations to use `ayu-light`. Files: `website/source.config.ts` (line 23) and `website/app/(home)/page.tsx` (line 40). **Prevention:** When changing site-wide visual settings (themes, fonts, colors), grep for all occurrences of the current value across the website directory — don't assume a single config file controls everything. Fumadocs' `rehypeCodeOptions` only applies to MDX content, not standalone `codeToHtml()` calls in page components. + +--- + +### 2026-04-21 — 2D Fields Had No Fabrication Output Path + +**Problem:** The repo could extract 2D marching-squares contours, but it had no supported path from a 2D density/SDF field to a fabrication-ready 3D mesh. EngiBench Beams2D-style inputs stopped at contours instead of producing STL/OBJ output. + +**Root cause:** The original pipeline architecture treated 2D extraction as a terminal contour artifact, and there was no standalone extrusion surface bridging 2D fields into the existing mesh export workflow. + +**Resolution:** Added a standalone `extrude_2d()` API plus `xtf extrude` CLI command, backed by binary cleanup, contour tracing, polygonization with hole preservation, earcut cap triangulation, and prism mesh assembly. Also added regression/property/fixture/CLI coverage. Fix: `9e2c69b`. + +**Prevention:** `extrude_2d` is the canonical 2D print path. If `preprocess.py` changes shared density-cleanup behavior, update `_build_binary` and the preprocess parity test in the same change. After shapely cleanup/clipping, normalize polygon winding before using ring orientation for 3D face emission. From df74c99142c21a4579cb25ad966558445e4a7951 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 21:45:58 +0200 Subject: [PATCH 14/21] fix(cli): support python -m xeltofab.cli invocation Fresh verification uncovered that the installed console script worked but direct module invocation did nothing, because the Click application module defined the commands without ever calling the entrypoint when executed as `python -m`. Add the standard `__main__` handoff and lock it with a regression test so both launch paths behave the same. Constraint: The existing `xtf` console script entrypoint must keep working unchanged Rejected: Ignore module invocation because the console script already works | verification found a real broken launch path that is cheap to support Confidence: high Scope-risk: narrow Reversibility: clean Directive: Any future CLI module expected to support `python -m ...` needs an explicit `if __name__ == "__main__": main()` guard plus a test Tested: uv run pytest tests/test_cli_extrude.py -v; uv run ruff check src/xeltofab/cli.py tests/test_cli_extrude.py; uv run ruff format src/xeltofab/cli.py tests/test_cli_extrude.py; uv run ty check src/xeltofab/extrude.py src/xeltofab/cli.py Not-tested: Full repository regression suite not rerun in this bugfix commit --- src/xeltofab/cli.py | 4 ++++ tests/test_cli_extrude.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/xeltofab/cli.py b/src/xeltofab/cli.py index 5755d53..a650415 100644 --- a/src/xeltofab/cli.py +++ b/src/xeltofab/cli.py @@ -254,3 +254,7 @@ def extrude( mesh.export(output_path) click.echo(f"Saved extruded mesh to {output_path}") + + +if __name__ == "__main__": + main() diff --git a/tests/test_cli_extrude.py b/tests/test_cli_extrude.py index ebd8a21..799c3d8 100644 --- a/tests/test_cli_extrude.py +++ b/tests/test_cli_extrude.py @@ -1,5 +1,7 @@ """Tests for the `xtf extrude` CLI subcommand.""" +import subprocess +import sys from pathlib import Path import numpy as np @@ -59,3 +61,33 @@ def test_cli_extrude_rejects_3d_field(tmp_path: Path): assert result.exit_code != 0 assert "2D" in result.output assert "process" in result.output + + +def test_module_invocation_extrude_beam(tmp_path: Path): + """`python -m xeltofab.cli` supports the extrude subcommand.""" + field = np.zeros((10, 10), dtype=float) + field[2:8, 2:8] = 1.0 + input_path = tmp_path / "field.npy" + np.save(input_path, field) + output_path = tmp_path / "part.stl" + + result = subprocess.run( + [ + sys.executable, + "-m", + "xeltofab.cli", + "extrude", + str(input_path), + "-o", + str(output_path), + "-t", + "5", + ], + capture_output=True, + text=True, + check=False, + ) + assert result.returncode == 0, result.stderr or result.stdout + assert output_path.exists() + mesh = trimesh.load(output_path, force="mesh") + assert mesh.volume > 0 From 4c1f3c538485b5ce6cc12b087b6edb0f8cb13376 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 21:46:35 +0200 Subject: [PATCH 15/21] docs: record the module-invocation CLI fix in project memory Fresh verification uncovered a non-obvious CLI gap after the main extrusion feature landed: `python -m xeltofab.cli` defined commands but never executed the Click app. Record the bug, root cause, fix commit, and prevention rule so future CLI work does not regress the alternate launch path. Constraint: PROGRESS entries must capture post-implementation bugs and their fix commits once discovered Rejected: Leave the follow-up fix undocumented | makes it too easy to reintroduce the same missing `__main__` handoff later Confidence: high Scope-risk: narrow Reversibility: clean Directive: If a CLI module is intended to support module execution, keep a regression test and a `__main__` handoff together Tested: Manual audit of docs/PROGRESS.md entry against commit df74c99 and module-invocation verification output Not-tested: Documentation-only commit; no runtime behavior change --- docs/PROGRESS.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 465a104..9c1a837 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -292,3 +292,15 @@ Images output to `website/public/images/getting-started/` and embedded in MDX pa **Resolution:** Added a standalone `extrude_2d()` API plus `xtf extrude` CLI command, backed by binary cleanup, contour tracing, polygonization with hole preservation, earcut cap triangulation, and prism mesh assembly. Also added regression/property/fixture/CLI coverage. Fix: `9e2c69b`. **Prevention:** `extrude_2d` is the canonical 2D print path. If `preprocess.py` changes shared density-cleanup behavior, update `_build_binary` and the preprocess parity test in the same change. After shapely cleanup/clipping, normalize polygon winding before using ring orientation for 3D face emission. + +--- + +### 2026-04-21 — `python -m xeltofab.cli` Did Not Run the Click App + +**Problem:** Direct module invocation (`python -m xeltofab.cli extrude ...`) exited without creating output, even though the installed `xtf` console script worked. + +**Root cause:** `src/xeltofab/cli.py` defined the Click group and subcommands but had no `if __name__ == "__main__": main()` guard, so running the module executed only definitions. + +**Resolution:** Added the missing module-entry guard and a regression test covering `python -m xeltofab.cli extrude ...`. Fix: `df74c99`. + +**Prevention:** Any CLI module that is expected to work both as a console script target and via `python -m ...` needs an explicit `__main__` handoff plus a regression test for module invocation. From 118117895410217856e7d4234dd769cce6b7c65f Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Tue, 21 Apr 2026 22:36:45 +0200 Subject: [PATCH 16/21] docs(website): add extrude_2d API and `xtf extrude` CLI pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds dedicated reference pages for the 2D→3D extrusion feature and surfaces it across existing docs: - new api/extrude-2d.mdx — full signature, parameters, how-it-works, when-to-use, examples, and errors/warnings - new cli/extrude.mdx — usage, options table, and worked examples - sidebars updated: extrude lands after process in CLI; extrude-2d lands after process-from-sdf in API - quick-start gains a 2D→3D extrusion subsection pointing at both the Python and CLI entrypoints - pipeline-overview no longer dead-ends on `save_mesh()` for 2D; it now directs readers to extrude_2d when they want a 3D mesh - index.mdx key-features and stage-3 bullet reworded so 2D is not framed as contours-only Verified with `bun run types:check` and `bun run build`; both new routes appear in the generated static page list. --- website/content/docs/api/extrude-2d.mdx | 129 ++++++++++++++++++ website/content/docs/api/meta.json | 2 +- website/content/docs/cli/extrude.mdx | 89 ++++++++++++ website/content/docs/cli/meta.json | 2 +- .../docs/getting-started/quick-start.mdx | 15 ++ .../content/docs/guides/pipeline-overview.mdx | 5 +- website/content/docs/index.mdx | 4 +- 7 files changed, 241 insertions(+), 5 deletions(-) create mode 100644 website/content/docs/api/extrude-2d.mdx create mode 100644 website/content/docs/cli/extrude.mdx diff --git a/website/content/docs/api/extrude-2d.mdx b/website/content/docs/api/extrude-2d.mdx new file mode 100644 index 0000000..85762aa --- /dev/null +++ b/website/content/docs/api/extrude-2d.mdx @@ -0,0 +1,129 @@ +--- +title: extrude_2d +description: Turn a 2D scalar field into a watertight extruded triangle mesh +--- + +## Import + +```python +from xeltofab import extrude_2d +``` + +## Signature + +```python +def extrude_2d( + field: np.ndarray, + thickness: float, + *, + field_type: Literal["density", "sdf"] = "density", + level: float | None = None, + min_component_area: int = 0, + smooth_sigma: float = 0.0, + fill_holes: bool = False, +) -> trimesh.Trimesh +``` + +## Parameters + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `field` | `ndarray` | — | 2D scalar field. Density in `[0, 1]` or an SDF (unbounded, negative inside). | +| `thickness` | `float` | — | Extrusion height along +z, in the same grid units as x and y. Must be `> 0`. | +| `field_type` | `"density" \| "sdf"` | `"density"` | Selects the threshold direction: `density` keeps `field >= level`; `sdf` keeps `field <= level`. | +| `level` | `float \| None` | `None` | Iso-level override. Defaults to `0.5` for density and `0.0` for SDF. | +| `min_component_area` | `int` | `0` | Drop connected components smaller than this many pixels. `0` disables the filter. | +| `smooth_sigma` | `float` | `0.0` | Pre-threshold Gaussian sigma. `0.0` skips smoothing. Useful for noisy SDFs or speckled density fields. | +| `fill_holes` | `bool` | `False` | Apply a morphological opening+closing with a `disk(1)` kernel before tracing, closing single-pixel pinholes. | + +## Return value + +A [`trimesh.Trimesh`](https://trimesh.org/) instance representing the extruded prism. When the input has clean, non-touching contours the mesh is watertight and winding-consistent; `trimesh`'s mesh processing (vertex merge + winding fix) runs automatically via `process=True`. The caller is responsible for writing the mesh to disk with `mesh.export("part.stl")` (STL, OBJ, PLY, and any other format trimesh supports). + +## How it works + +1. **Binarize** — optional Gaussian smoothing, then threshold according to `field_type` and `level`. Optional `fill_holes` morphology and `min_component_area` cleanup. +2. **Trace** — `skimage.measure.find_contours` on the padded binary mask; the pad ensures contours that hug the image border still close correctly. +3. **Polygonize** — contours are split into shells and holes by orientation; each hole is assigned to its innermost containing shell, and the resulting polygons are merged with `shapely.ops.unary_union` and snapped to the image rectangle. +4. **Triangulate caps** — each polygon (with holes) is triangulated via `mapbox_earcut`, producing the bottom and top face sets. +5. **Stitch walls** — vertical quads between corresponding bottom/top ring vertices are split into two triangles each, yielding a closed prism. + + +`extrude_2d` is an independent 2D→3D path. It does **not** run Taubin/bilateral smoothing, repair, remeshing, or decimation. The output is the raw extrusion. If you need mesh post-processing afterwards, wrap it yourself via the relevant modules in `xeltofab.smooth` / `xeltofab.remesh` / `xeltofab.decimate`. + + +## When to use this + +Use `extrude_2d` when your input is a 2D field and your output needs to be a 3D solid — typical cases: + +- **Printable parts from 2D topology optimization.** A density field from an EngiBench-style 2D beam solver becomes a 3D STL at a chosen wall thickness. +- **Laser cutting or waterjet prep** from raster density fields — export the mesh, slice at z=0, drive toolpaths off the resulting polygon. +- **Stamped, cast, or extruded profiles** where the part is defined entirely by a 2D cross-section. + +For 2D fields where you just want contours (plotting, vector export, further 2D processing), use [`process()`](/docs/api/process) instead — it produces `state.contours` and skips the 3D construction. + +## Examples + +### Basic density field → STL + +```python +import numpy as np +from xeltofab import extrude_2d + +field = np.load("beam_2d.npy") # shape (H, W), values in [0, 1] +mesh = extrude_2d(field, thickness=10) +mesh.export("beam.stl") +``` + +### SDF input + +For a signed-distance field, set `field_type="sdf"`. The default `level` becomes `0.0` (the zero level set). + +```python +mesh = extrude_2d(sdf_field, thickness=5, field_type="sdf") +mesh.export("shape.stl") +``` + +Use `level` to offset the iso-surface (positive shrinks inward for an SDF, negative grows outward). + +### Cleanup pass for noisy TO output + +```python +mesh = extrude_2d( + noisy_density, + thickness=15, + smooth_sigma=0.8, # smooth speckles before thresholding + fill_holes=True, # close single-pixel pinholes + min_component_area=20, # drop islands smaller than 20 px +) +``` + +Reach for these knobs in this order: `smooth_sigma` first (noise), then `fill_holes` (checkerboard patterns), then `min_component_area` (disconnected islands). + +### Inspecting the result + +```python +mesh = extrude_2d(field, thickness=10) + +print(f"Watertight: {mesh.is_watertight}") +print(f"Volume: {mesh.volume:.2f}") +print(f"Faces: {len(mesh.faces)}") +print(f"Vertices: {len(mesh.vertices)}") +``` + +## Errors and warnings + +- `ValueError` — `field.ndim != 2`. +- `ValueError` — `thickness <= 0`. +- `ValueError` — `"no material above threshold"`: the chosen `level` produced an empty binary mask. Check field values and adjust `level`. +- `ValueError` — `"no valid shell polygons after contour tracing"`: all traced contours collapsed below the 4-vertex minimum. Typically indicates a mask with only single-pixel features. +- `ValueError` — `"snapped geometry empty"`: the merged polygon falls entirely outside the image rectangle. Rare; usually signals a pathological input. +- `UserWarning` — `"extruded mesh is not watertight; printing may fail"`: emitted when the post-`trimesh.process` mesh fails `is_watertight` or `is_winding_consistent`. The mesh is still returned; callers that want to treat this as an error should filter warnings via `warnings.catch_warnings(record=True)`. + +## See also + + + + + + diff --git a/website/content/docs/api/meta.json b/website/content/docs/api/meta.json index 94541db..13db3fb 100644 --- a/website/content/docs/api/meta.json +++ b/website/content/docs/api/meta.json @@ -1,4 +1,4 @@ { "title": "API Reference", - "pages": ["pipeline-params", "pipeline-state", "load-field", "process", "process-from-sdf", "sdf-to-density", "save-mesh", "visualization"] + "pages": ["pipeline-params", "pipeline-state", "load-field", "process", "process-from-sdf", "extrude-2d", "sdf-to-density", "save-mesh", "visualization"] } diff --git a/website/content/docs/cli/extrude.mdx b/website/content/docs/cli/extrude.mdx new file mode 100644 index 0000000..4dc273f --- /dev/null +++ b/website/content/docs/cli/extrude.mdx @@ -0,0 +1,89 @@ +--- +title: xtf extrude +description: Extrude a 2D scalar field into a 3D triangle mesh +--- + +## Usage + +```bash +xtf extrude [OPTIONS] INPUT_PATH +``` + +Load a 2D scalar field, build a watertight prism by marching-squares contour tracing and polygon triangulation, and write the result to an STL, OBJ, or PLY file. + +## Arguments + +| Argument | Description | +|----------|-------------| +| `INPUT_PATH` | Path to the input 2D scalar field file (must exist). Must resolve to a 2D array. | + +## Options + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `-o`, `--output` | `PATH` | *(required)* | Output mesh file path. Format determined by extension (`.stl`, `.obj`, `.ply`). | +| `-t`, `--thickness` | `FLOAT` | *(required)* | Extrusion height in grid units. Must be `> 0`. | +| `-f`, `--field-name` | `TEXT` | `None` | Variable name inside container formats (`.npz`, `.mat`, `.h5`, `.vtk`). | +| `--shape` | `TEXT` | `None` | Grid shape for flat data, e.g. `25x50` (for CSV/TXT). | +| `--field-type` | `density\|sdf` | `density` | Input field type. `sdf` flips the threshold direction and shifts the default `--level` to `0.0`. | +| `--level` | `FLOAT` | *(auto)* | Iso-level override. Default: `0.5` for density, `0.0` for SDF. | +| `--min-component-area` | `INT` | `0` | Drop connected components smaller than N pixels. | +| `--smooth-sigma` | `FLOAT` | `0.0` | Pre-threshold Gaussian sigma. `0` disables. | +| `--fill-holes` | flag | `False` | Morphologically close single-pixel pinholes before tracing. | + +## Examples + +### Basic density → STL + +```bash +xtf extrude density_2d.npy -o part.stl --thickness 10 +``` + +### SDF input + +```bash +xtf extrude sdf_field.npy -o part.stl -t 10 --field-type sdf +``` + +The `--level` default becomes `0.0` automatically under `--field-type sdf`. + +### Printability cleanup + +```bash +xtf extrude beam.npy -o beam.stl -t 15 \ + --smooth-sigma 0.8 \ + --fill-holes \ + --min-component-area 20 +``` + +Smooths noise, closes pinholes, and drops disconnected specks smaller than 20 pixels. + +### MATLAB input with named variable + +```bash +xtf extrude result.mat -o mesh.stl -t 5 -f xPhys +``` + +If `-f` is omitted, the loader auto-detects common topology-optimization variable names (`xPhys`, `densities`, `x`, `rho`, `dc`, `density`). + +### Flat CSV with explicit shape + +```bash +xtf extrude field_25x50.csv -o mesh.stl -t 8 --shape 25x50 +``` + +### Custom iso-level + +```bash +xtf extrude density.npy -o mesh.stl -t 10 --level 0.4 +``` + +Lowering the level includes more material in the binarized mask — useful when the optimizer output has gray regions you want to retain. + +## See also + + + + + + diff --git a/website/content/docs/cli/meta.json b/website/content/docs/cli/meta.json index 799c318..1f81d5d 100644 --- a/website/content/docs/cli/meta.json +++ b/website/content/docs/cli/meta.json @@ -1,4 +1,4 @@ { "title": "CLI Reference", - "pages": ["process", "viz", "formats"] + "pages": ["process", "extrude", "viz", "formats"] } diff --git a/website/content/docs/getting-started/quick-start.mdx b/website/content/docs/getting-started/quick-start.mdx index 8882856..c72a845 100644 --- a/website/content/docs/getting-started/quick-start.mdx +++ b/website/content/docs/getting-started/quick-start.mdx @@ -67,6 +67,21 @@ fig.savefig("comparison.png", dpi=150) The pipeline automatically detects 2D vs 3D based on the array dimensions. 2D fields produce contour arrays (stored in `result.contours`), while 3D fields produce triangle meshes (stored in `result.vertices` and `result.faces`). +### 2D → 3D extrusion + +When you want a print-ready 3D part from a 2D density or SDF field — rather than contours for plotting — use `extrude_2d`: + +```python +import numpy as np +import xeltofab as xtf + +field = np.load("density_2d.npy") +mesh = xtf.extrude_2d(field, thickness=10) +mesh.export("part.stl") +``` + +This traces the field with marching squares, triangulates the resulting polygons, and stitches vertical walls into a watertight prism. See the [`extrude_2d` API reference](/docs/api/extrude-2d) or [`xtf extrude`](/docs/cli/extrude) for the full option set including SDF inputs, pinhole cleanup, and island removal. + ### SDF fields For signed distance fields (from neural models like DeepSDF, NITO, or NTopo), set `field_type="sdf"`: diff --git a/website/content/docs/guides/pipeline-overview.mdx b/website/content/docs/guides/pipeline-overview.mdx index 0b95da3..d81e971 100644 --- a/website/content/docs/guides/pipeline-overview.mdx +++ b/website/content/docs/guides/pipeline-overview.mdx @@ -94,7 +94,10 @@ The pipeline automatically detects whether the input is 2D or 3D based on `field | 2D | Same (Gaussian, threshold, morphology with `disk` kernel) | `find_contours` (marching squares) | No-op for smooth/repair/remesh/decimate | Contour arrays in `state.contours` | | 3D | Same (Gaussian, threshold, morphology with `ball` kernel) | `marching_cubes` | Taubin or bilateral smoothing, repair, remesh, decimate | Triangle mesh in `state.vertices` / `state.faces` | -For 2D fields, `save_mesh()` is not supported (raises an error). Use the visualization functions (`plot_result`, `plot_comparison`) to render contour output. +For 2D fields, `save_mesh()` is not supported — `process()` produces contours, not a 3D mesh. Two options: + +- To **visualize** the contours, use `plot_result` or `plot_comparison` from `xeltofab.field_plots`. +- To **build a 3D triangle mesh** from the same 2D input (for printing, laser cutting, or downstream CAD), use [`extrude_2d()`](/docs/api/extrude-2d) — an independent 2D→3D path that returns a watertight `trimesh.Trimesh` you can write with `mesh.export(...)`. ## Stage details diff --git a/website/content/docs/index.mdx b/website/content/docs/index.mdx index 3793f32..1aee560 100644 --- a/website/content/docs/index.mdx +++ b/website/content/docs/index.mdx @@ -13,7 +13,7 @@ Given either a scalar field (a numpy array) or an SDF function (analytical or ne 1. **Evaluates SDF functions** *(optional)* — sample analytical or neural SDFs on a uniform or octree-adaptive grid via [`process_from_sdf()`](/docs/api/process-from-sdf) 2. **Preprocesses** grid fields *(optional)* — Gaussian smoothing, thresholding, morphological cleanup -3. **Extracts** geometry — marching cubes, dual contouring, surface nets, or manifold3d (3D → triangle mesh) or marching squares (2D → contours) +3. **Extracts** geometry — marching cubes, dual contouring, surface nets, or manifold3d (3D → triangle mesh) or marching squares (2D → contours, or optionally an extruded 3D prism via [`extrude_2d()`](/docs/api/extrude-2d)) 4. **Smooths** the result — Taubin or bilateral filtering to remove staircase artifacts 5. **Repairs** the mesh *(optional)* — non-manifold fixing for watertight geometry 6. **Remeshes** for quality *(optional)* — isotropic remeshing for FEA-ready elements @@ -24,7 +24,7 @@ Given either a scalar field (a numpy array) or an SDF function (analytical or ne ## Key features - **Multi-format input** — NumPy, MATLAB, VTK, HDF5, CSV -- **2D and 3D** — contour extraction or triangle mesh generation +- **2D and 3D** — contour extraction, 2D→3D extrusion, or native triangle mesh generation - **Multiple field types** — density fields, SDFs, occupancy fields, and neural field outputs - **SDF function evaluation** — process neural models and analytical SDFs directly via [`process_from_sdf()`](/docs/api/process-from-sdf) with optional octree acceleration - **Quality metrics** — aspect ratio, min angle, scaled Jacobian via PyVista From 410aee9ec98b8ac9b8aaa0b8d2f9609ff43fd0b2 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Wed, 22 Apr 2026 10:29:26 +0200 Subject: [PATCH 17/21] chore: pkg update. --- website/bun.lock | 68 ++++++++++++++++++++++---------------------- website/package.json | 14 ++++----- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/website/bun.lock b/website/bun.lock index c619931..49861d5 100644 --- a/website/bun.lock +++ b/website/bun.lock @@ -261,7 +261,7 @@ "@react-three/drei": ["@react-three/drei@10.7.7", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-ff+J5iloR0k4tC++QtD/j9u3w5fzfgFAWDtAGQah9pF2B1YgOq/5JxqY0/aVoQG5r3xSZz0cv5tk2YuBob4xEQ=="], - "@react-three/fiber": ["@react-three/fiber@9.5.0", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.0.0", "react-use-measure": "^2.1.7", "scheduler": "^0.27.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.3", "react-dom": ">=19 <19.3", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-FiUzfYW4wB1+PpmsE47UM+mCads7j2+giRBltfwH7SNhah95rqJs3ltEs9V3pP8rYdS0QlNne+9Aj8dS/SiaIA=="], + "@react-three/fiber": ["@react-three/fiber@9.6.0", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.0.0", "react-use-measure": "^2.1.7", "scheduler": "^0.27.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.3", "react-dom": ">=19 <19.3", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-90abYK2q5/qDM+GACs9zRvc5KhEEpEWqWlHSd64zTPNxg+9wCJvTfyD9x2so7hlQhjRYO1Fa6flR3BC/kpTFkA=="], "@shikijs/core": ["@shikijs/core@4.0.2", "", { "dependencies": { "@shikijs/primitive": "4.0.2", "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw=="], @@ -287,35 +287,35 @@ "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - "@tailwindcss/node": ["@tailwindcss/node@4.2.1", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.1" } }, "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg=="], + "@tailwindcss/node": ["@tailwindcss/node@4.2.4", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.4" } }, "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.1", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.1", "@tailwindcss/oxide-darwin-arm64": "4.2.1", "@tailwindcss/oxide-darwin-x64": "4.2.1", "@tailwindcss/oxide-freebsd-x64": "4.2.1", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", "@tailwindcss/oxide-linux-x64-musl": "4.2.1", "@tailwindcss/oxide-wasm32-wasi": "4.2.1", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" } }, "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.4", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.4", "@tailwindcss/oxide-darwin-arm64": "4.2.4", "@tailwindcss/oxide-darwin-x64": "4.2.4", "@tailwindcss/oxide-freebsd-x64": "4.2.4", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", "@tailwindcss/oxide-linux-x64-musl": "4.2.4", "@tailwindcss/oxide-wasm32-wasi": "4.2.4", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" } }, "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.1", "", { "os": "android", "cpu": "arm64" }, "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.4", "", { "os": "android", "cpu": "arm64" }, "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA=="], - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.1", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.4", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.1", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.1", "@tailwindcss/oxide": "4.2.1", "postcss": "^8.5.6", "tailwindcss": "4.2.1" } }, "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.4", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.4", "@tailwindcss/oxide": "4.2.4", "postcss": "^8.5.6", "tailwindcss": "4.2.4" } }, "sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg=="], "@tweenjs/tween.js": ["@tweenjs/tween.js@23.1.3", "", {}, "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA=="], @@ -335,7 +335,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@25.3.5", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA=="], + "@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="], "@types/offscreencanvas": ["@types/offscreencanvas@2019.7.3", "", {}, "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A=="], @@ -537,29 +537,29 @@ "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], - "lightningcss": ["lightningcss@1.31.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.31.1", "lightningcss-darwin-arm64": "1.31.1", "lightningcss-darwin-x64": "1.31.1", "lightningcss-freebsd-x64": "1.31.1", "lightningcss-linux-arm-gnueabihf": "1.31.1", "lightningcss-linux-arm64-gnu": "1.31.1", "lightningcss-linux-arm64-musl": "1.31.1", "lightningcss-linux-x64-gnu": "1.31.1", "lightningcss-linux-x64-musl": "1.31.1", "lightningcss-win32-arm64-msvc": "1.31.1", "lightningcss-win32-x64-msvc": "1.31.1" } }, "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.31.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.31.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.31.1", "", { "os": "linux", "cpu": "arm" }, "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.31.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.31.1", "", { "os": "win32", "cpu": "x64" }, "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], @@ -713,7 +713,7 @@ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + "postcss": ["postcss@8.5.10", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ=="], "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], @@ -723,9 +723,9 @@ "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], - "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], + "react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="], - "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], + "react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="], "react-medium-image-zoom": ["react-medium-image-zoom@5.4.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-DD2iZYaCfAwiQGR8AN62r/cDJYoXhezlYJc5HY4TzBUGuGge43CptG0f7m0PEIM72aN6GfpjohvY1yYdtCJB7g=="], @@ -807,7 +807,7 @@ "tailwind-merge": ["tailwind-merge@3.5.0", "", {}, "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A=="], - "tailwindcss": ["tailwindcss@4.2.1", "", {}, "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw=="], + "tailwindcss": ["tailwindcss@4.2.4", "", {}, "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA=="], "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], @@ -837,7 +837,7 @@ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], + "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="], "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], diff --git a/website/package.json b/website/package.json index 37398d3..ec6595b 100644 --- a/website/package.json +++ b/website/package.json @@ -11,26 +11,26 @@ }, "dependencies": { "@react-three/drei": "^10.7.7", - "@react-three/fiber": "^9.5.0", + "@react-three/fiber": "^9.6.0", "fumadocs-core": "16.6.13", "fumadocs-mdx": "14.2.9", "fumadocs-ui": "16.6.13", "lucide-react": "^0.577.0", "next": "16.1.6", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "react": "^19.2.5", + "react-dom": "^19.2.5", "tailwind-merge": "^3.5.0", "three": "^0.183.2" }, "devDependencies": { - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.2.4", "@types/mdx": "^2.0.13", - "@types/node": "^25.3.5", + "@types/node": "^25.6.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/three": "^0.183.1", - "postcss": "^8.5.8", - "tailwindcss": "^4.2.1", + "postcss": "^8.5.10", + "tailwindcss": "^4.2.4", "typescript": "^5.9.3" } } \ No newline at end of file From 2fded82fb86524388dfe3bc3c4bede0a29e58550 Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Wed, 22 Apr 2026 10:37:22 +0200 Subject: [PATCH 18/21] docs(website): illustrate extrude_2d with contour and 3D mesh images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add two new generators in scripts/generate_doc_images.py: gen_extrude_2d_contour (2-panel: input field + traced shells/holes colored by CCW/CW orientation) and gen_extrude_2d_mesh (iso-view pyvista render of extrude_2d output, smooth-shaded, no edges — the earcut fan triangulation is visually noisy and not informative here) - both use beams_2d_100x200_sample1.npy which covers the full domain - api/extrude-2d.mdx: hero mesh image above Import, contour image at the end of "How it works" as a visual anchor for the pipeline steps - quick-start.mdx: small mesh image inside the 2D→3D extrusion block --- scripts/generate_doc_images.py | 98 +++++++++++++++++- website/content/docs/api/extrude-2d.mdx | 6 ++ .../docs/getting-started/quick-start.mdx | 2 + .../images/guides/extrude-2d-contour.png | Bin 0 -> 44186 bytes .../public/images/guides/extrude-2d-mesh.png | Bin 0 -> 150940 bytes 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 website/public/images/guides/extrude-2d-contour.png create mode 100644 website/public/images/guides/extrude-2d-mesh.png diff --git a/scripts/generate_doc_images.py b/scripts/generate_doc_images.py index d882a51..be4d8e3 100644 --- a/scripts/generate_doc_images.py +++ b/scripts/generate_doc_images.py @@ -5,7 +5,8 @@ Valid --only values: pipeline_diagram, pipeline_stages, field_types, parameter_sensitivity, quality_metrics, hero_overview, - quickstart_2d, quickstart_smoothing, hero_compare + quickstart_2d, quickstart_smoothing, extrude_2d_contour, + extrude_2d_mesh, hero_compare """ from __future__ import annotations @@ -831,6 +832,99 @@ def gen_quickstart_smoothing() -> None: plt.close(fig) +_EXTRUDE_FIXTURE = "data/examples/beams_2d_100x200_sample1.npy" + + +def gen_extrude_2d_contour() -> None: + """2D input field + traced shells/holes for the extrude_2d docs.""" + from matplotlib.lines import Line2D + from shapely.geometry import LinearRing + + from xeltofab.extrude import _build_binary, _trace_contours + from xeltofab.io import load_field + + state = load_field(_EXTRUDE_FIXTURE) + field = state.field + + binary = _build_binary( + field, + field_type="density", + level=0.5, + smooth_sigma=0.0, + fill_holes=False, + min_component_area=0, + ) + contours = _trace_contours(binary) + + fig, (ax_in, ax_out) = plt.subplots(1, 2, figsize=(10, 3.2)) + fig.patch.set_facecolor(BG_COLOR) + + ax_in.imshow(field, cmap="YlOrRd", origin="lower", vmin=0, vmax=1) + ax_in.set_title("Input Field", fontsize=11, fontweight="bold") + ax_in.axis("off") + + ax_out.imshow(binary, cmap="Greys", origin="lower", alpha=0.3) + shell_color = "#265E8A" + hole_color = "#D45087" + for contour in contours: + if len(contour) < 4: + continue + ring = LinearRing(contour) + color = shell_color if ring.is_ccw else hole_color + ax_out.plot(contour[:, 0], contour[:, 1], color=color, linewidth=1.6) + ax_out.legend( + handles=[ + Line2D([], [], color=shell_color, lw=2, label="Shell (CCW)"), + Line2D([], [], color=hole_color, lw=2, label="Hole (CW)"), + ], + loc="upper right", + fontsize=9, + frameon=True, + framealpha=0.9, + ) + ax_out.set_title("Traced Shells & Holes", fontsize=11, fontweight="bold") + ax_out.axis("off") + + fig.tight_layout(pad=1.5) + fig.savefig(OUTPUT_DIR / "extrude-2d-contour.png", dpi=DPI, bbox_inches="tight", facecolor=BG_COLOR) + plt.close(fig) + + +def gen_extrude_2d_mesh() -> None: + """Isometric render of an extruded mesh for the extrude_2d docs.""" + import numpy as np + import pyvista as pv + + from xeltofab.extrude import extrude_2d + from xeltofab.io import load_field + + state = load_field(_EXTRUDE_FIXTURE) + mesh = extrude_2d(state.field, thickness=30.0) + + # Custom render: drop edges (earcut fan triangulation reads as noise), + # enable smooth shading with a subtle light for depth cues. + faces_pv = np.column_stack([np.full(len(mesh.faces), 3), mesh.faces]).ravel() + pv_mesh = pv.PolyData(mesh.vertices.astype(np.float64), faces_pv) + + pl = pv.Plotter(off_screen=True, window_size=[960, 540]) + pl.add_mesh(pv_mesh, color="#88BDE6", smooth_shading=True, specular=0.25, specular_power=15) + pl.camera_position = "iso" + pl.camera.zoom(1.25) + pl.set_background(BG_COLOR) + img = pl.screenshot(return_img=True) + pl.close() + + fig, ax = plt.subplots(figsize=(7.5, 4.4)) + fig.patch.set_facecolor(BG_COLOR) + ax.imshow(img) + ax.set_title("Extruded 3D Mesh (thickness = 30)", fontsize=11, fontweight="bold") + ax.axis("off") + + fig.tight_layout(pad=0.6) + fig.savefig(OUTPUT_DIR / "extrude-2d-mesh.png", dpi=DPI, bbox_inches="tight", facecolor=BG_COLOR) + plt.close(fig) + + def gen_hero_compare() -> None: """Hero comparison slider images: before mesh, after mesh, input field.""" from PIL import Image @@ -1094,6 +1188,8 @@ def gen_extraction_gradient_quality() -> None: "hero_overview": gen_hero_overview, "quickstart_2d": gen_quickstart_2d, "quickstart_smoothing": gen_quickstart_smoothing, + "extrude_2d_contour": gen_extrude_2d_contour, + "extrude_2d_mesh": gen_extrude_2d_mesh, "hero_compare": gen_hero_compare, "extraction_comparison": gen_extraction_comparison, "extraction_gradient_quality": gen_extraction_gradient_quality, diff --git a/website/content/docs/api/extrude-2d.mdx b/website/content/docs/api/extrude-2d.mdx index 85762aa..6118221 100644 --- a/website/content/docs/api/extrude-2d.mdx +++ b/website/content/docs/api/extrude-2d.mdx @@ -3,6 +3,8 @@ title: extrude_2d description: Turn a 2D scalar field into a watertight extruded triangle mesh --- +2D cantilever beam density field extruded into a 3D mesh + ## Import ```python @@ -48,6 +50,10 @@ A [`trimesh.Trimesh`](https://trimesh.org/) instance representing the extruded p 4. **Triangulate caps** — each polygon (with holes) is triangulated via `mapbox_earcut`, producing the bottom and top face sets. 5. **Stitch walls** — vertical quads between corresponding bottom/top ring vertices are split into two triangles each, yielding a closed prism. +Input density field on the left, traced shells (CCW, blue) and holes (CW, rose) on the right + +The two panels above correspond to steps 1–3 on a cantilever-beam topology-optimization result: the raw density field is thresholded and morphologically cleaned, then contour tracing yields the shell/hole rings that feed the triangulator. + `extrude_2d` is an independent 2D→3D path. It does **not** run Taubin/bilateral smoothing, repair, remeshing, or decimation. The output is the raw extrusion. If you need mesh post-processing afterwards, wrap it yourself via the relevant modules in `xeltofab.smooth` / `xeltofab.remesh` / `xeltofab.decimate`. diff --git a/website/content/docs/getting-started/quick-start.mdx b/website/content/docs/getting-started/quick-start.mdx index c72a845..fd024bb 100644 --- a/website/content/docs/getting-started/quick-start.mdx +++ b/website/content/docs/getting-started/quick-start.mdx @@ -80,6 +80,8 @@ mesh = xtf.extrude_2d(field, thickness=10) mesh.export("part.stl") ``` +Cantilever-beam density field extruded into a watertight 3D mesh + This traces the field with marching squares, triangulates the resulting polygons, and stitches vertical walls into a watertight prism. See the [`extrude_2d` API reference](/docs/api/extrude-2d) or [`xtf extrude`](/docs/cli/extrude) for the full option set including SDF inputs, pinhole cleanup, and island removal. ### SDF fields diff --git a/website/public/images/guides/extrude-2d-contour.png b/website/public/images/guides/extrude-2d-contour.png new file mode 100644 index 0000000000000000000000000000000000000000..ac100834dd0a0fe002f7ccd4e3e0d97ca1407821 GIT binary patch literal 44186 zcmb@uWn5HS`#(GeA}!sZh=4Srgp{I4mmcX(>FyFFBoqZDq@+aY9J*Ul8U`3(K)Rb@ znE%?I`#$%1^}KjKzx~2<#F;&_S6tV(7U60tvPAfF_%IlZNM7#ga~KS#76!YNeEk~u z$qua_8TijbR~aqW7Y-J#9>&h*FlA#`M_UJ1TPu^B?&i)eRu1-pyaN2ZBHTA$xw<;K zJmllE`{xzB4$hW*&AM*=;4XNMa@sC17&W*fHQ6Q0v?1_W`Pby1KK{!yd1J=Im;MkV zwKFbX%DQdG?!+MGv;CM#{$`ZW#>Zm3%qu5ukE{rgahL71c|K7obW-cwoYxilR8QVD z8@wUG&>4PgpySaf6}7$P5+h!L@s?x?9aweoIMa&zG_0HElaj>|ahc_xD}%!V{}}f6 zf0uV;yZt}^$`awt?M_bm-%EYOv?S?&FU??zoO$}sMRBOL!S>HPGro742>ukmNg*5EBWzjKqA(9WjD7>Xbx^bN@@|Q2>hI+Afiv)~?#d^O_7&%wjh$*P4 zb6tI|=e?SJi#cr6TE^bKuqOHAN76lk8(;?1ZLRI?JD~3Zo}(qNC_5V`Ms*A%Ny;U?7cGy*o7ca;SJm+!TL~q@?#8vp!>)=xU=bky$ZWp}YhW(M?ePzWLrRF_B-sy4yHQs?gb8|Vx z&v#lA#5{OQOG}L^bUwz$z5(BexhI}4tP{1mOC#hk8x_f0bDfr!R!&K&?O=6y_k4fg z*fRhc=D>yZDfaF9W2Sydw5^$$*`pZN!znH?_l>4EB$96l`08$CK703E@KbDTtbj?| zb-e)0p;n2BOxW?Vqe!vsyrFQ_tQqeExxWi>RY3hVY1Hjs_TZ6TE$ar(HJ9RR87@eQ&%E`+IwwpY*uwZ)@MH8sVTYWWJeDCeR z0KL9(*<|oiiD_qUW%jpk3o(kktD|m#K|eAwE;piQw)uUIY|ShzSa^Af6B82?9@tPp z8}`%Z&xh7nE{*&qw{iWjTTeo7f)x`U9!~SXn!^7a#f+LLG4-!RZ2LmBRcraRENB*NKWb;0;Kkr2e$W6=Dy-_y!um1c8%wIJu2JBv8s~l_XGvS7`E%Y_Uo7| zWz_4&1id#a#wp4sH(b)j^*vJVIn0XB!}%J|OM4pW!H)ST)nR%wfI0r%y7QjN<1%JNR%*}7u-1L^`Lp*7lk;$Lc9nyvt&&creIN1cM%Cy}RD~UX zbi0u4#7$cru zQ<}0-X@(m1%-&cez9%WngA3s^T!W)?NT%OFf@G9 z_NO9W{bI$oER$E3ViEEf8PHfua*Gs))Y6??UCH}*qNSR)HePJ^)x1&8gA@^`%c|nL zPs0#cXdF}>-bF`KpXuo8I`usm{|dhGO;hj_S$lil=g*%9BR1W|oLyW-)8wkv7RL&7 zomR8sGjekk>Xlgm9C59RLBpFRGSDeDBvuumVps+=4QcD^iyZJw&I@e%L_ zEheMMT1t1ox`IVibaLC%%ii#>QoFRy{wKd0CuVv%q{*;zY zPy^PK{J!$2nE%RVyu8+&m6eJ5rLexql70_w zqDexPlZ56YxC$TH*%dg}?w;xx8b;qyj57kAZDtBPl&!dXwq8U~+1}YnkVeW#j0=`= z#Ahze+{)3hv4ucfrW}7B>;shbrLvuJRipFUV~YR zH+&Cj<$WQc1<)j@BC1D6M?JxuUcT3#S6G9eot^Eu_9Mr4cJ{*b95%w(AxD8308M$a zzz?%wDMd~^)QH7wXXfVOyScfE_@3~ysix*173fu$>Z1J5cRPPgPv`RjhP$F%+c&=zGPtVK{tH-Z}x?(O4f4o zJb&qA$dPaTSbF+Y|JMvnEFL-Abqu>o@{Kcca`F&=)DKUv$QAVUQ;Og3QjE&Svi&F&qZjA%m$GQgY8)EPiQ_bQ|x`sglpUkaPatyiT+D_|0Q50uP1 z!or%}eSMTiu}MjJ_9#b@Pi<{a)3M>~sVfH_o}i{Ylt?{K!=5r5r+}sMe3PKPLF1U*$^8aDnAjHMb{?96A{d%Zw9ZC5ZWgX1Sy zO~GzcnKtg5Q+KBQ0TjU>5M+taONIc{D(J?faW2lz!Asx1eIu?+6EF?coyH(+V}lNPrkj+9N1E!5(#*G>^v)CE(&z zIzPDGWH$n96TqGHpV(OWoW}H8K z;Y}lGK^RKHTsV6%VH$nw?p?grFp^FgYW-kC%$nv2KrwYJ0dG0Z0UgUoxbHak$apdV zF++>GL}6@n#r-NZ!DksO0a4oT7zHd=-DEV2RJPWeB)PbH z)`d{WKu``jlFumvJho@w)o#_~^|bT*1&(_5e*W-bFnhi7;I|gfNT&(dECRFsXuH2O zHBCXaI00?&E`=qc9sqF0txnHr5>IAyC3Dj8;_jsye{n>j6!vsLtJEy~1Cc+NynMZC zvH&y!=?D;w$y`&Q0jV&fIt7kH-EL@&xN*zXC}t@psz@A%hSP61u9Vu(Jk)dUzEcJ6 zJ&FLsRbtc}WPmX^Jw5f8vgu8gKy15rG=?=U$L*GB>+9>scZ?>Dzv(uECWBqvpD7wQ zjD)!Zm)Z9(XgoN=zJ-*Et{;fU%zWe?V6jPe{g0*{hfsV4@jTe&iLd|e;D_{K>{#@ zb2Jj$(H2fl%FIj>);fPI?a_hC`~BMjjFpGZj*xwPa&o?b-cZ_6-Mk}XWTFyV6umGp z#1u&aPM(PGG+k*ii|XesT(Nl`*=QPoLfw{+8Ib2~j!90A8aMDE3IH{1r=8l+2#mXk z_W_6d#zY_hXO~{p-ar9<7zK7xt)e0Kr}%h+@!?;Upfv7+7He{}F}b#J05G}q#06Nd z>yAfm{Ipo6i&WjErKJ{US<5S~xw741Ln-2zZ)H9zM_r&o4;EJnJWbh6Yy!n-1 znGgf;!7Mn{)B=0LHTSsVbbD9lr<6q6pw!VTNq3hb+&2{P@w;(?hP3reE!R z2M~dDUSU^FgBvQUmzjkaJ4t9a8iAlx{^HRWcrUB9iH{aE= z+g)fkpl-NtEu{e!SO8}vF$XU|V{KcXs7%@QSW#Ituml@iz;#9KR-D=X?>-uU-;s7^ z+DBqzsdOTaHzAro5BJ%s#ti^m;S!98hexZ@UO%3fAu%TAvV6?Q-qV!*k+vf)=x8l!wgVD_R9lc zafGlOKy-ipa@Mnpi!lJkDN^I@E9nWSxSML+)?wu`Z6jl2*KEmdkRB47D!qN{`@N{B zv!HS|Vr|WuBO*vu^7LxJ#eQ0d8!yl*DpEdwzSGO^Sgi-K)cIXcH2_m|9qLE9;(v9C zJeddR8~_een150eEqK0u@qHz?)1CR&s*AIAr;{DyL!s!-H*auB77Vdx)Vy^&(nWe* z?^l>#z)k=%jXYc*zw%0~eLqgue${z5`A>lu8XgW=@|g9)eemD`>@|cD!J=nr}dKP8X1605S^h?N8oPn?MapgcdSgD_%7x*chMkHzI>pZ4Tw=N_K5 zcv8@N+rb=g9t?bWKmb;*{#4_I0}%|21N*EeifCR`6O21RzYD28TaS&6)4hH4^%<$S zwO&K(Xrk7mXy;hO|Ga9P7I!`>pOxhezX3z++wVR2`1lX&VvYcq7ONi;BGlX+69l{q z!?_>BdKV85&j4XzVZmu`Zr&nUSiAMG=y1cmmPP(~jwXvHg^Z~CM#A_*sz@0Cebhm5 z{A}J6=XSb#Pm)P7o_BK(4pgV?;?48Z{g8_S-AYdPT0kwnBqrX~tDha;p8SQJ2U}T^ z*}<@~0=rUFr2_WZ$cw*;WNqnt(EfjZ=BgiikkqH}{CNx#MPI+LU;<#y`0}o*w|9+q z?*pfWr^dC7fWb&s%FD~EKY#I}{=M>H=ksPsDlT5$qbY+J);kgsGt0YoVCFM5ZY`2b zo^yf3(GMuw(PgcG)sHj)Y+^o9Y%CdFD<~*PnbbEnU$O(fuh=<8>?}zoSw#J${>Ag> zpQ54&56i+X%DQ$@owesxg}Rmf>og3n0XnMpXGRSmFODjCkpKf&<^%;@2Fe*T9|~#H z8cGx~YJEtj3ChF((h_ra$hd_(Io7K4EE!nVd-g2!Oy}V6IQPeoUGL3rIXPT+@7^^) z5Hdb2M??c=NdlN9>1na&u1Rm26mvwz*XnBRl`_Pp=jl>>{T{~uxEATvH)myM7m~pN zE=X$_pZBApqFM+d;Jsn*Qai)J$0w_;oj5MiV!k%=!xM`+uJ^}+N(cZq9<}D>^JT5G zduClX>ULTP_>=ltHa8p59*t=I-Y*aG!fvwz$cdj)*8h-TT+ij5V^SyTF<=ecR0Kc+ z3n8v#20OXoWPu=xL3Aju=-aoB^@O|`fZzk!Q$1U_!m1k@m;e`Q2^s0LD7(=K_=Nz_ z4j#m6sZ)%Mj9k|qh8dM;?HmlNdUyu5rUDVD-7?KD^zMsq*DGsh?7%4} z&Vj$SzOJsXzxhD-;-f6nV{pYEKLEN*-EIfHfdHLK&hYwiqNHC<@%eDt1w~rGh1c;l z=0}2-{cTAO4XbW(dH%n}2C2sP08{ippH_lmT|_$zhO?$-YMp!P=-k_IYGA@nsw_j_ z#Dpc)?`YEgUHIFeKe9CQhP#*~_S{AMXu=diLEx`I7jatptZ4$8lgM`6ejS_^phkd{ zUbjb5-xd@k*T|y;)7~m^JpBd~3nQ?!Qf9aFiW(w7yTT9@#c^u~f%<|1`p#1w9l8Y+N&qbU z^CiB3X7qL=^RH+~v-~&<=wdJ!{mYOb24vZ1&#qDN=mfva(=Y~%EyZ5Sep+N>qU6dS z=@L}g#igZYi?Uk+0;Equ37Z$%BX`#gu~Rm+Ks}`gHL8;@;8am5O_C9)2w-){DJZnO zCB5wko_%3E04t`FD*nSltdih&i57tS0H8!H^~9s#2>Vu`1^j9Z2mms4LZ3xecDC`) zPj{<;j922ata5(RDYdoh=VrDu*E~^fMQ-4=M5*V0x&(UQ4e;;_3kx5BKq>0-dv2?C zy94b0UGU#)8~%nscRk;Y4rqg5=f~T!EMTO8zyWD$qRy-k>#wjGhw9$yQ3E6o0u_*% zMDpaOMQ=jj$jD!Z0x1vOIJaunc_C(-B<#?^Q#qYszwBOHV%AMoMDtm#W+fvMqOFj6 zl_2WE20Dy!i58?E(+XP5U7)u+fgtJFeJ9@42f4eudomDk@#cZe*c|9e&EM5CKLAiA zDHO}5+yXU8fRmKprYOnFHv^&-1iIR|RT>^Wx*X^Gw&Em#9Cwi@&q={@#Z8hWIUOyzKRMs+o9 zM8?&_hJV>n5k@hrw|IDnfbI-dDI0k!9fx;UX;f8}h*p6Hgsdv&`u?`7LQ=A9*lEw6 zyV*?+YG&G0UUmKRX&-L`#TdNXy_OLeH9#FUYEH@s;_iX88!s=>*YIWM7cX86ZvD&2 z%D6tpq#pxz&!U=E z2A*AapB4XmCS(Lq=^49o{e?E2^k)ampQZiOUL`wyEVQw_Qxn|anMY+XG{|z%A*)mI zk(&OfTZyh*S3q0J3Kt}+-b%Y zF#k!Bm6LP(_U$Xc3Tc6mAf&^oj8BMc+Dzb z1-j-giWy7e^1HVgGUY(grvnd@vd!^{0_U5CaIe3=f#;Fvr?}7a?8w@_yrT0HdF})$ z=1Qa!E?{x*_Ni0f)LtM}ix-D_)L&|c*ZLm`0vW2f6VaO{KmaSYKcq8e2KN!No4%ei zj3*yc?7pc}WSED63l50CsNeKKqM3Rv1XF$Yx(CJK`b{){){vD&tMivayQtg0!Yo2+Xpu-lc{AwY$T4)9GgDDxO88`O`gpXA)U5MD3U?5QK$T=Fv=w_kTiALfLC67kl1CDAgq8PxKfR_2Qv z0jE8Nb!ULdMz%dgee|KZi{D$o^ho`@aBq95hu>>~HHt<^uWDx1bzyJ4um$b_N4?+1 zz@jlnw?KC@PI+lFK3Bq?wz4bq1RvLQ?zOn>L>(<){1z?aN^FgpOfHMW`@ zPglE)B4T1myAYE?!W8Vau6=d8B^JC1L#2g;v|NDs zfhI>I=_|q%aPE}0{s2gr01q`UcE^4MZ3@VSdOn*KB7m-#if=fmh(}KHOc@78GN!4YRnI%6+5gxv`^DEsk-b!ir zC?Sm&BKI8~&t{6g839lur>fdn<%9~}M!@ITD=|{NDWddX8tH{>n}AP20Gp_EUPte~Jrh;+fl{ww zg{AInD(~civC{Mpc-(N|H(k5WdgspR^wYg^$|NcDf=mACB7st>2p()FDGmAN*D%}s zHufCX|GXYCau|T!c`{LI$91v0oa40qPWVS9b`iG{)w`Yi#&CLH(RZgKpuS_&;4fSl z$EH-Mw1=}et33CP!&DtDjNg3fz8n?L*ubW{={npF82_!)Ui-n40p6uVFm4evH>_#x zfz8go;rZp?PsQN&Q*VLvoh<4j#HO4S1XN_8!an11M@R5mX{xEc23!cR*%HNLX4^k$ z4fWn%%)ia)&qCLxM7vFXx@d$7J-J=+NE~NSlJ}*ZB8u>I>`Hm^qq~zIuG-@@&Bx8( zq_voFprK|zYNx+PKtANUspM2Cq@UK#PyTdms@ZuUJja9c9eV}N@-?SX%+%;ik3xIr z!uP@%vhV588dLY|wiC?etKVTc-x@zg{bFbCj2#ev$DZaz#}U`fyNo^Q`J;pGz zOnROZ%}upy{s^&$$tfzgh9I?r&H1p*K;Q?EjS%P#0eps`v@de-zzY)YS>5A3+rl~7 zMsH^nHW2@~`(uSO0Q`f9*B&bX@< zO*W@0)F^O1yne7g-fSymI(8rkNDjZ>nd_~}+DsE+*y7^i*Q~6p9@Fb=|B9z@_);87 zeK2cU-1**fe6g`ywTYH$l1=lAAW9N486NAKC~;wT-V3u(~h z*Ag85VWF*b`SqnMFqm7PvRt=ZXY=haHBCd@Xl~STwAAkhS;OYp;46hizBirv^g}1C zn{`X~@=f^<3)~-i*%B5CB!R82rmz1F7^{t#bZ6jrEdUX(4G3KP_9L(IXNrl*JKi~< z$zV;%qAoipsOZd!3Q7P0n&VNg&oOS=vX_+l;Y@42}_ z!>b!ZN}H*+!}h=u_5@;fiT9y(6qDp-dLf67A)BHX=;hwTH(|{FG=K^`1JMJOl!qZu z(7>W>yG%+~R~MN6Ee0#s{vf&xnk=a%0fTRMcxDUWxD;>wR)@=n@v^O~q|@%R>g&=7 zO%)F}PkFlwaI$hZ-E2|1(RwM{OiO5;*t;(@uPn)px>vxS+V(wNt8@L-U&QhF`b&l{ z^EUN~7Q)^}G(|^&y1`+cb!TdKi5y9A%>VFn+^b_RA5Hw3Z&#DXl~#b7AdWrXr@3eL z_D1C|#?4)JBzpFEXWC`p@D=mS=aiIpDPkVplsP<91mBdCLf_E~n*f;s(2d7A=(TR4 zO`sCu!n7)^DJ_&zLeE0IdlN->4zSc1pia%eK-STwFDtM zIw-3%?X{c&Vm1crpwwNX)^}Aef?tBk$MAb>=>e~29?2&jP1+iIn_UcHlMnI7+?RQf z=L+ob)AJO#1CqEBF@tJ+^3}=We<`$(PbLD7_g)Fsn&;57MQZoWTzd^P$Lo-YEZ}|c z3U~+f)z#I&uWbf*EB4qn0BRpfxbajux^t)NcC^v(H|3MjBL5Ibb}zH&lLqocL_`Dx zryv3eSa;kf#A8H_Eeo4KB#~)pPwN16kHP0P>ucMljjhAyb?G}F>T)juS`B6 zWZ=bB&4-y_gC?=EyA-v{2)Kk`~%v5JWe%XwL_8M*6?P^kK%xc8JCrpSa zy)zNm+{d10Ef&UPw?OMO1W~OkAdUu{^;WZp0@F*~w+V0@VEpX}qtaCiGR5oi-`qJM zGsQC5>6!t^4C=Y`J-F2vFu4?(lTP{CJ*uEB5%`q)73Muuy-C6(10buB(-_I!1AylZ zz?pvb^!OFN&{=Lmr7_~b7_^Qe?W1vx{=F%}O@to9!$UNx+b?<8WuBpaI0P>21_<=L zx(D10D7@r(@JqJdx#bPdhYm{RZfuoe))dOtZ5V;c!m!vmM+J_2Sh`RdJ_c; zkCTQA{HQlSv`-S?QQ6JpQ^XI(zZ$l9QeM-xUB!W+J*y$Ny05d=g_2}~ z!WS~5()Py@UlTj#siLGkSpOBk?ZS1*B*#cS46VARnX~@TU2}e<{fXAj77tk6d99pm z1WLq}YC9S_DgMHm3|k2a7{=><1%pI?q#BC*X8~rhM1E&=n+L1{X<7mAVyZlMVLUFb z8B;=h_swd}*YAz+d8d3YQm&BoPgqVfPx@~%8@0s0X!g7Js zLB8+-?YP^`s;GU3-1G8Fb8i*JRuqfgQlB}y3Cv&`r~)GED$Dc2E#KXxI?Ep>$+fe} zxE1f?*sw*6-`>E=GoV{)8Sdv)WBCa%NkLswjfgGL5tFK)-n;GIM%7t(VKyktte z@60LTYl#>U!D(u|4+V_WHp;{#tg48_&TZx|umGql_y_*)Op^w03i@fck#@G}z4{8o)VaRR8-}lK4 z8`w<_KM$5%-4id6unVm+&fpzu8|HMCC+Hc0SA5f1DSPO;{;+NHIam3O82>QBKvv|d zo<2$wi`2|#=uMlS?H*ZsI!~U4=!#X{f0n!w|IUe{*;92$Hun=~Aw9T^3xOuTt?WWo zXRVyR$sb+g2{wJyZ&l(jjaR|bH^X%x|KvqQ$hmkriD=D9Y}UnsJN&+rzF%*+z+PKM zq_se}zypcj-(Myvd_EDot9zWcIYiR#7{f?3H9?~*4F+<4Xa>xrnf|o9o;|mxM|>9S zhfki7vyYmna5T;~(+4|?1O_#NSw?m7dw=iPHv49@t^%_+Z~Kv9%zsGU+wWXvI2g&h zYZ~db`eW^aYCBCY`R`14OGGWcsp!(tWijXtt5Jd{rn^>n7C_tf(Wi{HlJK_1L)|4Yb!OczP0J;>*!u0d!Ik$n_*dlkJkE5uLU$?W-($CEwv z6-?#+qmqQV1okUxH>=I%QbzRdz#?P=ZP)2(`z|;v@Gf}CauaT~rEruIW{+vyuMPAy}~Pb zv$hS>V{bP($??rySZH<6IjOxeWK9EXb5Yyg3pV6IKGcEj5N$RzuG(322|81?(7E!nJ;dd0qJ8M1A#~ zo&x~v0Abh@1fskJZ5z)iYb1oq2F{NmWCGIC&1Z+}0#-v=U!(3au%Oqk|5`gZ$BUeu9>WVVkVbfx$~_|L1|ax ze9NN|a=D=RMNtJvTrfhx_gB`|Eg(Pu@mk1J139>p#aPuHfIV?lB@QY4_hQqG03Fq; z_kI8+T5Jldzu758T(15>nWs?{$}0c8@JI6&2F-7=ceMiabilBo6cP9s#4~pJlV8#P z!3g_WB3-y`GYEIro_5K6Gr;tG+3QSPAUbpS?xz&J{hV2btzUAbK2_E)Tt&yr}nHbr4-S~%3H+o0kDU%{ySZ5|a{dO*KXrKv;Q8UPeqZGM9 z8j?+GEPq=FaAqHUIJ)>tn?=%;Ypr5jBT@I9|7&9y-P_BgUM9YlwmZYuUbD-e@`unLB4C8M^&EmEUU$AhLO%hDaLKx!YthHh_JxU zlZmqy{=@F{)KnUo+BdabGVVx27ga^ek|F0-UP_DAdKrvZrY@dSetPLnqB1{wC)j|* zw$tUL(7^|gB-yNhmUl654gvA<1(6r6@>d@RkyBF< zjlh$AWos+;J5|_$3HH6+-p{prifG-b`4rh6mgXM?qG6`JBjIcQK$9=A9AJX@Fi=m{ zHskf2@t_ql2a;7$i6+8O<_26W(@%ucNXXfvZnS?Y^=7{)$-PcgP)A0rp7osJ*Xfxp zpQj>YFKqmU-q!bMv0a%s^K+01?u?=p{E(XZ9vp8#4Jq=q0|}tEE*b=PfM_5=^T10y z=FIX|zyZH6w$o#7#0vE?@f;28%quV`u~K)oRkyDKg0SM?c!B}YzJT9V1sLM)ej1hm z1|4?*Cti#X*G8q&YpWJnBO+Ai7G$W6dRGLrYVA{s)7;j_9>VGKVVvM4i>xPJd_n~>dUK#$nX2D~3cQ|rWS%vm>(988P zmLe?dK(Q}4M@B4d7i2>r#RH!J-*Krue(enOU#fZO1PvR6_E%sW0?N%PWH%MOml4|~ zCw~R#$CXqtew&NLi5j14M~UpqPn+WHCV$`Ky8ZO3X*Ji_9N~PcBtHp{-?khDyz^Xm z)uVVW&f-c`+v0~_`@fArAQ7lm4|r==Okho44%Y|ygsEGf5q5%lxC;`e3m|q2Ss}0C zCY7x6l94m9?5fvbfTMqGx3~Ja6smiWIMX3@O|>>kzt@gf#B`+$ONnu?oCssJsjiLa z*(oS`($oA|hX@Z&RADWcKKWspr*qay<&tr)jLl$>hoFiuo_>f8pn?|>*69wNR-2EE zispHvkcf4XTEZVcyHp1+9#rVImsC8gxN=crv6~i5H-mOR&c4Z7yj;T9y2IT)%p=xz zeDjBT{44)L&-UG@7!a-VmsV&tR32#sdX6HqeTb4@-Gs6_zCQm6BI6{24A1x`a zV~;w{9Wi^PPYe~_2yKmA+x3vUOEum%@%5e1I{9u(s5b4?^$psEK!52tum?VJ9LQ(7 zZa)ltVUWUX6Ft4QO zZ#YYFNuO7y%}f!@zF}@4jw^3daevfY3bd<@8Jlyn4J1e4jcaVgvF1-!F_kU%UVdmKB>n4VHu!P>Ie->308*^AB#>|&jBwwc zB?7t3mZDi;E{1~~j48-k`bW+f24EhTX+Lvws~DhN0x?dYO-q}bXAfLztGoo;+us*> zHFz^$zm^I*Bq(G*eZ3O#4j8M$%QVBo!-x(Y{mn9|ssF?y0JJm#v&mF_C^paZOertd zq2*n4LuhNxR6jeud9&E65z$cP=jP8APukA|cUVuN6~1;28|-XhFVrV;buYmR*Fsg` z8FJ6TnH1nZ8*6yf9wqh?5nW)vJ$PUzvj$ZOaInIE+{W5^t$2bF1dd^^oJ8ltse6hi zz3c>QR9}9=^JB}wjX@&>%_(tG&n!G|reiiPfak5mAbbhAF%`Hr_AFl?NfmZ)8Id@% zxp|bl<%TrKAJPoQ8`P*8kA5(9SU6!P&Xf4IB`@=Ye8!ekULcrlg+*mf;HrkFEBiWq zme2bG>_>T741l9;HoP&{yLHLBKmgQJ4~G`Q?a2H_}9*DM2HUzgb- z6Nyq>|J(MSsqT&}hr+&J6==RzD9=_qTw-69e56A->DyucD(65x+{;Asr`n8lsO4YA z1!JkUo_2lXEk@5(Q*U^9NfTVZJIxXrc7Joopomho-7@>4+JEYfWN1w><%l%JTbnQR z%jnTlE40a&3|Tf!s%m!)dlIIqN)LzxB`m=Siu}o(@FSTFR0Fk?>Ds?ovuLU0$4Nv;TUYD z30e|ENiPsjaPxFhfPF70pzNUA^xPtb1YK~oXMvr_KZD~BXauo`X3^&nw=?NVgIO_I zqk?+|USS#G3sJq@hB5L%cOKkYl!8y+*K!#$l7GM563u84PuNX%GpCt_uH> zzS8i)<)ND)w;b7T?gZSg1!@f-`w#iWKeM?vD;hMyNI7#MKdX!LB2UZ+l~wqncZ$~e9U?ko4KqtA zY5God7GF`}a&NeM8VE0WYNU712X-$7F2?v>JR+VxBq*%@O$TcNi94TkwK@a~An3sh4v~Ocy_N7e@-&Z)W)LOQ z*4Fj}x%ppHQ)?a?!Z6#J8p_u+Z^-(f6U={K0z4BR*#J_E4Zc81k>p^HUl`X%6_~Gt zkLZ8q(7#W!WoEO?^`hxMv8wFQyp9}l%t$fK@Di-6?v*!f+V+-uAgTqOS_hF*Pe2_(DD>iVAb^Fp5XFtLO!a~? z)tw;H7X(72Q~(NuPTD>LGYhT3)!`iI+|jx#H$)wwEWYhTadTdiB)B7VbdlM`lWO4SXS+G449h+2y6<@fBo z=7dd-5`2o_`mOQ;`&EU~Vuu3>hki=&fwsvc!@&(QX}h-KlRT>*;)I0{k?qokx%$Ub zlDfUYpPb#IJ*4gVWNDtVwI+RdS!t_GiY6<6BY?6Ypv^3IPrb$LP#4F*lcLSydM8b! z5FQ)RHvV*;&93@_UO=kuyh;d>o3G+)Pwi8FY=P?3)z4_uA`C~!Fl6gI%`oVbcIJnBE?0@C&&Lg-B?^Cq z_%kz_HjB0CpxHCdHy(Fsdj$aj&N^+TfX~yTs$uvF?RB|kG&l%{%che2794%P6o5q| zjVloXfP|c{X*NFJFBOYPN{WP%pCIes0wGZ7WgvkIPLe{Ffg@Nd9##yHAOhJy!n2;O z%eH&qEENsJfZz=@+koIHB?1&WQ*wi1bV7Lrp3(xZJt8-Em)L7<z$-Wi92C65a426OWrT zd^w+In`=r8HvAun-q^ZzgH)aG<)|8yI-S9uQ2 ziUr;?_o}%c!|z@64*Z_919c?1QfQ#ENyn>@0=d?0-ON4>= zkR|JevNS==CCA84a)|-{K zH=FGTa8^&R1?6ZbwV6A6!*bG;{O~@Yl+<4mHbQ(BFynbB90(2sQ*O<}U@B>n@1O)T zi29Ovr;B}pynlQlzq+VNUiZo86(OEa((DCMQo9`iq4#iKm1ShBhl<9B2$naD7@MTY zdIS=-=DT#+WBqt)Xx>id1oPT_J|eQS2oZ^XfGQV~t#y2vJt%BunldHnq;S5xYL*Ar z<9vU$qQ?DLD&wgnD*q^@#(kPtK*40nnP-eu(yG2{-qy~(&`hZJYN^|ORpFpjLsk%i zO!F5_Ppe9l+++32s?x{m6iBG}UMRR!bP8{tsHgKCz7knP++-ck(1lLwY6rQUR$Z;M74-?NmSd3GsAhV z$-B6Gd8m;$Y%xY%P$C{@+rXq*tV-z!jxzCUMquynGVa&$PMrSZjxv z7YSsSvFOsEW00Vv+PZc9n`+wo)nU_ZubzKIYjx^7jKBKj2;I|l>ytzXuFd%1(7_o2 zE2thmT+*Qai7l()xlL<_w6P3FTcag^|+yAj!_TDcdU_k5uF~v z;R_!}mmdsj>}XKn;5T4cWG_>c;msXC^rQNp?WUgOhWsP^@xkuoX zv4oQrzY_`lD4?6CXALx8`zlhNY?xj8c*Ul0i0r%Wt^O)G{tY4C$MKUXacl?ja6-Fg zlZhc9q&3ubmV?_y;GHAh>d>SsLf4LcgW3Se}G=0A()kD3-UNAH(YscxHA@OhQk&X zhO;fn>5TmR-(SlU^tHU^68lf+T}P=eQE_le`Q1A}@zJ*I5T&gIlPa#w5hI%}1HevlY~-x5SG!s9LN z^?sI?j`NcpzDoB`I8i-KU1#PsJ+lu$p;Ou~6T?fA^i%jbNuFR`%WCpH&63Z1(BBPf zNgnAo`!tD#rMFe|h5e;OM)&Mnrn@t-WxM-h4hv7k81M@o@Ih7(#3Dgb0N1SXSHD^0 z3rnvnuUWVtr|0yD;F7$Ck^SyT-?oMlnOR==!2S&@dwcNv8y;g@LP2sOL(Q3jF z3^PY(8%^v_olR!D65K8!Zp3ppQrx2x1H$6SULmC2ZJG1m8VbCFRL^lE*NH`b6bK&% z4}LBUD4Js0@4lPPw{>V;q5p#CefCo+3T$SS&V$gUO_fbABken>xewdD^>q0QZU`rT zOIf*N{+=9tCY>KH#n^r^(XN@kGp!>06ulU4y{;_9<2uZ=2y?3%X` z#h{dKkP?sSq6}v!|#>%*}MTY(zOU7rLPVo|uBYS!Z0ON|C%<#QGgLV-yFV9-x))3iw2vn#l{ z?6}SM*Pegc$#uvX*>V#>&d<;PyxR8ek2~pYrBhH_nYQ05f7fmR;$oT#rQcMqU8*>B zWod(_B3a5cvZ|`E`T69fp-|tWD|Mfpg);a-x0IHaRxTK9pjvz+r|{KqQBs?%xZkzS z(5E@K$=jAG18XKPke5$U{YlX9HKo(o?e+C_*N&*`nE6isR1ewL-_BcC{?tLy_i9vFTnH{$RQgyCJ!5wZ?-yU1w84lqmI}HQpt;_8J1f1x=iV|{V-V<tG?WzSHQ<+cy^z|ya$W)f!phZ(8h33u?AK2 zP<7+_m;NXTTcv1)r7H4#^ifs5b;$Ei-nEli*j6|MmiJ^Hh;78RpOM}9Cu1anP^8hi z^h}6$0r%m^>z6@X&pV=dq|+JP%n_R(&9jB$DyN&k0}aM0U05V;f0Xzx(@dt*HTkyn zkBHqKyd1*>PhC=JvsA5Syhus8(Kz8cov_TdfV0{lWiS~r_IM5g zC-2On+9}Bt$I8BPVQZ;*jNxWTm7*D+DLqQU|Fg(e{?!PUBxnNo_$43kVBhv&3=oPUs;p7tT%o2$sG5-ezqtNm+;oacHIb{ zpiH$!4w=W5Y(&JaDI zmKAa^SpLHEI*zMyo#9ra;C-{{4JF#_l-^L^D;5}u&hINxsy1|9Ev6M01-ofN;2ByG zMv$MA$L>&*5D=euXQa5|GxWx1wz)-p4Uh^jM6PZRXqGdP{BhSrKg}!bVQtdl3`*Qy zY!N%sKNx{ct4f_xt&(ryYr!ZEHu;Bt#7lD2$(y4|zS_+~v7_g8#$Bept`D86Vq=vf z2&eC+kId$z2qv)n)inNO^zTUKk-vRCa8LE|z+0t~1vs^YK-%1yAa@+CWqCa$WE1 zA&7@VVYvjk-2;xptm#6b*V-1;2X8#Ka_(8Gdb1OX?ukD38%9r^`S4&l@rVuK={N>FCa89TaqB=7`J@8O} z{z>&-ub+KQrw@0M`@WW>jjSxo%jLnWD$?FrTvSdVS+jD70A;r9I>`|^-ogm?r0GS? zQ-$yUX6v$7uBaN)D+ptnrjei4v3IHR9Vx5;9ruC5par4$3#z8=c!~X*(eh%Q z?3B=z#Vg_b+j3FhNdKbi(M$RSlZ2K(zh#fjH_3uz>27&i5IEdqB%M+x`-`Rlou}O6 zOXZN_s7EjOFtC7_hY}RJ^V*dfGW5}eO!DcsaOnS@CJ4>jJ#BV3k?xGg`By%FH2iDp zvUc2+vTH3Fsp|Z^H;2MBWdv&% z%sVqq?nN5*bxe`3JeKqP!s#1|!31WWj;@nRns29lYaz~)I?;8+)ZSa?5yl3wX(%0< zy!d zIJRk`KVHZN^6VQL^6qc(OnDF`Q1@v>z8kak!~2PP`eKQD-S@I|#F1c)!uuaK!M@+A zOnF}i)*r?b!>hd1Vyca~>ukw-~Ua z-+}}X4*XBmUir3bFsxP~jrm<~n?+|*CT){89{?nAd+XbR0&_U7Kr6H1H~030D=#~w zk7@&x_x*DI?j8SDT$RuA^C{i30il>1Is#uVe|B%pSkHS1enU`-cbqz?heRJIR-r5Vipo z1Jy>sGko{%)n^8CjO!lC`H0xvP^!rA_Ilm=FN*8*{5jA_!$7XPxBU8`xKs-{F~zab z;2%8b3BD_12aQ>Tudb-WM3DwU0j<&CtT{(e_53^MsaM)}tXmRnTUS$dm;>RJ5`L+v z$Gpb518j8sl6o>2@$a$SSa6l}5yBS#-RdtFBR_sUiijKedfZ-(AR6cR9jgesh>te# zCSXEDYwR^x6-f|Kf{FGF*D#cD?;d4*tJ!cKG+o09qk2`?GI(XaLqKBx{C%2@1JJe## zc*ml<4&i5JAEM&*JKOhP|NgKS(4jP}r_sWbjazg1w*$90%-f0{ePEXoXNW@b-V^B- ze*hdLVT!^7&$AD6y!d)>n%{`**eYeRvVy!hQ*O4?@U7v4>e0x=)dEqNq`gwQAH#<; zgpZMhnmiS4JheIG&1jzZD{fAh&EAjdnQ zN$$6H__SEhc@^l63q}mY=Y9mSGUb&_WZ`L?-1VB>->l?pR{K&FHp3rM$#Esdv`YNCPxVThnu6k%I_Q0Oo-hMgKgis z4wQFUEQ;^jEy!zmBrb!%kMz+M`g|N#)up}Qb8Z*dnIX`6%0u29=J@H&)zWB-K-SdZ=HdtL9)259~hYG zb!{qJlR&TGoaI6Dx6TF6A^pcUemG`gZch3GYtfhH3<-xh^W$@Vxhd5Fp&;QjHhL%J z8#A+^qSY7bUKu>ahHvIMyf_SXN}NA+^u~UnGqt})YAW6nl3j|;SMJokOR0ED;WKWw zBUrjAr{7ikwX1Wst4UNk=Y^E>V0N-sNTWzMj<80geVIPN+|U5hxxoOP?leI!Y!4H0 zffo5x@3q7o6@U7EHTJh{)7khPA%1}$gjm*0`});2%sMWAv;I!K<=TPbu$h0Z_!F8D z9RJ=f=J=WSd#)|$xL`o2Uc^y z7Jj;cqZhC+{&Z2-s@>whWWGd!=`GUvjqmMqE15YpcNslA)E1}_XD*?HYrtNDT1aD% zu!!l$KZQwIQfBaqtkw?d%Zm@fgLB9cXF)oohrsH{TTkzRPvRVhxjg-iI=+nbiVNPy zHRdsneZF(5aQ5=Peyc^(tCx4Vn0fT4sFuI;(^=SsYP?l;{AQty^>9)yC8$m#_VYAx z_;o^{zuEU|L<+kU`Ghn$M&5vqj*l$IUsWAH(ZF}VCJ~3?`V7)Izl(E))<|U zR^RVcs~FpWRCs=!i1~VO`SYFgeM=%{m8bC*Dg}cz7CGE){VOrJ+^-!p-%PW5efUQB zW-CvvXKLn9o;#PBGGtCKvC8o#rxz}?s24Wdg;bQzd1aK#t%n`hNeld@Su|SusNKP; zLTas1Diat`tl(Ee;6y6jNdJit|3t>wZ1|`O=?}ICH z#}xCSq;~ZDF$VS{#NMw*ufnU~gM|$=L~Q$oUuVf%mRb~Jns{z4hrIF@MV-XDV5v6* z!5a>!P*~Ma*x|I(4e27U26O)ip5nk!=?tW8vv>7u@|{mWy%h^tjtBXv5BqMQx9Eh% z^2lkV8h{L(nN?%thkvqM4z z>4A_I?!C^_6C`ie{1SiI0SRBi|E@T<<4XRBbL zS`C?_^8wH-o%hi5IfT^?Nx1(i3n8tmUy-afb!EiNcrM%eeU0)H;uKcTqrPe5J~WQ8 z*K^5+E4T8M_iI?6QW_JNuoFO?o`G*+-N`949x?_ik7QFZE$0^1Tv#5p6a%+i zWWP5t-f0vUg@y6{*q^x9iSl(?aBFNkQU{F}O4|r%I-rB9J`Q+E_*A3zqRSq9yV1ZB zOhmhzGhLwa!nfDGTyIDV)${A?=8RQ*LSOC4bg`d(Ymp;)I{PAqZp6#-;3GA~y;doT z=5Tyh8JolP+g5MBQ61S2{z&dXW(%xP_joy+dUMZq)sJCZnO26z$6GbLnIW3S^1@i` z+AWB~1~TcK^Mg9iIA!$Q(jkHA_+ z8*zCl+_CXfkOY64vJPo$lVmOU`~ILMqBonYan-NC^1P($3%!SjO5~oj@zZTZTpGHj z2LJh)qn?%nw&`)Ys2FYu7e9_JGpy+l{J(E-$&S*eFn>R1?T8+}Vz zpmpHF^>uYTw-g@EO%qrX9|dm;_+c#14K0=k$!1vwL+q## z)_=aW6a6cy2u&P<-x2mhTs7<&xg(QoIu;;D`7KyjYVI_P

Q~BZW&J$K3z$Rvmwj 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

D)z7k?hY{H{8kq#~jq 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 z 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

4D&!~g~ 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

DaA_&ClE9TU@=w+TlkkgWVx>kqq2v0h$#o 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 Date: Wed, 22 Apr 2026 10:50:00 +0200 Subject: [PATCH 19/21] fix(extrude): trace continuous field for sub-pixel walls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit extrude_2d was running find_contours on the binarized mask, which discards all sub-pixel information from the pre-threshold smoothing and forces every traced contour onto pixel edges. The consequence was visible as staircase zigzag on any oblique sidewall of the extruded mesh. Root-cause fix: add _build_signed_field(field, binary, ...) which rebuilds the continuous signed field (positive inside, zero on boundary) and only clamps pixels that the cleanup steps (fill_holes, min_component_area) actively removed — natural boundaries stay symmetric so a solid binary block still traces at integer pixel positions. _trace_contours now dispatches on dtype: bool keeps the old pixel-aligned behavior (backward-compatible for the existing white-box tests), float traces the zero-iso of the signed field with sub-pixel precision. extrude_2d drives the float path. Also fixes the docs 3D render: smooth_shading=True was averaging normals across the cap-to-wall seam and falsely banding the cap. Switched to flat shading so each cap facet uses its own +z normal and the (mathematically planar) top reads as uniformly lit. Regenerated both docs images; all 269 tests pass; PROGRESS.md records the root cause and prevention guidance. --- docs/PROGRESS.md | 12 ++++ scripts/generate_doc_images.py | 28 +++++++-- src/xeltofab/extrude.py | 55 ++++++++++++++++-- website/content/docs/api/extrude-2d.mdx | 2 +- .../images/guides/extrude-2d-contour.png | Bin 44186 -> 58165 bytes .../public/images/guides/extrude-2d-mesh.png | Bin 150940 -> 54388 bytes 6 files changed, 86 insertions(+), 11 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 9c1a837..410dc07 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -6,6 +6,18 @@ Session log of learnings, failures, solutions discovered, and context gathered d ## Accumulated Project Wisdom +### 2026-04-22 — extrude_2d Traced Binary Mask Instead of Continuous Field + +**Problem:** Extruded meshes produced by `extrude_2d` showed pronounced staircase zigzag on any sidewall not aligned with the pixel grid. Docs images revealed jagged oblique walls despite the mesh being mathematically watertight. + +**Root cause:** `_trace_contours` ran `skimage.measure.find_contours` on the boolean binary mask at iso=0.5. Because the binary only has values 0 or 1, the zero-iso lies exactly at pixel edges — all sub-pixel information from the original continuous field (and any `smooth_sigma`) was thrown away by the threshold step before tracing. The main pipeline (`extract.py::_extract_2d`) already traces the continuous field directly, so the staircase artifact was unique to `extrude_2d`. + +**Resolution:** Added `_build_signed_field(field, binary, *, field_type, level, smooth_sigma)` which rebuilds the continuous signed field (positive inside, zero on boundary) and selectively clamps only the regions that the cleanup steps (`fill_holes`, `min_component_area`) actively removed — leaving natural boundaries symmetric so a solid binary block still traces at integer pixel boundaries. `_trace_contours` now dispatches on dtype: bool → old pixel-aligned behavior (kept for existing tests), float → zero-iso on the signed field with sub-pixel precision. `extrude_2d` uses the float path. All 269 tests still pass. Fix: ``. + +**Prevention:** When a tracer operates on a thresholded mask, it should either be documented as pixel-aligned OR operate on the continuous pre-threshold field. The choice is not neutral — any oblique geometry inherits the tracer's sampling. Cross-check new modules that trace iso-surfaces against the established pipeline: if the main pipeline uses continuous tracing, a new path should too unless there's an explicit reason to diverge. + +--- + ### 2026-04-15 — SDF→Density Converter Added **Problem:** Third-party consumers (EngiBench and density-only TO solvers) needed to feed SDF arrays into the density-mode pipeline, but no explicit conversion utility existed. Callers had to hand-roll thresholds, risking inconsistent iso-surface conventions. diff --git a/scripts/generate_doc_images.py b/scripts/generate_doc_images.py index be4d8e3..aeed559 100644 --- a/scripts/generate_doc_images.py +++ b/scripts/generate_doc_images.py @@ -840,7 +840,7 @@ def gen_extrude_2d_contour() -> None: from matplotlib.lines import Line2D from shapely.geometry import LinearRing - from xeltofab.extrude import _build_binary, _trace_contours + from xeltofab.extrude import _build_binary, _build_signed_field, _trace_contours from xeltofab.io import load_field state = load_field(_EXTRUDE_FIXTURE) @@ -854,7 +854,14 @@ def gen_extrude_2d_contour() -> None: fill_holes=False, min_component_area=0, ) - contours = _trace_contours(binary) + signed = _build_signed_field( + field, + binary, + field_type="density", + level=0.5, + smooth_sigma=0.0, + ) + contours = _trace_contours(signed) fig, (ax_in, ax_out) = plt.subplots(1, 2, figsize=(10, 3.2)) fig.patch.set_facecolor(BG_COLOR) @@ -901,13 +908,24 @@ def gen_extrude_2d_mesh() -> None: state = load_field(_EXTRUDE_FIXTURE) mesh = extrude_2d(state.field, thickness=30.0) - # Custom render: drop edges (earcut fan triangulation reads as noise), - # enable smooth shading with a subtle light for depth cues. faces_pv = np.column_stack([np.full(len(mesh.faces), 3), mesh.faces]).ravel() pv_mesh = pv.PolyData(mesh.vertices.astype(np.float64), faces_pv) + # Flat shading (smooth_shading=False) with no edges: each cap facet + # uses its own +z face normal so the top reads as uniformly lit, + # revealing that it is actually planar (earcut's fan triangulation is + # geometrically flat; smooth shading averages normals across the + # cap-to-wall seam and falsely bands the cap). pl = pv.Plotter(off_screen=True, window_size=[960, 540]) - pl.add_mesh(pv_mesh, color="#88BDE6", smooth_shading=True, specular=0.25, specular_power=15) + pl.add_mesh( + pv_mesh, + color="#88BDE6", + smooth_shading=False, + ambient=0.25, + diffuse=0.7, + specular=0.15, + specular_power=10, + ) pl.camera_position = "iso" pl.camera.zoom(1.25) pl.set_background(BG_COLOR) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 8114305..33d0563 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -51,13 +51,51 @@ def _build_binary( return binary -def _trace_contours(binary: np.ndarray) -> list[np.ndarray]: - """Trace closed contours from a bool mask in canonical (x, y) coordinates.""" - padded = np.pad(binary.astype(float), 1, constant_values=0.0) - raw = find_contours(padded, 0.5) +def _trace_contours(data: np.ndarray) -> list[np.ndarray]: + """Trace closed contours in canonical (x, y) coordinates. + + Dispatches on dtype: a bool mask traces the pixel-aligned 0.5-iso of the + mask; a float signed field traces the zero-iso with sub-pixel precision. + ``extrude_2d`` drives the float path so sidewalls follow the continuous + iso-surface rather than pixel staircases. + """ + if data.dtype == bool: + padded = np.pad(data.astype(float), 1, constant_values=0.0) + raw = find_contours(padded, 0.5) + else: + pad_value = min(float(data.min()), 0.0) - 1.0 + padded = np.pad(data, 1, constant_values=pad_value) + raw = find_contours(padded, 0.0) return [np.column_stack([contour[:, 1] - 1.0, contour[:, 0] - 1.0]) for contour in raw] +def _build_signed_field( + field: np.ndarray, + binary: np.ndarray, + *, + field_type: Literal["density", "sdf"], + level: float | None, + smooth_sigma: float, +) -> np.ndarray: + """Build a continuous signed field aligned with the cleaned binary mask. + + The returned array is positive where the material sits (inside the iso- + surface), negative outside, and zero on the boundary. Only pixels that + the cleanup steps (``fill_holes``, ``min_component_area``) actively + removed are clamped below zero — natural boundaries keep their + symmetric sub-pixel positions, so a solid binary block still traces as + an integer-sized rectangle. + """ + eff_level = level if level is not None else (0.0 if field_type == "sdf" else 0.5) + smoothed = gaussian_filter(field, sigma=smooth_sigma) if smooth_sigma > 0.0 else field + signed = (eff_level - smoothed) if field_type == "sdf" else (smoothed - eff_level) + cleanup_removed = (~binary) & (signed > 0.0) + if cleanup_removed.any(): + suppress = -(float(signed.max()) + 1.0) + signed = np.where(cleanup_removed, suppress, signed) + return signed + + def _collect_polygons(geom: object) -> list[Polygon]: """Recursively flatten polygonal output from shapely set operations.""" if isinstance(geom, Polygon): @@ -220,7 +258,14 @@ def extrude_2d( fill_holes=fill_holes, min_component_area=min_component_area, ) - contours = _trace_contours(binary) + signed = _build_signed_field( + field, + binary, + field_type=field_type, + level=level, + smooth_sigma=smooth_sigma, + ) + contours = _trace_contours(signed) height, width = binary.shape multi_poly = _polygonize(contours, height=height, width=width) return _build_prism_mesh(multi_poly, thickness=thickness) diff --git a/website/content/docs/api/extrude-2d.mdx b/website/content/docs/api/extrude-2d.mdx index 6118221..d1e4b6f 100644 --- a/website/content/docs/api/extrude-2d.mdx +++ b/website/content/docs/api/extrude-2d.mdx @@ -45,7 +45,7 @@ A [`trimesh.Trimesh`](https://trimesh.org/) instance representing the extruded p ## How it works 1. **Binarize** — optional Gaussian smoothing, then threshold according to `field_type` and `level`. Optional `fill_holes` morphology and `min_component_area` cleanup. -2. **Trace** — `skimage.measure.find_contours` on the padded binary mask; the pad ensures contours that hug the image border still close correctly. +2. **Trace** — contours are traced on the **continuous signed field** (positive inside, zero on boundary), not the binary mask. `skimage.measure.find_contours` interpolates the zero-iso with sub-pixel precision so oblique walls follow the true iso-surface rather than pixel-aligned staircases. Regions that cleanup has removed are clamped below zero so no contour re-surfaces there. 3. **Polygonize** — contours are split into shells and holes by orientation; each hole is assigned to its innermost containing shell, and the resulting polygons are merged with `shapely.ops.unary_union` and snapped to the image rectangle. 4. **Triangulate caps** — each polygon (with holes) is triangulated via `mapbox_earcut`, producing the bottom and top face sets. 5. **Stitch walls** — vertical quads between corresponding bottom/top ring vertices are split into two triangles each, yielding a closed prism. diff --git a/website/public/images/guides/extrude-2d-contour.png b/website/public/images/guides/extrude-2d-contour.png index ac100834dd0a0fe002f7ccd4e3e0d97ca1407821..67b904ccda970b21a16b21aae944e2975a83672d 100644 GIT binary patch literal 58165 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

Q~BZW&J$K3z$Rvmwj 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 OQj}Gb$&-5U{Qm*O!=Wkw literal 150940 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

D)z7k?hY{H{8kq#~jq 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 z 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

4D&!~g~ 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

DaA_&ClE9TU@=w+TlkkgWVx>kqq2v0h$#o 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 Date: Wed, 22 Apr 2026 10:50:14 +0200 Subject: [PATCH 20/21] docs(progress): record extrude contour-tracing fix commit hash --- docs/PROGRESS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 410dc07..ce8f06e 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -12,7 +12,7 @@ Session log of learnings, failures, solutions discovered, and context gathered d **Root cause:** `_trace_contours` ran `skimage.measure.find_contours` on the boolean binary mask at iso=0.5. Because the binary only has values 0 or 1, the zero-iso lies exactly at pixel edges — all sub-pixel information from the original continuous field (and any `smooth_sigma`) was thrown away by the threshold step before tracing. The main pipeline (`extract.py::_extract_2d`) already traces the continuous field directly, so the staircase artifact was unique to `extrude_2d`. -**Resolution:** Added `_build_signed_field(field, binary, *, field_type, level, smooth_sigma)` which rebuilds the continuous signed field (positive inside, zero on boundary) and selectively clamps only the regions that the cleanup steps (`fill_holes`, `min_component_area`) actively removed — leaving natural boundaries symmetric so a solid binary block still traces at integer pixel boundaries. `_trace_contours` now dispatches on dtype: bool → old pixel-aligned behavior (kept for existing tests), float → zero-iso on the signed field with sub-pixel precision. `extrude_2d` uses the float path. All 269 tests still pass. Fix: ``. +**Resolution:** Added `_build_signed_field(field, binary, *, field_type, level, smooth_sigma)` which rebuilds the continuous signed field (positive inside, zero on boundary) and selectively clamps only the regions that the cleanup steps (`fill_holes`, `min_component_area`) actively removed — leaving natural boundaries symmetric so a solid binary block still traces at integer pixel boundaries. `_trace_contours` now dispatches on dtype: bool → old pixel-aligned behavior (kept for existing tests), float → zero-iso on the signed field with sub-pixel precision. `extrude_2d` uses the float path. All 269 tests still pass. Fix: `a31d6a1`. **Prevention:** When a tracer operates on a thresholded mask, it should either be documented as pixel-aligned OR operate on the continuous pre-threshold field. The choice is not neutral — any oblique geometry inherits the tracer's sampling. Cross-check new modules that trace iso-surfaces against the established pipeline: if the main pipeline uses continuous tracing, a new path should too unless there's an explicit reason to diverge. From 6a3f47bd10bcd228b4389bfee46a0fc8db0d172f Mon Sep 17 00:00:00 2001 From: "Zhao.MA" Date: Wed, 22 Apr 2026 11:00:40 +0200 Subject: [PATCH 21/21] fix(extrude): reject negative smooth_sigma and min_component_area Previously, negative values were silently treated as a no-op via the > 0 guards in _build_binary. That masked typos at the public API boundary; docs present both knobs as non-negative. Now extrude_2d raises ValueError on negative input, matching the existing thickness <= 0 validation style. Added matching tests. Suggested by Copilot review. --- src/xeltofab/extrude.py | 4 ++++ tests/test_extrude.py | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/xeltofab/extrude.py b/src/xeltofab/extrude.py index 33d0563..9dc0fcd 100644 --- a/src/xeltofab/extrude.py +++ b/src/xeltofab/extrude.py @@ -250,6 +250,10 @@ def extrude_2d( raise ValueError(f"field must be 2D, got shape {field.shape}") if thickness <= 0: raise ValueError(f"thickness must be positive, got {thickness}") + if smooth_sigma < 0: + raise ValueError(f"smooth_sigma must be non-negative, got {smooth_sigma}") + if min_component_area < 0: + raise ValueError(f"min_component_area must be non-negative, got {min_component_area}") binary = _build_binary( field, field_type=field_type, diff --git a/tests/test_extrude.py b/tests/test_extrude.py index 5b0428f..d92642a 100644 --- a/tests/test_extrude.py +++ b/tests/test_extrude.py @@ -40,6 +40,16 @@ def test_rejects_negative_thickness(): xtf.extrude_2d(np.ones((4, 4)), thickness=-1.0) +def test_rejects_negative_smooth_sigma(): + with pytest.raises(ValueError, match="smooth_sigma"): + xtf.extrude_2d(np.ones((4, 4)), thickness=1.0, smooth_sigma=-0.5) + + +def test_rejects_negative_min_component_area(): + with pytest.raises(ValueError, match="min_component_area"): + xtf.extrude_2d(np.ones((4, 4)), thickness=1.0, min_component_area=-1) + + def test_binary_density_default_level(): """Density field thresholds at 0.5 by default.""" field = np.array([[0.2, 0.8], [0.6, 0.4]])