1
0
Fork 0
freesewing/packages/albert/src/strap.js
Wouter van Wageningen 13848f8252 Pocket Outline
2020-09-25 19:43:26 -07:00

94 lines
2.5 KiB
JavaScript

export default function (part) {
let {
options,
measurements,
Point,
Path,
points,
paths,
Snippet,
snippets,
complete,
sa,
paperless,
macro
} = part.shorthand()
let chestWidth = measurements.chestCircumference / 4
let bibWidth = chestWidth * options.bibWidth
let apronWidth =
Math.max(measurements.hipsCircumference, measurements.waistCircumference) *
(1 - options.backOpening)
let backOpening =
apronWidth - Math.max(measurements.hipsCircumference, measurements.waistCircumference)
let hSpan = backOpening / 2 + bibWidth / 2
let vSpan =
measurements.hpsToWaistBack +
measurements.hpsToWaistBack -
measurements.hpsToWaistBack * options.bibLength
let strapLength =
Math.sqrt(hSpan * hSpan + vSpan * vSpan) + measurements.chestCircumference * options.chestDepth
let strapWidth = options.strapWidth * sa
console.log('chestWidth ' + chestWidth)
console.log('backOpening ' + backOpening)
console.log('hSpan ' + hSpan)
console.log('vSpan ' + vSpan)
console.log('strapLength ' + strapLength)
points.topLeft = new Point(0, 0)
points.topMiddle = new Point(strapWidth, 0)
points.topRight = new Point(strapWidth * 2, 0)
points.bottomLeft = new Point(0, strapLength)
points.bottomMiddle = new Point(strapWidth, strapLength)
points.bottomRight = new Point(strapWidth * 2, strapLength)
paths.seam = new Path()
.move(points.topLeft)
.line(points.bottomLeft)
.line(points.bottomRight)
.line(points.topRight)
.line(points.topLeft)
.close()
.attr('class', 'fabric')
paths.fold = new Path()
.move(points.topMiddle)
.line(points.bottomMiddle)
.attr('class', 'various dashed')
.attr('data-text', 'fold')
.attr('data-text-class', 'text-xs center')
// Complete?
if (complete) {
points.logo = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.5)
points.title = points.logo.shift(-90, 50)
macro('title', {
nr: 2,
at: points.title,
title: 'Strap'
})
if (sa) {
paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
}
}
// Paperless?
if (paperless) {
macro('hd', {
from: points.bottomLeft,
to: points.bottomRight,
y: points.bottomLeft.y + sa + 15
})
macro('vd', {
from: points.bottomLeft,
to: points.topLeft,
x: points.topLeft.x - sa - 15
})
}
return part
}