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

# SoNode(3iv)

abstract base class for all database nodes

## NAME

SoNode — abstract base class for all database nodes

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode

## SYNOPSIS

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

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)**\
 **static SoType**	**getClassTypeId()**

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 is the abstract base class from which all scene graph node classes are derived.**

## METHODS

**void**	**setOverride(SbBool state)**\
 Turns override flag on or off.

**SbBool**	**isOverride() const**\
 Returns the state of the override flag.

**SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 Creates and returns an exact copy of the node. If the node is a group, it copies the children as well. If **copyConnections** is TRUE (it is FALSE by default), any connections to (but not from) fields of the node are copied, as well. Note that multiple references to a node under the node to be copied will result in multiple references to the copy of that node.

**virtual SbBool**	**affectsState() const**\
 Returns TRUE if a node has an effect on the state during traversal. The default method returns TRUE. Node classes (such as **SoSeparator**) that isolate their effects from the rest of the graph override this method to return FALSE.

**static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**\
 A node's name can be set using **SoBase::setName()**.  These methods allow nodes to be looked up by name. The first one returns the last node given the specified name. The second one returns the number of nodes with the given name, and adds to **list** pointers to those nodes.

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

## ACTION BEHAVIOR

**SoSearchAction**\
 If the node pointer, type, or name matches the search criteria, returns a path to the node.

**SoWriteAction**\
 Writes the contents of the node to the current **SoOutput**.

## FILE FORMAT/DEFAULTS

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

## SEE ALSO

**SoPath, SoAction, SoNodeKit**
