rushabhcodes/fidget-counter

A tscircuit package created by rushabhcodes.

Version
1.0.31
License
unset
Stars
0

validation/coalesce-native-fills.py

"""Union existing native fill fragments; never run a zone filler or add copper."""
import json,sys
from shapely.geometry import Polygon
from shapely.ops import unary_union

rows=json.load(sys.stdin);result=[]
for row in rows:
 fragments=[Polygon(p['outer'],p['holes']).buffer(0)for p in row['fragments']]
 geometry=unary_union(fragments)
 polygons=list(geometry.geoms)if geometry.geom_type=='MultiPolygon'else[geometry]
 assert all(p.geom_type=='Polygon'and p.is_valid for p in polygons)
 result.append({'zone_index':row['zone_index'],'fragments_before':len(fragments),
  'polygons':[{'outer':list(p.exterior.coords)[:-1],'holes':[list(h.coords)[:-1]for h in p.interiors]}for p in polygons]})
json.dump(result,sys.stdout)