1
0
Fork 0

chore: Linter run

This commit is contained in:
joostdecock 2021-09-04 13:27:13 +02:00
parent 8da0b5823d
commit 6d3cee78d9
15 changed files with 152 additions and 167 deletions

View file

@ -11,9 +11,17 @@ export default {
type: 'pattern', type: 'pattern',
difficulty: 3, difficulty: 3,
optionGroups: { optionGroups: {
fit: ['headEase'], fit: ['headEase'],
style: ['lengthRatio', 'goreNumber', 'visorAngle', 'visorWidth','earLength','earWidth','buttonhole'], style: [
advanced:['visorLength'], 'lengthRatio',
'goreNumber',
'visorAngle',
'visorWidth',
'earLength',
'earWidth',
'buttonhole',
],
advanced: ['visorLength'],
}, },
measurements: ['head'], measurements: ['head'],
dependencies: {}, dependencies: {},
@ -21,14 +29,14 @@ export default {
hide: [], hide: [],
parts: ['gore', 'visor', 'ear'], parts: ['gore', 'visor', 'ear'],
options: { options: {
headEase: { mm: 19, min: 0, max: 50 }, headEase: { mm: 19, min: 0, max: 50 },
lengthRatio: { pct: 55, min: 40, max: 60 }, lengthRatio: { pct: 55, min: 40, max: 60 },
goreNumber: { count: 6, min: 4, max: 20 }, goreNumber: { count: 6, min: 4, max: 20 },
visorAngle: { deg: 45, min: 10, max: 90 }, visorAngle: { deg: 45, min: 10, max: 90 },
visorWidth: { mm: 30, min: 5, max: 100 }, visorWidth: { mm: 30, min: 5, max: 100 },
earLength: { pct: 100, min: 80, max: 150 }, earLength: { pct: 100, min: 80, max: 150 },
earWidth: { pct: 100, min: 80, max: 150 }, earWidth: { pct: 100, min: 80, max: 150 },
visorLength: { pct: 100, min: 80, max: 150 }, visorLength: { pct: 100, min: 80, max: 150 },
buttonhole: {bool: false} buttonhole: { bool: false },
}, },
} }

View file

