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
|
||||
start = deepcopy(corners[i])
|
||||
end = deepcopy(start)
|
||||
x_dir = True
|
||||
y_dir = False
|
||||
if corners[i][0] == corners[j][0]:
|
||||
x_dir = False
|
||||
y_dir = True
|
||||
sign = -1
|
||||
if corners[j][not x_dir] > corners[i][not x_dir]:
|
||||
if corners[j][y_dir] > corners[i][y_dir]:
|
||||
sign = 1
|
||||
# Find intersections with keepouts
|
||||
intersects = []
|
||||
if x_dir:
|
||||
for k in keepouts:
|
||||
if abs(start[1] - k[0][1]) < k[1][1]/2:
|
||||
intersects.append(k)
|
||||
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]))
|
||||
for k in keepouts:
|
||||
if abs(start[not y_dir] - k[0][not y_dir]) < k[1][not y_dir]/2:
|
||||
intersects.append(k)
|
||||
intersects.sort(key=lambda k: abs(start[y_dir] - k[0][y_dir]))
|
||||
|
||||
|
||||
print("Start: ", start)
|
||||
print("end: ", corners[j])
|
||||
print("Flag: ", x_dir)
|
||||
print("Flag: ", y_dir)
|
||||
print("intersects: ", intersects)
|
||||
for intersect in intersects:
|
||||
if x_dir:
|
||||
end[0] = intersect[0][0] - sign * intersect[1][0]/2
|
||||
else:
|
||||
end[1] = intersect[0][1] - sign * intersect[1][1]/2
|
||||
if len(intersects):
|
||||
intersect = intersects[0]
|
||||
skip_flag = abs(start[y_dir]) < abs(intersect[0][y_dir] - sign * intersect[1][y_dir]/2)
|
||||
|
||||
print("Silk: ", start, end)
|
||||
kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1))
|
||||
if x_dir:
|
||||
start[0] = intersect[0][0] + sign * intersect[1][0]/2
|
||||
else:
|
||||
start[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
|
||||
|
||||
kicad_mod.append(Line(start=start, end=corners[j], layer='F.SilkS', width=0.1))
|
||||
if not skip_flag:
|
||||
print("Silk: ", start, end)
|
||||
kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1))
|
||||
skip_flag = False
|
||||
start[y_dir] = intersect[0][y_dir] + sign * intersect[1][y_dir]/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
|
||||
|
||||
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))
|
||||
|
||||
Reference in New Issue
Block a user