1
0
Fork 0

First commit

This commit is contained in:
Wouter van Wageningen 2022-06-19 23:23:10 +00:00
parent 646fb12730
commit 3f30f4ec9e
17 changed files with 1525 additions and 3 deletions

View file

@ -67,8 +67,6 @@ cd freesewing
yarn kickstart
```
If you don't want to set up a dev environment, you can [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freesewing/freesewing), though we recommend that you fork this repo and then put `gitpod.io/#<entire-url-of-your-fork` into a browser to start up a browser-based dev environment of your own
## About FreeSewing 💀
Where the world of makers and developers collide, that's where you'll find FreeSewing.

View file

@ -148,6 +148,9 @@ mui-theme:
'@material-ui/core': *matui-core
'react': *react
'react-dom': '^17.0.2'
noble:
peer:
'@freesewing/bella': *freesewing
legend:
peer:
'@freesewing/plugin-buttons': *freesewing

View file

@ -74,6 +74,8 @@ packageJson:
author: SeaZeeZee (https://github.com/SeaZeeZee)
lunetius: &starf
author: Starfetch (https://github.com/starfetch)
noble:
author: woutervdub (https://github.com/woutervdub)
plugin-gore:
author: AlfaLyr (https://github.com/alfalyr)
prettier-config:

View file

@ -31,6 +31,7 @@
"jaeger": "A FreeSewing pattern for a sport coat style jacket",
"lucy": "A FreeSewing pattern for a historical tie-on pocket",
"lunetius": "A FreeSewing pattern for a lacerna, a historical Roman cloak",
"noble": "FIXME: A FreeSewing pattern that needs a description",
"paco": "A FreeSewing pattern for summer pants",
"penelope": "A FreeSewing pattern for a pencil skirt",
"sandy": "A FreeSewing pattern for a circle skirt",
@ -56,4 +57,4 @@
"rendertest": "A FreeSewing pattern to test (y)our render engine our CSS",
"tutorial": "A FreeSewing pattern for a baby bib that's used in our tutorial"
}
}
}

View file

@ -0,0 +1,9 @@
# Change log for: @freesewing/noble
This is the **initial release**, and the start of this change log.
> Prior to version 2, FreeSewing was not a JavaScript project.
> As such, that history is out of scope for this change log.

260
designs/noble/README.md Normal file
View file

@ -0,0 +1,260 @@
![FreeSewing](https://static.freesewing.org/banner.png)
<p align='center'><a
href="https://www.npmjs.com/package/@freesewing/noble"
title="@freesewing/noble on NPM"
><img src="https://img.shields.io/npm/v/@freesewing/noble.svg"
alt="@freesewing/noble on NPM"/>
</a><a
href="https://opensource.org/licenses/MIT"
title="License: MIT"
><img src="https://img.shields.io/npm/l/@freesewing/noble.svg?label=License"
alt="License: MIT"/>
</a><a
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
title="Code quality on DeepScan"
><img src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
alt="Code quality on DeepScan"/>
</a><a
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Anoble"
title="Open issues tagged pkg:noble"
><img src="https://img.shields.io/github/issues/freesewing/freesewing/pkg:noble.svg?label=Issues"
alt="Open issues tagged pkg:noble"/>
</a><a
href="#contributors-"
title="All Contributors"
><img src="https://img.shields.io/badge/all_contributors-90-pink.svg"
alt="All Contributors"/>
</a></p><p align='center'><a
href="https://twitter.com/freesewing_org"
title="Follow @freesewing_org on Twitter"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
alt="Follow @freesewing_org on Twitter"/>
</a><a
href="https://chat.freesewing.org"
title="Chat with us on Discord"
><img src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
alt="Chat with us on Discord"/>
</a><a
href="https://freesewing.org/patrons/join"
title="Become a FreeSewing Patron"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
alt="Become a FreeSewing Patron"/>
</a><a
href="https://instagram.com/freesewing_org"
title="Follow @freesewing_org on Twitter"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15"
alt="Follow @freesewing_org on Twitter"/>
</a></p>
# @freesewing/noble
FIXME: A FreeSewing pattern that needs a description
## What am I looking at? 🤔
This repository is our *monorepo*
holding [all our NPM packages](https://freesewing.dev/reference/packages/).
This folder holds: @freesewing/noble
If you're not entirely sure what to do or how to start, type this command:
```
npm run tips
```
## About FreeSewing 💀
Where the world of makers and developers collide, that's where you'll find FreeSewing.
If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
our sewing patterns adapted to your measurements.
If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
for parametric design of sewing patterns. But we also provide a range
of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
functionality of the platform.
If you have NodeJS installed, you can try it right now by running:
```bash
npx create-freesewing-pattern
```
Or, consult our getting started guides
for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
walks you through your first parametric design,
and [a friendly community](https://freesewing.org/community/where/) with
people who can help you when you get stuck.
## Support FreeSewing: Become a patron 🥰
FreeSewing is an open source project run by a community,
and financially supported by our patrons.
If you feel what we do is worthwhile, and you can spend a few coind without
hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
## Links 👩‍💻
- 💻 Makers website: [freesewing.org](https://freesewing.org)
- 💻 Developers website: [freesewing.dev](https://freesewing.dev)
- 💬 Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
- ✅ Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
## License: MIT 🤓
© [Joost De Cock](https://github.com/joostdecock).
See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
## Where to get help 🤯
Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
share your feedback, or just hang out.
If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="http://adamrtomkins.github.io/"><img src="https://avatars.githubusercontent.com/u/5709603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Adam Tomkins</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=AdamRTomkins" title="Documentation">📖</a></td>
<td align="center"><a href="http://polymerisation-des-concepts.fr/"><img src="https://avatars.githubusercontent.com/u/365999?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexandre Ignjatovic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bankair" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/AlfaLyr"><img src="https://avatars.githubusercontent.com/u/39273729?v=4?s=100" width="100px;" alt=""/><br /><sub><b>AlfaLyr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=AlfaLyr" title="Code">💻</a> <a href="#plugin-AlfaLyr" title="Plugin/utility libraries">🔌</a> <a href="#design-AlfaLyr" title="Design">🎨</a></td>
<td align="center"><a href="http://thelettereph.com"><img src="https://avatars.githubusercontent.com/u/357684?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrew James</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ephphatha" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/annekecaramin"><img src="https://avatars.githubusercontent.com/u/38046191?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anneke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=annekecaramin" title="Documentation">📖</a> <a href="#translation-annekecaramin" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/anniekao"><img src="https://avatars.githubusercontent.com/u/1550506?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Annie Kao</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anniekao" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Anternative"><img src="https://avatars.githubusercontent.com/u/81079850?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anternative</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Anternative" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Quiltmaster"><img src="https://avatars.githubusercontent.com/u/71795777?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anthony</b></sub></a><br /><a href="#question-Quiltmaster" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://github.com/camerondubas"><img src="https://avatars.githubusercontent.com/u/6216460?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cameron Dubas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=camerondubas" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cabi"><img src="https://avatars.githubusercontent.com/u/2596253?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Carsten Biebricher</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cabi" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
<td align="center"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
<td align="center"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
<td align="center"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt=""/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
<td align="center"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
<td align="center"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
<td align="center"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
<td align="center"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
<td align="center"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
<td align="center"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
<td align="center"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
<td align="center"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
<td align="center"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
<td align="center"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt=""/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
<td align="center"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt=""/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
<td align="center"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
<td align="center"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt=""/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt=""/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt=""/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt=""/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt=""/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt=""/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt=""/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt=""/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt=""/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt=""/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
<td align="center"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt=""/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt=""/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt=""/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
<td align="center"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt=""/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt=""/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt=""/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

55
designs/noble/build.js Normal file
View file

@ -0,0 +1,55 @@
/* This script will build the package with esbuild */
const esbuild = require('esbuild')
const pkg = require('./package.json')
// Create banner based on package info
const banner = `/**
* ${pkg.name} | v${pkg.version}
* ${pkg.description}
* (c) ${new Date().getFullYear()} ${pkg.author}
* @license ${pkg.license}
*/`
// Shared esbuild options
const options = {
banner: { js: banner },
bundle: true,
entryPoints: ['src/index.js'],
external: ["@freesewing"],
metafile: process.env.VERBOSE ? true : false,
minify: process.env.NO_MINIFY ? false : true,
sourcemap: true,
}
// Different formats
const formats = {
cjs: "dist/index.js",
esm: "dist/index.mjs",
}
// Let esbuild generate different formats
let result
(async () => {
for (const [format, outfile] of Object.entries(formats)) {
result = await esbuild
.build({ ...options, outfile, format })
.catch(() => process.exit(1))
}
if (process.env.VERBOSE) {
const info = await esbuild.analyzeMetafile(result.metafile)
console.log(info)
}
// Also build a version that has all dependencies bundled
// This makes it easy to run tests
await esbuild
.build({
...options,
outfile: 'tests/dist/index.mjs',
format: 'esm',
external: [],
})
.catch(() => process.exit(1))
})()

23
designs/noble/config.js Normal file
View file

@ -0,0 +1,23 @@
import { version } from './package.json'
export default {
name: 'noble',
version,
design: '',
code: '',
department: '',
type: '',
difficulty: 3,
tags: [ ],
optionGroups: {
fit: ['size'],
},
measurements: [],
dependencies: {},
inject: {},
hide: [],
parts: ['box'],
options: {
size: { pct: 50, min: 10, max: 100 },
},
}

View file

@ -0,0 +1,110 @@
import { version } from '../package.json'
import Bella from '@freesewing/bella'
const config = {
...Bella.config,
name: 'noble',
version,
design: 'Noble Incognito',
code: 'Wouter van Wageningen',
department: 'tops',
type: 'block',
difficulty: 3,
optionGroups: {
type: ['dartPosition'],
fit: ['chestEase', 'waistEase', 'bustSpanEase'],
darts: ['backDartHeight', 'waistDartLength', 'shoulderDartPosition','upperDartLength','dartOutsideCP','armholeDartPosition'],
armhole: [
'armholeDepth',
'backArmholeSlant',
'backArmholeCurvature',
'frontArmholePitchDepth',
'backArmholePitchDepth',
],
advanced: ['backNeckCutout', 'backHemSlope', 'frontShoulderWidth', 'highBustWidth', 'shoulderToShoulderEase'],
},
measurements: [
'chest',
'waist',
'waistBack',
'neck',
'hpsToWaistFront',
'hpsToWaistBack',
'shoulderToShoulder',
'shoulderSlope',
// ],
// optionalMeasurements: [
'highBust',
'underbust',
'bustSpan',
'hpsToBust',
],
hide: ['bellaFrontSideDart', 'bellaBack', 'backPoints', 'frontPoints',],
inject: {
...Bella.config.inject,
backPoints: 'bellaBack',
backInside: 'backPoints',
backOutside: 'backPoints',
frontPoints: 'bellaFrontSideDart',
frontInside: 'frontPoints',
frontOutside: 'frontPoints',
},
dependencies: {
// The inheritance makes this a bit messy
bellaFrontSideDart: 'bellaBack',
backPoints: 'bellaBack',
backInside: 'backPoints',
backOutside: 'backPoints',
frontPoints: 'bellaBack',
frontInside: 'frontPoints',
frontOutside: 'frontPoints',
},
parts: [
'backPoints',
'backInside',
'backOutside',
'frontPoints',
'frontInside',
'frontOutside',
],
options: {
// Constants
acrossBackFactor: 0.925,
shoulderSlopeBack: 1.23,
neckWidthBack: 0.197,
neckWidthFront: 0.17,
shoulderToShoulderCorrection: 0.995,
backDartLocation: 0.145,
backCenterWaistReduction: 0.35,
collarFactor: 0.19,
// Percentages
backNeckCutout: { pct: 6, min: 3, max: 9 },
waistEase: { pct: 5, min: 1, max: 20 },
chestEase: { pct: 11, min: 5, max: 20 },
bustSpanEase: { pct: 0, min: -5, max: 20 },
shoulderToShoulderEase: { pct: -0.5, min: -1, max: 5 },
backDartHeight: { pct: 46, min: 38, max: 54 },
armholeDepth: { pct: 44, min: 38, max: 46 },
backHemSlope: { deg: 2.5, min: 0, max: 5 },
backArmholeSlant: { deg: 5, min: 1, max: 9 },
backArmholeCurvature: { pct: 63, min: 50, max: 85 },
frontArmholeCurvature: { pct: 63, min: 50, max: 85 },
fullChestEaseReduction: { pct: 4, min: 0, max: 8 },
frontShoulderWidth: { pct: 95, max: 98, min: 92 },
frontArmholePitchDepth: { pct: 29, max: 31, min: 27 },
backArmholePitchDepth: { pct: 35, max: 40, min: 30 },
highBustWidth: { pct: 86, max: 92, min: 80 },
bustDartLength: { pct: 90, min: 75, max: 100 },
waistDartLength: { pct: 90, min: 75, max: 95 },
bustDartCurve: { pct: 100, min: 0, max: 100 },
shoulderDartPosition: { pct: 50, min: 10, max: 90 },
upperDartLength: { pct: 90, min: 80, max: 95 },
armholeDartPosition: { pct: 50, min: 10, max: 90 },
dartOutsideCP: { pct: 0, min: -200, max: 200 },
dartPosition: { dflt: 'shoulder', list: ['shoulder','armhole'] },
}
}
export default config

View file

@ -0,0 +1,65 @@
{
"name": "@freesewing/noble",
"version": "2.21.0-rc.0",
"description": "FIXME: A FreeSewing pattern that needs a description",
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/",
"repository": "github:freesewing/freesewing",
"license": "MIT",
"bugs": {
"url": "https://github.com/freesewing/freesewing/issues"
},
"funding": {
"type": "individual",
"url": "https://freesewing.org/patrons/join"
},
"keywords": [
"freesewing",
"design",
"diy",
"fashion",
"made to measure",
"parametric design",
"pattern",
"sewing",
"sewing pattern"
],
"main": "dist/index.js",
"module": "dist/index.mjs",
"scripts": {
"build": "node build.js",
"clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js",
"lab": "cd ../../sites/lab && yarn start",
"tips": "node ../../scripts/help.mjs",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step5": "node build.js"
},
"peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0",
"@freesewing/plugin-bundle": "^2.21.0-rc.0",
"@freesewing/config-helpers": "^2.21.0-rc.0"
},
"dependencies": {},
"devDependencies": {
"mocha": "^9.1.1",
"chai": "^4.2.0"
},
"files": [
"dist/*",
"README.md",
"package.json"
],
"publishConfig": {
"access": "public",
"tag": "next"
},
"engines": {
"node": ">=14.0.0",
"npm": ">=6"
}
}

View file

@ -0,0 +1,67 @@
export default function (part) {
let {
utils,
store,
sa,
Point,
points,
Path,
paths,
Snippet,
snippets,
options,
measurements,
complete,
paperless,
macro,
} = part.shorthand()
// delete points.armholePitch
// delete points.armholePitchCp1
// delete points.armholePitchCp2
// delete points.armholeCpTarget
// delete points.armholeCp2
// delete points.armhole
// delete points.bustSide
// delete points.waistSide
// delete points.waistSideCp2
// delete points.dartBottomRight
// delete points.dartBottomCenter
// delete points.dartRightCp
// delete points.bustDartRight
// Hide Bella paths
for (let key of Object.keys(paths)) paths[key].render = false
for (let i in snippets) delete snippets[i]
//removing macros not required from Bella
console.log( 'Noble back inside' )
paths.insideSeam = new Path()
.move(points.cbNeck)
.curve_(points.cbNeckCp2, points.waistCenter)
.line(points.dartBottomLeft)
.curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip)
.curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart)
.line(points.hps)
._curve(points.cbNeckCp1, points.cbNeck)
.close()
.attr('class', 'fabric')
if (complete) {
// points.titleAnchor = points.waistDartRight.shiftFractionTowards( points.armhole, .5 )
macro('title', {
at: points.titleAnchor,
nr: 3,
title: 'Inside Back',
})
macro("grainline", {
from: points.grainlineFrom,
to: points.grainlineTo,
})
if (sa) paths.sa = paths.insideSeam.offset(sa).attr('class', 'fabric sa')
}
return part
}

View file

@ -0,0 +1,56 @@
export default function (part) {
let {
utils,
store,
sa,
Point,
points,
Path,
paths,
Snippet,
snippets,
options,
measurements,
complete,
paperless,
macro,
} = part.shorthand()
console.log( 'Noble back outside' )
console.log( {part:part})
paths.outsideSeam = new Path()
.move(points.dartBottomRight)
.line(points.waistSide)
.curve_(points.waistSideCp2, points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve_(points.armholePitchCp2, points.shoulder)
.line(points.shoulderDart)
.curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip)
.curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight)
.close()
.attr('class', 'fabric')
if (complete) {
points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .35 ).shiftFractionTowards( points.shoulder, .35 )
macro('title', {
at: points.titleAnchor,
nr: 4,
title: 'Outside Back',
})
points.grainlineFrom.x = points.shoulderDart.x
points.grainlineTo.x = points.shoulderDart.x
macro("grainline", {
from: points.grainlineFrom,
to: points.grainlineTo,
})
if (sa) paths.sa = paths.outsideSeam.offset(sa).attr('class', 'fabric sa')
}
return part
}

View file

@ -0,0 +1,94 @@
export default function (part) {
let {
points,
Path,
paths,
options,
snippets,
} = part.shorthand()
// Hide Bella paths
for (let key of Object.keys(paths)) paths[key].render = false
for (let i in snippets) delete snippets[i]
//removing macros not required from Bella
// delete points.titleAnchor
delete points.__titleNr
delete points.__titleName
delete points.__titlePattern
delete points.scaleboxAnchor
delete points.__scaleboxImperialBottomLeft
delete points.__scaleboxMetricBottomLeft
delete points.__scaleboxImperialTopLeft
delete points.__scaleboxMetricTopLeft
delete points.__scaleboxImperialTopRight
delete points.__scaleboxMetricTopRight
delete points.__scaleboxImperialBottomRight
delete points.__scaleboxMetricBottomRight
delete points.__scaleboxLead
delete points.__scaleboxTitle
delete points.__scaleboxText
delete points.__scaleboxLink
delete points.__scaleboxImperial
delete points.__scaleboxMetric
// delete points.cbNeck
// delete points.cbWaist
delete points.bustDartLeft
delete points.bustDartLeftCp
// delete points.bustCenter
// delete points.waistCenter
// delete points.cbArmhole
// delete points.cbNeckCp2
// delete points.cbNeckCp1
// delete points.dartLeftCp
// delete points.dartBottomLeft
// delete points.dartBottomCenter
console.log('backPoints');
points.shoulderDart = points.hps.shiftFractionTowards( points.shoulder, options.shoulderDartPosition )
let aUp = points.dartTip.angle( points.shoulderDart )
let aDown = points.dartBottomRight.angle( points.dartTip )
let aDiff = Math.abs( aUp - aDown )
// let dartCpAdjustment = Math.abs( options.shoulderDartPosition -.5) +.05
let dartCpAdjustment = aDiff /50
console.log({dartCpAdjustment: dartCpAdjustment });
// points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, options.upperDartLength)
points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 - dartCpAdjustment)
// points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +(1-options.upperDartLength) )
points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards( points.dartTip, 1 +dartCpAdjustment )
let iLength = (new Path()
.move(points.dartBottomLeft)
.curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip)
.curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart)).length();
let iteration = 0
let diff = 0
let angle = 0
do {
console.log({angle: points.waistSide.angle( points.dartBottomRight ) })
angle = diff*( oLength > iLength ? -.1 : .1 )
points.dartBottomRight = points.dartBottomRight.rotate( angle, points.waistSide )
let oLength = (new Path()
.move(points.shoulderDart)
.curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip)
.curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight)).length();
console.log({diff:diff, oLength: oLength, iLength: iLength})
diff = oLength -iLength
iteration ++
} while( diff < -.5 || diff > .5 && iteration < 100 )
if( iteration >= 100 ) {
raise.error('Something is not quite right here!')
}
return part
}

