Here you will find documentation on all the descriptions that Cinema 4D currently has. You can list them Alphabetically, by Type or Plugin . The sample Python and C++ code is automatically generated and in some cases may not be 100% correct. If something doesn't work then please refer to the official Cinema 4D SDK documentation for more information.

IDs and information for Tcaik

Tcaik

Attributes

  • ENGLISH NAME : IK
  • NAME : Tcaik
  • INCLUDE : Texpression
  • PATH : ca/description/tcaik.res
  • PLUGIN : ca
  • MAXON online help (may not exist): TCAIK

Elements

ID UI Name Type Parameters Cycle
ID_CA_IK_TAG_ENABLE UseIK BOOL  
ID_CA_IK_TAG_SOLVER IKSolver LONG  
ID_CA_IK_TAG_SOLVER_2D 2D
ID_CA_IK_TAG_SOLVER_3D 3D
ID_CA_IK_TAG_SPLINE PointIK BOOL  
ID_CA_IK_TAG_START_INDEX Start LONG MIN
ID_CA_IK_TAG_END_INDEX End LONG MIN
ID_CA_IK_TAG_TIP End LINK  
ID_CA_IK_TAG_TARGET Goal LINK  
ID_CA_IK_TAG_ADD_GOAL AddGoal BUTTON  
ID_CA_IK_TAG_IKFK IK/FK REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_RESET_FK ResetFK BUTTON  
ID_CA_IK_TAG_STRENGTH Strength REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_PREFERRED_WEIGHT PreferredRot REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_GOAL_OFFSET GoalOffset REAL
UNIT PERCENT
MINSLIDER 0.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_POLE_AXIS Axis LONG  
ID_CA_IK_TAG_POLE_AXIS_AUTO Auto
ID_CA_IK_TAG_POLE_AXIS_X X
ID_CA_IK_TAG_POLE_AXIS_Y Y
ID_CA_IK_TAG_POLE_AXIS_Z Z
ID_CA_IK_TAG_POLE_AXIS_NX -X
ID_CA_IK_TAG_POLE_AXIS_NY -Y
ID_CA_IK_TAG_POLE_AXIS_NZ -Z
ID_CA_IK_TAG_POLE_TWIST Twist REAL
UNIT DEGREE
MINSLIDER -180.0
MAXSLIDER 180.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_POLE Object LINK  
ID_CA_IK_TAG_ADD_POLE AddPole BUTTON  
ID_CA_IK_TAG_SQUASH Squash REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_SQUASH_TYPE Type LONG  
ID_CA_IK_TAG_STRETCH_TYPE_POSITION Position
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_UNIFORM UniformScale
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_BONE BoneScale
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_VOLUME VolumeScale
ID_CA_IK_TAG_SQUASH_CLAMP_DIST Distance REAL
UNIT METER
MIN 0.0
MAXSLIDER 1000.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_SQUASH_CLAMP Clamp BOOL  
ID_CA_IK_TAG_STRETCH Stretch REAL
SCALE_H
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_STRETCH_TYPE Type LONG  
ID_CA_IK_TAG_STRETCH_TYPE_POSITION Position
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_UNIFORM UniformScale
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_BONE BoneScale
ID_CA_IK_TAG_STRETCH_TYPE_SCALE_VOLUME VolumeScale
ID_CA_IK_TAG_STRETCH_CLAMP_DIST Distance REAL
UNIT METER
MIN 0.0
MAXSLIDER 1000.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_STRETCH_CLAMP Clamp BOOL  
ID_CA_IK_TAG_DRAW_FK_CHAIN ShowFK BOOL  
ID_CA_IK_TAG_DRAW_IK_CHAIN ShowIK BOOL  
ID_CA_IK_TAG_DRAW_HANDLE_LINE HandleLine BOOL  
ID_CA_IK_TAG_DRAW_POLE PoleVector LONG  
ID_CA_IK_TAG_DRAW_POLE_NONE None
ID_CA_IK_TAG_DRAW_POLE_ROOT Root
ID_CA_IK_TAG_DRAW_POLE_JOINT Joint
ID_CA_IK_TAG_DRAW_FK_COLOR FK COLOR  
ID_CA_IK_TAG_DRAW_IK_COLOR IK COLOR  
ID_CA_IK_TAG_DRAW_HANDLE_COLOR Handle COLOR  
ID_CA_IK_TAG_DRAW_POLE_COLOR PoleVector COLOR  
ID_CA_IK_TAG_GOAL_UPDATE KeepGoal BOOL  
ID_CA_IK_TAG_GOAL_CONSTRAIN ConstrainGoal BOOL  
ID_CA_IK_TAG_GOAL_DIRTY UpdateOnGoal BOOL  
ID_CA_IK_TAG_ALIGN_GOAL AlignGoal BOOL  
ID_CA_IK_TAG_UPDATEFKIK UpdateIKonFK BOOL  
ID_CA_IK_TAG_SOLVER_ITERATIONS_MAX MaxIterations LONG
MIN 0
MAX 9999
MINSLIDER 0
MAXSLIDER 100
CUSTOMGUI LONGSLIDER
ID_CA_IK_TAG_SOLVER_THRESHOLD Threshold REAL
UNIT METER
MIN 0.0
MAX 100000.0
MAXSLIDER 10.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_ENABLE Enable BOOL  
ID_CA_IK_TAG_DYNAMICS_STIFFNESS Strength REAL
UNIT PERCENT
MIN 0.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_DRAG Drag REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_POSHOLD PosHold REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_ROTHOLD RotHold REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_COLLISIONS Collisions BOOL  
ID_CA_IK_TAG_DYNAMICS_RADIUS Radius REAL UNIT
ID_CA_IK_TAG_DYNAMICS_FRICTION Friction REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_BOUNCE Bounce REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
CUSTOMGUI REALSLIDER
ID_CA_IK_TAG_DYNAMICS_COLLIDERS Objects IN_EXCLUDE
NUM_FLAGS 0
INIT_STATE 1
SEND_SELCHNGMSG 1
ID_CA_IK_TAG_DYNAMICS_POSHOLD_CURVE Position SPLINE  
ID_CA_IK_TAG_DYNAMICS_ROTHOLD_CURVE Rotation SPLINE  
ID_CA_IK_TAG_DYNAMICS_GRAVITY Gravity REAL
UNIT METER
STEP 0.1
ID_CA_IK_TAG_DYNAMICS_FORCES_INCEXC Mode LONG  
ID_CA_IK_TAG_DYNAMICS_INCEXC_INCLUDE Include
ID_CA_IK_TAG_DYNAMICS_INCEXC_EXCLUDE Exclude
ID_CA_IK_TAG_DYNAMICS_FORCES Forces IN_EXCLUDE
NUM_FLAGS 0
INIT_STATE 1
SEND_SELCHNGMSG 1
ID_CA_IK_TAG_DYNAMICS_CUPDATE ContinuousUpdate BOOL ANIM
ID_CA_IK_TAG_DYNAMICS_SUBDIV Steps LONG
MIN 1
MAX 100
ID_CA_IK_TAG_DYNAMICS_AUTOTIME Auto BOOL ANIM
ID_CA_IK_TAG_DYNAMICS_START Start BASETIME ANIM
ID_CA_IK_TAG_DYNAMICS_STOP Stop BASETIME ANIM