@ -15,9 +15,9 @@ export default function (part) {
} = part.shorthand() } = part.shorthand()
// Design pattern here // Design pattern here
let headCircumference = measurements.head + options.headEase let headCircumference = measurements.head + options.headEase
let earFlapLength = ((options.lengthRatio * headCircumference) / 2)*options.earLength let earFlapLength = ((options.lengthRatio * headCircumference) / 2) * options.earLength
let earFlapWidth = (headCircumference / 12)*options.earWidth let earFlapWidth = (headCircumference / 12) * options.earWidth
points.top = new Point(0, 0) points.top = new Point(0, 0)
points.bottom = new Point(earFlapWidth, earFlapLength) points.bottom = new Point(earFlapWidth, earFlapLength)
points.topC = points.top.shift(0, points.bottom.x) points.topC = points.top.shift(0, points.bottom.x)
@ -25,14 +25,12 @@ let earFlapWidth = (headCircumference / 12)*options.earWidth
points.topCFlipped = points.topC.flipX() points.topCFlipped = points.topC.flipX()
points.bottomFlipped = points.bottom.flipX() points.bottomFlipped = points.bottom.flipX()
points.bottomCFlipped = points.bottomC.flipX() points.bottomCFlipped = points.bottomC.flipX()
paths.seam = new Path() paths.seam = new Path()
.move(points.bottom) .move(points.bottom)
.curve(points.bottomC, points.topC, points.top) .curve(points.bottomC, points.topC, points.top)
.curve(points.topCFlipped, points.bottomCFlipped, points.bottomFlipped) .curve(points.topCFlipped, points.bottomCFlipped, points.bottomFlipped)
paths.hem = new Path() paths.hem = new Path().move(points.bottomFlipped).line(points.bottom)
.move(points.bottomFlipped)
.line(points.bottom)
// Complete? // Complete?
if (complete) { if (complete) {
@ -42,16 +40,17 @@ let earFlapWidth = (headCircumference / 12)*options.earWidth
points.title = new Point(0.3 * points.bottom.x, 0.75 * points.bottom.y) points.title = new Point(0.3 * points.bottom.x, 0.75 * points.bottom.y)
macro('title', { at: points.title, nr: 3, title: 'ear flap', scale: 0.5 }) macro('title', { at: points.title, nr: 3, title: 'ear flap', scale: 0.5 })
macro('miniscale', { at: new Point(0, points.bottom.y * 0.3) }) macro('miniscale', { at: new Point(0, points.bottom.y * 0.3) })
if (options.buttonhole){ if (options.buttonhole) {
let buttonholeDistance = (options.lengthRatio * headCircumference) / 2 let buttonholeDistance = (options.lengthRatio * headCircumference) / 2
points.buttonhole = new Point (points.top.x, points.bottom.y - buttonholeDistance) points.buttonhole = new Point(points.top.x, points.bottom.y - buttonholeDistance)
snippets.buttonhole = new Snippet('buttonhole-start', points.buttonhole).attr('data-scale', 2) snippets.buttonhole = new Snippet('buttonhole-start', points.buttonhole).attr('data-scale', 2)
} }
if (sa) { if (sa) {
paths.sa = paths.seam.offset(sa) paths.sa = paths.seam
.join(paths.hem.offset(sa*2)) .offset(sa)
.attr('class', 'fabric sa') .join(paths.hem.offset(sa * 2))
.close() .attr('class', 'fabric sa')
.close()
} }
// Paperless? // Paperless?
@ -66,13 +65,13 @@ let earFlapWidth = (headCircumference / 12)*options.earWidth
to: points.top, to: points.top,
x: points.bottomFlipped.x - 15 - sa, x: points.bottomFlipped.x - 15 - sa,
}) })
if (options.buttonhole){ if (options.buttonhole) {
macro('vd', { macro('vd', {
from: points.bottom, from: points.bottom,
to: points.buttonhole, to: points.buttonhole,
x: points.bottom.x + 15 + sa, x: points.bottom.x + 15 + sa,
}) })
} }
} }
} }
return part return part

View file

@ -37,19 +37,19 @@ export default function (part) {
.curve(points.gore_Cp1, points.gore_Cp2, points.gore_p2) .curve(points.gore_Cp1, points.gore_Cp2, points.gore_p2)
.offset(sa) .offset(sa)
.setRender(false) .setRender(false)
points.sa1 = new Point(points.gore_p3.x - (sa*2), points.gore_p3.y - sa) points.sa1 = new Point(points.gore_p3.x - sa * 2, points.gore_p3.y - sa)
paths.saBase = new Path() paths.saBase = new Path()
.move(points.gore_p3) .move(points.gore_p3)
.line(points.p0) .line(points.p0)
.offset(sa*2) .offset(sa * 2)
.setRender(false) .setRender(false)
paths.sa = new Path() paths.sa = new Path()
.move(points.gore_p1) .move(points.gore_p1)
.line(points.gore_p1.shift(0, sa)) .line(points.gore_p1.shift(0, sa))
.line(paths.saCurve.start()) .line(paths.saCurve.start())
.join(paths.saCurve) .join(paths.saCurve)
.line(points.sa1) .line(points.sa1)
.join(paths.saBase) .join(paths.saBase)
.line(points.p0) .line(points.p0)
.attr('class', 'fabric sa') .attr('class', 'fabric sa')
} }

View file

