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

# SoProfile(3iv)

abstract base class for all profile nodes

## NAME

SoProfile — abstract base class for all profile nodes

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoProfile

## SYNOPSIS

**#include \<Inventor/nodes/SoProfile.h\>**

**enum Profile {** **SoProfile::START\_FIRST**	Start a new profile and remove any existing profiles from the current list\
 **SoProfile::START\_NEW**	Start a new profile and add it to the current list\
 **SoProfile::ADD\_TO\_CURRENT**	Add to end of the last profile in the current list\
 **}**

Fields from class SoProfile:

**SoMFInt32**	**index**\
 **SoSFEnum**	**linkage**

Methods from class SoProfile:

**static SoType**	**getClassTypeId()**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &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 node is the abstract base class for all profile nodes, which define 2D curves. A profile is not itself geometry, but is used to change or delimit the geometry of something else. For an SoText3** node, the profile determines the cross-section of the side of each text character. For an **SoNurbsSurface** node, the profile is used to specify trim curves for the surface.

The current profile state can consist of one or more profiles, each of which can be made up of one or more instances of **SoProfile** subclass nodes. Each profile node specifies (in the **index** field) a set of indices that refer to the current set of profile coordinates, specified using either an **SoProfileCoordinate2** or an **SoProfileCoordinate3** node. No profile curve should intersect itself or another profile curve.

Profiles are part of the state, just like all other properties. The state contains a current list of profiles. Depending on the **linkage** field, a profile can clear the list and begin a new profile, begin a new profile at the end of those already in the list, or append to the last profile in the current list. Note that when appending profile B to the end of profile A, B must begin at the same 2D point at which A ends.

## FIELDS

**SoMFInt32**	**index**\
 Indices into profile coordinates.

**SoSFEnum**	**linkage**\
 Specifies connectivity of profile curve with respect to profiles in current list in state.

## METHODS

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction**\
 Adds profile to current traversal state.

## FILE FORMAT/DEFAULTS

This is an abstract class. See the reference page of a derived class for the format and default values.

## SEE ALSO

**SoLinearProfile, SoNurbsProfile, SoNurbsSurface, SoProfileCoordinate2, SoProfileCoordinate3, SoText3**
