1
0
Fork 0

🚧 First beta for 2.1

This commit is contained in:
Joost De Cock 2019-09-29 16:58:21 +02:00
parent 155368e3c7
commit b297dc1b32
12 changed files with 193 additions and 92 deletions

View file

@ -24,6 +24,7 @@ Unreleased:
Added a box pleat option to Simon"
- Added the `backDarts` option to control the inclusion of back darts
- Added the `backDartsShaping` option to control the amount of shaping by the back darts
- Changed the defaults to slightly reduce the ease and adapt the sleevecap
Deprecated:
patterns:
@ -33,10 +34,12 @@ Unreleased:
Fixed:
components:
- Fixed display of nested option in SampleConfigurator
- Fixed conflicting key values in React components
simon:
- Fixed an issue where the store wasn't properly initialized causing hips and waist ease
to be set incorrectly
- Added a missing paperless dimension for the waist
- Fixed an issue where the split yoke option was not taken into account correctly
Security:
2.0.4:

View file

@ -1,7 +1,6 @@
import React from 'react'
const DesignPath = props => {
console.log('design path props', props)
let output = []
let i = 0
let from = null

View file

@ -3,18 +3,17 @@ import PropTypes from 'prop-types'
import patterns from './patterns'
const LineDrawing = props => {
return (
<svg
style={props.style}
className={'fs linedrawing ' + props.className}
xmlns="http://www.w3.org/2000/svg"
width={props.size}
height={props.size}
viewBox="0 0 270 270"
>
{patterns[props.pattern].map(el => el)}
</svg>
)
const attr = {
style: props.style,
className: 'fs linedrawing ' + props.className,
xmlns: 'http://www.w3.org/2000/svg',
viewBox: '0 0 270 270'
}
if (props.size) {
attr.width = props.size
attr.height = props.size
}
return <svg {...attr}>{patterns[props.pattern].map(el => el)}</svg>
}
LineDrawing.propTypes = {
@ -24,10 +23,9 @@ LineDrawing.propTypes = {
}
LineDrawing.defaultProps = {
size: 64,
size: false,
className: '',
pattern: 'aaron',
color: false,
style: {}
}

View file

@ -290,6 +290,33 @@ const svg = {
d="M 3.1756236,193.95004 H 16.903804 Z m 112.3124864,0 h 13.73619 z m 19.36418,0 h 13.72823 z m 112.31274,0 h 13.73619 z M 158.17531,85.431303 h 79.59289 m -15.05256,24.574867 v 59.78632 m -49.51627,-59.78632 v 59.78632 m -106.261495,8.66723 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.2276 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74971 m -0.749713,0 0.749713,-0.74971 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37512 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.37512 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20912 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.22761 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.209127 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374858 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.374858 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924798 0.92479867,0.92479867 0 0 1 -0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z m -0.18496,-15.389672 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739838 0.7398389,0.7398389 0 0 1 0.739839,0.739838 z m -1.114694,-0.375112 0.749713,0.749971 m -0.749713,0 0.749713,-0.749971 m 0.549941,0.375112 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924799,0.924798 z m -0.18496,-15.389976 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374907 0.749713,0.749816 m -0.749713,0 0.749713,-0.749816 m 0.549941,0.374907 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z M 65.448324,61.4141 h 1.687112"
/>
],
simone: [
<rect className="inside" y="51.853992" x="54.388508" height="14.533224" width="23.769028" />,
<path
className="primary"
d="m 184.56241,54.646523 -27.17558,4.140113 c 0.18743,1.818287 -0.19256,12.804107 -0.19256,20.22717 0,7.385706 -0.55587,13.723097 -2.99269,17.659607 -1.31226,1.949512 3.37191,6.539197 1.6848,6.539197 0,5.69089 2.06222,21.79998 2.06222,44.56226 0,16.17764 -3.00322,29.31816 -3.37807,33.32964 -0.74972,6.636 0,19.6253 0,19.6253 h 8.44069 33.17714 10.87187 25.68309 8.80965 c 0,0 0.75022,-12.93307 0,-19.56907 -0.56203,-4.01148 -3.56217,-20.13725 -3.56217,-36.31438 0,-22.76253 1.87736,-34.94512 1.87736,-40.68685 1.312,0.31272 2.80938,-5.536585 1.68481,-7.486097 -2.43709,-3.93651 -3.18526,-10.273901 -3.18526,-17.659607 0,-7.423063 -0.37486,-18.408883 0,-20.22717 l -27.36814,-4.140113 c -10.09186,-3.699246 -14.3832,-3.196604 -26.43716,0 z M 66.198037,63.363612 h 3.749082 c 0.562285,0 1.312255,-0.05625 1.874541,-0.168711 0.562285,0.112457 1.124827,0.168711 1.87454,0.168711 h 1.687113 V 200.72904 H 31.331734 c -1.311999,0 -8.435151,0 -8.435151,0 0,0 -0.749816,-12.99033 0,-19.62632 0.374882,-4.01148 3.374045,-17.15176 3.374045,-33.32914 0,-22.76228 -2.061969,-38.86648 -2.061969,-44.55738 1.687061,0 -2.999265,-4.592762 -1.687087,-6.542274 2.436877,-3.93651 2.99924,-10.27236 2.99924,-17.658066 0,-7.423063 0.374908,-18.407805 0.187454,-20.226117 l 27.180558,-4.142707 c 0,3.692828 2.624511,8.716576 13.309213,8.716576 z"
/>,
<path
className="primary"
d="m 211.76803,48.873751 c -1.21135,-2.371258 -28.04853,-2.056094 -27.62079,0 v 5.826613 c 10.80666,1.151375 19.67408,-0.05382 27.62079,0 z M 64.510925,62.182659 V 200.72904 h 36.553415 c 1.31226,0 8.81016,0 8.81016,0 0,0 0.74997,-12.9341 0,-19.57009 -0.56228,-4.01149 -3.56139,-20.13238 -3.56139,-36.30951 0,-22.76253 1.87454,-34.95051 1.87454,-40.69224 1.312,0.31298 2.81168,-5.533762 1.68711,-7.483274 -2.43708,-3.93651 -3.1868,-10.27236 -3.1868,-17.658066 0,-7.423063 -0.37485,-18.407805 0,-20.226117 L 79.319822,54.647036 c 0,3.599113 -4.686223,6.560867 -14.621212,6.823293 -0.375113,0 0.187429,0.71233 -0.187685,0.71233 z"
/>,
<path
className="primary"
d="m 78.757537,49.885739 c 0,-4.480129 -25.681028,-3.20545 -25.681028,0 v 5.417399 c 11.059559,-4.798808 18.557722,-2.755582 25.681028,0 z"
/>,
<path
className="primary"
d="m 52.326539,55.659278 1.124827,-6.110962 c 0,3.917767 2.436826,7.666823 11.996958,11.865784 l -4.498795,7.3294 c -4.499052,-4.498872 -8.060705,-9.503852 -8.62299,-13.084222 z m 27.36814,0 -0.937142,-5.661082 c 0,2.305677 -2.249397,7.216943 -11.622101,11.415904 l 3.93651,7.3294 c 4.498795,-4.498872 8.060448,-9.503852 8.622733,-13.084222 z"
/>,
<path
className="primary"
d="m 157.61326,58.539359 c -3.60219,0 -8.87496,7.204363 -11.74626,17.41577 -7.98748,28.566911 -13.88672,112.983381 -11.01541,117.838541 0,3.75884 0.10441,8.71851 0.15662,12.16411 h 13.62567 c 0,-3.49798 0,-8.24865 0,-12.00749 2.14043,-5.11602 2.7669,-27.56455 5.95144,-61.44596 0.36546,-9.03148 0.62647,-28.13891 2.50589,-35.541559 1.83593,-7.934383 1.06978,-31.996235 0.52205,-38.423412 z m 80.52312,0 c 3.60222,0 8.87486,7.204363 11.74611,17.41577 7.98753,28.566911 13.83453,110.425371 11.0154,117.838541 0,3.75884 -0.10424,8.71851 -0.15662,12.16411 h -13.62553 c 0,-3.49798 0,-8.24865 0,-12.00749 -1.87942,-9.55345 -2.03604,-27.35556 -5.2729,-61.44596 -0.36536,-9.03148 -1.30507,-28.13891 -3.18448,-35.541559 -1.85529,-8.955739 -0.40978,-32.373582 -0.52198,-38.423412 z m -212.199785,0 c -3.602195,0 -8.874966,7.204363 -11.746267,17.41577 C 6.202849,104.52204 0.30361466,188.93851 3.1749253,193.79367 c 0,3.75884 0.1044104,8.71851 0.1566157,12.16411 h 13.625667 c 0,-3.49798 0,-8.24865 0,-12.00749 2.140432,-5.11602 2.766905,-27.56455 5.951442,-61.44596 0.36546,-9.03148 0.626473,-28.13891 2.505892,-35.541559 5.01163,-8.640192 2.036012,-32.210956 0.522053,-38.423412 z m 80.523115,0 c 3.60222,0 8.87486,7.204363 11.74611,17.41577 7.98753,28.566911 13.83453,110.425371 11.0154,117.838541 0,3.75884 -0.10424,8.71851 -0.15662,12.16411 h -13.62553 c 0,-3.49798 0,-8.24865 0,-12.00749 -1.87942,-9.55345 -2.03604,-27.35556 -5.2729,-61.44596 -0.36536,-9.03148 -1.30506,-28.13891 -3.18448,-35.541559 -5.01179,-8.640192 -2.03604,-32.210956 -0.52198,-38.423412 z"
/>,
<path
className="secondary"
d="M 3.1756236,193.95004 H 16.903804 Z m 112.3124864,0 h 13.73619 z m 19.36418,0 h 13.72823 z m 112.31274,0 h 13.73619 z M 158.17531,85.431303 h 79.59289 m -15.05256,24.574867 v 59.78632 m -49.51627,-59.78632 v 59.78632 m -106.261495,8.66723 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.2276 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74971 m -0.749713,0 0.749713,-0.74971 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37512 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.37512 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20912 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.22761 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.209127 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374858 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.374858 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924798 0.92479867,0.92479867 0 0 1 -0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z m -0.18496,-15.389672 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739838 0.7398389,0.7398389 0 0 1 0.739839,0.739838 z m -1.114694,-0.375112 0.749713,0.749971 m -0.749713,0 0.749713,-0.749971 m 0.549941,0.375112 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924799,0.924798 z m -0.18496,-15.389976 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374907 0.749713,0.749816 m -0.749713,0 0.749713,-0.749816 m 0.549941,0.374907 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z M 65.448324,61.4141 h 1.687112 M 25,120 l 20,-5 M 88,115 l 20,5"
/>
],
sven: [
<path
className="inside"

View file

@ -1,6 +1,6 @@
pocket:
title: Pocket
description: Whether to include a pocket or not
description: Whether to include a front pocket or not
pocketHeight:
title: Pocket height

View file

@ -8,4 +8,12 @@ bustDartLength:
contour:
title: Contour
description: Controls how fast the extra room for your bust is reduced below the bust line.
description: Controls how sharply the extra room for breasts is removed again below the chest
frontDarts:
title: Front darts
description: Whether to include front darts or not
frontDartLength:
title: Front dart length
description: Controls how close the front dart approaches the bust point

View file

@ -46,6 +46,9 @@ shin:
simon:
description: Simon is a highly adaptable shirt pattern for men.
title: Simon shirt
simone:
description: Simone is simon, adapted for breasts
title: Simone shirt
sven:
description: Sven is a straightforward sweater.
title: Sven sweatshirt

View file

@ -5,6 +5,7 @@ import { version } from '../package.json'
export default {
name: 'penelope',
version,
beta: true,
design: 'Wouter Van Wageningen',
code: 'Wouter Van Wageningen',
department: 'womenswear',

View file

@ -24,7 +24,7 @@ export default {
}
let points = this.points
so = {
offset: 50,
offset: 15,
margin: 5,
prefix: '',
...so

View file

@ -3,6 +3,7 @@ import { version } from '../package.json'
export default {
name: 'simone',
version,
beta: true,
design: 'Joost De Cock',
code: 'Joost De Cock',
department: 'womenswear',
@ -29,6 +30,7 @@ export default {
'boxPleat',
'backDarts',
'frontDarts',
'contour',
{
closure: [
'extraTopButton',
@ -190,14 +192,14 @@ export default {
// Counters
buttons: { count: 7, min: 4, max: 12 },
cuffButtonRows: { count: 1, min: 1, max: 2 },
frontDarts: { bool: true },
frontDarts: { bool: false },
// Angles
collarAngle: { deg: 85, min: 60, max: 130 },
collarStandBend: { deg: 3, min: 0, max: 5 },
collarStandCurve: { deg: 2, min: 0, max: 5 },
collarFlare: { deg: 4, min: 0, max: 10 },
bustDartAngle: { deg: 20, min: 10, max: 30 },
bustDartAngle: { deg: 10, min: 0, max: 20 },
// Millimeter
buttonPlacketWidth: { mm: 20, min: 10, max: 30 },
@ -228,14 +230,14 @@ export default {
lengthBonus: { pct: 25, min: -4, max: 60 },
shoulderEase: { pct: 2, min: 0, max: 15 },
shoulderSlopeReduction: { pct: 0, min: 0, max: 8 },
sleevecapEase: { pct: 1, min: 0, max: 10 },
sleevecapEase: { pct: 0, min: 0, max: 5 },
sleevecapTopFactorX: { pct: 50, min: 25, max: 75 },
sleevecapTopFactorY: { pct: 100, min: 35, max: 165 },
sleevecapBackFactorX: { pct: 60, min: 35, max: 65 },
sleevecapBackFactorY: { pct: 33, min: 35, max: 65 },
sleevecapFrontFactorX: { pct: 55, min: 35, max: 65 },
sleevecapFrontFactorY: { pct: 33, min: 35, max: 65 },
sleevecapQ1Offset: { pct: 3, min: 0, max: 7 },
sleevecapQ1Offset: { pct: 5, min: 3, max: 7 },
sleevecapQ2Offset: { pct: 5.5, min: 0, max: 7 },
sleevecapQ3Offset: { pct: 4.5, min: 0, max: 7 },
sleevecapQ4Offset: { pct: 1, min: 0, max: 7 },
@ -254,6 +256,7 @@ export default {
yokeDart: { pct: 0, min: 0, max: 15 },
backDartShaping: { pct: 25, min: 5, max: 75 },
bustDartLength: { pct: 80, min: 50, max: 90 },
frontDartLength: { pct: 45, min: 30, max: 60 }
frontDartLength: { pct: 45, min: 30, max: 60 },
contour: { pct: 50, min: 30, max: 75 }
}
}

View file

@ -26,10 +26,13 @@ export default part => {
/*
* How much room to we need to create to fit the breasts?
* Note that measurements.bust is added by the bust plugin
* and that we divide by two since we add room on right and left side
* Note that:
* - measurements.bust is added by the bust plugin
* - we divide by two since we add room on right and left side
* - we also add the equivalent chest ease to the extra room we create
*
*/
const FBA = (measurements.bust - measurements.highBust) / 2
const FBA = ((1 + options.chestEase) * (measurements.bust - measurements.highBust)) / 2
/*
* Locate bust point
@ -41,11 +44,10 @@ export default part => {
/*
* Figure out how much do we need to open a dart to create the required FBA room
* Obviously, we don't guess, we use maths :)
*/
let one = points.armholeHollow.dist(points.bust) // We consider this to be 1
let cosBust = (points.bust.dx(points.armholeHollow) / one) * -1 // Which means this gives us the cos of the bust point
let cosRot = ((points.bust.dx(points.armholeHollow) - FBA) / one) * -1 // And this gives us the cos of the target
let one = points.armholePitch.dist(points.bust) // We consider this to be 1
let cosBust = (points.bust.dx(points.armholePitch) / one) * -1 // Which means this gives us the cos of the bust point
let cosRot = ((points.bust.dx(points.armholePitch) - FBA) / one) * -1 // And this gives us the cos of the target
const FBARot = utils.rad2deg(Math.acos(cosBust)) - utils.rad2deg(Math.acos(cosRot)) // Now just acos these and subtract
/*
@ -59,11 +61,11 @@ export default part => {
* For this, we'll just rotate it FBARot in the other direction
*/
points.realBustPoint = points.bust.clone()
points.bust = points.bust.rotate(FBARot * -1, points.armholeHollow)
points.bust = points.bust.rotate(FBARot * -1, points.armholePitch)
/*
* Cut to the side seam
*/
//
// Cut to the side seam
//
points._dartDirection = points.bust.shift(options.bustDartAngle * -1, measurements.bust / 4)
points.bustSideCut1 = utils.lineIntersectsCurve(
points.bust,
@ -74,15 +76,15 @@ export default part => {
points.armhole
)
/*
* Mark bust at waist and hem level
*/
//
// Mark bust at waist and hem level
//
points.bustWaist = new Point(points.bust.x, points.waist.y)
points.bustHem = new Point(points.bust.x, points.hem.y)
/*
* Now rotate entire side around armhole hollow to create room for FBA
*/
//
// Now rotate entire side around armhole hollow to create room for FBA
//
const rot1 = [
'bust',
'bustSideCut1',
@ -96,35 +98,42 @@ export default part => {
'waistCp2',
'armhole',
'armholeCp2',
'armholeHollowCp1'
'armholeHollowCp1',
'armholeHollow',
'armholeHollowCp2',
'armholePitchCp1'
]
for (let p of rot1) points[`${p}_rot1`] = points[p].rotate(FBARot, points.armholeHollow)
for (let p of rot1) points[`${p}_rot1`] = points[p].rotate(FBARot, points.armholePitch)
//
// Help line to show the initial cut lines and first rotation
// Uncomment this if you'd like to understand what's going on
//
//
/*
* Help line to show the initial cut lines and first rotation
* Uncomment this if you'd like to understand what's going on
paths.fbaCut1 = new Path()
.move(points.armholeHollow)
.move(points.armholePitch)
.line(points.bust)
.line(points.bustSideCut1)
.move(points.bust)
.line(points.bustHem)
.attr('class', 'various dashed')
paths.rot1 = new Path()
.move(points.armholeHollow)
.move(points.armholePitch)
.line(points.bust_rot1)
.line(points.bustHem_rot1)
.line(points.hem_rot1)
.line(points.hips_rot1)
.curve(points.hipsCp2_rot1, points.waistCp1_rot1, points.waist_rot1)
.curve_(points.waistCp2_rot1, points.armhole_rot1)
.curve(points.armholeCp2_rot1, points.armholeHollowCp1_rot1, points.armholeHollow)
.curve(points.armholeCp2_rot1, points.armholeHollowCp1_rot1, points.armholeHollow_rot1)
.curve(points.armholeHollowCp2_rot1, points.armholePitchCp1_rot1, points.armholePitch)
.close()
.attr('class', 'lining lashed')
*/
/*
* Split the side seam at the dart, and extrac control points from the Path object
*/
//
// Split the side seam at the dart, and extrct control points from the Path object
//
const toSplit = new Path()
.move(points.waist_rot1)
.curve_(points.waistCp2_rot1, points.armhole_rot1)
@ -136,10 +145,9 @@ export default part => {
points.belowDartCpTop_rot1 = paths.fbaBelowDart.ops[1].cp2
points.belowDartCpBottom_rot1 = paths.fbaBelowDart.ops[1].cp1
points.aboveDartCpBottom_rot1 = paths.fbaAboveDart.ops[1].cp1 // (only one CP on this part
/*
* Now rotate the bottom part around the (rotated) bust point so it's straight again
*/
//
// Now rotate the bottom part around the (rotated) bust point so it's straight again
//
const rot2 = [
'bust',
'bustSideCut1',
@ -154,15 +162,20 @@ export default part => {
'armhole',
'armholeCp2',
'armholeHollowCp1',
'armholeHollow',
'armholeHollowCp2',
'armholePitchCp1',
'belowDartCpTop',
'belowDartCpBottom'
]
for (let p of rot2)
points[`${p}_rot2`] = points[`${p}_rot1`].rotate(FBARot * -1, points.bust_rot1)
//
// Help line to show the second rotation
// Uncomment this if you'd like to understand what's going on
//
/*
* Help line to show the second rotation
* Uncomment this if you'd like to understand what's going on
paths.fbaCut2 = new Path()
.move(points.bust_rot2)
.line(points.bustHem_rot2)
@ -173,17 +186,18 @@ export default part => {
.line(points.bust_rot2)
.line(points.bustSideCut1_rot1)
.curve_(points.aboveDartCpBottom_rot1, points.armhole_rot1)
.curve(points.armholeCp2_rot1, points.armholeHollowCp1_rot1, points.armholeHollow)
.curve(points.armholeCp2_rot1, points.armholeHollowCp1_rot1, points.armholeHollow_rot1)
.curve(points.armholeHollowCp2_rot1, points.armholePitchCp1_rot1, points.armholePitch)
.line(points.bust_rot2)
.attr('class', 'interfacing lashed')
*/
/*
* Bust darts don't actually run entirely up to the bust point but stop a bit short
* How short is controlled by the bustDartLength option
* First we'll find the middle of the dart, then shift towards the bust point along it
* for as far as the bustDartLength option tells us to
*/
//
// Bust darts don't actually run entirely up to the bust point but stop a bit short
// How short is controlled by the bustDartLength option
// First we'll find the middle of the dart, then shift towards the bust point along it
// for as far as the bustDartLength option tells us to
//
points.bustDartCenter = points.bustSideCut1_rot2.shiftFractionTowards(
points.bustSideCut1_rot1,
0.5
@ -193,46 +207,55 @@ export default part => {
options.bustDartLength
)
/*
* Draw the front dart. Or if we're not adding a front dart, narrow the side from the waist down
*/
//
// Draw the front dart. Or if we're not adding a front dart, narrow the side from the waist down
// taking into account the contour option to see how abrupt we should narrow the body below the breasts
//
if (options.frontDarts) {
let reduce = points.waist.dx(points.waist_rot2)
points.frontDartTip = points.bustWaist_rot2.shiftFractionTowards(
points.bust_rot2,
options.frontDartLength
)
points.frontDartWaistRight = points.bustWaist_rot2.shift(0, reduce / 2)
points.frontDartWaistLeft = points.bustWaist_rot2.shift(180, reduce / 2)
points.frontDartWaistLeftCpTop = points.frontDartWaistLeft.shift(
90,
points.frontDartTip.dy(points.waist_rot2) / 2
points.frontDartRight = new Point(
points.frontDartTip.x + reduce / 2,
points.hem_rot2.y - points.frontDartTip.dy(points.hem_rot2) * options.contour
)
points.frontDartWaistRightCpTop = points.frontDartWaistRight.shift(
points.frontDartLeft = points.frontDartRight.flipX(points.frontDartTip)
points.frontDartLeftCp = points.frontDartLeft.shift(
90,
points.frontDartTip.dy(points.waist_rot2) / 2
points.frontDartTip.dy(points.frontDartLeft) / 2
)
points.frontDartHemLeft = new Point(points.frontDartWaistLeft.x, points.hem_rot2.y)
points.frontDartHemRight = new Point(points.frontDartWaistRight.x, points.hem_rot2.y)
points.frontDartRightCp = points.frontDartLeftCp.flipX(points.frontDartTip)
points.frontDartHemLeft = new Point(points.frontDartLeft.x, points.hem_rot2.y)
points.frontDartHemRight = new Point(points.frontDartRight.x, points.hem_rot2.y)
paths.frontDart = new Path()
.move(points.frontDartHemRight)
.line(points.frontDartWaistRight)
.curve_(points.frontDartWaistRightCpTop, points.frontDartTip)
._curve(points.frontDartWaistLeftCpTop, points.frontDartWaistLeft)
.line(points.frontDartRight)
.curve_(points.frontDartRightCp, points.frontDartTip)
._curve(points.frontDartLeftCp, points.frontDartLeft)
.line(points.frontDartHemLeft)
.attr('class', 'fabric dotted')
} else {
let waistX = points.waist.x
let hipsX = points.hips.x
for (let p of ['waist_rot2', 'waistCp1_rot2', 'belowDartCpBottom_rot2']) points[p].x = waistX
for (let p of ['hipsCp2_rot2', 'hips_rot2', 'hem_rot2']) points[p].x = hipsX
let waistDelta = points.waist.dx(points.waist_rot2) * options.contour
let hipsDelta = points.hips.dx(points.hips_rot2)
for (let p of ['waist_rot2', 'waistCp1_rot2', 'belowDartCpBottom_rot2'])
points[p] = points[p].shift(180, waistDelta)
for (let p of ['hipsCp2_rot2', 'hips_rot2', 'hem_rot2'])
points[p] = points[p].shift(180, hipsDelta)
}
/*
* Now overwrite the points that need to be adapted, and re-create the seam path.
* After that, we'll let Simon take it from here
*/
let clone1 = ['armhole', 'armholeCp2', 'armholeHollowCp1']
//
// Now overwrite the points that need to be adapted
//
let clone1 = [
'armhole',
'armholeCp2',
'armholeHollowCp1',
'armholeHollow',
'armholeHollowCp2',
'armholePitchCp1'
]
for (let p of clone1) points[p] = points[`${p}_rot1`].clone()
let clone2 = ['hem', 'hips', 'hipsCp2', 'waistCp1', 'waist']
for (let p of clone2) points[p] = points[`${p}_rot2`].clone()
@ -242,10 +265,45 @@ export default part => {
points.dartBottom = points.bustSideCut1_rot2.clone()
points.dartTop = points.bustSideCut1_rot1.clone()
points.dartTopCp = points.aboveDartCpBottom_rot1.clone()
points.cfArmhole = new Point(0, points.armhole.y)
points.cfWaist = new Point(0, points.waist.y)
points.cfHips = new Point(0, points.hips.y)
/*
* Recreate the base paths, and let Simon take it from here
*/
//
// Smooth out the armhole to avoid a kink where we rotated
// Note that this will ever so slightly shorten the armhole.
// But that will just end up being sleevecap ease
//
points.armholePitch = points.armholePitchCp1_rot1.shiftTowards(
points.armholePitchCp2,
points.armholePitch.dist(points.armholePitchCp1_rot1)
)
//
// Put the snippets in the right place
//
for (let s in snippets) delete snippets[s]
macro('sprinkle', {
snippet: 'notch',
on: [
'armhole',
'armholePitch',
'cfArmhole',
'cfWaist',
'cfHem',
'hips',
'waist',
'bust_rot2',
'neck',
'shoulder'
]
})
points.logo = new Point(points.armhole.x / 2, points.armhole.y)
snippets.logo = new Snippet('logo', points.logo)
//
// Now recreate the paths and let Simon take it from here
//
paths.saBaseFromHips = new Path()
.move(points.hips)
.curve(points.hipsCp2, points.waistCp1, points.waist)
@ -265,8 +323,8 @@ export default part => {
case 'baseball':
points.bballStart = points.cfHem.shiftFractionTowards(points.hem, 0.5)
// Don't let front dart fall into curved part of hem
if (options.frontDarts && points.bballStart.x > points.frontDartWaistRight.x) {
points.bballStart.x = points.frontDartWaistRight.x
if (options.frontDarts && points.bballStart.x > points.frontDartRight.x) {
points.bballStart.x = points.frontDartRight.x
}
points.bballEnd = points.hem.shiftFractionTowards(points.hips, options.hemCurve)
points.bballCp1 = points.bballStart.shiftFractionTowards(points.hem, 0.5)

View file

@ -5,6 +5,7 @@ import { version } from '../package.json'
export default {
name: 'waralee',
version,
beta: true,
design: 'Wouter Van Wageningen',
code: 'Wouter Van Wageningen',
department: 'menswear',