Example Code

The following code does not use the correct values when setting the data. You should check directly in C4D for the correct values that you should use in place of the ones that are shown. This code is just to show you how to access the values for getting and setting the parameters.

Python

import c4d
from c4d import gui
def main():
    obj = c4d.BaseObject(c4d.Osphere)
    tag = obj.MakeTag(c4d.Tcaik)
    doc.InsertObject(obj)
    c4d.EventAdd(c4d.EVENT_FORCEREDRAW)
    
    #You can set parameters two different ways. 
    #First way              
    tag[c4d.ID_CA_IK_TAG_ENABLE] = True
    tag[c4d.ID_CA_IK_TAG_SOLVER] = c4d.ID_CA_IK_TAG_SOLVER_2D
    tag[c4d.ID_CA_IK_TAG_SPLINE] = True
    tag[c4d.ID_CA_IK_TAG_START_INDEX] = 1
    tag[c4d.ID_CA_IK_TAG_END_INDEX] = 1
    tag[c4d.ID_CA_IK_TAG_IKFK] = 0.1
    tag[c4d.ID_CA_IK_TAG_STRENGTH] = 0.1
    tag[c4d.ID_CA_IK_TAG_PREFERRED_WEIGHT] = 0.1
    tag[c4d.ID_CA_IK_TAG_GOAL_OFFSET] = 0.1
    tag[c4d.ID_CA_IK_TAG_POLE_AXIS] = c4d.ID_CA_IK_TAG_POLE_AXIS_AUTO
    tag[c4d.ID_CA_IK_TAG_POLE_TWIST] = 0.1
    tag[c4d.ID_CA_IK_TAG_SQUASH] = 0.1
    tag[c4d.ID_CA_IK_TAG_SQUASH_TYPE] = c4d.ID_CA_IK_TAG_STRETCH_TYPE_POSITION
    tag[c4d.ID_CA_IK_TAG_SQUASH_CLAMP_DIST] = 0.1
    tag[c4d.ID_CA_IK_TAG_SQUASH_CLAMP] = True
    tag[c4d.ID_CA_IK_TAG_STRETCH] = 0.1
    tag[c4d.ID_CA_IK_TAG_STRETCH_TYPE] = c4d.ID_CA_IK_TAG_STRETCH_TYPE_POSITION
    tag[c4d.ID_CA_IK_TAG_STRETCH_CLAMP_DIST] = 0.1
    tag[c4d.ID_CA_IK_TAG_STRETCH_CLAMP] = True
    tag[c4d.ID_CA_IK_TAG_DRAW_FK_CHAIN] = True
    tag[c4d.ID_CA_IK_TAG_DRAW_IK_CHAIN] = True
    tag[c4d.ID_CA_IK_TAG_DRAW_HANDLE_LINE] = True
    tag[c4d.ID_CA_IK_TAG_DRAW_POLE] = c4d.ID_CA_IK_TAG_DRAW_POLE_NONE
    tag[c4d.ID_CA_IK_TAG_GOAL_UPDATE] = True
    tag[c4d.ID_CA_IK_TAG_GOAL_CONSTRAIN] = True
    tag[c4d.ID_CA_IK_TAG_GOAL_DIRTY] = True
    tag[c4d.ID_CA_IK_TAG_ALIGN_GOAL] = True
    tag[c4d.ID_CA_IK_TAG_UPDATEFKIK] = True
    tag[c4d.ID_CA_IK_TAG_SOLVER_ITERATIONS_MAX] = 1
    tag[c4d.ID_CA_IK_TAG_SOLVER_THRESHOLD] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_ENABLE] = True
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_STIFFNESS] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_DRAG] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_POSHOLD] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_ROTHOLD] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_COLLISIONS] = True
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_RADIUS] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_FRICTION] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_BOUNCE] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_GRAVITY] = 0.1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_FORCES_INCEXC] = c4d.ID_CA_IK_TAG_DYNAMICS_INCEXC_INCLUDE
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_CUPDATE] = True
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_SUBDIV] = 1
    tag[c4d.ID_CA_IK_TAG_DYNAMICS_AUTOTIME] = True
    
    #Second way, using the base container.
    bc = tag.GetDataInstance()
    bc.SetBool(c4d.ID_CA_IK_TAG_ENABLE,True)
    bc.SetInt32(c4d.ID_CA_IK_TAG_SOLVER,c4d.ID_CA_IK_TAG_SOLVER_2D)
    bc.SetBool(c4d.ID_CA_IK_TAG_SPLINE,True)
    bc.SetInt32(c4d.ID_CA_IK_TAG_START_INDEX,1)
    bc.SetInt32(c4d.ID_CA_IK_TAG_END_INDEX,1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_IKFK,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_STRENGTH,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_PREFERRED_WEIGHT,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_GOAL_OFFSET,0.1)
    bc.SetInt32(c4d.ID_CA_IK_TAG_POLE_AXIS,c4d.ID_CA_IK_TAG_POLE_AXIS_AUTO)
    bc.SetFloat(c4d.ID_CA_IK_TAG_POLE_TWIST,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_SQUASH,0.1)
    bc.SetInt32(c4d.ID_CA_IK_TAG_SQUASH_TYPE,c4d.ID_CA_IK_TAG_STRETCH_TYPE_POSITION)
    bc.SetFloat(c4d.ID_CA_IK_TAG_SQUASH_CLAMP_DIST,0.1)
    bc.SetBool(c4d.ID_CA_IK_TAG_SQUASH_CLAMP,True)
    bc.SetFloat(c4d.ID_CA_IK_TAG_STRETCH,0.1)
    bc.SetInt32(c4d.ID_CA_IK_TAG_STRETCH_TYPE,c4d.ID_CA_IK_TAG_STRETCH_TYPE_POSITION)
    bc.SetFloat(c4d.ID_CA_IK_TAG_STRETCH_CLAMP_DIST,0.1)
    bc.SetBool(c4d.ID_CA_IK_TAG_STRETCH_CLAMP,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_DRAW_FK_CHAIN,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_DRAW_IK_CHAIN,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_DRAW_HANDLE_LINE,True)
    bc.SetInt32(c4d.ID_CA_IK_TAG_DRAW_POLE,c4d.ID_CA_IK_TAG_DRAW_POLE_NONE)
    bc.SetBool(c4d.ID_CA_IK_TAG_GOAL_UPDATE,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_GOAL_CONSTRAIN,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_GOAL_DIRTY,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_ALIGN_GOAL,True)
    bc.SetBool(c4d.ID_CA_IK_TAG_UPDATEFKIK,True)
    bc.SetInt32(c4d.ID_CA_IK_TAG_SOLVER_ITERATIONS_MAX,1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_SOLVER_THRESHOLD,0.1)
    bc.SetBool(c4d.ID_CA_IK_TAG_DYNAMICS_ENABLE,True)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_STIFFNESS,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_DRAG,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_POSHOLD,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_ROTHOLD,0.1)
    bc.SetBool(c4d.ID_CA_IK_TAG_DYNAMICS_COLLISIONS,True)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_RADIUS,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_FRICTION,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_BOUNCE,0.1)
    bc.SetFloat(c4d.ID_CA_IK_TAG_DYNAMICS_GRAVITY,0.1)
    bc.SetInt32(c4d.ID_CA_IK_TAG_DYNAMICS_FORCES_INCEXC,c4d.ID_CA_IK_TAG_DYNAMICS_INCEXC_INCLUDE)
    bc.SetBool(c4d.ID_CA_IK_TAG_DYNAMICS_CUPDATE,True)
    bc.SetInt32(c4d.ID_CA_IK_TAG_DYNAMICS_SUBDIV,1)
    bc.SetBool(c4d.ID_CA_IK_TAG_DYNAMICS_AUTOTIME,True)

