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

# SoCone(3iv)

cone shape node

## NAME

SoCone — cone shape node

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoShape \> SoCone

## SYNOPSIS

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

**enum Part {** **SoCone::SIDES**	The conical part\
 **SoCone::BOTTOM**	The bottom circular face\
 **SoCone::ALL**	All parts\
 **}**

Fields from class SoCone:

**SoSFBitMask**	**parts**\
 **SoSFFloat**	**bottomRadius**\
 **SoSFFloat**	**height**

Methods from class SoCone:

	**SoCone()**\
 **void**	**addPart(SoCone::Part part)**\
 **void**	**removePart(SoCone::Part part)**\
 **SbBool**	**hasPart(SoCone::Part part) const**\
 **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 represents a simple cone whose central axis is aligned with the y-axis. By default, the cone is centered at (0,0,0) and has a size of -1 to +1 in all three directions. The cone has a radius of** **1 at the bottom and a height of 2, with its apex at 1. The cone has two parts: the sides and the bottom.**

**The cone is transformed by the current cumulative transformation and is drawn with the current lighting** **model, drawing style, material, and geometric complexity.**

**If the current material binding is PER\_PART** or **PER\_PART\_INDEXED**, the first current material is used for the sides of the cone, and the second is used for the bottom. Otherwise, the first material is used for the entire cone.

When a texture is applied to a cone, it is applied differently to the sides and bottom. On the sides, the texture wraps counterclockwise (from above) starting at the back of the cone. The texture has a vertical seam at the back, intersecting the yz-plane. For the bottom, a circle is cut out of the texture square and applied to the cone's base circle. The texture appears right side up when the top of the cone is tilted away from the camera.

## FIELDS

**SoSFBitMask**	**parts**\
 Visible parts of cone.

**SoSFFloat**	**bottomRadius**\
 **SoSFFloat**	**height**\
 These define the cone's height and the radius of the base circle; values must be greater than 0.0.

## METHODS

	**SoCone()**\
 Creates a cone node with default settings.

**void**	**addPart(SoCone::Part part)**\
 **void**	**removePart(SoCone::Part part)**\
 These are convenience functions that make it easy to turn on or off a part of the cone.

**SbBool**	**hasPart(SoCone::Part part) const**\
 This convenience function returns whether a given part is on or off.

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

## ACTION BEHAVIOR

**SoGLRenderAction**\
 Draws cone based on the current coordinates, materials, drawing style, and so on.

**SoRayPickAction**\
 Intersects the ray with the cone. The part of the cone that was picked is available from the **SoConeDetail**.

**SoGetBoundingBoxAction**\
 Computes the bounding box that encloses the cone.

**SoCallbackAction**\
 If any triangle callbacks are registered with the action, they will be invoked for each successive triangle that approximates the cone.

## FILE FORMAT/DEFAULTS

```
Cone {
parts	ALL
bottomRadius	1
height	2
}
```

## SEE ALSO

**SoConeDetail, SoCube, SoCylinder, SoSphere**
