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

@ -12,7 +12,15 @@ export default {
difficulty: 3, difficulty: 3,
optionGroups: { optionGroups: {
fit: ['headEase'], fit: ['headEase'],
style: ['lengthRatio', 'goreNumber', 'visorAngle', 'visorWidth','earLength','earWidth','buttonhole'], style: [
'lengthRatio',
'goreNumber',
'visorAngle',
'visorWidth',
'earLength',
'earWidth',
'buttonhole',
],
advanced: ['visorLength'], advanced: ['visorLength'],
}, },
measurements: ['head'], measurements: ['head'],
@ -29,6 +37,6 @@ export default {
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

@ -30,9 +30,7 @@ let earFlapWidth = (headCircumference / 12)*options.earWidth
.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) {
@ -48,7 +46,8 @@ let earFlapWidth = (headCircumference / 12)*options.earWidth
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
.offset(sa)
.join(paths.hem.offset(sa * 2)) .join(paths.hem.offset(sa * 2))
.attr('class', 'fabric sa') .attr('class', 'fabric sa')
.close() .close()

View file

@ -37,7 +37,7 @@ 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)

View file

@ -4,7 +4,7 @@ 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 =
@ -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
@ -69,7 +69,6 @@ export default function (part) {
.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)) {