diff --git a/packages/theo/src/front.js b/packages/theo/src/front.js index de28222ed32..96a3b9d1220 100644 --- a/packages/theo/src/front.js +++ b/packages/theo/src/front.js @@ -12,9 +12,16 @@ export default function (part) { macro, utils, measurements, - snippets + snippets, + raise } = part.shorthand() + // Let's warn about some common issues + if ((measurements.crotchDepth - measurements.waistToHips) / measurements.hips < 0.15) + raise.warning( + 'There is little vertical space to draw the cross seam. Perhaps double-check the seath depth and waist to hips measurements' + ) + // Clean up inheritedpaths & snippets for (let id in paths) delete paths[id] for (let id in snippets) delete snippets[id] @@ -109,7 +116,7 @@ export default function (part) { points['-6cp'] = points[-100101].shiftOutwards(points[-6], points[-6].dist(points[-502]) / 2) // Make sure fly ends on curve - points.flyPretipX = utils.lineIntersectsCurve( + let pretipX = utils.lineIntersectsCurve( points[42], points['43beam'], points[-501], @@ -119,7 +126,21 @@ export default function (part) { ) // If we found mulitple points, that's not a great sign. // But at least we need a point instead of an array things we break - if (Array.isArray(points.flyPretipX)) points.flyPretipX = points.flyPretipX.pop() + if (Array.isArray(points.flyPretipX)) points.flyPretipX = pretipX.pop() + // If we found no points then we're screwed + if (points.flyPreTip) points.flyPretipX = pretipX + else { + raise.warning(` + Unable to determine fly end + + We improvised to prevent the pattern from falling apart. + But this is almost certainly going to be a bad pattern since we're in uncharted territory. + `) + points.flyPretipX = new Path() + .move(points[-6]) + .curve(points['-6cp'], points[-502], points[-501]) + .shiftFractionAlong(0.75) + } points[43] = points.flyPretipX.clone() // Slant pocket