View file

@ -0,0 +1,154 @@
export default function (part) {
let {
utils,
store,
sa,
Point,
points,
Path,
paths,
Snippet,
snippets,
options,
measurements,
complete,
paperless,
macro,
} = part.shorthand()
console.log( 'Noble front inside' )
delete points.waistDartHem
delete points.waistDartRight
delete points.waistDartRightCp
delete points.waistDartCpBottom
delete points.bustDartBottom
delete points.bustDartCpBottom
delete points.bustDartTip
delete points.bustDartTop
delete points.shoulderDartTipCpDownOutside
delete points.ex
delete points.bustB
delete points.shoulder
delete points.shoulderDartShoulder
delete points.shoulderDartOutside
delete points.pitchMax
delete points.armholeCpTarget
delete points.armholePitch
delete points.armholePitchCp1
delete points.armholePitchCp2
delete points.armhole
delete points.armholeCp2
delete points.bustDartCpTop
delete points.bustSide
delete points.bustDartMiddle
delete points.bustDartEdge
// delete points.bustDartCpBottom
// delete points.bustDartTop
// delete points.bustDartMiddle
console.log({part: part})
if( options.dartPosition == 'shoulder' ) {
paths.insideSeam = new Path()
.move(points.cfHem)
.line(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip)
.line(points.shoulderDartInside)
.line(points.hps)
.curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck)
paths.seam = paths.insideSeam.join( new Path().move(points.cfNeck).line(points.cfHem))
.close()
.attr('class', 'fabric')
} else {
paths.insideSeam = new Path()
.move(points.cfHem)
.line(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTipInside)
.curve(points.waistCircleInsideCp1, points.armholeCircleInsideCp1, points.armholeDartInside)
.join(paths.armholeInside)
.line(points.hps)
.curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck)
paths.seam = paths.insideSeam.join( new Path().move(points.cfNeck).line(points.cfHem))
.close()
.attr('class', 'fabric')
}
if (complete) {
points.titleAnchor = new Point(points.hpsCp2.x *.75, points.cfNeckCp1.y *1.5)
macro('title', {
at: points.titleAnchor,
nr: 1,
title: 'Inside Front',
})
points.scaleboxAnchor = points.titleAnchor.shift(-90, 90).shift(0,10)
macro('scalebox', { at: points.scaleboxAnchor, rotate: 270 })
macro('cutonfold', {
from: points.cfNeck,
to: points.cfHem,
grainline: true,
})
if (sa) {
paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa')
paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start())
}
if (paperless) {
macro('vd', {
from: points.cfHem,
to: points.waistDartTip,
x: 0 - 15,
})
macro('vd', {
from: points.cfHem,
to: points.shoulderDartTip,
x: 0 - 30,
})
macro('vd', {
from: points.cfHem,
to: points.cfNeck,
x: 0 - 45,
})
macro('vd', {
from: points.cfHem,
to: points.hps,
x: 0 - 60,
})
macro('vd', {
from: points.hps,
to: points.shoulderDartInside,
x: points.cfNeck.x -15,
})
macro('hd', {
from: points.cfBust,
to: points.shoulderDartTip,
y: points.shoulderDartTip.y - 15,
})
macro('hd', {
from: points.cfNeck,
to: points.shoulderDartInside,
y: points.hps.y - 30,
})
macro('hd', {
from: points.cfHem,
to: points.waistDartLeft,
y: points.cfHem.y + sa + 15,
})
macro('hd', {
from: points.cfHem,
to: points.waistDartTip,
y: points.cfHem.y + sa + 30,
})
macro('hd', {
from: points.cfNeck,
to: points.hps,
y: points.hps.y - sa - 15,
})
}
}
return part
}

