Foot gen: support ignoring corners if part overlaps them
This commit is contained in:
@@ -359,44 +359,49 @@ for i in range(len(corners)):
|
|||||||
j = i+1
|
j = i+1
|
||||||
start = deepcopy(corners[i])
|
start = deepcopy(corners[i])
|
||||||
end = deepcopy(start)
|
end = deepcopy(start)
|
||||||
x_dir = True
|
y_dir = False
|
||||||
if corners[i][0] == corners[j][0]:
|
if corners[i][0] == corners[j][0]:
|
||||||
x_dir = False
|
y_dir = True
|
||||||
sign = -1
|
sign = -1
|
||||||
if corners[j][not x_dir] > corners[i][not x_dir]:
|
if corners[j][y_dir] > corners[i][y_dir]:
|
||||||
sign = 1
|
sign = 1
|
||||||
# Find intersections with keepouts
|
# Find intersections with keepouts
|
||||||
intersects = []
|
intersects = []
|
||||||
if x_dir:
|
for k in keepouts:
|
||||||
for k in keepouts:
|
if abs(start[not y_dir] - k[0][not y_dir]) < k[1][not y_dir]/2:
|
||||||
if abs(start[1] - k[0][1]) < k[1][1]/2:
|
intersects.append(k)
|
||||||
intersects.append(k)
|
intersects.sort(key=lambda k: abs(start[y_dir] - k[0][y_dir]))
|
||||||
intersects.sort(key=lambda k: abs(start[0] - k[0][0]))
|
|
||||||
else:
|
|
||||||
for k in keepouts:
|
|
||||||
if abs(start[0] - k[0][0]) < k[1][0]/2:
|
|
||||||
intersects.append(k)
|
|
||||||
intersects.sort(key=lambda k: abs(start[1] - k[0][1]))
|
|
||||||
|
|
||||||
|
|
||||||
print("Start: ", start)
|
print("Start: ", start)
|
||||||
print("end: ", corners[j])
|
print("end: ", corners[j])
|
||||||
print("Flag: ", x_dir)
|
print("Flag: ", y_dir)
|
||||||
print("intersects: ", intersects)
|
print("intersects: ", intersects)
|
||||||
for intersect in intersects:
|
if len(intersects):
|
||||||
if x_dir:
|
intersect = intersects[0]
|
||||||
end[0] = intersect[0][0] - sign * intersect[1][0]/2
|
skip_flag = abs(start[y_dir]) < abs(intersect[0][y_dir] - sign * intersect[1][y_dir]/2)
|
||||||
else:
|
|
||||||
end[1] = intersect[0][1] - sign * intersect[1][1]/2
|
for intersect in intersects:
|
||||||
|
end[y_dir] = intersect[0][y_dir] - sign * intersect[1][y_dir]/2
|
||||||
|
# if y_dir:
|
||||||
|
# end[0] = intersect[0][0] - sign * intersect[1][0]/2
|
||||||
|
# else:
|
||||||
|
# end[1] = intersect[0][1] - sign * intersect[1][1]/2
|
||||||
|
|
||||||
print("Silk: ", start, end)
|
if not skip_flag:
|
||||||
kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1))
|
print("Silk: ", start, end)
|
||||||
if x_dir:
|
kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1))
|
||||||
start[0] = intersect[0][0] + sign * intersect[1][0]/2
|
skip_flag = False
|
||||||
else:
|
start[y_dir] = intersect[0][y_dir] + sign * intersect[1][y_dir]/2
|
||||||
start[1] = intersect[0][1] + sign * intersect[1][1]/2
|
# if y_dir:
|
||||||
|
# start[0] = intersect[0][0] + sign * intersect[1][0]/2
|
||||||
|
# else:
|
||||||
|
# start[1] = intersect[0][1] + sign * intersect[1][1]/2
|
||||||
|
|
||||||
kicad_mod.append(Line(start=start, end=corners[j], layer='F.SilkS', width=0.1))
|
if abs(start[y_dir]) < (corners[j][y_dir]):
|
||||||
|
print("End Fake: ", start, end)
|
||||||
|
print("End: ", start, corners[j])
|
||||||
|
kicad_mod.append(Line(start=start, end=corners[j], layer='F.SilkS', width=0.1))
|
||||||
|
|
||||||
|
|
||||||
# kicad_mod.append(RectLine(start=[-brd_width/2,-brd_height/2], end=[brd_width/2,brd_height/2], layer='F.SilkS', width=0.15))
|
# kicad_mod.append(RectLine(start=[-brd_width/2,-brd_height/2], end=[brd_width/2,brd_height/2], layer='F.SilkS', width=0.15))
|
||||||
|
|||||||
Reference in New Issue
Block a user