---
title: Part
---

A `Part` in FreeSewing holds all data, logic, and configuration of a Design.
Parts truly are the building blocks of FreeSewing as they not only provide
the configuration, but also a `draft()` method that does the actual work
of drafting a parametric design.

## Properties

A Part object comes with the following properties:

- `attributes` : An [Attributes](/reference/api/attributes) instance holding
  the part's attributes
- `hidden` : When this is `true` the part will be hidden (excluding it from the
  output).  See [Part.hide()](/reference/api/part/hide),
  [Part.unhide()](/reference/api/part/unhide), and
  [Part.setHidden()](/reference/api/part/sethidden) for various methods that
  allow setting this in a chainable way.
- `name` : The name of the part
- `paths` : Holds the paths used in the part
- `points` : Holds the points used in the part
- `snippets` : Holds the snippets used in the part

:::note RELATED
See [Using Attributes](/howtos/code/attributes)
for information about custom Attributes that can be used with Parts.
:::

## Example

```js
const part = {
  name: 'example.part',
  from: otherPart,
  after: [ yetAnotherPart, oneMorePart ],
  measurements: ['head', 'chest' ],
  optionalMeasurements: ['neck'],
  options: {
    headEase: { pct: 12, min: 5, max: 20 }
  }
  hide: false,
  hideAll: false,
  hideDependencies: true,
  plugins: [ 
    plugin1, 
    plugin1, 
    [ plugin3, dataForPlugin3 ],
  ],
  draft: ({ part }) => part
}
```

## Methods

A Part object exposes the following methods:

- [Part.asRenderProps()](/reference/api/part/asrenderprops)
- [Part.attr()](/reference/api/part/attr)
- [Part.getId()](/reference/api/part/getid)
- [Part.hide()](/reference/api/part/hide)
- [Part.setHidden()](/reference/api/part/sethidden)
- [Part.shorthand()](/reference/api/part/shorthand)
- [Part.unhide()](/reference/api/part/unhide)
- [Part.units()](/reference/api/part/units)

## More information

Click below to learn more about:

- [A part's configuration](/reference/api/part/config)
- [A part's `draft()` method](/reference/api/part/draft)
