# 3.3: Cross Section

Karamba3D offers cross section definitions for beams, shells and springs. They can be generated with the “Cross Sections” multi-component. Use the drop-down list on the bottom to chose the cross section type.

The dimensions of each cross section may be defined manually or by reference to a list of cross sections (see section [3.3.10](https://manual-1-3.karamba3d.com/3-in-depth-component-reference/3.3-cross-section/3.3.10-cross-section-selector)).

![ Fig. 3.3.1: Cantilever with four different kinds of cross section](https://1646753513-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M9XteyGDAU3Odla53cC%2Fsync%2F1b99537d860847437ac6050ffe377aa3911369fa.png?generation=1591871156358745\&alt=media)

Cross sections can be plugged directly into the components for creating elements (**“LineToBeam”**, **“MeshToShell”**, …). Alternatively when fed into an **“Assemble”**-component (see fig. 3.3.1) they act on the elements whose identifiers match the string given via **“Elem|Id”**. In case an element is provided at the **“Elem|Id”**-input, its identifier is used for attaching the cross section to elements. A cross section added via the **“Assemble”**-component overrides a cross section provided directly at an element-creation-component.

The indirect cross section specification through the **“Assemble”**-component has the advantage that elements can be specified using regular expressions. Upon assembly all element identifiers are compared to the **“Elem|Id”** entry of a cross section. In case of a match the cross section is attached to the element. An empty string – which is the default value – signifies that the cross section shall be applied to all elements. If two cross sections refer to the same element then that which gets processed later by the assemble-component wins. It makes no sense to attribute beam cross sections to shells and vice versa – Karamba3D ignores any such attempts.
