2021-10-17 18:26:00 +02:00
|
|
|
---
|
2021-08-25 16:09:31 +02:00
|
|
|
title: Your first part
|
|
|
|
order: 120
|
2021-10-17 18:26:00 +02:00
|
|
|
---
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-02-20 14:35:50 +01:00
|
|
|
Much like garments themselves, patterns are made up of _parts_.
|
2022-10-09 23:47:32 +02:00
|
|
|
Most patterns will have multiple parts. A sleeve, a back part, the collar, and
|
|
|
|
so on. Our pattern is very simple, and only has one part: the bib.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
It's a good idea to keep each part in its own file. You don't *have to* do
|
|
|
|
this, but it's a good habit to get into. When you create more elaborate designs
|
|
|
|
with multiple parts, keeping each in its own file makes for a more tidy
|
|
|
|
and approachable code base.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
## bib.mjs
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
The previous step has already set everything up for us. Our design's main file
|
|
|
|
lives in `design/src/index.mjs`, and our part lives in `design/src/bib.mjs`.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
This `bib.mjs` is where we'll do all our work. It currently looks like this:
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
```design/src/bib.mjs
|
|
|
|
function draftBib({ part }) {
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
return part
|
|
|
|
}
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
export const bib = {
|
|
|
|
name: 'tutorial.bib',
|
|
|
|
draft: draftBib,
|
|
|
|
}
|
2021-08-25 16:09:31 +02:00
|
|
|
```
|
2022-02-19 08:04:25 +01:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
### The part object
|
2021-08-25 16:16:51 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
Each part in FreeSewing is an object that describes everything there is to know about the part.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
The only mandatory keys on a part object are `name` and `draft`.
|
2022-02-19 08:04:25 +01:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
<Related>
|
|
|
|
Refer to [the part reference documentation](/reference/api/part) for
|
|
|
|
all details about configuring the part object
|
|
|
|
</Related>
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
#### The part name
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
```design/src/bib.mjs
|
|
|
|
name: 'tutorial.bib',
|
2021-08-25 16:09:31 +02:00
|
|
|
```
|
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
A part's `name` should be unique in a pattern. Apart from that, anything goes.
|
|
|
|
Although you probably want to give it a sensible name.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
As you can see in the example above, we're using `tutorial.bib` as the name.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
|
|
|
<Tip>
|
2022-10-09 23:47:32 +02:00
|
|
|
We **strongly** recommend to follow this `design.part` naming scheme to avoid
|
|
|
|
naming conflicts when mixing parts from various designs to create new designs.
|
|
|
|
</Tip>
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
#### The part's draft method
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
```design/src/bib.mjs
|
|
|
|
draft: draftBib,
|
|
|
|
```
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
The second mandatory key on the part object is `draft` which should hold the method that drafts the part.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
In our example above, it refers to the `draftBib` function we defined at the top of the file.
|
|
|
|
For now this function doesn't do much, but that will change soon enough.
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
<Note>
|
|
|
|
This structure of putting the draft method at the top of the file and
|
|
|
|
the part object at the bottom is a bit of a convention in FreeSewing.
|
|
|
|
</Note>
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
## index.mjs
|
2021-08-25 16:09:31 +02:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
<Tip>
|
|
|
|
Feel free to skip to [Adding
|
|
|
|
measurements](/tutorials/pattern-design/adding-measurements) if you're itching
|
|
|
|
to get started. Or, read on for an explanation of what's going on in the
|
|
|
|
`index.mjs` file.
|
|
|
|
</Tip>
|
2022-01-19 11:31:39 +01:00
|
|
|
|
2022-10-09 23:47:32 +02:00
|
|
|
The `index.mjs` file is already complete and we won't be making any changes to
|
|
|
|
it. But for those who are curious about what's going on inside `index.mjs`,
|
|
|
|
we're including a version with comments below:
|
|
|
|
|
|
|
|
```design/src/index.mjs
|
|
|
|
/*
|
|
|
|
* Import the `Design` constructor
|
|
|
|
* from the FreeSewing core library
|
|
|
|
*
|
|
|
|
* This Design constructor is a method
|
|
|
|
* (also known as a function)
|
|
|
|
* that creates a new Design
|
|
|
|
*/
|
|
|
|
import { Design } from '@freesewing/core'
|
|
|
|
/*
|
|
|
|
* Import the `bib` part from the bib.mjs file
|
|
|
|
* in the same folder as this index.mjs file
|
|
|
|
*
|
|
|
|
* This is the part we'll be working on
|
|
|
|
* in this tutorial
|
|
|
|
*/
|
|
|
|
import { bib } from './bib.mjs'
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Create a new Pattern by passing
|
|
|
|
* a configuration object
|
2022-12-03 16:34:38 +01:00
|
|
|
* to the Design constructor
|
2022-10-09 23:47:32 +02:00
|
|
|
*/
|
|
|
|
const Pattern = new Design({
|
|
|
|
/*
|
|
|
|
* This `data` key is optional, but we
|
|
|
|
* typically add a name and version here
|
|
|
|
*/
|
|
|
|
data: {
|
|
|
|
version: "0.0.1",
|
|
|
|
name: "Tutorial",
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
* This `parts` key is the most important thing
|
|
|
|
* It holds a list of `parts` for our Design.
|
|
|
|
* A Pattern/Design is in the end not much more
|
|
|
|
* than a collection of parts.
|
|
|
|
*/
|
|
|
|
parts: [ bib ],
|
|
|
|
})
|
|
|
|
|
|
|
|
/*
|
|
|
|
* We are exporting our Pattern
|
|
|
|
* (so others can use it)
|
|
|
|
* but we also (re-)export our bib part
|
|
|
|
* this allows others to re-use it
|
|
|
|
* in their own designs
|
|
|
|
*/
|
|
|
|
export { bib, Pattern }
|
|
|
|
```
|