height = 1;
width = 1;
DeleteSmallLine[exp_, minLength_] := Module[{lines = exp, len, min, pos, p1, p2, rlz, sides, result},
lines = lines /. Line[a_List] :> Line@Sort@a // Union;
len = lines /. Line[{a_, b_}] :> Norm[b-a];
min = Min@len; pos = Position[len, min];
If[min > minLength,
exp
,
{p1, p2} = First@First@Extract[lines, pos];
sides = N@{{0,0}, {0, height}, {width, 0}, {width, height}};
rlz = Which[
MemberQ[sides, p1], {p2 -> p1},
MemberQ[sides, p2], {p1 -> p2},
p1[[1]] == 0 \[Or] p1[[1]] == width \[Or] p1[[2]] == 0 \[Or] p1[[2]] == height , {p2 -> p1},
p2[[1]] == 0 \[Or] p2[[1]] == width \[Or] p2[[2]] == 0 \[Or] p2[[2]] == height, {p1 -> p2},
True, {p1 -> Mean[{p1, p2}], p2 -> Mean[{p1, p2}]}
];
result = exp /. rlz /. Line[a_List] :> Line@Sort@a // Union;
result = DeleteCases[result, Line[{a_, a_}]]
]
]
DeleteSmallLines[exp_, minLength_] := FixedPoint[DeleteSmallLine[#, minLength] &, exp, SameTest -> (#1 == #2 &)]