From c5226084fe57473c77ba3a1f58bb2b2562155848 Mon Sep 17 00:00:00 2001 From: Antoine Date: Mon, 16 Feb 2026 21:33:58 +0000 Subject: [PATCH] Generate sandbox 2 rib profile (11 pockets, validated) --- tools/adaptive-isogrid/src/brain/__main__.py | 5 +- .../tests/output/rib_profile_sandbox_2.json | 1093 +++++++++++++++++ .../tests/rib_profile_sandbox_2.json | 247 ++-- 3 files changed, 1221 insertions(+), 124 deletions(-) create mode 100644 tools/adaptive-isogrid/tests/output/rib_profile_sandbox_2.json diff --git a/tools/adaptive-isogrid/src/brain/__main__.py b/tools/adaptive-isogrid/src/brain/__main__.py index 937823fe..eea836c9 100644 --- a/tools/adaptive-isogrid/src/brain/__main__.py +++ b/tools/adaptive-isogrid/src/brain/__main__.py @@ -33,7 +33,10 @@ def _merge_params(geometry: Dict[str, Any], params_file: Path | None) -> Dict[st if not isinstance(user_params, dict): raise ValueError("--params must point to a JSON object") params.update(user_params) - params["thickness"] = float(geometry.get("thickness", params.get("thickness", 10.0))) + raw_thick = geometry.get("thickness") + if raw_thick is None: + raw_thick = params.get("thickness", 10.0) + params["thickness"] = float(raw_thick) return params diff --git a/tools/adaptive-isogrid/tests/output/rib_profile_sandbox_2.json b/tools/adaptive-isogrid/tests/output/rib_profile_sandbox_2.json new file mode 100644 index 00000000..78e858d5 --- /dev/null +++ b/tools/adaptive-isogrid/tests/output/rib_profile_sandbox_2.json @@ -0,0 +1,1093 @@ +{ + "valid": true, + "outer_boundary": [ + [ + 0.0, + 0.0 + ], + [ + 7.5, + -7.5 + ], + [ + 7.5, + -22.6 + ], + [ + 22.5, + -22.6 + ], + [ + 22.5, + -13.496098 + ], + [ + 74.5, + -13.496098 + ], + [ + 74.5, + -22.6 + ], + [ + 102.5, + -22.6 + ], + [ + 102.5, + -7.5 + ], + [ + 117.5, + -7.5 + ], + [ + 117.5, + -22.6 + ], + [ + 140.748693, + -22.6 + ], + [ + 140.748693, + 124.4 + ], + [ + 117.5, + 124.4 + ], + [ + 117.5, + 102.5 + ], + [ + 102.5, + 102.5 + ], + [ + 102.5, + 124.4 + ], + [ + 7.5, + 124.4 + ], + [ + 7.5, + 102.5 + ], + [ + 0.0, + 95.0 + ], + [ + -13.5, + 95.0 + ], + [ + -13.5, + 0.0 + ], + [ + 0.0, + 0.0 + ] + ], + "pockets": [ + { + "lines": [ + [ + [ + 46.69628710707051, + 29.963035273414622 + ], + [ + 60.94596012521759, + 54.644194378744466 + ] + ], + [ + [ + 55.74980762636944, + 63.644194246863485 + ], + [ + 27.250461590075275, + 63.644194246863485 + ] + ], + [ + [ + 22.054309091227125, + 54.64419437874447 + ], + [ + 36.30398210937421, + 29.963035273414622 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 36.30398210937421, + 29.963035273414622 + ], + "tangent_end": [ + 46.69628710707051, + 29.963035273414622 + ], + "center": [ + 41.50013460822236, + 32.96303514153364 + ], + "radius": 6.0, + "start_angle": -2.6179939033720014, + "end_angle": -0.5235987502177919 + }, + { + "tangent_start": [ + 60.94596012521759, + 54.644194378744466 + ], + "tangent_end": [ + 55.74980762636944, + 63.644194246863485 + ], + "center": [ + 55.74980762636944, + 57.644194246863485 + ], + "radius": 6.0, + "start_angle": -0.5235987502177925, + "end_angle": 1.5707963267948966 + }, + { + "tangent_start": [ + 27.250461590075275, + 63.644194246863485 + ], + "tangent_end": [ + 22.054309091227125, + 54.64419437874447 + ], + "center": [ + 27.250461590075275, + 57.644194246863485 + ], + "radius": 6.0, + "start_angle": 1.5707963267948966, + "end_angle": -2.617993903372002 + } + ] + }, + { + "lines": [ + [ + [ + 25.179673402618857, + 26.070296630630104 + ], + [ + 7.873107267277591, + 37.065710433629505 + ] + ], + [ + [ + -1.2871613197145175, + 31.1743966760436 + ], + [ + 0.7380751429317998, + 16.620900165542594 + ] + ], + [ + [ + 8.041446102725393, + 11.604193327713526 + ], + [ + 23.322775775420343, + 15.162276035215136 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 23.322775775420343, + 15.162276035215136 + ], + "tangent_end": [ + 25.179673402618857, + 26.070296630630104 + ], + "center": [ + 21.96214027680359, + 21.005962460743458 + ], + "radius": 6.0, + "start_angle": -1.3420336769029062, + "end_angle": 1.0048017953934636 + }, + { + "tangent_start": [ + 7.873107267277591, + 37.065710433629505 + ], + "tangent_end": [ + -1.2871613197145175, + 31.1743966760436 + ], + "center": [ + 4.655574141462329, + 32.001376263742856 + ], + "radius": 6.0, + "start_angle": 1.0048017953934643, + "end_angle": -3.0033225543656368 + }, + { + "tangent_start": [ + 0.7380751429317998, + 16.620900165542594 + ], + "tangent_end": [ + 8.041446102725393, + 11.604193327713526 + ], + "center": [ + 6.680810604108645, + 17.447879753241846 + ], + "radius": 6.0, + "start_angle": -3.003322554365637, + "end_angle": -1.3420336769029066 + } + ] + }, + { + "lines": [ + [ + [ + 8.142608111376788, + 57.57373932751069 + ], + [ + 3.111741656580527, + 52.98899463033666 + ] + ], + [ + [ + 3.9356621110971552, + 43.489950440840786 + ], + [ + 19.192670394852637, + 33.79668615237463 + ] + ], + [ + [ + 26.32995678387978, + 40.637619381125816 + ], + [ + 17.380214190556828, + 56.139029176020465 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 17.380214190556828, + 56.139029176020465 + ], + "tangent_end": [ + 8.142608111376788, + 57.57373932751069 + ], + "center": [ + 12.184061691708676, + 53.139029307901446 + ], + "radius": 6.0, + "start_angle": 0.5235987502177922, + "end_angle": 2.3098321671190982 + }, + { + "tangent_start": [ + 3.111741656580527, + 52.98899463033666 + ], + "tangent_end": [ + 3.9356621110971552, + 43.489950440840786 + ], + "center": [ + 7.153195236912417, + 48.55428461072743 + ], + "radius": 6.0, + "start_angle": 2.309832167119099, + "end_angle": -2.1367908581963295 + }, + { + "tangent_start": [ + 19.192670394852637, + 33.79668615237463 + ], + "tangent_end": [ + 26.32995678387978, + 40.637619381125816 + ], + "center": [ + 21.922087253239702, + 38.0927348702233 + ], + "radius": 5.089769245552956, + "start_angle": -2.136790858196329, + "end_angle": 0.5235987502177915 + } + ] + }, + { + "lines": [ + [ + [ + 110.74101766719303, + 63.64338377924982 + ], + [ + 82.25066168485725, + 63.64338377924982 + ] + ], + [ + [ + 77.05450918600908, + 54.6433839111308 + ], + [ + 91.29968717717698, + 29.97001042136663 + ] + ], + [ + [ + 101.69199217487328, + 29.970010421366627 + ], + [ + 115.93717016604118, + 54.6433839111308 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 115.93717016604118, + 54.6433839111308 + ], + "tangent_end": [ + 110.74101766719303, + 63.64338377924982 + ], + "center": [ + 110.74101766719303, + 57.64338377924982 + ], + "radius": 6.0, + "start_angle": -0.5235987502177925, + "end_angle": 1.5707963267948966 + }, + { + "tangent_start": [ + 82.25066168485725, + 63.64338377924982 + ], + "tangent_end": [ + 77.05450918600908, + 54.6433839111308 + ], + "center": [ + 82.25066168485723, + 57.64338377924982 + ], + "radius": 6.0, + "start_angle": 1.5707963267948943, + "end_angle": -2.617993903372001 + }, + { + "tangent_start": [ + 91.29968717717698, + 29.97001042136663 + ], + "tangent_end": [ + 101.69199217487328, + 29.970010421366627 + ], + "center": [ + 96.49583967602513, + 32.97001028948564 + ], + "radius": 6.0, + "start_angle": -2.617993903372002, + "end_angle": -0.5235987502177919 + } + ] + }, + { + "lines": [ + [ + [ + 88.44248935771635, + 28.31881476393816 + ], + [ + 74.19615180506855, + 52.99419667321773 + ] + ], + [ + [ + 63.80384680737225, + 52.99419667321772 + ], + [ + 49.55750925472447, + 28.31881476393816 + ] + ], + [ + [ + 54.75366175357262, + 19.318814895819145 + ], + [ + 83.2463368588682, + 19.31881489581914 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 83.2463368588682, + 19.31881489581914 + ], + "tangent_end": [ + 88.44248935771635, + 28.31881476393816 + ], + "center": [ + 83.2463368588682, + 25.318814895819145 + ], + "radius": 6.0, + "start_angle": -1.5707963267948966, + "end_angle": 0.5235987502177919 + }, + { + "tangent_start": [ + 74.19615180506855, + 52.99419667321773 + ], + "tangent_end": [ + 63.80384680737225, + 52.99419667321772 + ], + "center": [ + 68.9999993062204, + 49.99419680509871 + ], + "radius": 6.0, + "start_angle": 0.5235987502177925, + "end_angle": 2.617993903372002 + }, + { + "tangent_start": [ + 49.55750925472447, + 28.31881476393816 + ], + "tangent_end": [ + 54.75366175357262, + 19.318814895819145 + ], + "center": [ + 54.75366175357262, + 25.318814895819145 + ], + "radius": 6.0, + "start_angle": 2.6179939033720014, + "end_angle": -1.5707963267948966 + } + ] + }, + { + "lines": [ + [ + [ + 61.11219041241583, + 6.894586078244952 + ], + [ + 73.3759553929645, + -1.1396353460919375 + ] + ], + [ + [ + 81.48414793271395, + 0.3063790129768895 + ], + [ + 86.36749955130345, + 6.894586078244952 + ] + ], + [ + [ + 81.77924022486597, + 16.00678510418086 + ], + [ + 63.83121430469628, + 16.00678510418086 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 63.83121430469628, + 16.00678510418086 + ], + "tangent_end": [ + 61.11219041241583, + 6.894586078244952 + ], + "center": [ + 63.83121430469629, + 11.04501562583193 + ], + "radius": 4.961769478348927, + "start_angle": 1.5707963267948981, + "end_angle": -2.1507614985089196 + }, + { + "tangent_start": [ + 73.3759553929645, + -1.1396353460919375 + ], + "tangent_end": [ + 81.48414793271395, + 0.3063790129768895 + ], + "center": [ + 76.66392421635922, + 3.8792550707616122 + ], + "radius": 6.0, + "start_angle": -2.150761498508919, + "end_angle": -0.6378621816451913 + }, + { + "tangent_start": [ + 86.36749955130345, + 6.894586078244952 + ], + "tangent_end": [ + 81.77924022486597, + 16.00678510418086 + ], + "center": [ + 81.77924022486597, + 10.295524055192883 + ], + "radius": 5.711261048987976, + "start_angle": -0.6378621816451904, + "end_angle": 1.5707963267948966 + } + ] + }, + { + "lines": [ + [ + [ + 48.834257169453984, + 103.52584468009594 + ], + [ + 57.68824614043869, + 88.190285033821 + ] + ], + [ + [ + 67.11059798309986, + 90.76190631565393 + ], + [ + 66.9555500620912, + 107.47183470343282 + ] + ], + [ + [ + 60.19075276570443, + 113.3671886380127 + ], + [ + 53.265354100745455, + 112.4768688279966 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 53.265354100745455, + 112.4768688279966 + ], + "tangent_end": [ + 48.834257169453984, + 103.52584468009594 + ], + "center": [ + 54.030409668302134, + 106.52584454821496 + ], + "radius": 6.0, + "start_angle": 1.6986536613462393, + "end_angle": -2.617993903372001 + }, + { + "tangent_start": [ + 57.68824614043869, + 88.190285033821 + ], + "tangent_end": [ + 67.11059798309986, + 90.76190631565393 + ], + "center": [ + 62.06127575974615, + 90.7150547137161 + ], + "radius": 5.049539581769603, + "start_angle": -2.6179939033719997, + "end_angle": 0.009278523999297782 + }, + { + "tangent_start": [ + 66.9555500620912, + 107.47183470343282 + ], + "tangent_end": [ + 60.19075276570443, + 113.3671886380127 + ], + "center": [ + 60.95580833326111, + 107.41616435823107 + ], + "radius": 6.0, + "start_angle": 0.009278523999298169, + "end_angle": 1.6986536613462393 + } + ] + }, + { + "lines": [ + [ + [ + 27.28804509141076, + 66.94420575313652 + ], + [ + 55.74775802596749, + 66.94420575313652 + ] + ], + [ + [ + 60.94391052481564, + 75.94420562125553 + ], + [ + 46.71405405753728, + 100.59104145163818 + ] + ], + [ + [ + 36.32174905984098, + 100.59104145163819 + ], + [ + 22.091892592562605, + 75.94420562125553 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 22.091892592562605, + 75.94420562125553 + ], + "tangent_end": [ + 27.28804509141076, + 66.94420575313652 + ], + "center": [ + 27.288045091410755, + 72.94420575313652 + ], + "radius": 6.0, + "start_angle": 2.617993903372001, + "end_angle": -1.5707963267948961 + }, + { + "tangent_start": [ + 55.74775802596749, + 66.94420575313652 + ], + "tangent_end": [ + 60.94391052481564, + 75.94420562125553 + ], + "center": [ + 55.74775802596749, + 72.94420575313652 + ], + "radius": 6.0, + "start_angle": -1.5707963267948966, + "end_angle": 0.5235987502177925 + }, + { + "tangent_start": [ + 46.71405405753728, + 100.59104145163818 + ], + "tangent_end": [ + 36.32174905984098, + 100.59104145163819 + ], + "center": [ + 41.51790155868913, + 97.59104158351917 + ], + "radius": 6.0, + "start_angle": 0.5235987502177903, + "end_angle": 2.617993903372001 + } + ] + }, + { + "lines": [ + [ + [ + 70.31547589916899, + 101.68004363699247 + ], + [ + 70.46168334484709, + 85.92287687753173 + ] + ], + [ + [ + 80.95056738193075, + 82.16933670971753 + ], + [ + 89.32842704343184, + 92.18487423087691 + ] + ], + [ + [ + 88.09270227290372, + 101.00112144985746 + ], + [ + 79.68167631259618, + 106.70229791130491 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 79.68167631259618, + 106.70229791130491 + ], + "tangent_end": [ + 70.31547589916899, + 101.68004363699247 + ], + "center": [ + 76.31521762799908, + 101.73571398219421 + ], + "radius": 6.0, + "start_angle": 0.9751106711019598, + "end_angle": -3.1323141295904953 + }, + { + "tangent_start": [ + 70.46168334484709, + 85.92287687753173 + ], + "tangent_end": [ + 80.95056738193075, + 82.16933670971753 + ], + "center": [ + 76.39745389163309, + 85.97795364755169 + ], + "radius": 5.936026064185363, + "start_angle": -3.1323141295904966, + "end_angle": -0.6965961449651152 + }, + { + "tangent_start": [ + 89.32842704343184, + 92.18487423087691 + ], + "tangent_end": [ + 88.09270227290372, + 101.00112144985746 + ], + "center": [ + 84.72624358830662, + 96.03453752074677 + ], + "radius": 6.0, + "start_angle": -0.6965961449651159, + "end_angle": 0.9751106711019598 + } + ] + }, + { + "lines": [ + [ + [ + 91.55617050724392, + 89.67107060785534 + ], + [ + 80.78524609791161, + 76.79467951062004 + ] + ], + [ + [ + 85.38742955303684, + 66.94501622075019 + ], + [ + 107.23949828563627, + 66.94501622075019 + ] + ], + [ + [ + 111.78730875597448, + 76.85876377595635 + ], + [ + 100.70616443270737, + 89.73515487319165 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 100.70616443270737, + 89.73515487319165 + ], + "tangent_end": [ + 91.55617050724392, + 89.67107060785534 + ], + "center": [ + 96.15835396236915, + 85.82140731798549 + ], + "radius": 6.0, + "start_angle": 0.7106034149278875, + "end_angle": 2.444996508624677 + }, + { + "tangent_start": [ + 80.78524609791161, + 76.79467951062004 + ], + "tangent_end": [ + 85.38742955303684, + 66.94501622075019 + ], + "center": [ + 85.38742955303684, + 72.94501622075019 + ], + "radius": 6.0, + "start_angle": 2.444996508624677, + "end_angle": -1.5707963267948966 + }, + { + "tangent_start": [ + 107.23949828563627, + 66.94501622075019 + ], + "tangent_end": [ + 111.78730875597448, + 76.85876377595635 + ], + "center": [ + 107.23949828563627, + 72.94501622075019 + ], + "radius": 6.0, + "start_angle": -1.5707963267948966, + "end_angle": 0.710603414927889 + } + ] + }, + { + "lines": [ + [ + [ + 117.36001493646955, + -0.698472427708666 + ], + [ + 123.00177563874267, + -2.427740843634557 + ] + ], + [ + [ + 130.76010536121507, + 3.30883274929268 + ], + [ + 130.76010536121507, + 15.279294422771951 + ] + ], + [ + [ + 121.2230025279143, + 18.329897148562257 + ], + [ + 114.2321620442698, + 8.52022974642799 + ] + ] + ], + "arcs": [ + { + "tangent_start": [ + 114.2321620442698, + 8.52022974642799 + ], + "tangent_end": [ + 117.36001493646955, + -0.698472427708666 + ], + "center": [ + 119.11834465894196, + 5.038101165218571 + ], + "radius": 6.0, + "start_angle": 2.522428397746318, + "end_angle": -1.8682168456147308 + }, + { + "tangent_start": [ + 123.00177563874267, + -2.427740843634557 + ], + "tangent_end": [ + 130.76010536121507, + 3.30883274929268 + ], + "center": [ + 124.76010536121507, + 3.308832749292682 + ], + "radius": 6.0, + "start_angle": -1.8682168456147286, + "end_angle": -2.9605947323337506e-16 + }, + { + "tangent_start": [ + 130.76010536121507, + 15.279294422771951 + ], + "tangent_end": [ + 121.2230025279143, + 18.329897148562257 + ], + "center": [ + 125.50366065279347, + 15.279294422771947 + ], + "radius": 5.256444708421591, + "start_angle": 6.758776846084829e-16, + "end_angle": 2.5224283977463164 + } + ] + } + ], + "holes": [], + "parameters_used": { + "eta_0": 0.1, + "alpha": 1.0, + "R_0": 30.0, + "kappa": 1.0, + "p": 2.0, + "beta": 0.3, + "R_edge": 15.0, + "s_min": 45.0, + "s_max": 55.0, + "t_min": 2.5, + "t_0": 3.0, + "gamma": 1.0, + "w_frame": 8.0, + "r_f": 6.0, + "d_keep": 1.5, + "min_pocket_radius": 6.0, + "min_triangle_area": 20.0, + "thickness": 10.0 + }, + "checks": { + "is_valid_geometry": true, + "min_web_width": true, + "no_islands": true, + "no_self_intersections": true, + "mass_estimate_g": 370.65981457701247, + "area_mm2": 13728.14128063009, + "num_interiors": 11 + }, + "pipeline": { + "geometry_file": "tests/rib_profile_sandbox_2.json", + "num_vertices": 19, + "num_triangles": 22, + "num_pockets": 11, + "validation_ok": true + } +} \ No newline at end of file diff --git a/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json b/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json index b9f8b472..723ba844 100644 --- a/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json +++ b/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json @@ -1,124 +1,125 @@ -{ - "schema_version": "1.0", - "units": "mm", - "sandbox_id": "sandbox_2", - "outer_boundary": [ - [ - 0.0, - 0.0 - ], - [ - 7.5, - -7.5 - ], - [ - 7.5, - -22.6 - ], - [ - 22.5, - -22.6 - ], - [ - 22.5, - -13.496098 - ], - [ - 74.5, - -13.496098 - ], - [ - 74.5, - -22.6 - ], - [ - 102.5, - -22.6 - ], - [ - 102.5, - -7.5 - ], - [ - 117.5, - -7.5 - ], - [ - 117.5, - -22.6 - ], - [ - 140.748693, - -22.6 - ], - [ - 140.748693, - 124.4 - ], - [ - 117.5, - 124.4 - ], - [ - 117.5, - 102.5 - ], - [ - 102.5, - 102.5 - ], - [ - 102.5, - 124.4 - ], - [ - 7.5, - 124.4 - ], - [ - 7.5, - 102.5 - ], - [ - 0.0, - 95.0 - ], - [ - -13.5, - 95.0 - ], - [ - -13.5, - 0.0 - ], - [ - 0.0, - 0.0 - ] - ], - "inner_boundaries": [], - "num_inner_boundaries": 0, - "thickness": null, - "transform": { - "origin": [ - -196.0, - 175.5, - 4.35 - ], - "x_axis": [ - 0.0, - -1.0, - 0.0 - ], - "y_axis": [ - 1.0, - 0.0, - -0.0 - ], - "normal": [ - 0.0, - 0.0, - 1.0 - ] - } +{ + "schema_version": "1.0", + "units": "mm", + "sandbox_id": "sandbox_2", + "outer_boundary": [ + [ + 0.0, + 0.0 + ], + [ + 7.5, + -7.5 + ], + [ + 7.5, + -22.6 + ], + [ + 22.5, + -22.6 + ], + [ + 22.5, + -13.496098 + ], + [ + 74.5, + -13.496098 + ], + [ + 74.5, + -22.6 + ], + [ + 102.5, + -22.6 + ], + [ + 102.5, + -7.5 + ], + [ + 117.5, + -7.5 + ], + [ + 117.5, + -22.6 + ], + [ + 140.748693, + -22.6 + ], + [ + 140.748693, + 124.4 + ], + [ + 117.5, + 124.4 + ], + [ + 117.5, + 102.5 + ], + [ + 102.5, + 102.5 + ], + [ + 102.5, + 124.4 + ], + [ + 7.5, + 124.4 + ], + [ + 7.5, + 102.5 + ], + [ + 0.0, + 95.0 + ], + [ + -13.5, + 95.0 + ], + [ + -13.5, + 0.0 + ], + [ + 0.0, + 0.0 + ] + ], + "inner_boundaries": [], + "num_inner_boundaries": 0, + "thickness": null, + "transform": { + "origin": [ + -196.0, + 175.5, + 4.35 + ], + "x_axis": [ + 0.0, + -1.0, + 0.0 + ], + "y_axis": [ + 1.0, + 0.0, + -0.0 + ], + "normal": [ + 0.0, + 0.0, + 1.0 + ] + }, + "holes": [] } \ No newline at end of file