@ -4,8 +4,8 @@ export default function (part) {
let headCircumference = measurements.head + options.headEase let headCircumference = measurements.head + options.headEase
let headRadius = headCircumference / 2 / Math.PI let headRadius = headCircumference / 2 / Math.PI
let visorRadius = (headRadius / Math.sin((options.visorAngle * Math.PI) / 180)) let visorRadius = headRadius / Math.sin((options.visorAngle * Math.PI) / 180)
let sectorAngle = (Math.PI / 3)*options.visorLength let sectorAngle = (Math.PI / 3) * options.visorLength
let visorSectorAngle = (sectorAngle * headRadius) / visorRadius let visorSectorAngle = (sectorAngle * headRadius) / visorRadius
let cpDistance = let cpDistance =
((4 / 3) * visorRadius * (1 - Math.cos(visorSectorAngle / 2))) / Math.sin(visorSectorAngle / 2) ((4 / 3) * visorRadius * (1 - Math.cos(visorSectorAngle / 2))) / Math.sin(visorSectorAngle / 2)
@ -13,7 +13,7 @@ export default function (part) {
points.origin = new Point(0, 0) points.origin = new Point(0, 0)
points.in1 = new Point(0, 0) points.in1 = new Point(0, 0)
points.in2 = points.in1.shift( points.in2 = points.in1.shift(
((90 / Math.PI) * visorSectorAngle), (90 / Math.PI) * visorSectorAngle,
2 * visorRadius * Math.sin(visorSectorAngle / 2) 2 * visorRadius * Math.sin(visorSectorAngle / 2)
) )
//test circle //test circle
@ -49,27 +49,26 @@ export default function (part) {
macro('title', { at: points.ex1.shift(45, 20), nr: 2, title: 'visor', scale: 0.4 }) macro('title', { at: points.ex1.shift(45, 20), nr: 2, title: 'visor', scale: 0.4 })
if (sa) { if (sa) {
paths.saInner = new Path () paths.saInner = new Path()
.move(points.in2Flipped) .move(points.in2Flipped)
.curve(points.in2CFlipped, points.in1CFlipped, points.in1) .curve(points.in2CFlipped, points.in1CFlipped, points.in1)
.curve(points.in1C, points.in2C, points.in2) .curve(points.in1C, points.in2C, points.in2)
.offset(sa*-2) .offset(sa * -2)
.attr('class', 'fabric sa') .attr('class', 'fabric sa')
points.sa1 = new Point(points.in2Flipped.x-sa, paths.saInner.start().y) points.sa1 = new Point(points.in2Flipped.x - sa, paths.saInner.start().y)
points.sa2 = new Point(points.in2.x+sa, paths.saInner.start().y) points.sa2 = new Point(points.in2.x + sa, paths.saInner.start().y)
paths.sa = new Path() paths.sa = new Path()
.move(points.in2) .move(points.in2)
.curve(points.ex2C, points.ex1C, points.ex1) .curve(points.ex2C, points.ex1C, points.ex1)
.curve(points.ex1CFlipped, points.ex2CFlipped, points.in2Flipped) .curve(points.ex1CFlipped, points.ex2CFlipped, points.in2Flipped)
.offset(sa*-1) .offset(sa * -1)
.line(points.sa1) .line(points.sa1)
.join(paths .saInner) .join(paths.saInner)
.line(points.sa2) .line(points.sa2)
.close() .close()
.attr('class', 'fabric sa') .attr('class', 'fabric sa')
} }
// Paperless? // Paperless?
if (paperless) { if (paperless) {
macro('hd', { macro('hd', {

View file

@ -117,7 +117,7 @@ addThing: Añadir {thing}
newThing: Nuevo {thing} newThing: Nuevo {thing}
newPatternForModel: 'Nuevo {pattern} para {model}' newPatternForModel: 'Nuevo {pattern} para {model}'
noChanges: No hay cambios noChanges: No hay cambios
no: "no" no: 'no'
noPasswordPolicy: No aplicamos una política de contraseña noPasswordPolicy: No aplicamos una política de contraseña
noSeamAllowance: Sin margen de costura noSeamAllowance: Sin margen de costura
notAllOfThisContentIsAvailableInLanguage: No todo este contenido está disponible en español. notAllOfThisContentIsAvailableInLanguage: No todo este contenido está disponible en español.
@ -156,7 +156,7 @@ remove: Eliminar
removeThing: Eliminar {thing} removeThing: Eliminar {thing}
reportThisOnGithub: Notifícalo en GitHub reportThisOnGithub: Notifícalo en GitHub
requiredMeasurements: Medidas requeridas requiredMeasurements: Medidas requeridas
resendActivationEmailMessage: "Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación." resendActivationEmailMessage: 'Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación.'
resendActivationEmail: Reenviar email de activación resendActivationEmail: Reenviar email de activación
resetPassword: Restablecer contraseña resetPassword: Restablecer contraseña
reset: Reiniciar reset: Reiniciar
@ -198,7 +198,7 @@ twitter: Twitter
txt-footer: Freesewing está hecho por una comunidad de colaboradores<br />con el apoyo financiero de nuestros Patrones txt-footer: Freesewing está hecho por una comunidad de colaboradores<br />con el apoyo financiero de nuestros Patrones
txt-tier2: Nuestro nivel más democrático de precios. Puede ser menor que el precio de un café con leche, pero su apoyo significa mucho para nosotros. txt-tier2: Nuestro nivel más democrático de precios. Puede ser menor que el precio de un café con leche, pero su apoyo significa mucho para nosotros.
txt-tier4: Suscríbase a este nivel y le enviaremos parte de nuestro codiciado botín de diseño gratuito a su hogar en cualquier parte del mundo. txt-tier4: Suscríbase a este nivel y le enviaremos parte de nuestro codiciado botín de diseño gratuito a su hogar en cualquier parte del mundo.
txt-tier8: "Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!" txt-tier8: 'Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!'
txt-tiers: 'FreeSewing es alimentado por un modelo de suscripción voluntario' txt-tiers: 'FreeSewing es alimentado por un modelo de suscripción voluntario'
unitsInfo: La liberación es compatible con el sistema métrico y las unidades imperiales. Simplemente elige el que te gustaría usar aquí. (El valor predeterminado es utilizar las unidades configuradas en su cuenta). unitsInfo: La liberación es compatible con el sistema métrico y las unidades imperiales. Simplemente elige el que te gustaría usar aquí. (El valor predeterminado es utilizar las unidades configuradas en su cuenta).
updated: Actualizado updated: Actualizado
@ -240,8 +240,8 @@ noPattern: No tienes ningún patrón (todavía). Crea un nuevo patrón, luego gu
modelFirst: Empezar añadiendo mediciones modelFirst: Empezar añadiendo mediciones
noModel: No has añadido ninguna medición (aún). La Coser libre puede generar patrones de costura hechos a medida. Pero para eso necesitamos mediciones. noModel: No has añadido ninguna medición (aún). La Coser libre puede generar patrones de costura hechos a medida. Pero para eso necesitamos mediciones.
noModel2: Así que lo primero que debes hacer es añadir una persona y agitar tu cinta de medición. noModel2: Así que lo primero que debes hacer es añadir una persona y agitar tu cinta de medición.
noUserBrowsingTitle: "No puedes navegar por todos los usuarios" noUserBrowsingTitle: 'No puedes navegar por todos los usuarios'
noUserBrowsingText: "Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?" noUserBrowsingText: 'Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?'
usePatternMeasurements: 'Usar las mediciones del patrón original' usePatternMeasurements: 'Usar las mediciones del patrón original'
createReplica: Crear una réplica createReplica: Crear una réplica
showDetails: Mostrar detalles showDetails: Mostrar detalles

View file

@ -7,7 +7,7 @@ patternType: Tipo de patrón
patternCreated: Tu esqueleto de patrón ha sido creado en patternCreated: Tu esqueleto de patrón ha sido creado en
runTheseCommands: Para empezar, ejecuta este comando runTheseCommands: Para empezar, ejecuta este comando
startRollup: En una terminal, inicia el paquete de rollup en modo reloj startRollup: En una terminal, inicia el paquete de rollup en modo reloj
startWebpack: "Entrará en la carpeta \"ejemplo\" e iniciará el entorno de desarrollo." startWebpack: 'Entrará en la carpeta "ejemplo" e iniciará el entorno de desarrollo.'
devDocsAvailableAt: Documentación para desarrolladores está disponible en devDocsAvailableAt: Documentación para desarrolladores está disponible en
talkToUs: Para preguntas, comentarios o sugerencias, únete a nuestro servidor de Discord talkToUs: Para preguntas, comentarios o sugerencias, únete a nuestro servidor de Discord
draftYourPattern: Traza tu patrón draftYourPattern: Traza tu patrón

View file

@ -6,7 +6,7 @@ emailchangeHeaderOpeningLine: 'Assurez-vous simplement que nous pouvons vous joi
emailchangeHiddenIntro: 'Confirmons votre nouvelle adresse e-mail' emailchangeHiddenIntro: 'Confirmons votre nouvelle adresse e-mail'
emailchangeSubject: 'Merci de confirmer votre nouvelle adresse e-mail' emailchangeSubject: 'Merci de confirmer votre nouvelle adresse e-mail'
emailchangeTitle: 'Merci de confirmer votre nouvelle adresse e-mail' emailchangeTitle: 'Merci de confirmer votre nouvelle adresse e-mail'
emailchangeWhy: 'Vous avez reçu cet e-mail parce que vous avez changé l''adresse e-mail liée à votre compte sur freesewing.org' emailchangeWhy: "Vous avez reçu cet e-mail parce que vous avez changé l'adresse e-mail liée à votre compte sur freesewing.org"
footerCredits: 'Réalisé par Joost De Cock et ses contributeurs avec le soutien financier de mécènes ❤️ ' footerCredits: 'Réalisé par Joost De Cock et ses contributeurs avec le soutien financier de mécènes ❤️ '
footerSlogan: 'Freesewing est une plate-forme open source pour des patrons de couture sur mesure' footerSlogan: 'Freesewing est une plate-forme open source pour des patrons de couture sur mesure'
goodbyeCopy1: 'Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.<br>De notre côté, nous ne vous dérangerons plus.' goodbyeCopy1: 'Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.<br>De notre côté, nous ne vous dérangerons plus.'

View file

@ -9,20 +9,8 @@ export default {
type: 'pattern', type: 'pattern',
difficulty: 3, difficulty: 3,
optionGroups: { optionGroups: {
fit: [ fit: ['bicepsEase', 'chestEase', 'cuffEase', 'collarEase', 'shoulderEase', 'hipsEase'],
'bicepsEase', style: ['lengthBonus', 'sleeveLengthBonus', 's3Collar', 's3Armhole'],
'chestEase',
'cuffEase',
'collarEase',
'shoulderEase',
'hipsEase',
],
style: [
'lengthBonus',
'sleeveLengthBonus',
's3Collar',
's3Armhole',
],
advanced: [ advanced: [
'acrossBackFactor', 'acrossBackFactor',
'armholeDepthFactor', 'armholeDepthFactor',

View file

@ -12,7 +12,7 @@ export default function (part) {
paperless, paperless,
sa, sa,
options, options,
measurements measurements,
} = part.shorthand() } = part.shorthand()
// Clear paths from Brian // Clear paths from Brian
@ -36,13 +36,13 @@ export default function (part) {
'backNeckSeamLength', 'backNeckSeamLength',
new Path().move(points.neck).curve_(points.neckCp2, points.cbNeck).length() new Path().move(points.neck).curve_(points.neckCp2, points.cbNeck).length()
) )
store.set( store.set('neckCutoutBack', points.cbNeck.y)
'neckCutoutBack',
points.cbNeck.y
)
// Paths // Paths
paths.gussetBase = new Path().move(points.bottom).line(points.armhole).attr('class', 'note stroke-xxl') paths.gussetBase = new Path()
.move(points.bottom)
.line(points.armhole)
.attr('class', 'note stroke-xxl')
store.set('gussetLength', paths.gussetBase.length()) store.set('gussetLength', paths.gussetBase.length())
paths.saBase = new Path() paths.saBase = new Path()
.move(points.armhole) .move(points.armhole)
@ -52,12 +52,16 @@ export default function (part) {
.line(points.s3CollarSplit) .line(points.s3CollarSplit)
.join(paths.backCollar) .join(paths.backCollar)
.attr('class', 'note stroke-xxl') .attr('class', 'note stroke-xxl')
paths.hemBase = new Path().move(points.cbBottom).line(points.bottom).attr('class', 'note stroke-xxl') paths.hemBase = new Path()
.move(points.cbBottom)
.line(points.bottom)
.attr('class', 'note stroke-xxl')
paths.gussetBase.render = false paths.gussetBase.render = false
paths.saBase.render = false paths.saBase.render = false
paths.hemBase.render = false paths.hemBase.render = false
paths.seam = paths.gussetBase.join(paths.saBase) paths.seam = paths.gussetBase
.join(paths.saBase)
.clone() .clone()
.line(points.cbBottom) .line(points.cbBottom)
.join(paths.hemBase) .join(paths.hemBase)
@ -69,7 +73,7 @@ export default function (part) {
macro('cutonfold', { macro('cutonfold', {
from: points.cbNeck, from: points.cbNeck,
to: points.cbBottom, to: points.cbBottom,
grainline: true grainline: true,
}) })
macro('scalebox', { at: new Point(points.armholePitch.x / 2, points.cbWaist.y) }) macro('scalebox', { at: new Point(points.armholePitch.x / 2, points.cbWaist.y) })
if (sa) { if (sa) {

View file

@ -14,7 +14,7 @@ export default function (part) {
measurements, measurements,
macro, macro,
snippets, snippets,
Snippet Snippet,
} = part.shorthand() } = part.shorthand()
// Clear paths from Brian // Clear paths from Brian
@ -31,7 +31,10 @@ export default function (part) {
points.cfBottom = new Point(0, points.cfHem.y * 1.27) points.cfBottom = new Point(0, points.cfHem.y * 1.27)
points.bottom = new Point(points.hem.x * 1.23, points.cfBottom.y * 0.97) points.bottom = new Point(points.hem.x * 1.23, points.cfBottom.y * 0.97)
points.bottomCp2 = new Point(points.bottom.x, points.cfWaist.y) points.bottomCp2 = new Point(points.bottom.x, points.cfWaist.y)
points.button = new Point(points.s3CollarSplit.x - 2 / 3 * measurements.shoulderToShoulder, points.s3CollarSplit.y + measurements.hpsToBust * 1.17) points.button = new Point(
points.s3CollarSplit.x - (2 / 3) * measurements.shoulderToShoulder,
points.s3CollarSplit.y + measurements.hpsToBust * 1.17
)
// end Yuri points // end Yuri points
// Store length of the neck seam // Store length of the neck seam
@ -42,10 +45,7 @@ export default function (part) {
.curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck) .curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck)
.length() .length()
) )
store.set( store.set('neckCutoutFront', points.cfNeck.y)
'neckCutoutFront',
points.cfNeck.y
)
// Paths // Paths
paths.saBase = new Path() paths.saBase = new Path()
@ -61,24 +61,40 @@ export default function (part) {
.line(points.button) .line(points.button)
.line(points.cfBottom) .line(points.cfBottom)
.attr('class', 'note stroke-xxl') .attr('class', 'note stroke-xxl')
paths.hemBase = new Path().move(points.cfBottom).line(points.bottom).attr('class', 'note stroke-xxl') paths.hemBase = new Path()
.move(points.cfBottom)
.line(points.bottom)
.attr('class', 'note stroke-xxl')
paths.saBase.render = false paths.saBase.render = false
paths.hemBase.render = false paths.hemBase.render = false
paths.buttonBase.render = false paths.buttonBase.render = false
paths.seam = paths.saBase.clone().join(paths.buttonBase).join(paths.hemBase).close().attr('class', 'fabric') paths.seam = paths.saBase
.clone()
.join(paths.buttonBase)
.join(paths.hemBase)
.close()
.attr('class', 'fabric')
// Complete? // Complete?
if (complete) { if (complete) {
macro('grainline', { macro('grainline', {
from: points.s3CollarSplit, from: points.s3CollarSplit,
to: new Point(points.s3CollarSplit.x, points.bottom.y) to: new Point(points.s3CollarSplit.x, points.bottom.y),
}) })
snippets.buttonhole = new Snippet('buttonhole-start', points.button.shift(0, 25)).attr('data-rotate', '90').attr('data-scale', '2.5') snippets.buttonhole = new Snippet('buttonhole-start', points.button.shift(0, 25))
snippets.button = new Snippet('button', paths.buttonBase.shiftFractionAlong(0.146).shift(0, 30)).attr('data-scale', '3.3') .attr('data-rotate', '90')
.attr('data-scale', '2.5')
snippets.button = new Snippet(
'button',
paths.buttonBase.shiftFractionAlong(0.146).shift(0, 30)
).attr('data-scale', '3.3')
if (sa) { if (sa) {
paths.sa = paths.hemBase.offset(3 * sa).join(paths.saBase.offset(sa)).join(paths.buttonBase.offset(3 * sa)) paths.sa = paths.hemBase
.offset(3 * sa)
.join(paths.saBase.offset(sa))
.join(paths.buttonBase.offset(3 * sa))
paths.sa = paths.sa.line(paths.sa.start()).close().attr('class', 'fabric sa') paths.sa = paths.sa.line(paths.sa.start()).close().attr('class', 'fabric sa')
} }
} }

View file

@ -1,25 +1,14 @@
export default function (part) { export default function (part) {
const { const { Point, Path, points, paths, Snippet, snippets, complete, sa, paperless, macro, store } =
Point, part.shorthand()
Path,
points,
paths,
Snippet,
snippets,
complete,
sa,
paperless,
macro,
store
} = part.shorthand()
const w = store.get('gussetLength') const w = store.get('gussetLength')
points.top = new Point(0, 0) points.top = new Point(0, 0)
points.bottom = new Point(0, w) points.bottom = new Point(0, w)
points.right = points.bottom.rotate(36.0, points.top) points.right = points.bottom.rotate(36.0, points.top)
points.cp1 = new Point(0, w * 6 / 5).rotate(90, points.bottom) points.cp1 = new Point(0, (w * 6) / 5).rotate(90, points.bottom)
points.cp2 = new Point(points.right.x, points.right.y * 6 / 5).rotate(-60, points.right) points.cp2 = new Point(points.right.x, (points.right.y * 6) / 5).rotate(-60, points.right)
points.title = new Point(0, 2 * w / 3).rotate(15, points.top) points.title = new Point(0, (2 * w) / 3).rotate(15, points.top)
paths.hat = new Path() paths.hat = new Path()
.move(points.right) .move(points.right)
@ -39,17 +28,20 @@ export default function (part) {
macro('cutonfold', { macro('cutonfold', {
from: new Point(points.top.x, points.top.y + 50), from: new Point(points.top.x, points.top.y + 50),
to: points.bottom, to: points.bottom,
grainline: true grainline: true,
}) })
macro('title', { macro('title', {
at: points.title, at: points.title,
nr: 4, nr: 4,
title: 'gusset' title: 'gusset',
}) })
points.logo = points.title.shift(-75, 100) points.logo = points.title.shift(-75, 100)
snippets.logo = new Snippet('logo', points.logo) snippets.logo = new Snippet('logo', points.logo)
if (sa) { if (sa) {
paths.sa = paths.hat.offset(sa).join(paths.curve.offset(3 * sa)).attr('class', 'fabric sa') paths.sa = paths.hat
.offset(sa)
.join(paths.curve.offset(3 * sa))
.attr('class', 'fabric sa')
} }
} }
@ -58,23 +50,23 @@ export default function (part) {
macro('vd', { macro('vd', {
from: points.top, from: points.top,
to: points.bottom, to: points.bottom,
x: points.top.x - sa - 15 x: points.top.x - sa - 15,
}) })
macro('vd', { macro('vd', {
from: new Point(0, points.right.y), from: new Point(0, points.right.y),
to: points.bottom, to: points.bottom,
x: 20 x: 20,
}) })
macro('ld', { macro('ld', {
from: points.top, from: points.top,
to: points.right, to: points.right,
d: sa + 15 d: sa + 15,
}) })
macro('hd', { macro('hd', {
from: new Point(0, points.right), from: new Point(0, points.right),
to: points.right, to: points.right,
y: points.right.y y: points.right.y,
}) })
} }

View file

@ -1,16 +1,6 @@
export default function (part) { export default function (part) {
const { const { store, sa, Point, points, Path, paths, complete, paperless, macro, units } =
store, part.shorthand()
sa,
Point,
points,
Path,
paths,
complete,
paperless,
macro,
units
} = part.shorthand()
const width = store.get('hoodCenterWidth') const width = store.get('hoodCenterWidth')
const length = complete ? width * 2.5 : store.get('hoodCenterLength') const length = complete ? width * 2.5 : store.get('hoodCenterLength')
@ -59,21 +49,21 @@ export default function (part) {
macro('title', { at: points.title, nr: 6, title: 'hoodCenter' }) macro('title', { at: points.title, nr: 6, title: 'hoodCenter' })
macro('grainline', { macro('grainline', {
from: points.topLeft.shift(-90, width / 2), from: points.topLeft.shift(-90, width / 2),
to: points.topRight.shift(-90, width / 2) to: points.topRight.shift(-90, width / 2),
}) })
// Always include this dimension as we don't print the entire part // Always include this dimension as we don't print the entire part
macro('hd', { macro('hd', {
from: points.bottomLeft, from: points.bottomLeft,
to: points.bottomRight, to: points.bottomRight,
y: points.bottomRight.y + sa + 15, y: points.bottomRight.y + sa + 15,
text: units(store.get('hoodCenterLength')) text: units(store.get('hoodCenterLength')),
}) })
// Paperless? // Paperless?
if (paperless) { if (paperless) {
macro('vd', { macro('vd', {
from: points.bottomRight, from: points.bottomRight,
to: points.topRight, to: points.topRight,
x: points.topRight.x + sa + 15 x: points.topRight.x + sa + 15,
}) })
} }
} }

View file

@ -11,7 +11,7 @@ export default function (part) {
measurements, measurements,
complete, complete,
paperless, paperless,
macro macro,
} = part.shorthand() } = part.shorthand()
const neckOpening = store.get('frontNeckSeamLength') + store.get('backNeckSeamLength') const neckOpening = store.get('frontNeckSeamLength') + store.get('backNeckSeamLength')
@ -86,7 +86,7 @@ export default function (part) {
snippets.logo = new Snippet('logo', points.logo) snippets.logo = new Snippet('logo', points.logo)
macro('grainline', { macro('grainline', {
from: points.shoulderNotch, from: points.shoulderNotch,
to: points.hoodTop to: points.hoodTop,
}) })
} }
@ -107,41 +107,41 @@ export default function (part) {
macro('pd', { macro('pd', {
path: neckSeam[0], path: neckSeam[0],
d: sa + 15 d: sa + 15,
}) })
macro('pd', { macro('pd', {
path: neckSeam[1], path: neckSeam[1],
d: sa + 15 d: sa + 15,
}) })
macro('pd', { macro('pd', {
path: centralSeam, path: centralSeam,
d: sa * -1 - 15 d: sa * -1 - 15,
}) })
macro('hd', { macro('hd', {
from: points.neckEdge, from: points.neckEdge,
to: points.frontEdge, to: points.frontEdge,
y: points.frontEdge.y + sa + 30 y: points.frontEdge.y + sa + 30,
}) })
macro('hd', { macro('hd', {
from: centralSeam.edge('left'), from: centralSeam.edge('left'),
to: points.frontEdge, to: points.frontEdge,
y: points.frontEdge.y + sa + 45 y: points.frontEdge.y + sa + 45,
}) })
const openingEdge = openingSeam.edge('left') const openingEdge = openingSeam.edge('left')
macro('hd', { macro('hd', {
from: openingEdge, from: openingEdge,
to: points.frontEdge, to: points.frontEdge,
y: openingEdge.y y: openingEdge.y,
}) })
macro('vd', { macro('vd', {
from: points.frontEdge, from: points.frontEdge,
to: points.hoodRim, to: points.hoodRim,
x: points.hoodRim.x + sa + 15 x: points.hoodRim.x + sa + 15,
}) })
macro('vd', { macro('vd', {
from: points.frontEdge, from: points.frontEdge,
to: points.hoodTop, to: points.hoodTop,
x: points.hoodRim.x + sa + 30 x: points.hoodRim.x + sa + 30,
}) })
} }

View file

@ -117,4 +117,3 @@ export const sharedDimensions = function (part, s) {
}) })
} }
} }

View file

@ -1,16 +1,6 @@
export default function (part) { export default function (part) {
let { let { Point, Path, points, paths, store, options, complete, sa, paperless, macro } =
Point, part.shorthand()
Path,
points,
paths,
store,
options,
complete,
sa,
paperless,
macro,
} = part.shorthand()
// Clear paths from Brian, but keep sleevecap // Clear paths from Brian, but keep sleevecap
for (let p of Object.keys(paths)) { for (let p of Object.keys(paths)) {