View file

@ -0,0 +1,171 @@
export default function (part) {
let {
utils,
store,
sa,
Point,
points,
Path,
paths,
Snippet,
snippets,
options,
measurements,
complete,
paperless,
macro,
} = part.shorthand()
console.log('Noble front outside')
delete points.bustDartTop
delete points.bustSide
delete points.bustDartMiddle
delete points.bustDartBottom
delete points.bustDartCpBottom
delete points.bustB
delete points.bustDartEdge
console.log({ part: part })
if( options.dartPosition == 'shoulder' ) {
paths.seam = new Path()
.move(points.waistDartRight)
.line(points.sideHem)
.line(points.armhole)
.curve(points.armholeCp2, points.armholePitchCp1, points.armholePitch)
.curve_(points.armholePitchCp2, points.shoulder)
.line(points.shoulderDartOutside)
// .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight)
.curve(points.shoulderDartTipCpDownOutside, points.waistUpDartRightCpUp, points.waistUpDartRight)
.curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight)
.close()
.attr('class', 'fabric')
} else {
paths.seam = new Path()
.move(points.waistDartRight)
.line(points.sideHem)
.line(points.armhole)
.curve(points.armholeCp2, points.armholeOutsidePitchCp1, points.armholeOutsidePitch)
.curve(points.armholeOutsidePitchCp2, points.armholeDartOutsideCp1, points.armholeDartOutside)
.curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight)
.curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight)
.close()
.attr('class', 'fabric')
}
if (complete) {
points.titleAnchor = points.waistDartRight
.shiftFractionTowards(points.armhole, 0.5)
.shiftFractionTowards(points.shoulderDartOutside, 0.2)
macro('title', {
at: points.titleAnchor,
nr: 2,
title: 'Outside Front',
})
// points.scaleboxAnchor = points.titleAnchor.shift(-90, 70)
// macro('scalebox', { at: points.scaleboxAnchor })
// points.grainTemp = points.waistDartRight.shiftFractionTowards( points.sideHemInitial, .2 )
// points.grainBottom = points.waistDartRight.rotate(270,points.grainTemp)
// points.grainTop = points.grainTemp.shiftOutwards(points.grainBottom, 200)
points.grainTop = points.armhole.shift(225, 20)
points.grainBottom = points.sideHemInitial.shift(135, 20)
macro('grainline', {
from: points.grainBottom,
to: points.grainTop,
})
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
}
/*
paths.tempSeam = new Path()
.move(points.shoulderDartOutside)
// .curve(points.shoulderDartTipCpDownOutside, points.waistDartRightCp, points.waistDartRight)
// .curve(points.shoulderDartTipCpDownOutside, points.bustA, points.waistDartRight)
.curve(points.shoulderDartTipCpDownOutside, points.bustAcp, points.waistDartRight)
.attr('class', 'lining dashed')
paths.shoulderTempDart = new Path()
.move(points.shoulderDartOutside)
._curve(points.shoulderDartCpBottom, points.shoulderDartTip)
.curve_(points.shoulderDartCpTop, points.shoulderDartInside)
.attr('class', 'lining')
paths.insideSeam = new Path()
.move(points.cfHem)
.line(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip)
.line(points.shoulderDartInside)
.line(points.hps)
.curve(points.hpsCp2, points.cfNeckCp1, points.cfNeck)
paths.seam2 = paths.insideSeam
.join(new Path().move(points.cfNeck).line(points.cfHem))
.close()
.attr('class', 'fabric')
if (complete) {
if (sa) {
paths.sa = paths.insideSeam.offset(sa).line(points.cfNeck).attr('class', 'fabric sa')
paths.sa = paths.sa.move(points.cfHem).line(paths.sa.start())
}
if (paperless) {
macro('vd', {
from: points.cfHem,
to: points.waistDartTip,
x: 0 - 15,
})
macro('vd', {
from: points.cfHem,
to: points.shoulderDartTip,
x: 0 - 30,
})
macro('vd', {
from: points.cfHem,
to: points.cfNeck,
x: 0 - 45,
})
macro('vd', {
from: points.cfHem,
to: points.hps,
x: 0 - 60,
})
macro('vd', {
from: points.hps,
to: points.shoulderDartInside,
x: points.cfNeck.x - 15,
})
macro('hd', {
from: points.cfBust,
to: points.shoulderDartTip,
y: points.shoulderDartTip.y - 15,
})
macro('hd', {
from: points.cfNeck,
to: points.shoulderDartInside,
y: points.hps.y - 30,
})
macro('hd', {
from: points.cfHem,
to: points.waistDartLeft,
y: points.cfHem.y + sa + 15,
})
macro('hd', {
from: points.cfHem,
to: points.waistDartTip,
y: points.cfHem.y + sa + 30,
})
macro('hd', {
from: points.cfNeck,
to: points.hps,
y: points.hps.y - sa - 15,
})
}
}
*/
return part
}

