> For the complete documentation index, see [llms.txt](https://help.qonic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.qonic.com/documentation/qonic-application/modeling/components.md).

# Components

A component is a reusable definition - a window, a door, a piece of furniture, an MEP terminal - that you create once and instance many times. The result is models that are faster to assemble and easier to keep coherent.

## Creating components

To start creating your own components in the Qonic app, open the Components Panel on the right hand side, or use the shortcut <kbd>Shift</kbd> <kbd>o</kbd>. Here you will see a list of all component libraries in your current project if there are any. Click the ellipsis button next to a library to edit its name or delete it, or click the library name to open it and access the components inside.&#x20;

<div data-with-frame="true"><figure><img src="/files/OqUyqVtG0rz2nUQfJHjw" alt="" width="317"><figcaption></figcaption></figure></div>

Use the green <kbd>+</kbd> button at the bottom of this panel to create a new components library.&#x20;

<div data-with-frame="true"><figure><img src="/files/bzqo3JhymbT4vN6u1n9q" alt="" width="328"><figcaption></figcaption></figure></div>

Once inside a library you can start saving components. Use the green <kbd>+</kbd> button at the bottom of this panel to create a new component. You will be prompted with a window to choose a Name, an IFC Class (this will be automatically filled in based on your selection) and optionally some tags and a description. You can still specify in which library to add this component. Select the object in your model you want to save as a component, and click Create.&#x20;

{% hint style="warning" %}
You can only select a single product as the definition of your component. If you want to save a group of products as a component, create an [assembly](/documentation/qonic-application/modeling/modifying/assembly-editing.md) of these products first.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/pYYeBoVFA9csrzGeCkvU" alt="" width="297"><figcaption></figcaption></figure></div>

The newly created component will now be listed in your library. The product you selected for the creation of the component will automatically become an instance of this component.

<div data-with-frame="true"><figure><img src="/files/GAoViMm6TrEhrWstwvF4" alt="" width="342"><figcaption></figcaption></figure></div>

Components can also be created through import of .rfa files. For more information about this, read [this article](/documentation/qonic-dashboard/components.md) about component management in the project dashboard.

## Placing components

To place a component, simply drag and drop the component from the components panel into your model, or click the ellipsis next to the component name and choose Insert.

<div data-with-frame="true"><figure><img src="/files/4xRw1WB3SYP2ZeUboUPG" alt="" width="330"><figcaption></figcaption></figure></div>

The inserted component will follow the orientation of the object you used to create the component. Basic logic is applied to position hosted components like windows and doors. More advanced placement logic is being developed and will be added to Qonic soon.

## Managing components

An inserted component in effectively an instance of a component definition. The instance remains linked to the component definition. Whether a product is linked to a component definition (i.e. this product is a component instance) can be seen in the [Inspect panel](/documentation/qonic-application/querying-and-reporting/inspect-panel.md). An additional field will be displayed indicating the component it is referring to.&#x20;

<div data-with-frame="true"><figure><img src="/files/COxM8lqkfDZJKVQuWFNv" alt="" width="352"><figcaption></figcaption></figure></div>

If a component **instance** was modified so that it deviates from the component **definition** (e.g. you edited its geometry or changed a property value), this will be automatically detected and indicated by this blue icon in the inspect panel.

<div data-with-frame="true"><figure><img src="/files/I3HLJzaZKdyE6eYvnUrM" alt="" width="304"><figcaption></figcaption></figure></div>

When this is the case, you can choose to **reset** this component instance. The instance will again become an exact copy of the initial component definition, any changes made to this instance will be undone.&#x20;

<div data-with-frame="true"><figure><img src="/files/0Mr0qtvasXdzsUEtc2cl" alt="" width="363"><figcaption></figcaption></figure></div>

You can at any time **unlink** an instance from its definition. This will break the link, meaning that you will no longer be able to reset the instance or visit the component definition.

If a component definition has been removed or edited, this will be indicated in the instance's properties in the inspect panel by a yellow triangle.

<div data-with-frame="true"><figure><img src="/files/prIM6DfcHEjGMRfVrjvV" alt="" width="290"><figcaption></figcaption></figure></div>

From the components panel you have the options to insert a new component instance, select all instances of a component, edit the component name or description, delete the component definition, and find all unlinked products. This tool will scan your entire model for exact geometric matches of products with the component definition

<div data-with-frame="true"><figure><img src="/files/hfdMI9oMVC5VoHSIIlBV" alt="" width="329"><figcaption></figcaption></figure></div>

If any matches are found, they will be selected and you will have the option to convert these matches to component instances, essentially (re)linking the instances and the definition.

<figure><img src="/files/aGTBjpmwJTdaUEkqpehj" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
Component libraries **do not** follow the versioning and publishing flow that other libraries in Qonic do. When creating, modifying and deleting components and component libraries, this happens in real time. Other collaborators will see your components without you needing to publish any changes.
{% endhint %}

## Component Variants

Clicking a component name in the components panel will open the component details, listing the different variants of this component. Use variants to list e.g. doors with different sizes or furniture with different material variations. When creating a new component, it will by default only have one variant.

<div data-with-frame="true"><figure><img src="/files/4rIJo4NYHdexa3ZJvoF3" alt="" width="375"><figcaption></figcaption></figure></div>

To create a new variant, go to one of the component instances, and make the desired modifications. As soon as you modify a component instance, this modification will be indicated in the Inspect Panel.

<div data-with-frame="true"><figure><img src="/files/I3HLJzaZKdyE6eYvnUrM" alt="" width="304"><figcaption></figcaption></figure></div>

When a component instance is modified (i.e. it deviates from its definition), you will have the option to create a new variant from this. Select the modified instance and open up the right-click menu.&#x20;

<figure><img src="/files/4E9j1i876TRcV4SYHBXP" alt="" width="563"><figcaption></figcaption></figure>

This will prompt you to enter a name and optionally more tags for this new variant.

<div data-with-frame="true"><figure><img src="/files/xwkz4oiZImSD0sqw6E64" alt="" width="339"><figcaption></figcaption></figure></div>

Repeat this step for every variant you wish to make. Each variant will be listed under the component details. You can now insert any of these variants directly into your model, and set one of these new variants as the default for this component. The default variant is the one that will be inserted if you do not specify which variant to use.&#x20;

<div data-with-frame="true"><figure><img src="/files/z707i00isY9b07RNpxDH" alt="" width="345"><figcaption></figcaption></figure></div>

If a component definition has more that one variant, you can swap out component instances with variations of its definition. Select the instances you want to replace, and in the right-click menu choose Replace with Variant.

<figure><img src="/files/xd16wgkzu135I2MmC1Py" alt="" width="563"><figcaption></figcaption></figure>

This allows you to pick from all available variants for this component, and replace your selection with this specific variant.&#x20;

<figure><img src="/files/qeckkQ4HG81XdkXj1h4S" alt="" width="563"><figcaption></figcaption></figure>
