🚧 First beta for 2.1
This commit is contained in:
parent
155368e3c7
commit
b297dc1b32
12 changed files with 193 additions and 92 deletions
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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: {}
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -24,7 +24,7 @@ export default {
|
|||
}
|
||||
let points = this.points
|
||||
so = {
|
||||
offset: 50,
|
||||
offset: 15,
|
||||
margin: 5,
|
||||
prefix: '',
|
||||
...so
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue