---
name: "SoConcatenate"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoConcatenate/3iv"
---

# SoConcatenate(3iv)

joins separate fields into a single multiple-value field

## NAME

SoConcatenate — joins separate fields into a single multiple-value field

## INHERITS FROM

SoBase \> SoFieldContainer \> SoEngine \> SoConcatenate

## SYNOPSIS

**#include \<Inventor/engines/SoConcatenate.h\>**

Inputs from class SoConcatenate:

**\<inputType\>**	**input\[10\]**

Outputs from class SoConcatenate:

**(\<outputType\>)**	**output**

Methods from class SoConcatenate:

	**SoConcatenate(SoType inputType)**

Methods from class SoEngine:

**static SoType**	**getClassTypeId()**\
 **virtual int**	**getOutputs(SoEngineOutputList &list) const**\
 **SoEngineOutput \***	**getOutput(const SbName &outputName) const**\
 **SbBool**	**getOutputName(const SoEngineOutput \*output, SbName &outputName) const**\
 **SoEngine \***	**copy() const**\
 **static SoEngine \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoEngineList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**This engine joins up to 10 separate fields of a type into a single multiple-valued field of the same type. The type of the input fields can be any subclass of SoMField** The type is specified when an instance of the class is created. For example, **SoConcatenate(SoMFFloat::getClassTypeId())**  creates an engine that concatenates floating-point values.

The **input** field is a 10-element array, where each element can be connected to single- or multiple-valued fields. All the values in the input are concatenated together to form one multiple-value field. For example, if **input\[0\]** contains 10 values and **input\[1\]** contains 3 values, the output will contain 13 values.

Note that, unlike the output of most engines, **output** is a pointer. Note also that by default **input** does not contain any values, and no value is output from the engine.

## INPUTS

**\<inputType\>**	**input\[10\]**

## OUTPUTS

**(\<outputType\>)**	**output**

## METHODS

	**SoConcatenate(SoType inputType)**\
 Constructor. The argument specifies the type of values to concatenate.

## FILE FORMAT/DEFAULTS

```
Concatenate {
type	<inputType>
input0	[]
input1	[]
input2	[]
input3	[]
input4	[]
input5	[]
input6	[]
input7	[]
input8	[]
input9	[]
}
```

## SEE ALSO

**SoEngineOutput, SoGate, SoSelectOne**
