# Welcome to Karamba3D Scripting Guide

**Using Karamba3D in C# Scripts**

This manual provides guidance on utilizing Karamba3D within C# scripts. As C# is part of the .NET ecosystem, the information presented here also applies to other .NET-based scripting languages, such as IronPython, F#, Visual Basic, or any language built on the Common Language Infrastructure (CLI).

**Python Support in Karamba3D**

* **IronPython Examples**: [Section 2.7](https://scripting.karamba3d.com/2.-scripting-with-karamba3d-inside-grasshopper/2.7-the-ironpython-component) includes example scripts written in IronPython. While IronPython is compatible with the .NET framework, its utility is limited due to a smaller selection of available libraries.
* **CPython in Rhino 8**: With Rhino 8, it is now possible to embed CPython scripts in Grasshopper definitions. CPython supports a comprehensive set of libraries, making it significantly more versatile than IronPython. Examples leveraging Grasshopper's new **"Python 3 Component"** are provided in [Section 2.8](https://scripting.karamba3d.com/2.-scripting-with-karamba3d-inside-grasshopper/2.8-the-python-3-component).

**Scope of the Manual**

This manual does not serve as an introduction to C# or Python. For beginners, refer to resources such as [\[1\]](https://scripting.karamba3d.com/bibliography) or [\[3\]](https://scripting.karamba3d.com/bibliography). For advanced topics, which are not essential for understanding this manual but may be beneficial, see the highly regarded **“C# in Depth”** [\[4\]](https://scripting.karamba3d.com/bibliography).

{% hint style="info" %}
Examples detailed in this guide can be found in the "[Karamba3D Scripting Examples Github](https://github.com/karamba3d/K3D_Scripting)"-collection.
{% endhint %}

## Citing Karamba3D

In case you use Karamba3D for your scientific work, please cite the following paper:

> Preisinger, C. (2013), *Linking Structure and Parametric Geometry*. Architectural Design, 83: 110-113\
> DOI: 10.1002/ad.1564.

## Disclaimer

Although being tested thoroughly Karamba3D probably contains errors – therefore no guarantee can be given that Karamba3D computes correct results. Use of Karamba3D is entirely at your own risk. Please read the [license agreement](https://www.karamba3d.com/buy/license-agreement/) that comes with Karamba3D in case of further questions.

This manual is written by Clemens Preisinger.\
Editing by Georg Lobe.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://scripting.karamba3d.com/undefined.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
