From 1bfc747cf98f351b40caa75ae823c25fb3a3103f Mon Sep 17 00:00:00 2001 From: Antoine Date: Mon, 16 Feb 2026 21:49:07 +0000 Subject: [PATCH] Fix importer: always create new sketch + generate sandbox 2 rib profile (11 pockets) --- .../adaptive-isogrid/src/nx/import_profile.py | 38 +- .../tests/rib_profile_sandbox_2.json | 1024 ++++++++++++++++- 2 files changed, 1000 insertions(+), 62 deletions(-) diff --git a/tools/adaptive-isogrid/src/nx/import_profile.py b/tools/adaptive-isogrid/src/nx/import_profile.py index a6809bf3..945b849f 100644 --- a/tools/adaptive-isogrid/src/nx/import_profile.py +++ b/tools/adaptive-isogrid/src/nx/import_profile.py @@ -82,44 +82,14 @@ def _find_or_create_sketch( lister: Any, ) -> Any: """ - Find existing sketch by name, or create a new one on the sandbox plane. - If found, delete all existing geometry in it (for update). + Always create a new sketch on the sandbox plane and name it. + NX will auto-number internally (e.g. SKETCH_008). + The sketch Name attribute is set to sketch_name for identification. Returns the Sketch object. """ import NXOpen - # Try to find existing sketch by name - existing_sketch = None - try: - for feat in part.Features: - fname = "" - try: - fname = feat.Name - except Exception: - continue - if fname == sketch_name: - try: - existing_sketch = feat.GetEntities()[0] - lister.WriteLine(f"[import] Found existing sketch: {sketch_name}") - except Exception: - pass - break - except Exception: - pass - - if existing_sketch is not None: - try: - existing_sketch.Activate(False) - all_geom = existing_sketch.GetAllGeometry() - if all_geom: - existing_sketch.DeleteObjects(list(all_geom)) - lister.WriteLine(f"[import] Cleared {len(all_geom)} objects from existing sketch") - existing_sketch.Deactivate(False, False) - except Exception as exc: - lister.WriteLine(f"[import] Warning clearing sketch: {exc}") - return existing_sketch - - # Create new sketch on the sandbox plane + # Always create new sketch — NX handles duplicate names fine lister.WriteLine(f"[import] Creating new sketch: {sketch_name}") origin = transform["origin"] diff --git a/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json b/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json index 723ba844..78e858d5 100644 --- a/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json +++ b/tools/adaptive-isogrid/tests/rib_profile_sandbox_2.json @@ -1,7 +1,5 @@ { - "schema_version": "1.0", - "units": "mm", - "sandbox_id": "sandbox_2", + "valid": true, "outer_boundary": [ [ 0.0, @@ -96,30 +94,1000 @@ 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 - ] + "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 }, - "holes": [] + "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