diff --git a/tools/adaptive-isogrid/src/nx/import_profile.py b/tools/adaptive-isogrid/src/nx/import_profile.py index 70bbe334..37025034 100644 --- a/tools/adaptive-isogrid/src/nx/import_profile.py +++ b/tools/adaptive-isogrid/src/nx/import_profile.py @@ -455,7 +455,8 @@ def _delete_feature(session: Any, feature: Any, lister: Any, label: str = "featu def _extrude_sketch(part: Any, sketch: Any, thickness: float, - normal: List[float], extrude_name: str, lister: Any): + normal: List[float], extrude_name: str, + sandbox_id: str, lister: Any): """ Extrude a sketch using the standard NXOpen pattern: - Create ExtrudeBuilder with null feature @@ -615,11 +616,33 @@ def _extrude_sketch(part: Any, sketch: Any, thickness: float, builder.Direction = direction lister.WriteLine("[extrude] Step 4: Direction set") - # Step 5: Set limits - builder.Limits.StartExtend.Value.RightHandSide = "0.0" - builder.Limits.EndExtend.Value.RightHandSide = str(float(thickness)) + # Step 5: Set limits — symmetric extrude using part expression + # Use the pre-defined expression ISOGRID_RIB_sandbox_N_thk + thk_expr_name = f"ISOGRID_RIB_{sandbox_id}_thk" + half_expr = f"{thk_expr_name}/2" + + # Ensure the expression exists (create if missing) + try: + expr = None + for e in part.Expressions: + if e.Name == thk_expr_name: + expr = e + break + if expr is None: + part.Expressions.CreateExpression("Number", f"{thk_expr_name}={thickness}") + lister.WriteLine(f"[extrude] Created expression: {thk_expr_name}={thickness}") + else: + lister.WriteLine(f"[extrude] Using existing expression: {thk_expr_name}={expr.Value}") + except Exception as exc: + lister.WriteLine(f"[extrude] Expression warning: {exc}") + half_expr = str(float(thickness) / 2.0) + + # Symmetric extrude: ±thk/2 from sketch plane + builder.Limits.StartExtend.Value.RightHandSide = half_expr + builder.Limits.EndExtend.Value.RightHandSide = half_expr + builder.BooleanOperation.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create - lister.WriteLine("[extrude] Step 5: Limits set (0 → {})".format(thickness)) + lister.WriteLine(f"[extrude] Step 5: Symmetric limits ±{half_expr}") # Step 6: Commit extrude_obj = builder.Commit() @@ -849,7 +872,8 @@ def main(): extrude_name = EXTRUDE_NAME_PREFIX + sandbox_id extrude_feat = _extrude_sketch( - work_part, sketch, rib_thickness, normal, extrude_name, lister + work_part, sketch, rib_thickness, normal, extrude_name, + sandbox_id, lister ) if extrude_feat is not None: lister.WriteLine(f"[import] ✓ Sketch + Extrude complete for {sandbox_id}")