1
0
Fork 0

feat: Seam allowance in breanna back part

This commit is contained in:
Joost De Cock 2020-01-15 20:07:40 +01:00
parent 0b27046444
commit 65e1d05b80
11 changed files with 115 additions and 59 deletions

View file

@ -104,6 +104,7 @@ export default {
breannaFitCollar: true, breannaFitCollar: true,
//collarFactor: 4.8, //collarFactor: 4.8,
//backNeckCutout: 0.05, //backNeckCutout: 0.05,
armholeDepthBase: 0.6,
// Percentages // Percentages
acrossBackFactor: { pct: 97, min: 93, max: 100 }, acrossBackFactor: { pct: 97, min: 93, max: 100 },
@ -139,7 +140,7 @@ export default {
'16:00', '16:00',
'17:00' '17:00'
], ],
dflt: '06:00' dflt: '14:00'
}, },
secondaryBustDart: { secondaryBustDart: {
list: [ list: [
@ -160,7 +161,7 @@ export default {
'16:00', '16:00',
'17:00' '17:00'
], ],
dflt: '14:00' dflt: '15:00'
}, },
primaryBustDartShaping: { pct: 50, min: 25, max: 75 }, primaryBustDartShaping: { pct: 50, min: 25, max: 75 },
primaryBustDartLength: { pct: 85, min: 65, max: 95 }, primaryBustDartLength: { pct: 85, min: 65, max: 95 },

View file

@ -28,18 +28,19 @@ export default part => {
points.hps, points.hps,
options.shoulderDartSize options.shoulderDartSize
) )
points.shoulderDart1 = points.shoulderDart1.rotate(180, points.shoulderDartCenter) points.shoulderDart1 = points.shoulderDart2.rotate(180, points.shoulderDartCenter)
points.shoulderDartTip = points.shoulderDartCenter.shiftFractionTowards( points.shoulderDartTip = points.shoulderDartCenter.shiftFractionTowards(
points.shoulderDartTarget, points.shoulderDartTarget,
options.shoulderDartLength options.shoulderDartLength
) )
points.shoulderDart1 = points.shoulderDart1.rotate(options.shoulderDartSize * 10, points.hps) points.shoulderDartEdge = utils.beamsIntersect(
points.shoulderDart2 = points.shoulderDart2.rotate( points.shoulderDart1,
options.shoulderDartSize * -10, points.shoulderDartTip.rotate(90, points.shoulderDart1),
points.shoulder points.shoulderDart2,
points.shoulderDartTip.rotate(90, points.shoulderDart2)
) )
let angle = points.hps.angle(points.shoulder) let angle = points.hps.angle(points.shoulder)
let extra = points.hps.dist(points.shoulder) - points.hps.dist(points.shoulderDart1) * 2 let extra = points.shoulderDart1.dist(points.shoulderDart2)
points.shoulder = points.shoulder.shift(angle, extra) points.shoulder = points.shoulder.shift(angle, extra)
points.shoulderCp1 = points.shoulderCp1.shift(angle, extra) points.shoulderCp1 = points.shoulderCp1.shift(angle, extra)
points.armholePitch = utils.beamIntersectsY( points.armholePitch = utils.beamIntersectsY(
@ -67,34 +68,69 @@ export default part => {
) )
points.waistDart2 = points.waistDart1.rotate(180, points.waistDartCenter) points.waistDart2 = points.waistDart1.rotate(180, points.waistDartCenter)
points.waist = points.waist.shift(0, points.waist.x * options.waistDartSize) points.waist = points.waist.shift(0, points.waist.x * options.waistDartSize)
points.waistDart1 = points.waistDart1.rotate(options.waistDartSize * -10, points.cbWaist) points.waistDartEdge = utils.beamsIntersect(
points.waistDart2 = points.waistDart2.rotate(options.waistDartSize * 10, points.waist) points.waistDart1,
points.waistDartTarget.rotate(90, points.waistDart1),
points.waistDart2,
points.waistDartTarget.rotate(90, points.waistDart2)
)
} }
// Paths // Paths
paths.seam = new Path().move(points.cbNeck).line(points.cbWaist) paths.seam = new Path()
if (options.waistDart) { .move(points.cbNeck)
paths.seam .line(points.cbWaist)
.line(points.waistDart1) .noop('waistDart')
.line(points.waistDartTip)
.line(points.waistDart2)
}
paths.seam
.line(points.waist) .line(points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
.noop('shoulderDart')
.line(points.hps)
.curve_(points.hpsCp2, points.cbNeck)
paths.saBase = paths.seam.clone()
// Insert darts
if (options.waistDart) {
let dart = new Path()
.line(points.waistDart1)
.line(points.waistDartTip)
.line(points.waistDart2)
paths.seam = paths.seam.insop('waistDart', dart)
let saDart = new Path()
.line(points.waistDart1)
.line(points.waistDartEdge)
.line(points.waistDart2)
paths.saBase = paths.saBase.insop('waistDart', saDart)
paths.waistDartHint = new Path()
.move(points.waistDart1)
.line(points.waistDartEdge)
.line(points.waistDart2)
.attr('class', 'fabric dotted')
}
// Shoulder dart
if (options.shoulderDart) { if (options.shoulderDart) {
paths.seam let dart = new Path()
.line(points.shoulderDart2) .line(points.shoulderDart2)
.line(points.shoulderDartTip) .line(points.shoulderDartTip)
.line(points.shoulderDart1) .line(points.shoulderDart1)
paths.seam = paths.seam.insop('shoulderDart', dart)
let saDart = new Path()
.line(points.shoulderDart2)
.line(points.shoulderDartEdge)
.line(points.shoulderDart1)
paths.saBase = paths.seam.insop('shoulderDart', saDart)
paths.shoulderDartHint = new Path()
.move(points.shoulderDart1)
.line(points.shoulderDartEdge)
.line(points.shoulderDart2)
.attr('class', 'fabric dotted')
} }
paths.seam
.line(points.hps) paths.seam.close().attr('class', 'fabric')
.curve_(points.hpsCp2, points.cbNeck) paths.saBase.close()
.close() paths.saBase.render = false
.attr('class', 'fabric stroke-xl')
// Store data // Store data
if (options.shoulderDart) { if (options.shoulderDart) {
@ -132,7 +168,16 @@ export default part => {
// Complete pattern? // Complete pattern?
if (complete) { if (complete) {
// Logo
points.logo = new Point(points.armhole.x / 2, points.armhole.y)
snippets.logo = new Snippet('logo', points.logo)
// Scalebox
points.scalebox = new Point(points.cbNeck.x + 60, points.cbNeck.y + 40)
macro('scalebox', { at: points.scalebox })
if (sa) { if (sa) {
paths.sa = paths.saBase.offset(sa).attr('class', 'sa')
} }
} }

View file

@ -58,7 +58,7 @@ export default part => {
// Armhhole // Armhhole
points.armhole = new Point( points.armhole = new Point(
((measurements.highBust - measurements.highBustFront) * (1 + options.chestEase)) / 2, ((measurements.highBust - measurements.highBustFront) * (1 + options.chestEase)) / 2,
(points.shoulder.y + measurements.bicepsCircumference / 2) * (points.shoulder.y + measurements.bicepsCircumference * options.armholeDepthBase) *
options.armholeDepthFactor * options.armholeDepthFactor *
(1 + options.verticalEase) (1 + options.verticalEase)
) )

View file

@ -7,7 +7,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -20,7 +20,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -34,7 +34,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -47,7 +47,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.noop('secondary') .noop('secondary')
@ -60,7 +60,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.noop('secondary') .noop('secondary')
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
@ -75,7 +75,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -89,7 +89,7 @@ export default part => {
.move(points.primaryBustDart1) .move(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)

View file

@ -6,7 +6,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -20,7 +20,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -33,7 +33,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.noop('secondary') .noop('secondary')
@ -46,7 +46,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.noop('secondary') .noop('secondary')
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
@ -61,7 +61,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -75,7 +75,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)

View file

@ -6,7 +6,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -20,7 +20,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.noop('secondary') .noop('secondary')
@ -34,7 +34,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.noop('secondary') .noop('secondary')
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
@ -50,7 +50,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -65,7 +65,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)

View file

@ -6,7 +6,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.noop('secondary') .noop('secondary')
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
@ -21,7 +21,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -35,7 +35,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)

View file

@ -8,7 +8,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -22,7 +22,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.noop('primary') .noop('primary')

View file

@ -7,7 +7,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.noop('primary') .noop('primary')
@ -21,7 +21,7 @@ export default part => {
return new Path() return new Path()
.move(points.cfNeck) .move(points.cfNeck)
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.noop('primary') .noop('primary')
.line(points.armhole) .line(points.armhole)

View file

@ -10,7 +10,7 @@ export default part => {
.line(points.primaryBustDart1) .line(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -24,7 +24,7 @@ export default part => {
.line(points.primaryBustDart1) .line(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -37,7 +37,7 @@ export default part => {
.line(points.primaryBustDart1) .line(points.primaryBustDart1)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -50,7 +50,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -64,7 +64,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder)
@ -77,7 +77,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.noop('secondary') .noop('secondary')
@ -90,7 +90,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.armhole) .line(points.armhole)
.noop('secondary') .noop('secondary')
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
@ -105,7 +105,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.line(points.secondaryBustDart1) .line(points.secondaryBustDart1)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
@ -119,7 +119,7 @@ export default part => {
.move(points.cfNeck) .move(points.cfNeck)
.noop('primary') .noop('primary')
.line(points.cfWaist) .line(points.cfWaist)
.line(points.waist) .curve(points.cfWaistCp2, points.waistCp1, points.waist)
.noop('secondary') .noop('secondary')
.line(points.armhole) .line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)

View file

@ -92,6 +92,16 @@ export default part => {
// Apply correct bust dart length // Apply correct bust dart length
applyBustDarts(points, options, utils) applyBustDarts(points, options, utils)
// Redraw the waist
points.cfWaistCp2 = points.cfWaist.shiftFractionTowards(points.origBustDart2, 0.5)
points.waistCp1 = points.waist.shiftFractionTowards(points.origBustDart2, 0.5)
// Let's keep the center front vertical as it is the grainline/cut-on-fold
if (true || loc1 >= 1100) {
let tilt = 270 - points.cfNeck.angle(points.cfWaist)
for (let p in points) points[p] = points[p].rotate(tilt, points.cfNeck)
}
// Load path template // Load path template
let template let template
if (loc1 <= 600) template = frontWithPrimaryAt600(part) if (loc1 <= 600) template = frontWithPrimaryAt600(part)