View file

@ -0,0 +1,412 @@
export default function (part) {
let {
utils,
store,
sa,
Point,
points,
Path,
paths,
Snippet,
snippets,
options,
measurements,
complete,
paperless,
macro,
} = part.shorthand()
const bCircle = 0.552284749831
console.log('frontPoints')
// Hide Bella paths
for (let key of Object.keys(paths)) paths[key].render = false
for (let i in snippets) delete snippets[i]
//removing macros not required from Bella
delete points.titleAnchor
delete points.__titleNr
delete points.__titleName
delete points.__titlePattern
delete points.scaleboxAnchor
delete points.__scaleboxImperialBottomLeft
delete points.__scaleboxMetricBottomLeft
delete points.__scaleboxImperialTopLeft
delete points.__scaleboxMetricTopLeft
delete points.__scaleboxImperialTopRight
delete points.__scaleboxMetricTopRight
delete points.__scaleboxImperialBottomRight
delete points.__scaleboxMetricBottomRight
delete points.__scaleboxLead
delete points.__scaleboxTitle
delete points.__scaleboxText
delete points.__scaleboxLink
delete points.__scaleboxImperial
delete points.__scaleboxMetric
console.log('Noble front')
console.log({ highBust: measurements.highBust })
console.log({ chest: measurements.chest })
console.log({ underbust: measurements.underbust })
console.log({ waist: measurements.waist })
console.log({ waistBack: measurements.waistBack })
console.log({ bustSpan: measurements.bustSpan })
console.log({ neck: measurements.neck })
console.log({ hpsToBust: measurements.hpsToBust })
console.log({ hpsToWaistFront: measurements.hpsToWaistFront })
console.log({ hpsToWaistBack: measurements.hpsToWaistBack })
console.log({ shoulderToShoulder: measurements.shoulderToShoulder })
console.log({ shoulderSlope: measurements.shoulderSlope })
// if( options.dartPosition == 'shoulder' ) {
// }
points.shoulderDartInside = points.hps.shiftFractionTowards(
points.shoulder,
options.shoulderDartPosition
)
points.orgShoulder = points.shoulder.clone()
points.orgArmhole = points.armhole.clone()
points.orgArmholeCp2 = points.armholeCp2.clone()
points.orgArmholePitch = points.armholePitch.clone()
points.orgArmholePitchCp1 = points.armholePitchCp1.clone()
points.orgArmholePitchCp2 = points.armholePitchCp2.clone()
let armholePath = new Path()
.move(points.shoulder)
._curve(points.armholePitchCp2, points.armholePitch)
.curve(points.armholePitchCp1, points.armholeCp2, points.armhole)
points.armholeDartInside = armholePath.shiftFractionAlong(options.armholeDartPosition)
points.armholeDartOutside = points.armholeDartInside.clone()
// paths.armholeTemp = armholePath.clone().setRender(true).attr('class', 'lining')
console.log({ armholeDartInside: points.armholeDartInside })
let armholePaths = armholePath.split(points.armholeDartInside)
let armholePathInside = armholePaths[0].clone().setRender(false)
let armholePathOutside = armholePaths[1].clone().setRender(false)
let armholeDartAngle =
armholePathInside.reverse().shiftAlong(1).angle(armholePathOutside.shiftAlong(1)) - 90
points.armholeDartArmhole = points.armholeDartInside.shiftFractionTowards(
points.armholeDartOutside,
0.5
)
points.armholeDartTip = points.armholeDartArmhole.shiftFractionTowards(
points.bust,
options.upperDartLength
)
console.log({ armholeDartAngle: armholeDartAngle })
console.log({ dist: points.armholeDartInside.dist(points.armholeDartTip) })
console.log({ bCircle: bCircle * points.armholeDartInside.dist(points.armholeDartTip) })
points.armholeCircleInsideCp1 = points.armholeDartInside.shift(
armholeDartAngle,
bCircle * points.armholeDartInside.dist(points.armholeDartTip)
)
points.armholeCircleOutsideCp1 = points.armholeCircleInsideCp1.clone()
console.log({ armholePathInside: armholePathInside })
console.log({ armholePathOutside: armholePathOutside })
points.shoulderCp1 = armholePathInside.ops[1].cp1.clone()
points.armholeInsidePitch = armholePathInside.ops[1].to.clone()
points.armholeInsidePitchCp2 = armholePathInside.ops[1].cp2.clone()
if (armholePathInside.ops.length == 2) {
points.armholeInsidePitchCp1 = points.armholeDartInside.clone()
points.armholeDartInsideCp2 = points.armholeDartInside.clone()
} else {
points.armholeInsidePitchCp1 = armholePathInside.ops[2].cp1.clone()
points.armholeDartInsideCp2 = armholePathInside.ops[2].cp2.clone()
}
points.armholeDartOutsideCp1 = armholePathOutside.ops[1].cp1.clone()
points.armholeOutsidePitch = armholePathOutside.ops[1].to.clone()
points.armholeOutsidePitchCp2 = armholePathOutside.ops[1].cp2.clone()
if (armholePathOutside.ops.length == 2) {
points.armholeOutsidePitchCp1 = points.armhole.clone()
points.armholeCp2 = points.armhole.clone()
} else {
points.armholeOutsidePitchCp1 = armholePathOutside.ops[2].cp1.clone()
points.armholeCp2 = armholePathOutside.ops[2].cp2.clone()
}
console.log({ shoulder: points.shoulder })
console.log({ shoulderCp1: points.shoulderCp1 })
console.log({ armholeInsidePitchCp2: points.armholeInsidePitchCp2 })
console.log({ armholeInsidePitch: points.armholeInsidePitch })
console.log({ armholeInsidePitchCp1: points.armholeInsidePitchCp1 })
console.log({ armholeDartInsideCp2: points.armholeDartInsideCp2 })
console.log({ armholeDartInside: points.armholeDartInside })
console.log({ armholeDartOutside: points.armholeDartOutside })
console.log({ armholeDartOutsideCp1: points.armholeDartOutsideCp1 })
console.log({ armholeOutsidePitchCp2: points.armholeOutsidePitchCp2 })
console.log({ armholeOutsidePitch: points.armholeOutsidePitch })
console.log({ armholeOutsidePitchCp1: points.armholeOutsidePitchCp1 })
console.log({ armholeCp2: points.armholeCp2 })
console.log({ armhole: points.armhole })
// paths.armholeInside = new Path()
// .move(points.shoulder)
// .curve(points.shoulderCp1, points.armholeInsidePitchCp2, points.armholeInsidePitch)
// .curve(points.armholeInsidePitchCp1, points.armholeDartInsideCp2, points.armholeDartInside)
// .setRender(true)
// .attr('class', 'lining')
paths.armholeInside = new Path()
.move(points.armholeDartInside)
.curve(points.armholeDartInsideCp2, points.armholeInsidePitchCp1, points.armholeInsidePitch)
.curve(points.armholeInsidePitchCp2, points.shoulderCp1, points.shoulder)
.setRender(false)
.attr('class', 'lining')
let rotateAngle =
points.shoulderDartInside.angle(points.bustA) - points.bustDartTop.angle(points.bustA)
if (rotateAngle < 0) {
rotateAngle += 360
}
if (rotateAngle > 360) {
rotateAngle -= 360
}
points.shoulderDartCpTop = points.bustDartCpTop.rotate(rotateAngle, points.bustA)
points.shoulderDartCpBottom = points.bustDartCpBottom.rotate(rotateAngle, points.bustA)
rotateAngle =
points.armholeDartInside.angle(points.bustA) - points.bustDartTop.angle(points.bustA)
if (rotateAngle < 0) {
rotateAngle += 360
}
if (rotateAngle > 360) {
rotateAngle -= 360
}
points.armholeDartCpTop = points.bustDartCpTop.rotate(rotateAngle, points.bustA)
points.armholeDartCpBottom = points.bustDartCpBottom.rotate(rotateAngle, points.bustA)
let spreadAngle =
/*360 -*/ points.bustA.angle(points.bustDartBottom) - points.bustA.angle(points.bustDartTop)
console.log({ spreadAngle: spreadAngle })
points.shoulderDartOutside = points.shoulderDartInside.rotate(spreadAngle, points.bustA)
points.shoulderDartShoulder = points.shoulderDartInside.shiftFractionTowards(
points.shoulderDartOutside,
0.5
)
points.shoulderDartTip = points.shoulderDartShoulder.shiftFractionTowards(
points.bust,
options.upperDartLength
)
let dartRatio =
new Path().move(points.waistDartHem).line(points.waistDartTip).length() /
new Path().move(points.shoulderDartShoulder).line(points.shoulderDartTip).length()
console.log({ dartRatio: dartRatio })
points.shoulder = points.shoulder.rotate(spreadAngle, points.bustA)
points.armhole = points.armhole.rotate(spreadAngle, points.bustA)
points.armholeCp2 = points.armholeCp2.rotate(spreadAngle, points.bustA)
points.armholePitch = points.armholePitch.rotate(spreadAngle, points.bustA)
points.armholePitchCp1 = points.armholePitchCp1.rotate(spreadAngle, points.bustA)
points.armholePitchCp2 = points.armholePitchCp2.rotate(spreadAngle, points.bustA)
points.armholeCircleOutsideCp1 = points.armholeCircleOutsideCp1.rotate(spreadAngle, points.bustA)
points.armholeDartOutside = points.armholeDartOutside.rotate(spreadAngle, points.bustA)
points.armholeDartOutsideCp1 = points.armholeDartOutsideCp1.rotate(spreadAngle, points.bustA)
points.armholeOutsidePitchCp2 = points.armholeOutsidePitchCp2.rotate(spreadAngle, points.bustA)
points.armholeOutsidePitch = points.armholeOutsidePitch.rotate(spreadAngle, points.bustA)
points.armholeOutsidePitchCp1 = points.armholeOutsidePitchCp1.rotate(spreadAngle, points.bustA)
//points.armholeCp2, points.armhole )
console.log({ shoulder: points.shoulder })
console.log({ shoulderDartOutside: points.shoulderDartOutside })
console.log({ shoulderbust: points.bust })
console.log({ upperDartLength: options.upperDartLength })
console.log({ waistDartLength: options.waistDartLength })
paths.armholeOutside = new Path()
.move(points.armholeDartOutside)
.curve(points.armholeDartOutsideCp1, points.armholeOutsidePitchCp2, points.armholeOutsidePitch)
.curve(points.armholeOutsidePitchCp1, points.armholeCp2, points.armhole)
.setRender(false)
.attr('class', 'lining')
paths.armholeTempDart = new Path()
.move(points.armholeDartOutside)
._curve(points.armholeDartCpBottom, points.armholeDartTip)
.curve_(points.armholeDartCpTop, points.armholeDartInside)
.setRender(false)
.attr('class', 'lining')
points.shoulderDartTipCpDownOutside = points.shoulderDartOutside.shiftFractionTowards(
points.bust,
1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio
)
// points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside.rotate( options.dartOutsideCP *10, points.shoulderDartOutside )
console.log({ shoulderDartInside: points.shoulderDartInside })
// points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards(
// points.bust,
// 1 +(1-options.upperDartLength) +((1 -options.waistDartLength) *dartRatio)
// )
points.shoulderDartTipCpDownInside = points.shoulderDartInside.shiftFractionTowards(
points.shoulderDartTip,
1 + (1 - options.upperDartLength) + (1 - options.waistDartLength) * dartRatio
)
points.armholeDartTipCpDownInside = points.armholeDartTip.shiftFractionTowards(
// points.waistDartHem,
points.waistDartLeft,
1 - options.upperDartLength + (1 - options.waistDartLength) * dartRatio
)
console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside })
console.log({ shoulderDartTipCpDownOutside: points.shoulderDartTipCpDownOutside })
console.log({ shoulderDartTip: points.shoulderDartTip })
console.log({ waistDartLeftCp: points.waistDartLeftCp })
console.log({ waistDartLeft: points.waistDartLeft })
points.bustAcp = points.waistDartRight.shiftOutwards(points.bustA, 10)
paths.shoulderInsideSeam = new Path()
.move(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip)
.line(points.shoulderDartInside)
.setRender(false)
paths.armholeInsideSeam = new Path()
.move(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.armholeDartTipCpDownInside, points.armholeDartTip)
// .line(points.armholeDartInside)
.setRender(false)
.attr('class', 'lining')
console.log({ armholeInsideSeam: paths.armholeInsideSeam })
paths.sOutsideSeam = new Path()
.move(points.waistDartRight)
.curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside)
.setRender(false)
points.waistDartRightCp = points.bustAcp.clone()
let shoulderInsideSeam = new Path()
.move(points.waistDartLeft)
.curve(points.waistDartLeftCp, points.shoulderDartTipCpDownInside, points.shoulderDartTip)
.line(points.shoulderDartInside)
.setRender(false)
console.log({ shoulderInsideSeam: shoulderInsideSeam })
console.log({ waistDartLeft: points.waistDartLeft })
console.log({ bustA: points.bustA })
console.log({ dist: points.waistDartLeft.dist(points.bustA) * 0.5 })
points.waistUpDartLeft = paths.armholeInsideSeam.shiftAlong(
points.waistDartLeft.dist(points.armholeDartTip) * 0.5
)
console.log({ waistUpDartLeft: points.waistUpDartLeft })
points.waistCircleInsideCp1 = points.waistUpDartLeft.shiftTowards(
points.waistDartLeft,
-0.5 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip)
)
console.log({ waistCircleInsideCp1: points.waistCircleInsideCp1 })
points.shoulderDartTipCpDownOutside = points.shoulderDartTipCpDownOutside
.rotate(-2.5, points.shoulderDartOutside)
.shiftFractionTowards(points.shoulderDartOutside, 0.2)
let lInside = shoulderInsideSeam.length()
console.log({ lInside: lInside })
let iteration = 1
let diff = 0
// points.bustAcp = points.bustA.clone()
do {
points.waistDartRight = points.waistDartRight.rotate(diff * 0.1, points.sideHemInitial)
let outsideSeam = new Path()
.move(points.waistDartRight)
.curve(points.bustAcp, points.shoulderDartTipCpDownOutside, points.shoulderDartOutside)
points.waistUpDartRight = outsideSeam.shiftAlong(
points.waistDartRight.dist(points.waistDartRightCp) * 0.5
)
points.waistUpDartRightCpDown = points.waistUpDartRight.shiftFractionTowards(
points.waistDartRight,
0.25
)
// points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards( points.waistDartRight, -.25 )
points.waistUpDartRightCpUp = points.waistUpDartRight.shiftFractionTowards(
points.waistDartRight,
-0.6
)
points.waistCpUp = points.waistDartRight
.shiftTowards(
points.sideHemInitial,
points.waistDartRight.dist(points.waistUpDartRight) * 0.25
)
.rotate(90, points.waistDartRight)
points.waistCircleInsideCp1 = points.armholeDartTip.shiftTowards(
points.armholeDartTipCpDownInside,
-0.5 * bCircle * points.armholeDartInside.dist(points.armholeDartTip)
)
outsideSeam = new Path()
.move(points.waistDartRight)
.curve(points.waistCpUp, points.waistUpDartRightCpDown, points.waistUpDartRight)
.curve(
points.waistUpDartRightCpUp,
points.shoulderDartTipCpDownOutside,
points.shoulderDartOutside
)
console.log({
step: iteration,
diff: diff,
insideSeam: lInside,
outsideSeam: outsideSeam.length(),
sOutside: paths.sOutsideSeam.length(),
})
diff = shoulderInsideSeam.length() - outsideSeam.length()
iteration++
} while ((diff > 1 || diff < -1) && iteration < 200)
if (iteration >= 200) {
raise.error('Something is not quite right here!')
}
points.waistDartRightCp = points.bustAcp.clone()
console.log({ shoulderDartTipCpDownInside: points.shoulderDartTipCpDownInside })
points.armholeDartTipInside = points.armholeDartTip.clone()
points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards(
points.waistDartRight,
-1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip)
)
diff = 0
iteration = 0
do {
let dist = points.armholeDartTipInside.dist(points.armholeDartTipCpDownInside)
console.log({xDartTip: points.armholeDartTipInside.x,yDartTip: points.armholeDartTipInside.y,xCircle:points.waistCircleOutsideCp1.x,yCircle:points.waistCircleOutsideCp1.y, first: points.armholeDartTipInside.x > points.waistCircleOutsideCp1})
if( points.armholeDartTipInside.x > points.waistCircleOutsideCp1 ) {
points.armholeDartTipInside.x = points.armholeDartTipInside.x -.5
points.armholeDartTipInside.y = points.armholeDartTipInside.y +.5
} else {
points.waistCircleOutsideCp1 = points.waistCircleOutsideCp1.shiftTowards( points.waistUpDartRight, diff > 0 ? 1 :-1 )
}
points.armholeDartTipCpDownInside = points.waistCircleInsideCp1.shiftOutwards(points.armholeDartTipInside, dist)
// points.waistCircleOutsideCp1 = points.waistUpDartRight.shiftTowards(
// points.waistDartRight,
// -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip)
// )
paths.armholeTempCircleOutside = new Path()
.move(points.armholeDartOutside)
.curve(points.armholeCircleOutsideCp1, points.waistCircleOutsideCp1, points.waistUpDartRight)
.curve(points.waistUpDartRightCpDown, points.waistCpUp, points.waistDartRight)
.setRender(false)
.attr('class', 'lining')
paths.armholeTempCircleInside = new Path()
.move(points.armholeDartInside)
.curve(points.armholeCircleInsideCp1, points.waistCircleInsideCp1, points.armholeDartTipInside)
.curve(points.armholeDartTipCpDownInside, points.waistDartLeftCp, points.waistDartLeft)
.setRender(false)
.attr('class', 'lining')
diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length()
iteration ++
console.log({ i: iteration, diff: diff, armholeTempCircleOutside: paths.armholeTempCircleOutside.length(),armholeTempCircleInside: paths.armholeTempCircleInside.length() })
} while( (diff < -1 || diff > 1) && iteration < 200 )
if (iteration >= 200) {
// raise.error('Something is not quite right here!')
}
return part
}