if __name__=='__main__':
    main()
             

C++

#include "c4d.h"
#include "../ca/description/tcaik.h"
void SampleFunction()
{
    BaseDocument *pDoc = GetActiveDocument();
    BaseObject *pObject = BaseObject::Alloc(Osphere);
    pDoc->InsertObject(pObject);
    pDoc->StartUndo();
    pDoc->AddUndo(UNDOTYPE_NEW,pObject);
    pDoc->EndUndo();
    pDoc->StartUndo();
    BaseTag *pTag = pObject->MakeTag(Tcaik);
    pDoc->AddUndo(UNDOTYPE_NEW,pTag);
    pDoc->EndUndo();
    pObject->Message(MSG_UPDATE);
    
    //You can set parameters two different ways. 

    //First way              
    //Some objects do not store all their data in the container. You need to use GetParameter()/SetParameter() instead. 

    DESCFLAGS_SET flags = DESCFLAGS_SET_PARAM_SET;
    pTag->SetParameter(DescID(ID_CA_IK_TAG_ENABLE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SOLVER),GeData(ID_CA_IK_TAG_SOLVER_2D),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SPLINE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_START_INDEX),GeData(1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_END_INDEX),GeData(1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_IKFK),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_STRENGTH),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_PREFERRED_WEIGHT),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_GOAL_OFFSET),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_POLE_AXIS),GeData(ID_CA_IK_TAG_POLE_AXIS_AUTO),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_POLE_TWIST),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SQUASH),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SQUASH_TYPE),GeData(ID_CA_IK_TAG_STRETCH_TYPE_POSITION),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SQUASH_CLAMP_DIST),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SQUASH_CLAMP),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_STRETCH),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_STRETCH_TYPE),GeData(ID_CA_IK_TAG_STRETCH_TYPE_POSITION),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_STRETCH_CLAMP_DIST),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_STRETCH_CLAMP),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DRAW_FK_CHAIN),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DRAW_IK_CHAIN),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DRAW_HANDLE_LINE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DRAW_POLE),GeData(ID_CA_IK_TAG_DRAW_POLE_NONE),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_GOAL_UPDATE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_GOAL_CONSTRAIN),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_GOAL_DIRTY),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_ALIGN_GOAL),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_UPDATEFKIK),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SOLVER_ITERATIONS_MAX),GeData(1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_SOLVER_THRESHOLD),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_ENABLE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_STIFFNESS),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_DRAG),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_POSHOLD),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_ROTHOLD),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_COLLISIONS),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_RADIUS),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_FRICTION),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_BOUNCE),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_GRAVITY),GeData(0.1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_FORCES_INCEXC),GeData(ID_CA_IK_TAG_DYNAMICS_INCEXC_INCLUDE),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_CUPDATE),GeData(true),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_SUBDIV),GeData(1),flags);
    pTag->SetParameter(DescID(ID_CA_IK_TAG_DYNAMICS_AUTOTIME),GeData(true),flags);
    pTag->Message(MSG_UPDATE);            

    //Second way, using the base container.
    BaseContainer *bc =     pTag->GetDataInstance();
    bc->SetBool(ID_CA_IK_TAG_ENABLE,true);
    bc->SetInt32(ID_CA_IK_TAG_SOLVER,ID_CA_IK_TAG_SOLVER_2D);
    bc->SetBool(ID_CA_IK_TAG_SPLINE,true);
    bc->SetInt32(ID_CA_IK_TAG_START_INDEX,1);
    bc->SetInt32(ID_CA_IK_TAG_END_INDEX,1);
    bc->SetFloat(ID_CA_IK_TAG_IKFK,0.1);
    bc->SetFloat(ID_CA_IK_TAG_STRENGTH,0.1);
    bc->SetFloat(ID_CA_IK_TAG_PREFERRED_WEIGHT,0.1);
    bc->SetFloat(ID_CA_IK_TAG_GOAL_OFFSET,0.1);
    bc->SetInt32(ID_CA_IK_TAG_POLE_AXIS,ID_CA_IK_TAG_POLE_AXIS_AUTO);
    bc->SetFloat(ID_CA_IK_TAG_POLE_TWIST,0.1);
    bc->SetFloat(ID_CA_IK_TAG_SQUASH,0.1);
    bc->SetInt32(ID_CA_IK_TAG_SQUASH_TYPE,ID_CA_IK_TAG_STRETCH_TYPE_POSITION);
    bc->SetFloat(ID_CA_IK_TAG_SQUASH_CLAMP_DIST,0.1);
    bc->SetBool(ID_CA_IK_TAG_SQUASH_CLAMP,true);
    bc->SetFloat(ID_CA_IK_TAG_STRETCH,0.1);
    bc->SetInt32(ID_CA_IK_TAG_STRETCH_TYPE,ID_CA_IK_TAG_STRETCH_TYPE_POSITION);
    bc->SetFloat(ID_CA_IK_TAG_STRETCH_CLAMP_DIST,0.1);
    bc->SetBool(ID_CA_IK_TAG_STRETCH_CLAMP,true);
    bc->SetBool(ID_CA_IK_TAG_DRAW_FK_CHAIN,true);
    bc->SetBool(ID_CA_IK_TAG_DRAW_IK_CHAIN,true);
    bc->SetBool(ID_CA_IK_TAG_DRAW_HANDLE_LINE,true);
    bc->SetInt32(ID_CA_IK_TAG_DRAW_POLE,ID_CA_IK_TAG_DRAW_POLE_NONE);
    bc->SetBool(ID_CA_IK_TAG_GOAL_UPDATE,true);
    bc->SetBool(ID_CA_IK_TAG_GOAL_CONSTRAIN,true);
    bc->SetBool(ID_CA_IK_TAG_GOAL_DIRTY,true);
    bc->SetBool(ID_CA_IK_TAG_ALIGN_GOAL,true);
    bc->SetBool(ID_CA_IK_TAG_UPDATEFKIK,true);
    bc->SetInt32(ID_CA_IK_TAG_SOLVER_ITERATIONS_MAX,1);
    bc->SetFloat(ID_CA_IK_TAG_SOLVER_THRESHOLD,0.1);
    bc->SetBool(ID_CA_IK_TAG_DYNAMICS_ENABLE,true);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_STIFFNESS,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_DRAG,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_POSHOLD,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_ROTHOLD,0.1);
    bc->SetBool(ID_CA_IK_TAG_DYNAMICS_COLLISIONS,true);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_RADIUS,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_FRICTION,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_BOUNCE,0.1);
    bc->SetFloat(ID_CA_IK_TAG_DYNAMICS_GRAVITY,0.1);
    bc->SetInt32(ID_CA_IK_TAG_DYNAMICS_FORCES_INCEXC,ID_CA_IK_TAG_DYNAMICS_INCEXC_INCLUDE);
    bc->SetBool(ID_CA_IK_TAG_DYNAMICS_CUPDATE,true);
    bc->SetInt32(ID_CA_IK_TAG_DYNAMICS_SUBDIV,1);
    bc->SetBool(ID_CA_IK_TAG_DYNAMICS_AUTOTIME,true);
    pTag->Message(MSG_UPDATE);                                                      
}
             

Buttons

This node has buttons. Buttons can manually be executed by calling the following code

Python

c4d.CallButton(tag,c4d.ID_CA_IK_TAG_ADD_GOAL)
c4d.CallButton(tag,c4d.ID_CA_IK_TAG_RESET_FK)
c4d.CallButton(tag,c4d.ID_CA_IK_TAG_ADD_POLE)

C++

DescriptionCommand dc;
dc.id = DescID(ID_CA_IK_TAG_ADD_GOAL);             
pTag->Message(MSG_DESCRIPTION_COMMAND, &dc);

DescriptionCommand dc; dc.id = DescID(ID_CA_IK_TAG_RESET_FK); pTag->Message(MSG_DESCRIPTION_COMMAND, &dc);
DescriptionCommand dc; dc.id = DescID(ID_CA_IK_TAG_ADD_POLE); pTag->Message(MSG_DESCRIPTION_COMMAND, &dc);