Fix: skip pockets crossing sandbox boundary

profile_assembly.py now checks each pocket's polyline against the plate
boundary using Shapely contains(). Pockets extending outside are dropped.
Sandbox 1: 1 pocket removed (was crossing corner near x=150, y=-20).
This commit is contained in:
2026-02-17 11:41:48 +00:00
parent 03232be7b1
commit 39a3420a8e
2 changed files with 14 additions and 88 deletions

View File

@@ -88,13 +88,26 @@ def profile_to_json(ribbed_plate, pockets, geometry, params):
else:
outer = [list(p) for p in outer]
# Structured pocket data (lines + arcs)
# Structured pocket data (lines + arcs) — only include pockets fully inside boundary
plate = Polygon(outer)
pocket_data = []
skipped = 0
for p in pockets:
# Use polyline to check containment
polyline = p.get('polyline', [])
if polyline:
pocket_poly = Polygon(polyline)
if pocket_poly.is_valid and not pocket_poly.is_empty:
if not plate.contains(pocket_poly):
skipped += 1
continue
pocket_data.append({
'lines': p['lines'],
'arcs': p['arcs'],
})
if skipped > 0:
import sys
print(f"[profile_assembly] Skipped {skipped} pockets outside boundary", file=sys.stderr)
# Hole data for NX (circles)
hole_data = []

View File

@@ -4821,93 +4821,6 @@
}
]
},
{
"lines": [
[
[
137.46390326476583,
-6.926432436063079
],
[
131.05370092972248,
-15.73755838552485
]
],
[
[
132.8437974875087,
-24.427347047759888
],
[
144.4719176935919,
-31.327076990816487
]
],
[
[
153.2278507027968,
-24.275921959753173
],
[
148.00993283175694,
-8.565066067234806
]
]
],
"arcs": [
{
"tangent_start": [
148.00993283175694,
-8.565066067234806
],
"tangent_end": [
137.46390326476583,
-6.926432436063079
],
"center": [
142.3157668424484,
-10.456222773116707
],
"radius": 6.0,
"start_angle": 0.320659785970062,
"end_angle": 2.5126397041359354
},
{
"tangent_start": [
131.05370092972248,
-15.73755838552485
],
"tangent_end": [
132.8437974875087,
-24.427347047759888
],
"center": [
135.90556450740507,
-19.26734872257848
],
"radius": 6.0,
"start_angle": 2.5126397041359376,
"end_angle": -2.1063235281199986
},
{
"tangent_start": [
144.4719176935919,
-31.327076990816487
],
"tangent_end": [
153.2278507027968,
-24.275921959753173
],
"center": [
147.53368471348827,
-26.167078665635074
],
"radius": 6.0,
"start_angle": -2.106323528119998,
"end_angle": 0.3206597859700635
}
]
},
{
"lines": [
[