SOSHAPEKIT(3iv)
π SoShapeKit π
okay bestie, sit down, we're doing SoShapeKit(3IV) β the nodekit that literally makes shapes. geometry queen. the blueprint. the moment. β¨
πΈ NAME πΈ
SoShapeKit β shape nodekit class. that's it, that's the whole vibe. it's a nodekit. it holds shapes. iconic behavior honestly. π
π¦ INHERITS FROM π¦
SoBase > SoFieldContainer > SoNode > SoBaseKit > SoSeparatorKit > SoShapeKit
so she's got lineage, okay? she came from SoBaseKit, who came from SoSeparatorKit, and she carries all of that with her. generational talent fr fr. π
β¨ SYNOPSIS β¨
include her like this, no cap:
#include <Inventor/nodekits/SoShapeKit.h>
π Fields from class SoSeparatorKit
SoSFEnum renderCaching
SoSFEnum boundingBoxCaching
SoSFEnum renderCulling
SoSFEnum pickCulling
π Parts from class SoShapeKit
(SoSeparator) shapeSeparator
(SoMaterialBinding) materialBinding
(SoNormalBinding) normalBinding
(SoTextureCoordinateBinding)
textureCoordinateBinding
(SoShapeHints) shapeHints
(SoCoordinate3) coordinate3
(SoCoordinate4) coordinate4
(SoNormal) normal
(SoTextureCoordinate2) textureCoordinate2
(SoTextureCoordinateFunction)
textureCoordinateFunction
(SoProfileCoordinate2) profileCoordinate2
(SoProfileCoordinate3) profileCoordinate3
(SoNodeKitListPart) profileList
(SoTransform) localTransform
(SoShape) shape
π Parts from class SoSeparatorKit
(SoPickStyle) pickStyle
(SoAppearanceKit) appearance
(SoUnits) units
(SoTransform) transform
(SoTexture2Transform) texture2Transform
(SoNodeKitListPart) childList
π Parts from class SoBaseKit
(SoNodeKitListPart) callbackList
π Methods from class SoShapeKit
SoShapeKit()
static const SoNodekitCatalog *
getClassNodekitCatalog() const
static SoType getClassTypeId()
π Methods from class SoBaseKit
virtual const SoNodekitCatalog *
getNodekitCatalog() const
virtual SoNode * getPart(const SbName &partName, SbBool
makeIfNeeded)
SbString getPartString(const SoBase *part)
virtual SoNodeKitPath * createPathToPart(const SbName &partName, SbBool
makeIfNeeded, const SoPath *pathToExtend =
NULL)
virtual SbBool setPart(const SbName &partName, SoNode *newPart)
SbBool set(char *partName, char *parameters)
SbBool set(char *nameValuePairs)
static SbBool isSearchingChildren()
static void setSearchingChildren(SbBool newVal)
π 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)
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
π Macros from class SoBaseKit
SO_GET_PART(kit, partName, partClass)
SO_CHECK_PART(kit, partName, partClass)
π DESCRIPTION π
so. SoShapeKit is a nodekit for creating a shape β like, actual geometry. she's derived from SoSeparatorKit and SoBaseKit, which means she inherits all the parts those two define. all of them. she's not gatekeeping. π«Ά
on top of that, SoShapeKit adds a whole bunch of parts you can use to define a variety of shape objects, plus a localTransform part, and obviously a shape part. (the main character. the title role. β¨)
every property node you need to define any of the Inventor shapes is chillin' in here as a part. and here's the cute part: not all of these parts (nodes) are needed for any one type of shape. like, if you set the shape part to be an SoSphere node, then it is not necessary to create a profileCoordinate3 part, because it will be ignored in drawing the sphere anyway. π and the unneeded parts will not be created, so there's no performance penalty for using this class of node. efficient queen behavior. π
this class contains two private parts, and they're both SoSeparator nodes:
- one sits just below the nodekit itself, and serves to contain all properties within this nodekit from affecting nodes that come after this nodekit π‘οΈ
- the second separator sits above the
shapepart, and serves to cache the shape even when thetransform,localTransform, orappearanceparts are changing π₯
π§ PARTS π§
(SoSeparator)shapeSeparatorβ this is a private part. the parent node of the actualshapepart. it's anSoSeparatorand it'sNULLby default, but it gets created automatically if necessary. β¨(SoMaterialBinding)materialBindingβ anSoMaterialBindingnode you can use to set the material binding for the shape.NULLby default, but created automatically if necessary. π(SoNormalBinding)normalBindingβ anSoNormalBindingnode you can use to set the normal binding for the shape.NULLby default, but created automatically if necessary. π(SoTextureCoordinateBinding)textureCoordinateBindingβ anSoTextureCoordinateBindingnode you can use to set the texture coordinate binding for the shape.NULLby default, but created automatically if necessary. π(SoShapeHints)shapeHintsβ anSoShapeHintsnode you can use to set the shape hints for the shape.NULLby default, but created automatically if necessary. π(SoCoordinate3)coordinate3β anSoCoordinate3node you can use to set the 3D coordinates for a vertex-based shape.NULLby default, but created automatically if necessary. π(SoCoordinate4)coordinate4β anSoCoordinate4node you can use to set the 4D coordinates for NURBS shapes.NULLby default, but created automatically if necessary. π(SoNormal)normalβ anSoNormalnode you can use to set the normal vectors for a vertex-based shape.NULLby default, but created automatically if necessary. π(SoTextureCoordinate2)textureCoordinate2β anSoTextureCoordinate2node you can use to set the texture coordinates for a vertex-based shape.NULLby default, but created automatically if necessary. π(SoTextureCoordinateFunction)textureCoordinateFunctionβ anSoTextureCoordinateFunctionnode you can use to set a procedural texture coordinates function for a vertex-based shape.NULLby default, but created automatically if necessary. π(SoProfileCoordinate2)profileCoordinate2β anSoProfileCoordinate2node you can use to set the 2D profile coordinates for a shape that uses them, (e.g.,SoText3).NULLby default, but created automatically if necessary. π(SoProfileCoordinate3)profileCoordinate3β anSoProfileCoordinate3node you can use to set the 3D profile coordinates for a shape that uses them, (e.g.,SoSoNURBSCurve).NULLby default, but created automatically if necessary. π(SoNodeKitListPart)profileListβ anSoProfileListnode you can use to set the profile curve for a shape that uses them, (e.g.,SoNurbsCurve).NULLby default, but created automatically if necessary. π(SoTransform)localTransformβ anSoTransformnode you can use to set a local tranformation on the shape.NULLby default, but created automatically if necessary. π(SoShape)shapeβ this is the part that specifies the actual shape node. it can be any node derived fromSoShape. by default, anSoCubeis created. π§
β οΈ okay this one matters, bestie: it is important to set all of the appropriate parts within this nodekit to suit the type ofSoShapethat is used. for example, if theshapepart is set to anSoFaceSet, then thecoordinate3shape and probably thenormalshape would be set as well. see the reference page of the shape you're using for details on which other nodes are necessary. don't skip the reading, i'm begging. π
π METHODS π
SoShapeKit()β Constructor. that's her. the birth. πstatic const SoNodekitCatalog * getClassNodekitCatalog() constβ returns anSoNodekitCatalogfor the classSoShapeKit. πstatic SoType getClassTypeId()β returns type identifier for this class. π·οΈ
and that's only part 1, bestie β more is coming, don't go anywhere π
π CATALOG PARTS π
okay bestie, this is the full receipts list of every single part this nodekit can hold π The columns are: the part's name, what type of node it wants, what it defaults to when you don't specify a type, and whether it's NULL by default.
β¨ All the parts β¨
callbackListβ Part Type:NodeKitListPart; Default Type:--; NULL by default: yespickStyleβ Part Type:PickStyle; Default Type:--; NULL by default: yesappearanceβ Part Type:AppearanceKit; Default Type:--; NULL by default: yesunitsβ Part Type:Units; Default Type:--; NULL by default: yestransformβ Part Type:Transform; Default Type:--; NULL by default: yestexture2Transformβ Part Type:Texture2Transform; Default Type:--; NULL by default: yeschildListβ Part Type:NodeKitListPart; Default Type:--; NULL by default: yesmaterialBindingβ Part Type:MaterialBinding; Default Type:--; NULL by default: yesnormalBindingβ Part Type:NormalBinding; Default Type:--; NULL by default: yestextureCoordinateBindingβ Part Type:TextureCoordinateBinding; Default Type:--; NULL by default: yesshapeHintsβ Part Type:ShapeHints; Default Type:--; NULL by default: yescoordinate3β Part Type:Coordinate3; Default Type:--; NULL by default: yescoordinate4β Part Type:Coordinate4; Default Type:--; NULL by default: yesnormalβ Part Type:Normal; Default Type:--; NULL by default: yestextureCoordinate2β Part Type:TextureCoordinate2; Default Type:--; NULL by default: yestextureCoordinateFunctionβ Part Type:TextureCoordinateFunction; Default Type:TextureCoordinateDefault; NULL by default: yesprofileCoordinate2β Part Type:ProfileCoordinate2; Default Type:--; NULL by default: yesprofileCoordinate3β Part Type:ProfileCoordinate3; Default Type:--; NULL by default: yesprofileListβ Part Type:NodeKitListPart; Default Type:--; NULL by default: yeslocalTransformβ Part Type:Transform; Default Type:--; NULL by default: yesshapeβ Part Type:Shape; Default Type:Cube; NULL by default: no π
lowkey note:shapeis the only part on this whole list that doesn't default to NULL. She comes with aCubepre-loaded. main character energy fr fr π¦
πΈ Extra info for the list parts up there πΈ
these three are the β¨list girliesβ¨ so they get their own lil breakdown β what container they live in and which types are actually allowed to move in π
callbackList- Container Type:
Separator - Permissible Types:
Callback,EventCallback
- Container Type:
childList- Container Type:
Separator - Permissible Types:
ShapeKit,SeparatorKit
- Container Type:
profileList- Container Type:
Group - Permissible Types:
Profile
- Container Type:
π FILE FORMAT/DEFAULTS π
this is what the whole thing looks like written out, bestie. every part chillin' at NULL except our girl shape, who showed up with a Cube already in hand π
ShapeKit {
renderCaching AUTO
boundingBoxCaching AUTO
renderCulling AUTO
pickCulling AUTO
callbackList NULL
pickStyle NULL
appearance NULL
units NULL
transform NULL
texture2Transform NULL
childList NULL
materialBinding NULL
normalBinding NULL
textureCoordinateBinding NULL
shapeHints NULL
coordinate3 NULL
coordinate4 NULL
normal NULL
textureCoordinate2 NULL
textureCoordinateFunction NULL
profileCoordinate2 NULL
profileCoordinate3 NULL
profileList NULL
localTransform NULL
shape Cube {
}
}
π¦ SEE ALSO π¦
go read these next, i promise they're worth it π«Ά
SoAppearanceKitSoBaseKitSoCameraKitSoLightKitSoNodeKitSoNodeKitDetailSoNodeKitListPartSoNodeKitPathSoNodekitCatalogSoSceneKitSoSeparatorKitSoWrapperKitSoConeSoCubeSoCylinderSoIndexedNurbsCurveSoIndexedNurbsSurfaceSoNurbsCurveSoNurbsSurfaceSoShapeHintsSoSphereSoText2SoText3SoVertexShape
and that's a wrap on SoShapeKit, bestie!! πβ¨ you just read the whole thing, no cap. this page is from the SoShapeKit(3IV) manual β version tag (3IV), date field left blank like a mystery girlie π β go forth and build shapes, you absolute icon ππ
π¦ where this page comes from
- debian bookworm: inventor-doc 2.1.5-10+dfsg-2 Β· LGPL-2.0-or-later
- debian trixie: inventor-doc 2.1.6+ds-2 Β· LGPL-2.0-or-later
- ubuntu jammy: inventor-doc 2.1.5-10-24
- ubuntu noble: inventor-doc 2.1.5-10+dfsg-2.1build2 Β· LGPL-2.0-or-later
- ubuntu questing: inventor-doc 2.1.6+ds-2
- ubuntu resolute: inventor-doc 2.1.6.1+ds-1 Β· LGPL-2.0-or-later
- ubuntu stonking: inventor-doc 2.1.6.1+ds-1 Β· LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms