When a modifier is created using CreateInstance() it is then added using the function Interface7::AddModifier(). The following code demonstrates the process:
INode* MakeBentCylinder(float radius, float height, int segments, float angle) { // Create a new object using CreateInstance() Object *obj = (Object*)CreateInstance(GEOMOBJECT_CLASS_ID, Class_ID(CYLINDER_CLASS_ID,0)); // Get ahold of the parameter block IParamArray *iCylParams = obj->GetParamBlock(); // Get the current animation time TimeValue time = GetCOREInterface()->GetTime(); // Set the value of radius, height and segments. iCylParams->SetValue(obj->GetParamBlockIndex(CYLINDER_RADIUS), time, radius); iCylParams->SetValue(obj->GetParamBlockIndex(CYLINDER_HEIGHT), time, height); iCylParams->SetValue(obj->GetParamBlockIndex(CYLINDER_SEGMENTS), time, segments); // Create the object INode *node = ip->CreateObjectNode(obj); // Create a bend modifier Modifier *bend = (Modifier*)ip->CreateInstance(OSM_CLASS_ID, Class_ID(BENDOSM_CLASS_ID,0)); // Set the bend angle IParamBlock2* ipBendBlock = ((Animatable*)bend)->GetParamBlock(0); //only one pblock2 ipBendBlock->SetValue(BEND_ANGLE,time,angle); // Create a node in the scene for the object // Note that COREInterface12 derives from Interface7 GetCOREInterface12()->AddModifier(*node, *bend); return node; }