> For the complete documentation index, see [llms.txt](https://docs.ladybug.tools/honeybee-primer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ladybug.tools/honeybee-primer/components/0_create/straight_skeleton.md).

# Straight Skeleton

![](/files/Oan50mWrA0wa1QSW0dWX)

![](/files/BtVtXGySUwNoZuGJ1eoo) - [\[source code\]](https://github.com/ladybug-tools/honeybee-grasshopper-core/blob/master/honeybee_grasshopper_core/src//HB%20Straight%20Skeleton.py)

Get the straight skeleton and core/perimeter sub-faces for any planar geometry.

This component uses a modified version of the the polyskel package (<https://github.com/Botffy/polyskel>) by Armin Scipiades (aka. @Bottfy), which is, itself, a Python implementation of the straight skeleton algorithm as described by Felkel and Obdrzalek in their 1998 conference paper Straight skeleton implementation (<https://github.com/Botffy/polyskel/blob/master/doc/StraightSkeletonImplementation.pdf>).

### Inputs

* **floor\_geo \[Required]**

Horizontal Rhino surfaces for which the straight skeleton will be computed.

* **offset**

An optional positive number that will be used to offset the perimeter of the geometry to output core/perimeter polygons. If a value is plugged in here and the straight skeleton is not self-intersecting, perim\_poly and core\_poly will be ouput.

### Outputs

* **report**

Reports, errors, warnings, etc.

* **skeleton**

A list of line segments that represent the straight skeleton of the input \_floor\_geo. This will be output from the component no matter what the input \_floor\_geo is.

* **perim\_poly**

A list of breps representing the perimeter polygons of the input *floor\_geo. This will only be ouput if an offset* is input.

* **core\_poly**

A list of breps representing the core polygons of the input *floor\_geo. This will only be ouput if an offset* is input and the offset is not so great as to eliminate the core.
