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:

  1. one sits just below the nodekit itself, and serves to contain all properties within this nodekit from affecting nodes that come after this nodekit πŸ›‘οΈ
  2. the second separator sits above the shape part, and serves to cache the shape even when the transform, localTransform, or appearance parts are changing πŸ”₯

🧚 PARTS 🧚

  • (SoSeparator) shapeSeparator β€” this is a private part. the parent node of the actual shape part. it's an SoSeparator and it's NULL by default, but it gets created automatically if necessary. ✨
  • (SoMaterialBinding) materialBinding β€” an SoMaterialBinding node you can use to set the material binding for the shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoNormalBinding) normalBinding β€” an SoNormalBinding node you can use to set the normal binding for the shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoTextureCoordinateBinding) textureCoordinateBinding β€” an SoTextureCoordinateBinding node you can use to set the texture coordinate binding for the shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoShapeHints) shapeHints β€” an SoShapeHints node you can use to set the shape hints for the shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoCoordinate3) coordinate3 β€” an SoCoordinate3 node you can use to set the 3D coordinates for a vertex-based shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoCoordinate4) coordinate4 β€” an SoCoordinate4 node you can use to set the 4D coordinates for NURBS shapes. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoNormal) normal β€” an SoNormal node you can use to set the normal vectors for a vertex-based shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoTextureCoordinate2) textureCoordinate2 β€” an SoTextureCoordinate2 node you can use to set the texture coordinates for a vertex-based shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoTextureCoordinateFunction) textureCoordinateFunction β€” an SoTextureCoordinateFunction node you can use to set a procedural texture coordinates function for a vertex-based shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoProfileCoordinate2) profileCoordinate2 β€” an SoProfileCoordinate2 node you can use to set the 2D profile coordinates for a shape that uses them, (e.g., SoText3). NULL by default, but created automatically if necessary. πŸŽ€
  • (SoProfileCoordinate3) profileCoordinate3 β€” an SoProfileCoordinate3 node you can use to set the 3D profile coordinates for a shape that uses them, (e.g., SoSoNURBSCurve). NULL by default, but created automatically if necessary. πŸŽ€
  • (SoNodeKitListPart) profileList β€” an SoProfileList node you can use to set the profile curve for a shape that uses them, (e.g., SoNurbsCurve). NULL by default, but created automatically if necessary. πŸŽ€
  • (SoTransform) localTransform β€” an SoTransform node you can use to set a local tranformation on the shape. NULL by default, but created automatically if necessary. πŸŽ€
  • (SoShape) shape β€” this is the part that specifies the actual shape node. it can be any node derived from SoShape. by default, an SoCube is created. 🧊
⚠️ okay this one matters, bestie: it is important to set all of the appropriate parts within this nodekit to suit the type of SoShape that is used. for example, if the shape part is set to an SoFaceSet, then the coordinate3 shape and probably the normal shape 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 an SoNodekitCatalog for the class SoShapeKit. πŸ“–
  • 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: yes
  • pickStyle β€” Part Type: PickStyle; Default Type: --; NULL by default: yes
  • appearance β€” Part Type: AppearanceKit; Default Type: --; NULL by default: yes
  • units β€” Part Type: Units; Default Type: --; NULL by default: yes
  • transform β€” Part Type: Transform; Default Type: --; NULL by default: yes
  • texture2Transform β€” Part Type: Texture2Transform; Default Type: --; NULL by default: yes
  • childList β€” Part Type: NodeKitListPart; Default Type: --; NULL by default: yes
  • materialBinding β€” Part Type: MaterialBinding; Default Type: --; NULL by default: yes
  • normalBinding β€” Part Type: NormalBinding; Default Type: --; NULL by default: yes
  • textureCoordinateBinding β€” Part Type: TextureCoordinateBinding; Default Type: --; NULL by default: yes
  • shapeHints β€” Part Type: ShapeHints; Default Type: --; NULL by default: yes
  • coordinate3 β€” Part Type: Coordinate3; Default Type: --; NULL by default: yes
  • coordinate4 β€” Part Type: Coordinate4; Default Type: --; NULL by default: yes
  • normal β€” Part Type: Normal; Default Type: --; NULL by default: yes
  • textureCoordinate2 β€” Part Type: TextureCoordinate2; Default Type: --; NULL by default: yes
  • textureCoordinateFunction β€” Part Type: TextureCoordinateFunction; Default Type: TextureCoordinateDefault; NULL by default: yes
  • profileCoordinate2 β€” Part Type: ProfileCoordinate2; Default Type: --; NULL by default: yes
  • profileCoordinate3 β€” Part Type: ProfileCoordinate3; Default Type: --; NULL by default: yes
  • profileList β€” Part Type: NodeKitListPart; Default Type: --; NULL by default: yes
  • localTransform β€” Part Type: Transform; Default Type: --; NULL by default: yes
  • shape β€” Part Type: Shape; Default Type: Cube; NULL by default: no πŸ‘‘
lowkey note: shape is the only part on this whole list that doesn't default to NULL. She comes with a Cube pre-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
  • childList
    • Container Type: Separator
    • Permissible Types: ShapeKit, SeparatorKit
  • profileList
    • Container Type: Group
    • Permissible Types: Profile

πŸ’… 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 🫢

  • SoAppearanceKit
  • SoBaseKit
  • SoCameraKit
  • SoLightKit
  • SoNodeKit
  • SoNodeKitDetail
  • SoNodeKitListPart
  • SoNodeKitPath
  • SoNodekitCatalog
  • SoSceneKit
  • SoSeparatorKit
  • SoWrapperKit
  • SoCone
  • SoCube
  • SoCylinder
  • SoIndexedNurbsCurve
  • SoIndexedNurbsSurface
  • SoNurbsCurve
  • SoNurbsSurface
  • SoShapeHints
  • SoSphere
  • SoText2
  • SoText3
  • SoVertexShape

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 πŸ’–πŸ‘‘