Open Search
    BaseObject Class Reference

    #include <c4d_baseobject.h>

    Inheritance diagram for BaseObject:

    Detailed Description

    All objects in Cinema 4D are derived from the BaseObject class.
    Contains methods for the object's position, scale and rotation, as well as for accessing the sub-items of the object (e.g. tags and animation tracks).

    Note
    Has to be created with Alloc() and destroyed with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

    Public Member Functions

    const MatrixGetDeformMatrix () const
     
    void SetDeformMatrix (const Matrix &dm)
     
    void ClearDeformMatrix ()
     
    const MatrixGetUndeformedMl () const
     
    const MatrixGetUndeformedMlInverse () const
     
    Matrix GetUndeformedMg () const
     
    Bool HasDeformMatrix () const
     
    - Public Member Functions inherited from BaseList2D
    void SetBit (Int32 mask)
     
    Bool GetBit (Int32 mask) const
     
    void DelBit (Int32 mask)
     
    void ToggleBit (Int32 mask)
     
    Int32 GetAllBits () const
     
    void SetAllBits (Int32 bits)
     
    void SetBitEx (Int32 mask, Int32 flags)
     
    const CharGetViewportRenderId (VIEWPORT_RENDER_ID typeId) const
     
    BaseList2DGetNext ()
     
    const BaseList2DGetNext () const
     
    BaseList2DGetPred ()
     
    const BaseList2DGetPred () const
     
    BaseContainer GetData ()
     
    void SetData (const BaseContainer &bc, Bool add=true)
     
    const BaseContainerGetDataInstanceRef () const
     
    BaseContainerGetDataInstanceRef ()
     
    const BaseContainerGetDataInstance () const
     
    BaseContainerGetDataInstance ()
     
    String GetName () const
     
    void SetName (const maxon::String &name, Bool setDirty=true)
     
    String GetBubbleHelp ()
     
    Bool TransferGoal (BaseList2D *dst, Bool undolink)
     
    Bool TransferMarker (BaseList2D *dst) const
     
    Bool CopyDynamicDescriptionFrom (const BaseList2D *src)
     
    Bool Scale (Float scale)
     
    Bool Edit ()
     
    void GetIcon (IconData *dat)
     
    GeListHeadGetNLARoot (Bool create)
     
    BaseList2DAnimationLayerRemap (BaseObject **layer=nullptr)
     
    String GetTypeName () const
     
    const BaseList2DGetMain () const
     
    BaseList2DGetMain ()
     
    void InsertTrackSorted (CTrack *track)
     
    Bool AddEventNotification (BaseList2D *bl, NOTIFY_EVENT eventid, NOTIFY_EVENT_FLAG flags, const BaseContainer *data)
     
    Bool RemoveEventNotification (const BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
     
    Bool FindEventNotification (const BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
     
    Bool SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
     
    DESCIDSTATE GetDescIDState (const DescID &id, Bool tolerant) const
     
    GeListHeadGetOverrideRoot (Bool create)
     
    BaseOverrideGetFirstOverride ()
     
    GeListHeadGetShaderRepositoryRoot (Bool create)
     
    GeListHeadGetHiddenShaderRoot (Bool create)
     
    maxon::NimbusForwardRef GetNimbusRef (const maxon::Id &spaceId) const
     
    maxon::Result< maxon::NimbusForwardRefPrivateGetOrCreateNimbusRef (const maxon::Id &spaceId)
     
    void RemoveNimbusRef (const maxon::Id &spaceId)
     
    maxon::Result< maxon::HashMap< maxon::Id, maxon::NimbusForwardRef > > GetAllNimbusRefs () const
     
    Bool IsNodeBased () const
     
    maxon::Result< BoolGetAccessedObjects (METHOD_ID method, AccessedObjectsCallback &access) const
     
    maxon::Result< BoolGetAccessedObjectsRec (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, Bool withSiblings, Bool withChildren, AccessedObjectsCallback &access) const
     
    maxon::Result< BoolGetAccessedObjectsOfHierarchy (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
     
    maxon::Result< BoolGetAccessedObjectsOfChildren (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
     
    maxon::Result< BoolGetAccessedObjectsOfFirstChildHierarchy (ACCESSED_OBJECTS_MASK read, ACCESSED_OBJECTS_MASK write, METHOD_ID method, AccessedObjectsCallback &access) const
     
    maxon::Result< maxon::GenericDataGroupChanges ()
     
    void GetMarkerStampEx (UInt32 *l1, UInt32 *l2)
     
    const GeMarkerGetMarker () const
     
    void SetMarker (const GeMarker &m)
     
    Bool AddUniqueID (Int32 appid, const Char *const mem, Int bytes)
     
    Bool FindUniqueID (Int32 appid, const Char *&mem, Int &bytes) const
     
    Int32 GetUniqueIDCount () const
     
    Bool GetUniqueIDIndex (Int32 idx, Int32 &id, const Char *&mem, Int &bytes) const
     
    Bool SetAnimatedParameter (const CTrack *track, const DescID &id, const GeData &t_data1, const GeData &t_data2, Float mix, DESCFLAGS_SET flags)
     
    Bool GetAnimatedParameter (const DescID &id, GeData &t_data1, GeData &t_data2, Float &mix, DESCFLAGS_GET flags) const
     
    BaseShaderGetFirstShader () const
     
    void InsertShader (BaseShader *shader, BaseShader *pred=nullptr)
     
    void ClearKeyframeSelection ()
     
    Bool FindKeyframeSelection (const DescID &id)
     
    Bool SetKeyframeSelection (const DescID &id, Bool selection)
     
    Bool KeyframeSelectionContent ()
     
    LayerObjectGetLayerObject (const BaseDocument *doc)
     
    const LayerObjectGetLayerObject (const BaseDocument *doc) const
     
    Bool SetLayerObject (const LayerObject *layer)
     
    const LayerDataGetLayerData (const BaseDocument *doc, Bool rawdata=false) const
     
    Bool SetLayerData (BaseDocument *doc, const LayerData &data)
     
    GeListHeadGetCTrackRoot (Bool create)
     
    const GeListHeadGetCTrackRoot () const
     
    const CTrackGetFirstCTrack () const
     
    CTrackGetFirstCTrack ()
     
    const CTrackFindCTrack (const DescID &id) const
     
    CTrackFindCTrack (const DescID &id)
     
    - Public Member Functions inherited from GeListNode
    GeListNodeGetNext ()
     
    const GeListNodeGetNext () const
     
    GeListNodeGetPred ()
     
    const GeListNodeGetPred () const
     
    GeListNodeGetDown ()
     
    const GeListNodeGetDown () const
     
    GeListNodeGetUp ()
     
    const GeListNodeGetUp () const
     
    GeListNodeGetDownLast ()
     
    const GeListNodeGetDownLast () const
     
    void InsertBefore (GeListNode *bl)
     
    void InsertAfter (GeListNode *bl)
     
    void InsertUnder (GeListNode *bl)
     
    void InsertUnderLast (GeListNode *bl)
     
    void Remove ()
     
    void FlushChilds ()
     
    void MoveChildrenTo (GeListNode *dest)
     
    GeListHeadGetListHead ()
     
    const GeListHeadGetListHead () const
     
    Int32 GetNodeID (Int32 index=0) const
     
    template<typename CAST >
    const CAST * GetNodeData (Int32 index=0) const
     
    template<typename CAST >
    CAST * GetNodeData (Int32 index=0)
     
    void SetCustomData (GeListNode *node)
     
    GeListNodeGetCustomData ()
     
    const GeListNodeGetCustomData () const
     
    const BaseDocumentGetDocument () const
     
    BaseDocumentGetDocument ()
     
    maxon::Result< BoolGetBranchInfo (const maxon::ValueReceiver< const BranchInfo & > &info, GETBRANCHINFO flags) const
     
    Bool IsDocumentRelated () const
     
    Int32 GetInfo () const
     
    Bool GetNBit (NBIT bit) const
     
    UInt32 GetNBitMask (Int32 index) const
     
    Bool ChangeNBit (NBIT bit, NBITCONTROL bitmode)
     
    - Public Member Functions inherited from C4DAtomGoal
    Bool HasLinks () const
     
    - Public Member Functions inherited from C4DAtom
    Int32 GetType () const
     
    Int32 GetRealType () const
     
    Int32 GetDiskType () const
     
    Bool IsInstanceOf (Int32 id) const
     
    Int32 GetClassification () const
     
    Bool Message (Int32 type, void *data=nullptr)
     
    Bool MultiMessage (MULTIMSG_ROUTE flags, Int32 type, void *data)
     
    C4DAtomGetClone (COPYFLAGS flags, AliasTrans *trn) const
     
    Bool CopyTo (C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn) const
     
    Bool Read (HyperFile *hf, Int32 id, Int32 level)
     
    Bool Write (HyperFile *hf) const
     
    Bool ReadObject (HyperFile *hf, Bool readheader)
     
    Bool WriteObject (HyperFile *hf) const
     
    Bool GetDescription (Description *description, DESCFLAGS_DESC flags) const
     
    Bool GetParameter (const DescID &id, GeData &t_data, DESCFLAGS_GET flags) const
     
    Bool SetParameter (const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
     
    DynamicDescriptionGetDynamicDescriptionWritable ()
     
    const DynamicDescriptionGetDynamicDescription () const
     
    Bool CopyDynamicDescriptionFrom (const BaseList2D *src)
     
    Bool GetEnabling (const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc) const
     
    Bool TranslateDescID (const DescID &id, DescID &res_id, C4DAtom *&res_at)
     
    UInt32 GetDirty (DIRTYFLAGS flags) const
     
    void SetDirty (DIRTYFLAGS flags)
     
    UInt32 GetHDirty (HDIRTYFLAGS mask) const
     
    void SetHDirty (HDIRTYFLAGS mask)
     

    Private Member Functions

     BaseObject ()
     
     ~BaseObject ()
     

    Alloc/Free

    static BaseObjectAlloc (Int32 type)
     
    static void Free (BaseObject *&bl)
     

    Navigation

    BaseObjectGetNext ()
     
    const BaseObjectGetNext () const
     
    BaseObjectGetPred ()
     
    const BaseObjectGetPred () const
     
    BaseObjectGetUp ()
     
    const BaseObjectGetUp () const
     
    BaseObjectGetDown ()
     
    const BaseObjectGetDown () const
     
    BaseObjectGetDownLast ()
     
    const BaseObjectGetDownLast () const
     

    Abs Pos/Scale/Rot

    Vector GetAbsPos () const
     
    void SetAbsPos (const Vector &v)
     
    Vector GetAbsScale () const
     
    void SetAbsScale (const Vector &v)
     
    Vector GetAbsRot () const
     
    void SetAbsRot (const Vector &v)
     

    Frozen Pos/Scale/Rot

    Vector GetFrozenPos () const
     
    void SetFrozenPos (const Vector &v)
     
    Vector GetFrozenScale () const
     
    void SetFrozenScale (const Vector &v)
     
    Vector GetFrozenRot () const
     
    void SetFrozenRot (const Vector &v)
     

    Rel Pos/Scale/Rot

    Vector GetRelPos () const
     
    void SetRelPos (const Vector &v)
     
    Vector GetRelScale () const
     
    void SetRelScale (const Vector &v)
     
    Vector GetRelRot () const
     
    void SetRelRot (const Vector &v)
     

    Ml/Mg Matrix

    const MatrixGetMl () const
     
    void SetMl (const Matrix &m)
     
    Matrix GetFrozenMln () const
     
    Matrix GetRelMln () const
     
    Matrix GetRelMl () const
     
    void SetRelMl (const Matrix &m)
     
    Matrix GetMg () const
     
    void SetMg (const Matrix &m)
     
    Matrix GetMln () const
     
    Matrix GetMgn () const
     
    Matrix GetUpMg () const
     
    void CopyMatrixTo (BaseObject *dst) const
     

    Bounding Box

    Vector GetMp () const
     
    Vector GetRad () const
     
    void GetDimension (Vector &mp, Vector &rad) const
     

    Editor/Render/Deform Mode

    Int32 GetEditorMode () const
     
    Int32 GetEditorModeH () const
     
    void SetEditorMode (Int32 mode)
     
    Int32 GetRenderMode () const
     
    Int32 GetRenderModeH () const
     
    void SetRenderMode (Int32 mode)
     
    Bool GetDeformMode () const
     
    void SetDeformMode (Bool mode)
     
    Int32 GetRealDeformMode () const
     
    void SetRealDeformMode (Int32 mode)
     

    Unique IP

    Int32 GetUniqueIP () const
     
    void SetUniqueIP (Int32 ip)
     

    Tag

    BaseTagGetFirstTag ()
     
    const BaseTagGetFirstTag () const
     
    BaseTagGetLastTag ()
     
    const BaseTagGetLastTag () const
     
    BaseTagGetTag (Int32 type, Int32 nr=0)
     
    const BaseTagGetTag (Int32 type, Int32 nr=0) const
     
    maxon::Block< const BaseTag *const > GetTagsOfType (Int32 type) const
     
    maxon::Block< BaseTag *const > GetTagsOfType (Int32 type)
     
    const void * GetTagDataR (Int32 type, Int32 nr=0) const
     
    void * GetTagDataW (Int32 type, Int32 nr=0)
     
    Int32 GetTagDataCount (Int32 type) const
     
    const VariableTagDataRef & GetVariableTagData (Int32 type, Int32 nr=0) const
     
    BaseTagMakeTag (Int32 type, BaseTag *pred=nullptr)
     
    VariableTagMakeVariableTag (Int32 type, Int32 count, BaseTag *pred=nullptr)
     
    void InsertTag (BaseTag *tp, BaseTag *pred=nullptr)
     
    void KillTag (Int32 type, Int32 nr=0)
     
    Bool CopyTagsTo (BaseObject *dest, Int32 visible, Int32 variable, Int32 hierarchical, AliasTrans *trans) const
     

    Cache

    BaseObjectGetCache ()
     
    const BaseObjectGetCache () const
     
    BaseObjectGetDeformCache ()
     
    const BaseObjectGetDeformCache () const
     
    LineObjectGetIsoparm ()
     
    void SetIsoparm (LineObject *l)
     
    BaseObjectGetCacheParent () const
     
    BaseObjectGetCacheTopParent () const
     

    Phong

    Bool SetPhong (Bool on, Bool anglelimit, Float angle)
     

    Dirty

    Bool IsDirty (DIRTYFLAGS flags) const
     
    void SetDirty (DIRTYFLAGS flags)
     
    Bool CheckCache (const HierarchyHelp *hh) const
     
    void Touch ()
     

    Color Properties

    void GetColorProperties (ObjectColorProperties *prop) const
     
    void SetColorProperties (ObjectColorProperties *prop)
     
    maxon::Opt< maxon::ColorGetDisplayColor () const
     

    Modeling Axis

    const MatrixGetModelingAxis (BaseDocument *doc)
     
    void SetModelingAxis (const Matrix &m)
     

    Hierarchy Clone

    BaseObjectGetAndCheckHierarchyClone (const HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, Int childCount, maxon::BaseArray< BaseObject * > *children, Bool addChildOrClone=false)
     
    BaseObjectGetAndCheckHierarchyClone (const HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, Bool allchildren)
     
    BaseObjectGetHierarchyClone (const HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans)
     
    BaseObjectGetHierarchyClone (const HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, DIRTYFLAGS dirtyflags)
     

    Dependence List

    void NewDependenceList ()
     
    Bool CompareDependenceList ()
     
    void AddDependence (const BaseObject *op)
     
    void AddDependence (const BaseObject *op, DIRTYFLAGS dirtyflags)
     
    void TouchDependenceList ()
     

    Rotation Order

    void SetRotationOrder (ROTATIONORDER order)
     
    ROTATIONORDER GetRotationOrder () const
     

    Synchronized Rotation Mode

    void SetQuaternionRotationMode (Bool active, Bool bUndo)
     
    Bool IsQuaternionRotationMode () const
     
    Bool SynchronizeVectorTrackKeys (Int32 vectorTrackID, Bool bUndo, BaseTime startRange=BaseTime(-108000, 1), BaseTime endRange=BaseTime(108000, 1))
     
    Bool FindBestEulerAngle (Int32 rotationTrackID, Bool bAdjustTangent, Bool bUndo, BaseTime startRange=BaseTime(-108000, 1), BaseTime endRange=BaseTime(108000, 1))
     
    Bool EvaluateSynchronizedRotation (const BaseTime &time, ANIMATEFLAGS flags, Vector *resultRotation=nullptr)
     

    Miscellaneous

    Bool GetVectorTracks (const DescID &id, CTrack *&xfound, CTrack *&yfound, CTrack *&zfound)
     
    Bool GetVectorCurves (CCurve *curveToSearch, CCurve *&xfound, CCurve *&yfound, CCurve *&zfound)
     
    UInt64 GetGUID () const
     
    Int32 GetHighlightHandle (BaseDraw *bd)
     
    SplineObjectGetRealSpline ()
     
    const SplineObjectGetRealSpline () const
     
    Float GetVisibility (Float parent) const
     
    Bool SearchHierarchy (const BaseObject *op) const
     

    Private

    BaseObjectGetOrigin (Bool safe)
     
    const BaseObjectGetOrigin (Bool safe) const
     
    void SetOrigin (BaseObject *origin)
     
    BaseObjectGetTopOrigin (Bool parent, Bool safe) const
     
    BaseObjectGetEditObject (BaseObject **psds, DISPLAYEDITSTATE state, Bool safetey=true) const
     
    void RemoveFromCache (Bool clearParentObject=true)
     
    DRAWRESULT ObjDraw (DRAWPASS drawpass, BaseDraw *bd, BaseDrawHelp *bh)
     
    maxon::Tuple< Bool, maxon::HashIntGetObjectDrawHash (Int32 type) const
     
    void GetDrawStateData (DrawStateData &state) const
     

    Additional Inherited Members

    - Static Public Member Functions inherited from BaseList2D
    static BaseList2DAlloc (Int32 type)
     
    static void Free (BaseList2D *&bl)
     
    - Static Public Attributes inherited from BaseList2D
    static const Int32 SETBIT_FLAG_NODIRTY
     
    static const Int32 SETBIT_FLAG_REMOVE
     

    Constructor & Destructor Documentation

    ◆ BaseObject()

    BaseObject ( )
    private

    ◆ ~BaseObject()

    ~BaseObject ( )
    private

    Member Function Documentation

    ◆ Alloc()

    static BaseObject* Alloc ( Int32  type)
    static

    Allocates a base object. Destroy the allocated base object with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

    Parameters
    [in]typeThe object type: Object Types
    Returns
    The allocated base object, or nullptr if the allocation failed.

    ◆ Free()

    static void Free ( BaseObject *&  bl)
    static

    Destructs base objects allocated with Alloc(). Use AutoAlloc to automate the allocation and destruction based on scope.

    Parameters
    [in,out]blThe base object to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

    ◆ GetNext() [1/2]

    BaseObject* GetNext ( )

    Gets the next object in the list. Convenience version of GeListNode::GetNext().

    Returns
    The next object, or nullptr if there is none. Cinema 4D owns the pointed object.

    ◆ GetNext() [2/2]

    const BaseObject* GetNext ( ) const

    ◆ GetPred() [1/2]

    BaseObject* GetPred ( )

    Gets the previous object in the list. Convenience version of GeListNode::GetPred().

    Returns
    The previous base object, or nullptr if there is none. Cinema 4D owns the pointed object.

    ◆ GetPred() [2/2]

    const BaseObject* GetPred ( ) const

    ◆ GetUp() [1/2]

    BaseObject* GetUp ( )

    Gets the parent object of the list node. Convenience version of GeListNode::GetUp().

    Returns
    The parent object, or nullptr if there is none. Cinema 4D owns the pointed object.

    ◆ GetUp() [2/2]

    const BaseObject* GetUp ( ) const

    ◆ GetDown() [1/2]

    BaseObject* GetDown ( )

    Gets the first child object of the list node. Convenience version of GeListNode::GetDown().

    Returns
    The first child object, or nullptr if there is none. Cinema 4D owns the pointed object.

    ◆ GetDown() [2/2]

    const BaseObject* GetDown ( ) const

    ◆ GetDownLast() [1/2]

    BaseObject* GetDownLast ( )

    Gets the last child base object of the list node. Convenience version of GeListNode::GetDownLast().

    Returns
    The last child object, or nullptr if there is none. Cinema 4D owns the pointed object.

    ◆ GetDownLast() [2/2]

    const BaseObject* GetDownLast ( ) const

    ◆ GetAbsPos()

    Vector GetAbsPos ( ) const

    Gets the absolute position of the object.
    These are the absolute local coordinates within the parent object.
    If the object has no parent then these are world coordinates.

    See also
    The BaseObject Manual
    Returns
    The object's absolute position.

    ◆ SetAbsPos()

    void SetAbsPos ( const Vector v)

    Sets the absolute local position of the object within its parent.
    These are the absolute local coordinates within the parent object.
    If the object has no parent then these are world coordinates.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's absolute position to set.

    ◆ GetAbsScale()

    Vector GetAbsScale ( ) const

    Gets the absolute scale of the object.
    This is relative to the object's parent if it has one.

    See also
    The BaseObject Manual
    Returns
    The object's absolute scale.

    ◆ SetAbsScale()

    void SetAbsScale ( const Vector v)

    Sets the absolute scale of the object.
    This is relative to the object's parent if it has one.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's absolute scale to set.

    ◆ GetAbsRot()

    Vector GetAbsRot ( ) const

    Gets the absolute HPB rotation of the object.
    This is relative to the object's parent if it has one.

    See also
    The BaseObject Manual
    Returns
    The object's absolute HPB rotation.

    ◆ SetAbsRot()

    void SetAbsRot ( const Vector v)

    Sets the absolute HPB rotation of the object.
    This is relative to the object's parent if it has one.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's absolute HPB rotation to set.

    ◆ GetFrozenPos()

    Vector GetFrozenPos ( ) const

    Gets the frozen position of the object.

    See also
    The BaseObject Manual
    Returns
    The object's frozen position.

    ◆ SetFrozenPos()

    void SetFrozenPos ( const Vector v)

    Sets the frozen position of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's frozen position to set.

    ◆ GetFrozenScale()

    Vector GetFrozenScale ( ) const

    Gets the frozen scale of the object.

    See also
    The BaseObject Manual
    Returns
    The object's frozen scale.

    ◆ SetFrozenScale()

    void SetFrozenScale ( const Vector v)

    Sets the frozen scale of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's frozen scale to set.

    ◆ GetFrozenRot()

    Vector GetFrozenRot ( ) const

    Gets the frozen HPB rotation of the object.

    See also
    The BaseObject Manual
    Returns
    The object's frozen HPB rotation.

    ◆ SetFrozenRot()

    void SetFrozenRot ( const Vector v)

    Sets the frozen HPB rotation of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's frozen HPB rotation to set.

    ◆ GetRelPos()

    Vector GetRelPos ( ) const

    Get the relative position of the object.

    See also
    The BaseObject Manual
    Returns
    The object's relative position.

    ◆ SetRelPos()

    void SetRelPos ( const Vector v)

    Sets the relative position of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's relative position to set.

    ◆ GetRelScale()

    Vector GetRelScale ( ) const

    Gets the relative scale of the object.

    See also
    The BaseObject Manual
    Returns
    The object's relative scale.

    ◆ SetRelScale()

    void SetRelScale ( const Vector v)

    Sets the relative scale of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's relative scale to set.

    ◆ GetRelRot()

    Vector GetRelRot ( ) const

    Gets the relative HPB rotation of the object.

    See also
    The BaseObject Manual
    Returns
    The object's relative scale.

    ◆ SetRelRot()

    void SetRelRot ( const Vector v)

    Sets the relative HPB rotation of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]vThe object's relative rotation to set.

    ◆ GetMl()

    const Matrix& GetMl ( ) const

    Gets the local matrix representing the object's position, scale and rotation.

    Returns
    The object's local matrix.

    ◆ SetMl()

    void SetMl ( const Matrix m)

    Sets the local matrix representing the object's position, scale and rotation.

    Parameters
    [in]mThe object's local matrix to set.

    ◆ GetFrozenMln()

    Matrix GetFrozenMln ( ) const

    Gets the frozen and normalized matrix of the object.

    See also
    The BaseObject Manual
    Returns
    The object's frozen and normalized matrix.

    ◆ GetRelMln()

    Matrix GetRelMln ( ) const

    Gets the relative and normalized matrix of the object.

    See also
    The BaseObject Manual
    Returns
    The object's relative and normalized matrix.

    ◆ GetRelMl()

    Matrix GetRelMl ( ) const

    Gets the relative matrix of the object.

    See also
    The BaseObject Manual
    Returns
    The object's relative matrix.

    ◆ SetRelMl()

    void SetRelMl ( const Matrix m)

    Sets the relative matrix of the object.

    See also
    The BaseObject Manual
    Parameters
    [in]mThe object's relative matrix to set.

    ◆ GetMg()

    Matrix GetMg ( ) const

    Gets the world (global) matrix representing the object's position, scale and rotation.

    Warning
    Only valid if the object is attached to a document. Virtual objects in caches and deform caches are not attached to a document, so this cannot be used for those objects.
    Returns
    The object's world matrix.

    ◆ SetMg()

    void SetMg ( const Matrix m)

    Sets the world (global) matrix representing the object's position, scale and rotation.

    Parameters
    [in]mThe object's world matrix to set.

    ◆ GetMln()

    Matrix GetMln ( ) const

    Gets the local normalized matrix representing the object's position, scale and rotation.

    Returns
    The object's normalized local matrix.

    ◆ GetMgn()

    Matrix GetMgn ( ) const

    Gets the world (global) normalized matrix representing the object's position, scale and rotation.

    Returns
    The object's normalized world matrix.

    ◆ GetUpMg()

    Matrix GetUpMg ( ) const

    Gets the world (global) matrix of the parent object representing the parent's position, scale and rotation.
    If the object has no parent object then the method returns a unit matrix.

    Returns
    The parent object's world matrix.

    ◆ CopyMatrixTo()

    void CopyMatrixTo ( BaseObject dst) const

    Copies the object's matrix to another object.

    Parameters
    [in,out]dstThe destination object to copy the matrix to.

    ◆ GetMp()

    Vector GetMp ( ) const

    Gets the object's bounding box center in local space.

    Returns
    The bounding box center.

    ◆ GetRad()

    Vector GetRad ( ) const

    Gets the object's bounding box radius (x/y/z).

    Note
    Works for all objects and is faster than manually finding the bounds of even polygon objects, because the radius is internally cached.
    Returns
    The object's bounding box radius.

    ◆ GetDimension()

    void GetDimension ( Vector mp,
    Vector rad 
    ) const

    Gets the object's bounding box center in local space. This call combines the GetMp()/GetRad() in one call and is much more performant if you need both values.

    Parameters
    [out]mpcenter of the object
    [out]radradius of the object

    ◆ GetEditorMode()

    Int32 GetEditorMode ( ) const

    Gets the mode of the editor dot for the object.

    Returns
    The editor mode: MODE

    ◆ GetEditorModeH()

    Int32 GetEditorModeH ( ) const

    Gets the mode of the editor dot for the object.

    Returns
    The editor mode: MODE

    ◆ SetEditorMode()

    void SetEditorMode ( Int32  mode)

    Sets the mode for of editor dot for the object.

    Parameters
    [in]modeThe editor mode to set: MODE

    ◆ GetRenderMode()

    Int32 GetRenderMode ( ) const

    Gets the mode of the render dot for the object.

    Returns
    The render mode: MODE

    ◆ GetRenderModeH()

    Int32 GetRenderModeH ( ) const

    Gets the mode of the render dot for the object.

    Returns
    The render mode: MODE

    ◆ SetRenderMode()

    void SetRenderMode ( Int32  mode)

    Sets the mode of the render dot for the object.

    Parameters
    [in]modeThe render mode to set: MODE

    ◆ GetDeformMode()

    Bool GetDeformMode ( ) const

    Gets the enabled mode of the deformation/generator tick.

    Returns
    true if the deformer/generator is enabled, otherwise false.

    ◆ SetDeformMode()

    void SetDeformMode ( Bool  mode)

    Sets the enabled mode of the deformation/generator tick.

    Parameters
    [in]modetrue to enable the generator/deformer object, otherwise false.

    ◆ GetRealDeformMode()

    Int32 GetRealDeformMode ( ) const

    Gets the real deform mode (MODE_ON, MODE_OFF, MODE_UNKNOWN).

    Returns
    The real deform mode.

    ◆ SetRealDeformMode()

    void SetRealDeformMode ( Int32  mode)

    Sets the real deform mode (MODE_ON, MODE_OFF, MODE_UNKNOWN).

    Parameters
    [in]modeMODE_ON, MODE_OFF or MODE_UNKNOWN.

    ◆ GetUniqueIP()

    Int32 GetUniqueIP ( ) const

    Gets the IP number for the object.
    GetUniqueIP() and SetUniqueIP() allow Cinema 4D to identify and track objects between different frames (which is necessary for stuff like object motion blur).

    In case of a static generator that is easy: for every frame there is exactly the same structure.
    For a particle system however that is different: e.g. there could always be 3 objects (particles), but some might be the same, some might be new ones.
    To allow Cinema 4D to track that stuff an IP-like system is used: each object can carry a unique Int32 number and Cinema 4D creates full paths from it, e.g. 5.7.102.43.65.2
    This is done 100% internally.

    Only generator objects that have variable output or generator objects that use GetHierarchyClone() need to program some extra lines.
    Such objects need to set the bit OBJECT_UNIQUEENUMERATION. Then it needs to assign unique Int32 values to all objects returned (except for the top-level object, which is handled by Cinema 4D).

    Example:
    A generator has 3 objects, but those objects appear and disappear during time. Say that obj3 is child of obj1; obj1 and obj2 are children of main (which is returned). obj2 and obj3 might not be present:

    main
    obj1
    [obj3]
    [obj2]

    The generator will call:

    if (obj1) obj->SetUniqueIP(1);
    if (obj2) obj->SetUniqueIP(2);
    if (obj3) obj->SetUniqueIP(3);
    PyObject * obj
    Definition: complexobject.h:60

    That is all that is needed. Cinema 4D will recognize which object matches another object at a different time.
    If GetHierarchyClone() is called those objects already have a unique numeration. It is only needed to assign a unique value to the top level:

    obj1 = GetHierarchyClone(...);
    obj2 = GetHierarchyClone(...);
    ...
    if (obj1) obj1->SetUniqueIP(1);
    if (obj2) obj2->SetUniqueIP(2);
    BaseObject * GetHierarchyClone(const HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans)
    Returns
    The IP number for the object.

    ◆ SetUniqueIP()

    void SetUniqueIP ( Int32  ip)

    Sets the IP number for the object.

    See also
    GetUniqueIP()
    Parameters
    [in]ipThe new IP number.

    ◆ GetFirstTag() [1/2]

    BaseTag* GetFirstTag ( )

    Gets the first tag associated with the object.

    Returns
    The first tag, or nullptr if no tags available. The object owns the pointed tag.

    ◆ GetFirstTag() [2/2]

    const BaseTag* GetFirstTag ( ) const

    ◆ GetLastTag() [1/2]

    BaseTag* GetLastTag ( )

    Gets the last tag associated with the object.

    Since
    R19
    Returns
    The last tag, or nullptr if no tags available. The object owns the pointed tag.

    ◆ GetLastTag() [2/2]

    const BaseTag* GetLastTag ( ) const

    ◆ GetTag() [1/2]

    BaseTag* GetTag ( Int32  type,
    Int32  nr = 0 
    )

    Gets a tag of a certain type associated with the object.

    Parameters
    [in]typeThe type of tag to fetch from the object: Tag Types
    [in]nrOptionally specify a starting tag index to begin the search.
    If the requested number is not available then nullptr will be returned even if there is a tag of that type with a different index.
    Returns
    The requested tag, or nullptr if no tags of the requested type are available. The object owns the pointed tag.

    ◆ GetTag() [2/2]

    const BaseTag* GetTag ( Int32  type,
    Int32  nr = 0 
    ) const

    ◆ GetTagsOfType() [1/2]

    maxon::Block<const BaseTag* const> GetTagsOfType ( Int32  type) const

    Gets an array of tags of a certain type associated with the object.

    Parameters
    [in]typeThe type of tags to fetch from the object: Tag Types
    Returns
    An array of tags with the given type.

    ◆ GetTagsOfType() [2/2]

    maxon::Block<BaseTag* const> GetTagsOfType ( Int32  type)

    Gets an array of tags of a certain type associated with the object.

    Parameters
    [in]typeThe type of tags to fetch from the object: Tag Types
    Returns
    An array of tags with the given type.

    ◆ GetTagDataR()

    const void* GetTagDataR ( Int32  type,
    Int32  nr = 0 
    ) const

    Gets a variable tag's readable data of a certain type associated with the object.

    Parameters
    [in]typeThe type of tag to fetch the data for: VariableTag Types
    [in]nrOptionally specify a starting tag index to begin the search.
    Returns
    The variable tag's readable data, nullptr if this is not a variable tag or the tag could not be found. The tag owns the pointed data.

    ◆ GetTagDataW()

    void* GetTagDataW ( Int32  type,
    Int32  nr = 0 
    )

    Gets a variable tag's writable data of a certain type associated with the object.

    Parameters
    [in]typeThe type of tag to fetch the data for: VariableTag Types
    [in]nrOptionally specify a starting tag index to begin the search.
    Returns
    The variable tag's writable data, nullptr if this is not a variable tag or the tag could not be found. The tag owns the pointed data.

    ◆ GetTagDataCount()

    Int32 GetTagDataCount ( Int32  type) const

    Gets the variable tag data count.

    Parameters
    [in]typeThe type of tag to fetch the data for: VariableTag Types
    Returns
    The data count in the variable tag.

    ◆ GetVariableTagData()

    const VariableTagDataRef& GetVariableTagData ( Int32  type,
    Int32  nr = 0 
    ) const

    Gets the copy-on-write reference to the data of a variable tag of a certain type associated with the object.

    Parameters
    [in]typeThe type of tag to fetch the data for: VariableTag Types
    [in]nrOptionally specify a starting tag index to begin the search.
    Returns
    A reference to the variable tag's data, a null reference if there's no such variable tag.

    ◆ MakeTag()

    BaseTag* MakeTag ( Int32  type,
    BaseTag pred = nullptr 
    )

    Creates and associates a tag with the object.

    Parameters
    [in]typeThe type of tag to create: Tag Types
    [in]predThe previous tag to insert the tag after, or nullptr if the tag should be inserted at the start of the tag list. The caller owns the pointed tag.
    Returns
    The new tag, or nullptr if failed. The object owns the pointed tag.

    ◆ MakeVariableTag()

    VariableTag* MakeVariableTag ( Int32  type,
    Int32  count,
    BaseTag pred = nullptr 
    )

    Creates and associates a variable tag with the object.

    Parameters
    [in]typeThe type of variable tag to create: VariableTag Types
    [in]countThe data count.
    [in]predThe previous tag to insert the tag after, or nullptr if the tag should be inserted at the start of the tag list. The caller owns the pointed tag.
    Returns
    The new variable tag, or nullptr if failed. The object owns the pointed variable tag.

    ◆ InsertTag()

    void InsertTag ( BaseTag tp,
    BaseTag pred = nullptr 
    )

    Inserts tag into the object's tag list.

    Warning
    If the tag type was not registered with TAG_MULTIPLE, any existing old tag of same type will be implicitly removed. Any previous reference to the old tag will be invalid afterwards.
    Parameters
    [in]tpThe tag to insert. The object takes over the ownership of the pointed tag.
    [in]predThe previous tag to insert the tag after, or nullptr if the tag should be inserted at the start of the tag list. The caller owns the pointed tag.

    ◆ KillTag()

    void KillTag ( Int32  type,
    Int32  nr = 0 
    )

    Removes a tag from the object and frees its resources.

    Parameters
    [in]typeThe type of tag to remove: Tag Types
    [in]nrOptionally specify a starting tag index to begin the search.

    ◆ CopyTagsTo()

    Bool CopyTagsTo ( BaseObject dest,
    Int32  visible,
    Int32  variable,
    Int32  hierarchical,
    AliasTrans trans 
    ) const

    Copies the object's tags to another object.

    Parameters
    [in]destThe destination object. The caller owns the pointed object.
    [in]visibletrue if the tag must be visible, false if it must not be visible or NOTOK if it can be either (if this property does not need to be checked).
    [in]variabletrue if the tag must be variable, false if it must not be variable or NOTOK if it can be either (if this property does not need to be checked).
    [in]hierarchicaltrue if the tag must be hierarchical, false if it must not be hierarchical or NOTOK if it can be either (if this property does not need to be checked).
    [in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
    Returns
    true if the tags were copied successfully, otherwise false.

    ◆ GetCache() [1/2]

    BaseObject* GetCache ( )

    Gets the object from the previously built cache.
    Situations can be quite complex in Cinema 4D. For instance GetCache() could return a list of objects.
    For example the default Sweep Generator internally has some built-in caches for the sweep surface and for the caps.
    The following helper routine can be used to make things easier. It browses through this rather complex hierarchy of objects and caches recursively:

    void DoRecursion(BaseObject *op)
    {
    BaseObject* tp = op->GetDeformCache();
    if (tp)
    {
    DoRecursion(tp);
    }
    else
    {
    tp = op->GetCache();
    if (tp)
    {
    DoRecursion(tp);
    }
    else
    {
    if (!op->GetBit(BIT_CONTROLOBJECT))
    {
    if (op->IsInstanceOf(Opolygon))
    {
    ...
    }
    }
    }
    }
    for (tp = op->GetDown(); tp; tp=tp->GetNext())
    {
    DoRecursion(tp);
    }
    }
    #define BIT_CONTROLOBJECT
    Internal bit set by generators.
    Definition: ge_prepass.h:904
    #define Opolygon
    Polygon - PolygonObject.
    Definition: ge_prepass.h:1041
    PyObject * op
    Definition: object.h:520

    Remember:
    Use the above routine only if the caches are already built. It is for instance not safe to use it in a command plugin since the user can have stopped the scene redraw and the building of caches.

    See also
    CheckCache() GetDeformCache()
    Returns
    The object's previously built cache or nullptr. The object owns the pointed object's cache.
    May return nullptr if the cache is not available or is not yet built.
    See also
    Hierarchy if a plugin needs access to pre-built caches.

    ◆ GetCache() [2/2]

    const BaseObject* GetCache ( ) const

    Gets the object from the previously built cache.
    Situations can be quite complex in Cinema 4D. For instance GetCache() could return a list of objects.
    For example the default Sweep Generator internally has some built-in caches for the sweep surface and for the caps.
    The following helper routine can be used to make things easier. It browses through this rather complex hierarchy of objects and caches recursively:

    void DoRecursion(BaseObject *op)
    {
    BaseObject* tp = op->GetDeformCache();
    if (tp)
    {
    DoRecursion(tp);
    }
    else
    {
    tp = op->GetCache();
    if (tp)
    {
    DoRecursion(tp);
    }
    else
    {
    if (!op->GetBit(BIT_CONTROLOBJECT))
    {
    if (op->IsInstanceOf(Opolygon))
    {
    ...
    }
    }
    }
    }
    for (tp = op->GetDown(); tp; tp=tp->GetNext())
    {
    DoRecursion(tp);
    }
    }

    Remember:
    Use the above routine only if the caches are already built. It is for instance not safe to use it in a command plugin since the user can have stopped the scene redraw and the building of caches.

    See also
    CheckCache() GetDeformCache()
    Returns
    The object's previously built cache or nullptr. The object owns the pointed object's cache.
    May return nullptr if the cache is not available or is not yet built.
    See also
    Hierarchy if a plugin needs access to pre-built caches.

    ◆ GetDeformCache() [1/2]

    BaseObject* GetDeformCache ( )

    Gets the previously built cache that has been deformed by an active deformer.
    It is important to understand the concept how the deformer cache operates.
    For each object in the hierarchy that generates a polygonal cache a deformer cache could also have been created by an active deformer object.
    A simple example will help to see how this works:

    Take the simple hierarchy shown above, the array generator object creates a virtual hierarchy in the cache, this can be retrieved using GetCache().
    This hierarchy is:

    From each of the Cube objects a further cache is generated, this time polygonal:

    From these the deformer object generates a deformed polygon cache:

    So the final hierarchy is:

    When a deformer becomes active every object/cache object gets a deform cache (if it was a polygonal object). The deformer cache is always polygonal and is only ever a single object.
    Important:
    The caches are always built after all plugins and expressions have been called.
    If the virtual objects have to be accessed to obtain a polygonal based object it is generally advised to call SendModelingCommand() with MCOMMAND_CURRENTSTATETOOBJECT::
    This will rebuild the cache for the passed object if needed, and then clone the polygonal objects.
    Another possible solution is to use the Hierarchy class, this will give full access to all virtual objects, or can be used to just rebuild the internal caches.
    But be aware that rebuilding the internal caches can cause serious overhead, be time consuming and if called too soon in the pipeline, the caches may need to be rebuilt afterwards.

    Returns
    The objects previously built deformed cache or nullptr. The object owns the pointed object's cache.
    May return nullptr if the cache is not available or is not yet built.
    See also
    Hierarchy if a plugin needs access to pre-built caches.

    ◆ GetDeformCache() [2/2]

    const BaseObject* GetDeformCache ( ) const

    Gets the previously built cache that has been deformed by an active deformer.
    It is important to understand the concept how the deformer cache operates.
    For each object in the hierarchy that generates a polygonal cache a deformer cache could also have been created by an active deformer object.
    A simple example will help to see how this works:

    Take the simple hierarchy shown above, the array generator object creates a virtual hierarchy in the cache, this can be retrieved using GetCache().
    This hierarchy is:

    From each of the Cube objects a further cache is generated, this time polygonal:

    From these the deformer object generates a deformed polygon cache:

    So the final hierarchy is:

    When a deformer becomes active every object/cache object gets a deform cache (if it was a polygonal object). The deformer cache is always polygonal and is only ever a single object.
    Important:
    The caches are always built after all plugins and expressions have been called.
    If the virtual objects have to be accessed to obtain a polygonal based object it is generally advised to call SendModelingCommand() with MCOMMAND_CURRENTSTATETOOBJECT::
    This will rebuild the cache for the passed object if needed, and then clone the polygonal objects.
    Another possible solution is to use the Hierarchy class, this will give full access to all virtual objects, or can be used to just rebuild the internal caches.
    But be aware that rebuilding the internal caches can cause serious overhead, be time consuming and if called too soon in the pipeline, the caches may need to be rebuilt afterwards.

    Returns
    The objects previously built deformed cache or nullptr. The object owns the pointed object's cache.
    May return nullptr if the cache is not available or is not yet built.
    See also
    Hierarchy if a plugin needs access to pre-built caches.

    ◆ GetIsoparm()

    LineObject* GetIsoparm ( )

    Gets the previously built isoparm representation of the object.

    Returns
    The isoparm representation of the object or nullptr. The object owns the pointed isoparm.
    May return nullptr if the isoparm is not available or is not yet built.
    See also
    Hierarchy if a plugin needs access to pre-built caches.

    ◆ SetIsoparm()

    void SetIsoparm ( LineObject l)

    Sets the isoparm representation of the object.

    Warning
    Must only be called from within ObjectData::GetVirtualObjects() of a generator object.
    Parameters
    [in]lThe isoparm representation of the object to set. The object takes over the ownership of the pointed isoparm.

    ◆ GetCacheParent()

    BaseObject* GetCacheParent ( ) const

    A cache/deform object has no GetUp() link. Instead this method can be called to detect the cache building parent.

    Returns
    The cache parent or nullptr. The object owns the pointed cache parent.

    ◆ GetCacheTopParent()

    BaseObject* GetCacheTopParent ( ) const

    A cache/deform object has no GetUp() link. Instead this method can be called to detect the top cache building parent.

    Returns
    The top cache parent or nullptr. The object owns the pointed top cache parent.

    ◆ SetPhong()

    Bool SetPhong ( Bool  on,
    Bool  anglelimit,
    Float  angle 
    )

    Sets the phong smoothing for the object.
    Deletes any existing Phong tag. If on is set to true it creates a new Phong tag.

    Parameters
    [in]onfalse removes the Phong tag from the object. true creates a new Phong tag.
    [in]anglelimittrue if angle should be used.
    [in]angleThe phong angle.
    Returns
    true if the phong smoothing was changed successfully, otherwise false.

    ◆ IsDirty()

    Bool IsDirty ( DIRTYFLAGS  flags) const

    Checks if the object has been changed since the last time the object was touched.

    Parameters
    [in]flagsThe object part to check: DIRTYFLAGS
    Returns
    true if the object is dirty, otherwise false.

    ◆ SetDirty()

    void SetDirty ( DIRTYFLAGS  flags)

    Sets if any part of the object was changed.

    Parameters
    [in]flagsThe object part that was changed: DIRTYFLAGS

    ◆ CheckCache()

    Bool CheckCache ( const HierarchyHelp hh) const

    Check if cache is built and if it matches the requirements (polygonized/isoparm, level of detail etc.)

    Note
    Must only be called from within ObjectData::GetVirtualObjects() of a generator object.
    Parameters
    [in]hhA HierarchyHelp, usually passed from the calling method parameters, for instance ObjectData::GetVirtualObjects().
    Returns
    true if the cache is dirty, false if it is valid.

    ◆ Touch()

    void Touch ( )

    Marks object to be used by generator. Automatically resets dirty values for use with IsDirty().

    ◆ GetColorProperties()

    void GetColorProperties ( ObjectColorProperties prop) const

    Gets the object's color properties and fill prop.

    Parameters
    [in]propFilled with the color properties. The caller owns the pointed color properties.

    ◆ SetColorProperties()

    void SetColorProperties ( ObjectColorProperties prop)

    Sets the object's color properties from prop.

    Parameters
    [in]propThe color properties to set. The caller owns the pointed color properties.

    ◆ GetDisplayColor()

    maxon::Opt<maxon::Color> GetDisplayColor ( ) const

    Returns the selected display color of the object.

    Returns
    res.HasValue() if the color should be used. Otherwise no color is set (see ID_BASEOBJECT_USECOLOR_OFF).

    ◆ GetModelingAxis()

    const Matrix& GetModelingAxis ( BaseDocument doc)

    Gets the internal matrix for the modeling axis.

    Note
    To access the axis type, and other axis options, use the IDs defined in ToolModelingAxis.h.
    Parameters
    [in]docThe document for the operation. The caller owns the pointed document.
    Returns
    The modeling axis.

    ◆ SetModelingAxis()

    void SetModelingAxis ( const Matrix m)

    Sets the internal matrix for the modeling axis.

    Note
    To access the axis type, and other axis options, use the IDs in ToolModelingAxis.res. Here is a code sample:
    void SetToolData(BaseDocument *doc, Int32 pluginid, Int32 dataid, const GeData &dat)
    {
    BasePlugin *plug = static_cast<BasePlugin*>(FindPlugin(pluginid, PLUGINTYPE::TOOL));
    if (!plug) return;
    plug->SetParameter(DescID(dataid), dat, 0);
    }
    #define ID_MODELING_LIVESELECTION
    Definition: modelingids.h:48
    @ TOOL
    Tool. (ToolData)
    BasePlugin * FindPlugin(Int32 id, PLUGINTYPE type)
    maxon::Int32 Int32
    Definition: ge_sys_math.h:51
    const char * doc
    Definition: pyerrors.h:226
    @ MDATA_AXIS_MODE_FREE
    Definition: toolmodelingaxis.h:19
    @ MDATA_AXIS_MODE
    Definition: toolmodelingaxis.h:10
    If the matrix is changed so that it does not fit the current mode the axis mode should be set to MDATA_AXIS_MODE_FREE.
    Parameters
    [in]mThe new modeling axis to set.

    ◆ GetAndCheckHierarchyClone() [1/2]

    BaseObject* GetAndCheckHierarchyClone ( const HierarchyHelp hh,
    BaseObject op,
    HIERARCHYCLONEFLAGS  flags,
    Bool dirty,
    AliasTrans trans,
    Int  childCount,
    maxon::BaseArray< BaseObject * > *  children,
    Bool  addChildOrClone = false 
    )

    Checks and generates a clone of the child objects of a parent generator.
    Similar to GetHierarchyClone() except that it checks if the hierarchy is dirty and if not it does not need to generate a new clone.

    See also
    GetHierarchyClone()
    Parameters
    [in]hhUsually passed through from a calling method, for instance from ObjectData::GetVirtualObjects(). The caller owns the pointed hierarchy helper.
    [in]opThe object to start the clone from, usually the first child of the parent object. The caller owns the pointed object.
    [in]flagsThe flags for the generation of the cloned chain. The values are: HIERARCHYCLONEFLAGS
    [in]dirtyAssigned the state of any changes to the chain. true if some part of the child objects in the chain has changed, otherwise false.
    [in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
    [in]childCountMaximum number of children to check (starting at the first child). With a negative value the function checks exactly one child and doesn't create a parent Null object for the clones.
    [in]childrenAn optional array where the generated clones are added. For each child there will be one entry, even if no clone is generated for that child (then the entry will be nullptr or the child depending on addChildOrClone). Note that this array gets filled only in the dirty case.
    [in]addChildOrCloneWhen true, the original child will be added to children instead of a nullptr in the case of a child which doesn't generate a clone.
    Returns
    The cloned objects. The caller owns the pointed object.

    ◆ GetAndCheckHierarchyClone() [2/2]

    BaseObject* GetAndCheckHierarchyClone ( const HierarchyHelp hh,
    BaseObject op,
    HIERARCHYCLONEFLAGS  flags,
    Bool dirty,
    AliasTrans trans,
    Bool  allchildren 
    )

    Checks and generates a clone of the child objects of a parent generator.
    Similar to GetHierarchyClone() except that it checks if the hierarchy is dirty and if not it does not need to generate a new clone.

    See also
    GetHierarchyClone()
    Parameters
    [in]hhUsually passed through from a calling method, for instance from ObjectData::GetVirtualObjects(). The caller owns the pointed hierarchy helper.
    [in]opThe object to start the clone from, usually the first child of the parent object. The caller owns the pointed object.
    [in]flagsThe flags for the generation of the cloned chain. The values are: HIERARCHYCLONEFLAGS
    [in]dirtyAssigned the state of any changes to the chain. true if some part of the child objects in the chain has changed, otherwise false.
    [in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
    [in]allchildrentrue if all children should be used in the check.
    Returns
    The cloned objects. The caller owns the pointed object.

    ◆ GetHierarchyClone() [1/2]

    BaseObject* GetHierarchyClone ( const HierarchyHelp hh,
    BaseObject op,
    HIERARCHYCLONEFLAGS  flags,
    Bool dirty,
    AliasTrans trans 
    )

    Generates a clone of the child objects of a parent generator.

    Note
    The result given by GetAndCheckHierarchyClone() will be a chain of objects with various types.
    Passing HIERARCHYCLONEFLAGS::ASLINE e.g. will force all splines to be converted, but not every object in the chain will be of type Oline; some objects like PolygonObject cannot be converted, also Onull.
    Parameters
    [in]hhUsually passed through from a calling method, for instance from ObjectData::GetVirtualObjects(). The caller owns the pointed hierarchy helper.
    [in]opThe object to start the clone from, usually the parent object itself. The caller owns the pointed object.
    [in]flagsThe flags for the generation of the cloned chain. The values are: HIERARCHYCLONEFLAGS
    [in]dirtyHas to be set to nullptr for the cloning to take place. Set to true if some part of the child objects in the chain has changed, or false if nothing has changed.
    [in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
    Returns
    The cloned object(s). The caller owns the pointed object.

    ◆ GetHierarchyClone() [2/2]

    BaseObject* GetHierarchyClone ( const HierarchyHelp hh,
    BaseObject op,
    HIERARCHYCLONEFLAGS  flags,
    Bool dirty,
    AliasTrans trans,
    DIRTYFLAGS  dirtyflags 
    )

    Generates a clone of the child objects of a parent generator. This version accepts dirtyflags parameter.

    Since
    R19
    Note
    The result given by GetAndCheckHierarchyClone() will be a chain of objects with various types.
    Passing HIERARCHYCLONEFLAGS::ASLINE e.g. will force all splines to be converted, but not every object in the chain will be of type Oline; some objects like PolygonObject cannot be converted, also Onull.
    Parameters
    [in]hhUsually passed through from a calling method, for instance from ObjectData::GetVirtualObjects(). The caller owns the pointed hierarchy helper.
    [in]opThe object to start the clone from, usually the parent object itself. The caller owns the pointed object.
    [in]flagsThe flags for the generation of the cloned chain. The values are: HIERARCHYCLONEFLAGS
    [in]dirtyHas to be set to nullptr for the cloning to take place. Set to true if some part of the child objects in the chain has changed, or false if nothing has changed.
    [in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
    [in]dirtyflagsThe dirty flags stored within the dependence list.
    Returns
    The cloned object(s). The caller owns the pointed object.

    ◆ NewDependenceList()

    void NewDependenceList ( )

    Starts a new dependence list. Enables to keep track of changes made to any children.

    ◆ CompareDependenceList()

    Bool CompareDependenceList ( )

    Compares if anything in the dependence list has changed.

    Returns
    true if the dependence list has not changed, otherwise false.

    ◆ AddDependence() [1/2]

    void AddDependence ( const BaseObject op)

    Adds a child object to the dependence list.
    Usually op is a child object used by a generator object.

    Parameters
    [in]opThe child object to add to the dependence list. Should be a child object used by the generator object. The caller owns the pointed object.

    ◆ AddDependence() [2/2]

    void AddDependence ( const BaseObject op,
    DIRTYFLAGS  dirtyflags 
    )

    Adds a child object to the dependence list. This version accepts dirtyflags parameter.

    Since
    R19
    Parameters
    [in]opThe child object to add to the dependence list. Should be a child object used by the generator object. The caller owns the pointed object.
    [in]dirtyflagsThe dirty flags stored within the dependence list.

    ◆ TouchDependenceList()

    void TouchDependenceList ( )

    Marks all the objects in the dependence list to be replaced by the generator.

    ◆ SetRotationOrder()

    void SetRotationOrder ( ROTATIONORDER  order)

    Sets the rotation order of the object.

    Parameters
    [in]orderThe rotation order to set for the object: ROTATIONORDER

    ◆ GetRotationOrder()

    ROTATIONORDER GetRotationOrder ( ) const

    Gets the rotation order of the object.

    Returns
    The rotation order of the object: ROTATIONORDER

    ◆ SetQuaternionRotationMode()

    void SetQuaternionRotationMode ( Bool  active,
    Bool  bUndo 
    )

    Sets the Synchronized Rotation Mode of the object.

    Since
    R18
    Parameters
    [in]activeEnable/Disable the Synchronized Rotation mode for the object.
    [in]bUndoAdd undo to value changed (need to manage start and end externally).

    ◆ IsQuaternionRotationMode()

    Bool IsQuaternionRotationMode ( ) const

    Checks if Object Rotation is interpolated in Quaternion Mode.

    Since
    R18
    Returns
    true if Rotation Interpolation is Quaternion, otherwise false.

    ◆ SynchronizeVectorTrackKeys()

    Bool SynchronizeVectorTrackKeys ( Int32  vectorTrackID,
    Bool  bUndo,
    BaseTime  startRange = BaseTime(-108000, 1),
    BaseTime  endRange = BaseTime(108000, 1) 
    )

    Makes sure that the track Curves component are synchronized (keys on each component). If a component track is found, the other track component will be synchronized.

    Since
    R18
    Parameters
    [in]vectorTrackIDID of the Vector Track to synchronize.
    [in]bUndoAdd undo to value changed (need to manage start and end externally).
    [in]startRangeOptional start operation at given time.
    [in]endRangeOptional end operation at given time.
    Returns
    true if Track Synchronization was successful, otherwise false.

    ◆ FindBestEulerAngle()

    Bool FindBestEulerAngle ( Int32  rotationTrackID,
    Bool  bAdjustTangent,
    Bool  bUndo,
    BaseTime  startRange = BaseTime(-108000, 1),
    BaseTime  endRange = BaseTime(108000, 1) 
    )

    Tries to find the best Euler Angle according to the previous key. The Object must have keys on each component.

    Since
    R18
    Parameters
    [in]rotationTrackIDRotation Track ID to manage (relative, global, absolute, frozen).
    [in]bAdjustTangentTry to adjust the tangent with new value, if false auto is used.
    [in]bUndoAdd undo to value changed (need to manage start and end externally).
    [in]startRangeOptional start operation at given time.
    [in]endRangeOptional end operation at given time.
    Returns
    true if Rotation Synchronization was successful, otherwise false.

    ◆ EvaluateSynchronizedRotation()

    Bool EvaluateSynchronizedRotation ( const BaseTime time,
    ANIMATEFLAGS  flags,
    Vector resultRotation = nullptr 
    )

    Forces an evaluation of all rotation tracks and consider Quaternion interpolation. This will directly update attribute values if no vector is specified for resultRotation.

    Since
    R18
    Parameters
    [in]timeEvaluation time.
    [in]flagsThe animate flags: ANIMATEFLAGS
    [in]resultRotationOptionally store result in Vector instead of updating attributes.
    Returns
    true if evaluation was a success, otherwise false.

    ◆ GetVectorTracks()

    Bool GetVectorTracks ( const DescID id,
    CTrack *&  xfound,
    CTrack *&  yfound,
    CTrack *&  zfound 
    )

    Returns each component track for the given DescID.

    Since
    R18
    Parameters
    [in]idID of desired vector.
    [out]xfoundX Track of Vector if found.
    [out]yfoundY Track of Vector if found.
    [out]zfoundZ Track of Vector if found.
    Returns
    true if successful, otherwise false.

    ◆ GetVectorCurves()

    Bool GetVectorCurves ( CCurve curveToSearch,
    CCurve *&  xfound,
    CCurve *&  yfound,
    CCurve *&  zfound 
    )

    Returns each component CCurve for the given curve.

    Since
    R18
    Parameters
    [in]curveToSearchCCurve Component of desired vector.
    [out]xfoundX CCurve of Vector if found.
    [out]yfoundY CCurve of Vector if found.
    [out]zfoundZ CCurve of Vector if found.
    Returns
    true if successful, otherwise false.

    ◆ GetGUID()

    UInt64 GetGUID ( ) const

    Gets a unique ID for any object in a document.
    Works for generated objects in a cache (e.g. clones generated by a MoGraph cloner) and also for 'real' objects in the document (GetUniqueIP() does not do this).

    Note
    The ID generation for cache objects is based on GetUniqueIP(), so if two cache objects have the same IP, they will probably also get the same GUID
    (unless they are PointObject or PolygonObject with different point or polygon count).
    The ID generation for 'real' objects is based on the object's GeMarker, so if an object has no marker it will not return a unique ID.
    Returns
    A checksum for the object.

    ◆ GetHighlightHandle()

    Int32 GetHighlightHandle ( BaseDraw bd)

    Checks if a highlight handle has been hit.
    Returns the handle ID previously given by ObjectData::DetectHandle(). The handle can then be drawn in the highlight mode.

    Parameters
    [in]bdThe base draw for the operation. The caller owns the pointed base draw.
    Returns
    The handle ID.

    ◆ GetRealSpline() [1/2]

    SplineObject* GetRealSpline ( )

    Gets a real spline representation of a primitive spline object.
    This can for example be used to calculate the length of a spline.
    If the object is a real spline it returns this. Otherwise nullptr.

    Returns
    The real spline object. The object owns owns the pointed spline.
    Note
    The matrix of the returned object must not be used. Use the matrix of *this instead.

    ◆ GetRealSpline() [2/2]

    const SplineObject* GetRealSpline ( ) const

    ◆ GetVisibility()

    Float GetVisibility ( Float  parent) const

    Gets the object's visibility value. The range of values are 0.0 <= visibility <= 1.0.
    The object's visibility depends upon its parent, if it has no visibility track this will return the parent's visibility which is passed.

    Note
    In the editor only a visibility of 0.0 can be noticed but all other intermediate values are visualized in render only.
    Parameters
    [in]parentThe parent object's visibility.
    Returns
    The visibility.

    ◆ SearchHierarchy()

    Bool SearchHierarchy ( const BaseObject op) const

    Checks if the object is a child of op.

    Parameters
    [in]opThe object to search within his hierarchy.
    Returns
    true if the object is a child of op, otherwise false.

    ◆ GetOrigin() [1/2]

    BaseObject* GetOrigin ( Bool  safe)

    Private.

    ◆ GetOrigin() [2/2]

    const BaseObject* GetOrigin ( Bool  safe) const

    Private.

    ◆ SetOrigin()

    void SetOrigin ( BaseObject origin)

    Private.

    ◆ GetTopOrigin()

    BaseObject* GetTopOrigin ( Bool  parent,
    Bool  safe 
    ) const

    Private.

    ◆ GetEditObject()

    BaseObject* GetEditObject ( BaseObject **  psds,
    DISPLAYEDITSTATE  state,
    Bool  safetey = true 
    ) const

    Private.

    ◆ RemoveFromCache()

    void RemoveFromCache ( Bool  clearParentObject = true)

    Private.

    ◆ ObjDraw()

    DRAWRESULT ObjDraw ( DRAWPASS  drawpass,
    BaseDraw bd,
    BaseDrawHelp bh 
    )

    Private.

    ◆ GetObjectDrawHash()

    maxon::Tuple<Bool, maxon::HashInt> GetObjectDrawHash ( Int32  type) const

    Private.

    ◆ GetDrawStateData()

    void GetDrawStateData ( DrawStateData &  state) const

    Private.

    ◆ GetDeformMatrix()

    const Matrix& GetDeformMatrix ( ) const

    Gets the deformation matrix.

    Returns
    The matrix that deforms the local matrix.

    ◆ SetDeformMatrix()

    void SetDeformMatrix ( const Matrix dm)

    Sets the deformation of the local matrix.

    Parameters
    [in]dmThe matrix that deforms the local matrix.

    ◆ ClearDeformMatrix()

    void ClearDeformMatrix ( )

    Clears the deformation of the local matrix.

    ◆ GetUndeformedMl()

    const Matrix& GetUndeformedMl ( ) const

    Gets the undeformed local matrix.

    Returns
    The local matrix withouth deformation applied.

    ◆ GetUndeformedMlInverse()

    const Matrix& GetUndeformedMlInverse ( ) const

    Gets the inverse of the undeformed local matrix. It does not recompute it if the undeformed local matrix is unchanged since last call.

    Returns
    The inverse of the local matrix withouth deformation applied.

    ◆ GetUndeformedMg()

    Matrix GetUndeformedMg ( ) const

    Gets the global matrix without any matrix deformation applied in the hierarchy.

    Returns
    the global matrix without any matrix deformation applied in the hierarchy.

    ◆ HasDeformMatrix()

    Bool HasDeformMatrix ( ) const

    Returns true if the object has a deform matrix.