chore: Linter run
This commit is contained in:
parent
8da0b5823d
commit
6d3cee78d9
15 changed files with 152 additions and 167 deletions
|
@ -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 },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
}
|
}
|
||||||
|
|
|
@ -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', {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.'
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,4 +117,3 @@ export const sharedDimensions = function (part, s) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue