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 Oxpelektrix

Oxpelektrix

Attributes

  • ENGLISH NAME : X-ParticlesElektrixObject
  • NAME : Oxpelektrix
  • INCLUDE : Obase
  • PATH : res/description/oxpelektrix.res
  • PLUGIN : X-Particles
  • MAXON online help (may not exist): OXPELEKTRIX

Elements

ID UI Name Type Parameters Cycle
ELEKTRIX_MODE Mode LONG  
ELEKTRIX_MODE_TOOBJECT ToObject
ELEKTRIX_MODE_SPHERICAL Spherical
ELEKTRIX_MODE_PARTICLE ToParticles
ELEKTRIX_MODE_PTOP ParticletoParticle
ELEKTRIX_OBJECT_START StartObject LINK  
ELEKTRIX_OBJECT_END EndObject LINK  
ELEKTRIX_EMITTER Emitter LINK  
ELEKTRIX_EMITTER2 DestinationEmitter LINK  
ELEKTRIX_BOLT_OFFSET Spread REAL
UNIT METER
SCALE_H
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 200.0
CUSTOMGUI REALSLIDER
ELEKTRIX_SEED RandomSeed LONG
MIN 0
SCALE_H
ELEKTRIX_BOLT_COUNT NumberofBolts LONG
MIN 1
MINSLIDER 1
MAXSLIDER 100
CUSTOMGUI LONGSLIDER
ELEKTRIX_FLICKER_ENABLE EnableFlicker BOOL  
ELEKTRIX_FLICKER_SPEED FlickerInterval BASETIME SCALE_H
ELEKTRIX_FLICKER_SPEED_VAR Variation BASETIME SCALE_H
ELEKTRIX_DIVISION_COUNT Divisions LONG
MIN 0
MAX 10
MINSLIDER 0
MAXSLIDER 10
CUSTOMGUI LONGSLIDER
ELEKTRIX_FORK_MAXDIV Max.ForkDivision LONG
MIN 0
MINSLIDER 0
MAXSLIDER 10
CUSTOMGUI LONGSLIDER
ELEKTRIX_FORK_LENGTH_MODE ForkLengthMode LONG  
FORK_LENGTH_MODE_REL RelativetoDivision
FORK_LENGTH_MODE_ABS Absolute
ELEKTRIX_FORK_LENGTH_MULTI LengthMultiplier REAL
UNIT PERCENT
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 500.0
CUSTOMGUI REALSLIDER
ELEKTRIX_FORK_LENGTH_MAX Max.Length REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 500.0
CUSTOMGUI REALSLIDER
ELEKTRIX_FORK_LENGTH_MIN Min.Length REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 500.0
CUSTOMGUI REALSLIDER
ELEKTRIX_FORK_WEIGHT_X ForkAxisWeightX REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
STEP 1.0
SCALE_H
ELEKTRIX_FORK_WEIGHT_Y ForkAxisWeightY REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
STEP 1.0
SCALE_H
ELEKTRIX_FORK_PROB ForkProbability REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
MINSLIDER 0.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ELEKTRIX_SPHERICAL_LENGTH BoltLength REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 1000.0
CUSTOMGUI REALSLIDER
ELEKTRIX_SPHERICAL_LENGTH_VAR Variation REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 1000.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEVIATION_MODE DeviationMode LONG  
ELEKTRIX_DEVMODE_ABSOLUTE Absolute
ELEKTRIX_DEVMODE_PERCENT PropotionatetoLength
ELEKTRIX_DEVIATION_MIN Min.Deviation REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 500.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEVIATION_MAX Max.Deviation REAL
UNIT METER
MIN 0.0
MINSLIDER 0.0
MAXSLIDER 500.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEVIATION_MIN_PERCENT Min.Deviation REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
MINSLIDER 0.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEVIATION_MAX_PERCENT Max.Deviation REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
MINSLIDER 0.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEVIATION_WEIGHT_X DeviationWeightX REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
STEP 1.0
SCALE_H
ELEKTRIX_DEVIATION_WEIGHT_Y DeviationWeightY REAL
UNIT PERCENT
MIN 0.0
MAX 100.0
STEP 1.0
SCALE_H
ELEKTRIX_DEFORM_ENABLE Enable BOOL  
ELEKTRIX_DEFORM_HEIGHT Displacement REAL
UNIT METER
MINSLIDER -100.0
MAXSLIDER 100.0
CUSTOMGUI REALSLIDER
ELEKTRIX_DEFORM_SHADER Shader SHADERLINK  
ELEKTRIX_SPLINE_TYPE Type LONG  
ELEKTRIX_SPLINE_TYPE_LINEAR Linear
ELEKTRIX_SPLINE_TYPE_CUBIC Cubic
ELEKTRIX_SPLINE_TYPE_AKIMA Akima
ELEKTRIX_SPLINE_TYPE_BSPLINE B-Spline
ELEKTRIX_SPLINE_TYPE_BEZIER Bezier
ELEKTRIX_SPLINE_INTERP IntermediatePoints LONG  
ELEKTRIX_SPLINE_INTERP_NONE None
ELEKTRIX_SPLINE_INTERP_NATURAL Natural
ELEKTRIX_SPLINE_INTERP_ADAPTIVE Adaptive
ELEKTRIX_SPLINE_SUB Number LONG
MIN 0
MINSLIDER 0
MAXSLIDER 8
CUSTOMGUI LONGSLIDER
ELEKTRIX_SPLINE_ANGLE Angle REAL
UNIT DEGREE
MIN 0.0
MAX 90.0
MINSLIDER 0.0
MAXSLIDER 90.0
CUSTOMGUI REALSLIDER
ELEKTRIX_HELP_BUTTON BITMAPBUTTON  
ELEKTRIX_VIDMAN_BUTTON BITMAPBUTTON  
ELEKTRIX_BUTTON_RESET ResettoDefaults BUTTON  
ELEKTRIX_BUTTON_SAVEPRESET SavePreset... BUTTON  
ELEKTRIX_BUTTON_LOADPRESET LoadPreset... BUTTON  

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.Oxpelektrix)
    doc.InsertObject(obj)
    c4d.EventAdd(c4d.EVENT_FORCEREDRAW)
    
    #You can set parameters two different ways. 
    #First way              
    obj[c4d.ELEKTRIX_MODE] = c4d.ELEKTRIX_MODE_TOOBJECT
    obj[c4d.ELEKTRIX_BOLT_OFFSET] = 0.1
    obj[c4d.ELEKTRIX_SEED] = 1
    obj[c4d.ELEKTRIX_BOLT_COUNT] = 1
    obj[c4d.ELEKTRIX_FLICKER_ENABLE] = True
    obj[c4d.ELEKTRIX_DIVISION_COUNT] = 1
    obj[c4d.ELEKTRIX_FORK_MAXDIV] = 1
    obj[c4d.ELEKTRIX_FORK_LENGTH_MODE] = c4d.FORK_LENGTH_MODE_REL
    obj[c4d.ELEKTRIX_FORK_LENGTH_MULTI] = 0.1
    obj[c4d.ELEKTRIX_FORK_LENGTH_MAX] = 0.1
    obj[c4d.ELEKTRIX_FORK_LENGTH_MIN] = 0.1
    obj[c4d.ELEKTRIX_FORK_WEIGHT_X] = 0.1
    obj[c4d.ELEKTRIX_FORK_WEIGHT_Y] = 0.1
    obj[c4d.ELEKTRIX_FORK_PROB] = 0.1
    obj[c4d.ELEKTRIX_SPHERICAL_LENGTH] = 0.1
    obj[c4d.ELEKTRIX_SPHERICAL_LENGTH_VAR] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_MODE] = c4d.ELEKTRIX_DEVMODE_ABSOLUTE
    obj[c4d.ELEKTRIX_DEVIATION_MIN] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_MAX] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_MIN_PERCENT] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_MAX_PERCENT] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_WEIGHT_X] = 0.1
    obj[c4d.ELEKTRIX_DEVIATION_WEIGHT_Y] = 0.1
    obj[c4d.ELEKTRIX_DEFORM_ENABLE] = True
    obj[c4d.ELEKTRIX_DEFORM_HEIGHT] = 0.1
    obj[c4d.ELEKTRIX_SPLINE_TYPE] = c4d.ELEKTRIX_SPLINE_TYPE_LINEAR
    obj[c4d.ELEKTRIX_SPLINE_INTERP] = c4d.ELEKTRIX_SPLINE_INTERP_NONE
    obj[c4d.ELEKTRIX_SPLINE_SUB] = 1
    obj[c4d.ELEKTRIX_SPLINE_ANGLE] = 0.1
    
    #Second way, using the base container.
    bc = obj.GetDataInstance()
    bc.SetInt32(c4d.ELEKTRIX_MODE,c4d.ELEKTRIX_MODE_TOOBJECT)
    bc.SetFloat(c4d.ELEKTRIX_BOLT_OFFSET,0.1)
    bc.SetInt32(c4d.ELEKTRIX_SEED,1)
    bc.SetInt32(c4d.ELEKTRIX_BOLT_COUNT,1)
    bc.SetBool(c4d.ELEKTRIX_FLICKER_ENABLE,True)
    bc.SetInt32(c4d.ELEKTRIX_DIVISION_COUNT,1)
    bc.SetInt32(c4d.ELEKTRIX_FORK_MAXDIV,1)
    bc.SetInt32(c4d.ELEKTRIX_FORK_LENGTH_MODE,c4d.FORK_LENGTH_MODE_REL)
    bc.SetFloat(c4d.ELEKTRIX_FORK_LENGTH_MULTI,0.1)
    bc.SetFloat(c4d.ELEKTRIX_FORK_LENGTH_MAX,0.1)
    bc.SetFloat(c4d.ELEKTRIX_FORK_LENGTH_MIN,0.1)
    bc.SetFloat(c4d.ELEKTRIX_FORK_WEIGHT_X,0.1)
    bc.SetFloat(c4d.ELEKTRIX_FORK_WEIGHT_Y,0.1)
    bc.SetFloat(c4d.ELEKTRIX_FORK_PROB,0.1)
    bc.SetFloat(c4d.ELEKTRIX_SPHERICAL_LENGTH,0.1)
    bc.SetFloat(c4d.ELEKTRIX_SPHERICAL_LENGTH_VAR,0.1)
    bc.SetInt32(c4d.ELEKTRIX_DEVIATION_MODE,c4d.ELEKTRIX_DEVMODE_ABSOLUTE)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_MIN,0.1)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_MAX,0.1)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_MIN_PERCENT,0.1)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_MAX_PERCENT,0.1)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_WEIGHT_X,0.1)
    bc.SetFloat(c4d.ELEKTRIX_DEVIATION_WEIGHT_Y,0.1)
    bc.SetBool(c4d.ELEKTRIX_DEFORM_ENABLE,True)
    bc.SetFloat(c4d.ELEKTRIX_DEFORM_HEIGHT,0.1)
    bc.SetInt32(c4d.ELEKTRIX_SPLINE_TYPE,c4d.ELEKTRIX_SPLINE_TYPE_LINEAR)
    bc.SetInt32(c4d.ELEKTRIX_SPLINE_INTERP,c4d.ELEKTRIX_SPLINE_INTERP_NONE)
    bc.SetInt32(c4d.ELEKTRIX_SPLINE_SUB,1)
    bc.SetFloat(c4d.ELEKTRIX_SPLINE_ANGLE,0.1)

if __name__=='__main__':
    main()
             

C++

#include "c4d.h"
#include "../res/description/oxpelektrix.h"
void SampleFunction()
{
    BaseDocument *pDoc = GetActiveDocument();
    BaseObject *pObject = BaseObject::Alloc(Oxpelektrix);
    pDoc->InsertObject(pObject);
    pDoc->StartUndo();
    pDoc->AddUndo(UNDO_NEW,pObject);
    pDoc->EndUndo();
    EventAdd(EVENT_FORCEREDRAW);
    
    //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;
    pObject->SetParameter(DescID(ELEKTRIX_MODE),GeData(ELEKTRIX_MODE_TOOBJECT),flags);
    pObject->SetParameter(DescID(ELEKTRIX_BOLT_OFFSET),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SEED),GeData(1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_BOLT_COUNT),GeData(1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FLICKER_ENABLE),GeData(true),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DIVISION_COUNT),GeData(1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_MAXDIV),GeData(1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_LENGTH_MODE),GeData(FORK_LENGTH_MODE_REL),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_LENGTH_MULTI),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_LENGTH_MAX),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_LENGTH_MIN),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_WEIGHT_X),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_WEIGHT_Y),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_FORK_PROB),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPHERICAL_LENGTH),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPHERICAL_LENGTH_VAR),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_MODE),GeData(ELEKTRIX_DEVMODE_ABSOLUTE),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_MIN),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_MAX),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_MIN_PERCENT),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_MAX_PERCENT),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_WEIGHT_X),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEVIATION_WEIGHT_Y),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEFORM_ENABLE),GeData(true),flags);
    pObject->SetParameter(DescID(ELEKTRIX_DEFORM_HEIGHT),GeData(0.1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPLINE_TYPE),GeData(ELEKTRIX_SPLINE_TYPE_LINEAR),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPLINE_INTERP),GeData(ELEKTRIX_SPLINE_INTERP_NONE),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPLINE_SUB),GeData(1),flags);
    pObject->SetParameter(DescID(ELEKTRIX_SPLINE_ANGLE),GeData(0.1),flags);
    pObject->Message(MSG_UPDATE);            

    //Second way, using the base container.
    BaseContainer *bc =     pObject->GetDataInstance();
    bc->SetInt32(ELEKTRIX_MODE,ELEKTRIX_MODE_TOOBJECT);
    bc->SetFloat(ELEKTRIX_BOLT_OFFSET,0.1);
    bc->SetInt32(ELEKTRIX_SEED,1);
    bc->SetInt32(ELEKTRIX_BOLT_COUNT,1);
    bc->SetBool(ELEKTRIX_FLICKER_ENABLE,true);
    bc->SetInt32(ELEKTRIX_DIVISION_COUNT,1);
    bc->SetInt32(ELEKTRIX_FORK_MAXDIV,1);
    bc->SetInt32(ELEKTRIX_FORK_LENGTH_MODE,FORK_LENGTH_MODE_REL);
    bc->SetFloat(ELEKTRIX_FORK_LENGTH_MULTI,0.1);
    bc->SetFloat(ELEKTRIX_FORK_LENGTH_MAX,0.1);
    bc->SetFloat(ELEKTRIX_FORK_LENGTH_MIN,0.1);
    bc->SetFloat(ELEKTRIX_FORK_WEIGHT_X,0.1);
    bc->SetFloat(ELEKTRIX_FORK_WEIGHT_Y,0.1);
    bc->SetFloat(ELEKTRIX_FORK_PROB,0.1);
    bc->SetFloat(ELEKTRIX_SPHERICAL_LENGTH,0.1);
    bc->SetFloat(ELEKTRIX_SPHERICAL_LENGTH_VAR,0.1);
    bc->SetInt32(ELEKTRIX_DEVIATION_MODE,ELEKTRIX_DEVMODE_ABSOLUTE);
    bc->SetFloat(ELEKTRIX_DEVIATION_MIN,0.1);
    bc->SetFloat(ELEKTRIX_DEVIATION_MAX,0.1);
    bc->SetFloat(ELEKTRIX_DEVIATION_MIN_PERCENT,0.1);
    bc->SetFloat(ELEKTRIX_DEVIATION_MAX_PERCENT,0.1);
    bc->SetFloat(ELEKTRIX_DEVIATION_WEIGHT_X,0.1);
    bc->SetFloat(ELEKTRIX_DEVIATION_WEIGHT_Y,0.1);
    bc->SetBool(ELEKTRIX_DEFORM_ENABLE,true);
    bc->SetFloat(ELEKTRIX_DEFORM_HEIGHT,0.1);
    bc->SetInt32(ELEKTRIX_SPLINE_TYPE,ELEKTRIX_SPLINE_TYPE_LINEAR);
    bc->SetInt32(ELEKTRIX_SPLINE_INTERP,ELEKTRIX_SPLINE_INTERP_NONE);
    bc->SetInt32(ELEKTRIX_SPLINE_SUB,1);
    bc->SetFloat(ELEKTRIX_SPLINE_ANGLE,0.1);
    pObject->Message(MSG_UPDATE);                                                      
}
             

Buttons

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

Python

c4d.CallButton(obj,c4d.ELEKTRIX_HELP_BUTTON)
c4d.CallButton(obj,c4d.ELEKTRIX_VIDMAN_BUTTON)
c4d.CallButton(obj,c4d.ELEKTRIX_BUTTON_RESET)
c4d.CallButton(obj,c4d.ELEKTRIX_BUTTON_SAVEPRESET)
c4d.CallButton(obj,c4d.ELEKTRIX_BUTTON_LOADPRESET)

C++

DescriptionCommand dc;
dc.id = DescID(ELEKTRIX_HELP_BUTTON);             
pObject->Message(MSG_DESCRIPTION_COMMAND, &dc);

DescriptionCommand dc; dc.id = DescID(ELEKTRIX_VIDMAN_BUTTON); pObject->Message(MSG_DESCRIPTION_COMMAND, &dc);
DescriptionCommand dc; dc.id = DescID(ELEKTRIX_BUTTON_RESET); pObject->Message(MSG_DESCRIPTION_COMMAND, &dc);
DescriptionCommand dc; dc.id = DescID(ELEKTRIX_BUTTON_SAVEPRESET); pObject->Message(MSG_DESCRIPTION_COMMAND, &dc);
DescriptionCommand dc; dc.id = DescID(ELEKTRIX_BUTTON_LOADPRESET); pObject->Message(MSG_DESCRIPTION_COMMAND, &dc);