View file

@ -0,0 +1,42 @@
import freesewing from '@freesewing/core'
import Bella from '@freesewing/bella'
import plugins from '@freesewing/plugin-bundle'
import config from '../config'
// Parts
import draftBackPoints from './backPoints'
import draftBackInside from './backInside'
import draftBackOutside from './backOutside'
import draftFrontPoints from './frontPoints'
import draftFrontInside from './frontInside'
import draftFrontOutside from './frontOutside'
// Create design
const Pattern = new freesewing.Design(config, plugins)
// console.log( 'bella back')
// measurements.highBust = (measurements.highBust == undefined || measurements.highBust == 0 ) ? measurements.chest *1.035 : measurements.highBust
// measurements.bustSpan = (measurements.bustSpan == undefined || measurements.bustSpan == 0 ) ? measurements.waistBack *.47 : measurements.bustSpan
// measurements.underbust = (measurements.underbust == undefined || measurements.underbust == 0 ) ? (measurements.chest +measurements.waist) *.5 : measurements.underbust
// measurements.hpsToBust = (measurements.hpsToBust == undefined || measurements.hpsToBust == 0 ) ? measurements.hpsToWaistFront *.59 : measurements.hpsToBust
// // Get to work
// console.log({ hpsToBust : measurements.hpsToBust} )
// Attach draft methods to prototype
Pattern.prototype.draftBellaBack = function (part) {
return new Bella(this.settings).draftBack(part)
}
Pattern.prototype.draftBellaFrontSideDart = function (part) {
return new Bella(this.settings).draftFrontSideDart(part)
}
// Pattern.prototype.draftFrontSideDart = (part) => draftFrontSideDart(part)
Pattern.prototype.draftBackPoints = (part) => draftBackPoints(part)
Pattern.prototype.draftBackInside = (part) => draftBackInside(part)
Pattern.prototype.draftBackOutside = (part) => draftBackOutside(part)
Pattern.prototype.draftFrontPoints = (part) => draftFrontPoints(part)
Pattern.prototype.draftFrontInside = (part) => draftFrontInside(part)
Pattern.prototype.draftFrontOutside = (part) => draftFrontOutside(part)
export default Pattern