内容表

关于

BaseObject is the base class of all scene objects of Cinema 4D . These objects can be polygon objects, splines, generators, deformers, effectors, cameras, lights or objects like the "Sky" or "Background" object.

BaseObject objects are an instance of Obase .

A BaseObject may be also a:

另请参阅 Flags .

Access

BaseObject objects are typically stored in and accessed from a BaseDocument :

BaseDocument 对象 and 选择 .

// This example searches for an object named "Cube". // If it cannot be found a new cube with that name will be created.
BaseObject * const object = doc-> SearchObject ( "Cube" _s); if ( object != nullptr ) { ApplicationOutput ( "found \"Cube\"" _s); return maxon::OK ; }
BaseObject * const cubeObject = BaseObject::Alloc ( Ocube ); if (cubeObject == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); cubeObject-> SetName ( "Cube" _s); doc-> InsertObject (cubeObject, nullptr , nullptr );

Allocation/Deallocation

BaseObject objects are created with the usual tools:

The object IDs of many build-in object types are defined in Object Types .

// This example shows how to create a new "Cube" object and how to insert it into the document. BaseDocument * const document = GetActiveDocument (); if (document == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); BaseObject * const cubeObject = BaseObject::Alloc ( Ocube ); if (cubeObject == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); cubeObject-> SetName ( "This is a new object" _s); document-> InsertObject (cubeObject, nullptr , nullptr ); EventAdd ();

Primitive objects can also be created with these dedicated functions:

New objects are typically added to a BaseDocument that takes ownership:

// This example accesses the currently active object. // If an object is found a new Sphere is created and inserted under the found object. BaseObject * const parentObject = doc-> GetActiveObject (); if (parentObject == nullptr ) return maxon::IllegalArgumentError( MAXON_SOURCE_LOCATION ); BaseObject * const newSphere = BaseObject::Alloc ( Osphere ); if (newSphere == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); newSphere-> InsertUnder (parentObject);

移除

A BaseObject can be removed from the host BaseDocument :

// The example removes the active object from the document. BaseObject * object = doc-> GetActiveObject (); if ( object == nullptr ) return maxon::IllegalArgumentError( MAXON_SOURCE_LOCATION ); object ->Remove(); BaseObject::Free ( object );

Navigate

BaseObject elements are organized in a tree. The usual functions can be used to navigate in that tree:

另请参阅 Navigation in Lists and Trees .

// This example function iterates through all objects // of the object tree defined by the given BaseObject. static void CheckObjects( BaseObject * obj) { while (obj != nullptr ) { ApplicationOutput ( "Object Name: " + obj-> GetName ()); CheckObjects(obj-> GetDown ()); obj = obj-> GetNext (); } }

Read-Only Properties

Bounding Box

The bounding box defines the dimensions of a BaseObject .

// This example creates a cube with the size of the bounding box. const 向量 bbCenter = object ->GetMp(); const 向量 bbRadius = object ->GetRad(); BaseObject * const cube = BaseObject::Alloc ( Ocube ); if (cube == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); cube-> SetParameter ( DescID ( PRIM_CUBE_LEN ), bbRadius * 2.0, DESCFLAGS_SET::NONE ); cube-> SetParameter ( DescID ( ID_BASEOBJECT_REL_POSITION ), bbCenter, DESCFLAGS_SET::NONE ); cube-> InsertUnder ( object );

缓存

Generator objects store virtual child objects in a cache. If a deformer is applied, the deformed child objects are found in the deform cache.

// This function can be used to recursively search the cache // of a given BaseObject for polygon objects. static void DoRecursion( BaseObject * op) { // Check the deform cache BaseObject * tp = op-> GetDeformCache (); if (tp) { DoRecursion(tp); } else { // check the cache tp = op-> GetCache ( nullptr ); if (tp) { DoRecursion(tp); } else { // check if generator if (!op-> GetBit ( BIT_CONTROLOBJECT )) { // check if polygon object if (op-> IsInstanceOf ( Opolygon )) { ApplicationOutput ( "Found polygon data" _s); } } } } // loop through child objects for (tp = op-> GetDown (); tp; tp = tp-> GetNext ()) { DoRecursion(tp); } }

另请参阅 Generating .

杂项

Further functions are:

// This example casts the given BaseObject into SplineObject // if it is a spline or if it is a spline generator. SplineObject * spline = nullptr ;

// check if the object is a "Spline" object if (object-> IsInstanceOf ( Ospline )) spline = ToSpline ( object ); // check if the object is a spline generator else if (object-> GetInfo () & OBJECT_ISSPLINE ) spline = object -> GetRealSpline (); if (spline != nullptr ) ApplicationOutput ( "Spline Object: " + spline-> GetName ());

特性

参数

The basic parameters IDs of a BaseObject are defined in obase.h . They can be changed using C4DAtom::SetParameter() and C4DAtom::GetParameter() . For several properties dedicated functions exist.

PSR

The placement of an object is defined by its position, scale and rotation (PSR). Freeze Transformations allow to define a default or reset value. In short, the absolute value is the frozen value plus the relative value.

注意
The "absolute" values are not the world space values.

These functions give access to the "absolute" values:

These functions give access to the "frozen" values:

These functions give access to the "relative" values:

These functions are used to access the local and global Matrix of an object:

// This example reads the global matrix of the given object // and applies it to the newly created BaseObject. const 矩阵 mg = object ->GetMg(); BaseObject * const cube = BaseObject::Alloc ( Ocube ); if (cube == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); doc-> InsertObject (cube, nullptr , nullptr ); cube-> SetMg (mg);

另请参阅 Vector Manual (Classic) and Matrix Manual (Classic) .

Visibility

A BaseObject may or may not be visible in the editor and rendered output.

The modes are:

// This example synchronizes editor and render mode if the render mode is off. const Int32 mode = object ->GetRenderMode(); if (mode == MODE_OFF ) object ->SetEditorMode( MODE_OFF );
注意
CheckEditorVisibility() checks the editor mode effect and layer settings of the given object, see Utility .

Generator / Deformer enabled

If an object is a generator or deformer it can be enabled or disabled:

// This example checks if the given object is a SDS. // If so it gets disabled.

// check if the object is a // "Subdivision Surface" if (object-> IsInstanceOf ( Osds )) { object ->SetDeformMode( false ); }

Tags

A BaseObject can host a variable number of tags. These tags add additional functionality and data to the object.

另请参阅 BaseTag and VariableTag Manual .

警告
Since R17 the Take System can add and own tags. See Take System Overview .

Existing tags can be accessed with:

// This example loops through the tags of the given object. BaseTag * tag = object ->GetFirstTag(); while (tag != nullptr ) { ApplicationOutput ( "Tag: " + tag-> GetName ()); tag = tag-> GetNext (); }

New tags can be created:

// This example checks if the given object owns a "Protection" tag. // If not, the "Protection" tag is created. BaseTag * protectionTag = object ->GetTag( Tprotection ); if (protectionTag == nullptr ) { protectionTag = object ->MakeTag( Tprotection ); if (protectionTag == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); }

and

// This example adds a Phong tag to the given object.

object ->SetPhong( true , true , DegToRad (60.0));

Further tag related functionality:

// This example removes all "Annotation" tags from the given object.

// loop until no "Annotation" tag can be found anymore while (object-> GetTag ( Tannotation )) { object ->KillTag( Tannotation ); }

颜色

A BaseObject can have an assigned color and can be displayed in xray mode:

The settings are:

// This example reads the color settings of the given object. ObjectColorProperties objColor; object ->GetColorProperties(&objColor); ApplicationOutput ( "Color: " + String::VectorToString (objColor. color ));
注意
To set the color of virtual objects in ObjectData::GetVirtualObjects() a generator must be registered with OBJECT_USECACHECOLOR ,见 Flags and Generating .

Modeling Axis

In certain modeling modes a modeling axis is presented as the result of the current selection.

// This example creates a new cube object using the modeling axis of the given object. const 矩阵 mat = object ->GetModelingAxis(doc); BaseObject * const cube = BaseObject::Alloc ( Ocube ); if (cube == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); cube-> SetMg (mat); doc-> InsertObject (cube, nullptr , nullptr );
注意
The axis of a multiselection can be obtained from the document, see BaseDocument Axis and Plane .

Generating

A generator object creates virtual and cached BaseObject elements in its ObjectData::GetVirtualObjects() function. The following BaseObject member functions are only used in this context.

While creating the cache one should typically check if the cache is already build:

// This code checks if the cache or the object is dirty. // If not, the existing cache is returned. Bool dirty = op-> CheckCache (hh) || op-> IsDirty ( DIRTYFLAGS::DATA ); if (!dirty) return op-> GetCache (hh);

另请参阅 缓存 .

Generators can use child objects as input objects (see flag OBJECT_INPUT ). A generator can check if these child objects are dirty and it can hide them in the viewport. The most simple way is to handle the child objects manually:

// This example checks if the child object is dirty and "touches" it so it will be hidden. Bool dirty = false ; BaseObject * const childObject = op-> GetDown (); if (childObject != nullptr ) { dirty = childObject-> IsDirty ( DIRTYFLAGS::MATRIX | DIRTYFLAGS::DATA ); childObject-> Touch (); }

To handle multiple child objects a dependence list can be used:

// This example adds only the cube child objects to the dependencies list. op-> NewDependenceList (); BaseObject * child = op-> GetDown (); while (child != nullptr ) { // check if the child object is a "Cube" object if (child-> GetType () == Ocube ) { op-> AddDependence (hh, child); } child = child-> GetNext (); } if (!dirty) dirty = !op-> CompareDependenceList (); op-> TouchDependenceList ();

But the most simple way is to use one of these two functions: They will return polygon versions of the child objects and hide them:

注意
In some special cases (eg, Matrix Object) these functions don't work as expected (eg, wrong dirtiness). In these cases, a custom cache handling is needed.
// This example gets a polygon clone of the first child object. // If the child object is not dirty, the returned object is the cache. Bool dirty = false ; BaseObject * const childObject = op-> GetDown (); if (childObject != nullptr ) { const HIERARCHYCLONEFLAGS flags = HIERARCHYCLONEFLAGS::ASPOLY ; BaseObject * const clone = op-> GetAndCheckHierarchyClone (hh, childObject, flags, &dirty, nullptr , false ); if (!dirty) return clone;

// Fill the cache based on the polygon clone. // ...

If a generator creates multiple child objects each object must be uniquely identifiable. If the flag OBJECT_UNIQUEENUMERATION is set each object can receive an unique IP number.

注意
The unique IP must not be zero.
// This example creates some cube objects with a unique IP. 向量 pos = 向量 (0, 0, 0); for ( Int32 i = 1; i < 11; ++i) { BaseObject * const cube = BaseObject::Alloc ( Ocube ); if (cube != nullptr ) { cube-> InsertUnder (parent); cube-> SetAbsPos (pos); cube-> SetUniqueIP (i); pos. x += 250.0; } }

Isoparm lines can be used to display and accentuate certain lines in the viewport.

// This example creates a simple Line object and assigns it to the given polygon object. LineObject * const lineObject = LineObject::Alloc (2, 1); if (lineObject != nullptr ) { Segment * const segments = lineObject-> GetSegmentW (); 向量 * const linePoints = lineObject-> GetPointW ();

// check pointers if (segments && linePoints) { segments[0]. cnt = 2; linePoints[0] = 向量 (0, 0, 0); linePoints[1] = 向量 (0, 1000, 0); lineObject-> 消息 ( MSG_UPDATE ); polyObject-> SetIsoparm (lineObject); } }

Rotation Order

Cinema 4D the rotation of an object is stored as a 向量 . Each component of this vector corresponds to a rotation axis. The rotation result depends on the order in which the rotation is executed. For values see ROTATIONORDER .

// This example simply sets the default rotation order.

object ->SetRotationOrder( ROTATIONORDER::DEFAULT );
注意
Typically used with MatrixToHPB() and HPBToMatrix() 。见 Matrix Manual (Classic) .

The rotation values of an animation can be optimized:

// This example checks the rotation tracks of the given object. // FindBestEulerAngle() will modify the existing keys to find the best angles. obj-> FindBestEulerAngle ( ID_BASEOBJECT_REL_ROTATION , true , false );

// animate the object so it uses the new key values doc-> AnimateObject (obj, doc-> GetTime (), ANIMATEFLAGS::NONE );

Quaternion Rotation Mode

The (animated) rotation values of an object can be interpolated using quaternions.

// This example checks if the given object uses quaternion interpolation. // If not quaternion interpolation is enabled.

// check if the object uses quaternion interpolation if (obj-> IsQuaternionRotationMode () == false ) { // turn on quaternion interpolation. // this will update the rotation animation tracks obj-> SetQuaternionRotationMode ( true , false ); }

The use of quaternion interpolation can be forced with:

Animation Tracks

These utility functions allow fast access to the animation tracks and curves of an animated 向量 parameter. See 动画概述 .

注意
This is typically used with synchronized tracks, see CTrack Synchronisation .
// This example accesses the subtracks of the object's position track. const DescID positionTrack { DescLevel { ID_BASEOBJECT_REL_POSITION , DTYPE_VECTOR , 0 } }; CTrack * trackX = nullptr ; CTrack * trackY = nullptr ; CTrack * trackZ = nullptr ;

// access track for each vector component if (obj-> GetVectorTracks (positionTrack, trackX, trackY, trackZ)) { if (trackX != nullptr ) ApplicationOutput ( "Track X: " + trackX-> GetName ()); if (trackY != nullptr ) ApplicationOutput ( "Track Y: " + trackY-> GetName ()); if (trackZ != nullptr ) ApplicationOutput ( "Track Z: " + trackZ-> GetName ()); }

This function is used to handle keys on a 向量 parameter:

动画

An object can be animated using the host BaseDocument :

注意
This function only animates the object based on its keyframes but does not care about expressions or other objects.

另请参阅 BaseDocument 动画 .

转换

Generators create and own virtual child objects. To access these child object one can read the cache of the generator (see 缓存 ). Another way is to apply the "Current State to Object" command to the given generator object.

// This example creates a torus object and converts it to a polygon object. AutoAlloc<BaseDocument> tempDoc; if (tempDoc == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION ); BaseObject * const object = BaseObject::Alloc ( Otorus ); if ( object == nullptr ) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );

// insert it into the temp doc. tempDoc-> InsertObject ( object , nullptr , nullptr );

// modify object object ->SetParameter( PRIM_TORUS_INNERRAD , 100.0, DESCFLAGS_SET::NONE ); ModelingCommandData mcd; mcd. doc = tempDoc; mcd. op = object;

// execute the "Current State to Object" modeling command if (! SendModelingCommand ( MCOMMAND_CURRENTSTATETOOBJECT , mcd)) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); C4DAtom * atom = mcd. result -> GetIndex (0); BaseObject * const res = static_cast< BaseObject * > (atom);

// check if the result object is a polygon object if (res && (res-> GetType () == Opolygon )) { doc-> InsertObject (res, nullptr , nullptr ); }

Bits

A BaseObject can be hidden in the Object Manager or viewport using these bits:

// This example hides the given object in the Object Manager.

object ->ChangeNBit( NBIT::OHIDE , NBITCONTROL::SET );

Flags

The flags of a BaseObject can be accessed with GeListNode::GetInfo() . These flags inform about the type of object and its behavior.

Object type:

// This example casts the given BaseObject into SplineObject // if it is a spline or if it is a spline generator. SplineObject * spline = nullptr ;

// check if the object is a "Spline" object if (object-> IsInstanceOf ( Ospline )) spline = ToSpline ( object ); // check if the object is a spline generator else if (object-> GetInfo () & OBJECT_ISSPLINE ) spline = object -> GetRealSpline (); if (spline != nullptr ) ApplicationOutput ( "Spline Object: " + spline-> GetName ());

Generator related flags:

Other flags:

Utility

These utility functions can return the name of the object type or return the object type based on that name.

// This example prints the name of the object type of the given object. const Int32 type = obj-> GetType (); const String typeName = GetObjectName (type); ApplicationOutput ( "Object Type: " + typeName);

These functions can be used to check if the given BaseObject is visible in the Editor:

// This example checks if the given BaseObject is visible in the active editor view. BaseDraw * const bd = doc-> GetActiveBaseDraw (); if (bd == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); const DISPLAYFILTER filter = bd-> GetDisplayFilter (); const Bool displayFilter = CheckDisplayFilter ( object , filter);

// check editor visibility const Bool editorVisibiliy = CheckEditorVisibility ( object );

// check if the object is visible in the viewport if (displayFilter && editorVisibiliy) { ApplicationOutput ( "The object is visible in the Editor" _s); } else { ApplicationOutput ( "The object is not visible in the Editor" _s); }

延伸阅读

Opolygon
#define Opolygon
Polygon - PolygonObject.
定义: ge_prepass.h:975
BaseObject::IsDirty
Bool IsDirty(DIRTYFLAGS flags)
定义: c4d_baseobject.h:891
PointObject::GetPointW
Vector * GetPointW(void)
定义: c4d_baseobject.h:1432
BaseObject::CheckCache
Bool CheckCache(HierarchyHelp *hh)
定义: c4d_baseobject.h:905
NBITCONTROL::SET
@ SET
Set bit.
BaseList2D::GetBit
Bool GetBit(Int32 mask) const
定义: c4d_baselist.h:2207
BaseObject::IsQuaternionRotationMode
Bool IsQuaternionRotationMode(void)
定义: c4d_baseobject.h:1082
DIRTYFLAGS::DATA
@ DATA
Container changed.
BaseObject::GetDeformCache
BaseObject * GetDeformCache(void)
定义: c4d_baseobject.h:837
GetActiveDocument
BaseDocument * GetActiveDocument(void)
BaseObject::GetCache
BaseObject * GetCache(HierarchyHelp *hh=nullptr)
定义: c4d_baseobject.h:809
BaseDocument::InsertObject
void InsertObject(BaseObject *op, BaseObject *parent, BaseObject *pred, Bool checknames=false)
BaseDocument::SearchObject
BaseObject * SearchObject(const maxon::String &str)
ModelingCommandData::result
AtomArray * result
定义: operatingsystem.h:828
LineObject::Alloc
static LineObject * Alloc(Int32 pcnt, Int32 scnt)
SendModelingCommand
Bool SendModelingCommand(Int32 command, ModelingCommandData &data)
GeListNode::GetInfo
Int32 GetInfo()
Private.
CheckDisplayFilter
Bool CheckDisplayFilter(BaseObject *op, DISPLAYFILTER filter)
CheckEditorVisibility
Bool CheckEditorVisibility(BaseObject *op)
BaseObject
定义: c4d_baseobject.h:224
maxon::Mat3< maxon::Vector64 >
Ospline
#define Ospline
Spline - SplineObject.
定义: ge_prepass.h:976
BaseObject::SetUniqueIP
void SetUniqueIP(Int32 ip)
DescID
定义: lib_description.h:327
ToSpline
#define ToSpline(op)
Casts a BaseObject* to a SplineObject*.
定义: c4d_baseobject.h:2177
ID_BASEOBJECT_REL_POSITION
@ ID_BASEOBJECT_REL_POSITION
定义: obase.h:12
BaseObject::NewDependenceList
void NewDependenceList(void)
Starts a new dependence list. Enables to keep track of changes made to any children.
BaseObject::SetMg
void SetMg(const Matrix &m)
定义: c4d_baseobject.h:488
DISPLAYFILTER
DISPLAYFILTER
定义: ge_prepass.h:4279
DIRTYFLAGS::MATRIX
@ MATRIX
Matrix changed.
Tannotation
#define Tannotation
Annotation.
定义: ge_prepass.h:1242
BaseTag
定义: c4d_basetag.h:46
maxon::OK
return OK
定义: apibase.h:2532
Ocube
#define Ocube
Cube.
定义: ge_prepass.h:1040
MAXON_SOURCE_LOCATION
#define MAXON_SOURCE_LOCATION
定义: memoryallocationbase.h:66
Tprotection
#define Tprotection
Protection.
定义: ge_prepass.h:1238
DESCFLAGS_SET::NONE
@ NONE
None.
BaseDocument::GetActiveBaseDraw
BaseDraw * GetActiveBaseDraw(void)
CTrack
定义: c4d_canimation.h:640
BaseObject::GetNext
BaseObject * GetNext(void)
定义: c4d_baseobject.h:256
BaseObject::SetIsoparm
void SetIsoparm(LineObject *l)
BaseObject::Touch
void Touch(void)
Marks object to be used by generator. Automatically resets dirty values for use with IsDirty().
BaseDraw
定义: c4d_basedraw.h:747
BaseDocument::AnimateObject
void AnimateObject(BaseList2D *op, const BaseTime &time, ANIMATEFLAGS flags)
Osphere
#define Osphere
Sphere.
定义: ge_prepass.h:1041
MSG_UPDATE
#define MSG_UPDATE
Must be sent if the bounding box has to be recalculated. (Otherwise use MSG_CHANGE....
定义: c4d_baselist.h:340
HIERARCHYCLONEFLAGS::ASPOLY
@ ASPOLY
Objects cloned as polygons. (Used by e.g. HyperNURBS.)
String
定义: c4d_string.h:38
ModelingCommandData
A helper object for SendModelingCommand().
定义: operatingsystem.h:805
ROTATIONORDER::DEFAULT
@ DEFAULT
Default order (HPB).
C4DAtom::SetParameter
Bool SetParameter(const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
BaseObject::SetQuaternionRotationMode
void SetQuaternionRotationMode(Bool active, Bool bUndo)
定义: c4d_baseobject.h:1075
GetObjectName
String GetObjectName(Int32 type)
maxon::Vec3< maxon::Float64, 1 >
BaseDocument::GetTime
BaseTime GetTime(void) const
DTYPE_VECTOR
@ DTYPE_VECTOR
向量
定义: lib_description.h:70
maxon::Vec3::x
T x
定义: vec.h:32
DescLevel
Represents a level within a DescID.
定义: lib_description.h:286
BaseObject::GetRealSpline
SplineObject * GetRealSpline(void)
BaseObject::FindBestEulerAngle
Bool FindBestEulerAngle(Int32 rotationTrackID, Bool bAdjustTangent, Bool bUndo, BaseTime startRange=BaseTime(-108000, 1), BaseTime endRange=BaseTime(108000, 1))
BaseObject::GetVectorTracks
Bool GetVectorTracks(const DescID &id, CTrack *&xfound, CTrack *&yfound, CTrack *&zfound)
Osds
#define Osds
SDS (HyperNURBS) - SDSObject.
定义: ge_prepass.h:1079
Segment
Represents a Spline segment data.
定义: c4d_baseobject.h:158
PRIM_CUBE_LEN
@ PRIM_CUBE_LEN
定义: ocube.h:6
C4DAtom
定义: c4d_baselist.h:1331
BaseList2D::SetName
void SetName(const maxon::String &name)
定义: c4d_baselist.h:2324
Int32
maxon::Int32 Int32
定义: ge_sys_math.h:58
BaseObject::AddDependence
void AddDependence(HierarchyHelp *hh, BaseObject *op)
ApplicationOutput
#define ApplicationOutput(formatString,...)
定义: debugdiagnostics.h:207
LineObject::GetSegmentW
Segment * GetSegmentW(void)
定义: c4d_baseobject.h:1530
C4DAtom::Message
Bool Message(Int32 type, void *data=nullptr)
定义: c4d_baselist.h:1394
BaseObject::GetDown
BaseObject * GetDown(void)
定义: c4d_baseobject.h:274
ModelingCommandData::op
BaseObject * op
The input object. Use arr for multiple objects.
定义: operatingsystem.h:819
Otorus
#define Otorus
Torus.
定义: ge_prepass.h:1044
BaseObject::GetTag
BaseTag * GetTag(Int32 type, Int32 nr=0)
定义: c4d_baseobject.h:674
Segment::cnt
Int32 cnt
The number of points in the segment.
定义: c4d_baseobject.h:160
向量
maxon::Vec3< maxon::Float64, 1 > Vector
定义: ge_math.h:145
BaseObject::GetAndCheckHierarchyClone
BaseObject * GetAndCheckHierarchyClone(HierarchyHelp *hh, BaseObject *op, HIERARCHYCLONEFLAGS flags, Bool *dirty, AliasTrans *trans, Bool allchildren)
BaseObject::Alloc
static BaseObject * Alloc(Int32 type)
ANIMATEFLAGS::NONE
@ NONE
None.
EventAdd
void EventAdd(EVENT eventflag=EVENT::NONE)
ObjectColorProperties
Data structure for object color properties.
定义: c4d_baseobject.h:167
AutoAlloc
定义: ge_autoptr.h:36
BaseObject::Free
static void Free(BaseObject *&bl)
MCOMMAND_CURRENTSTATETOOBJECT
#define MCOMMAND_CURRENTSTATETOOBJECT
Current state to object (returns object): MDATA_CURRENTSTATETOOBJECT.
定义: ge_prepass.h:1410
SplineObject
Represents a spline object.
定义: c4d_baseobject.h:2009
PRIM_TORUS_INNERRAD
@ PRIM_TORUS_INNERRAD
定义: otorus.h:7
MODE_OFF
#define MODE_OFF
The object is disabled regardless of the state of any parent object.
定义: c4d_baseobject.h:36
Bool
maxon::Bool Bool
定义: ge_sys_math.h:53
BaseObject::CompareDependenceList
Bool CompareDependenceList(void)
BaseTag::GetNext
BaseTag * GetNext(void)
定义: c4d_basetag.h:78
BaseDocument::GetActiveObject
BaseObject * GetActiveObject(void)
ModelingCommandData::doc
BaseDocument * doc
定义: operatingsystem.h:817
C4DAtom::IsInstanceOf
Bool IsInstanceOf(Int32 id) const
定义: c4d_baselist.h:1373
BaseList2D::GetName
String GetName() const
定义: c4d_baselist.h:2318
LineObject
定义: c4d_baseobject.h:1491
BaseObject::SetAbsPos
void SetAbsPos(const Vector &v)
定义: c4d_baseobject.h:304
OBJECT_ISSPLINE
#define OBJECT_ISSPLINE
Spline object.
定义: ge_prepass.h:898
BIT_CONTROLOBJECT
#define BIT_CONTROLOBJECT
Internal bit set by generators.
定义: ge_prepass.h:853
String::VectorToString
static String VectorToString(const Vector32 &v, Int32 nnk=-1)
定义: c4d_string.h:571
ObjectColorProperties::color
Vector color
The color.
定义: c4d_baseobject.h:170
C4DAtom::GetType
Int32 GetType() const
定义: c4d_baselist.h:1348
BaseObject::TouchDependenceList
void TouchDependenceList(void)
Marks all the objects in the dependence list to be replaced by the generator.
ID_BASEOBJECT_REL_ROTATION
@ ID_BASEOBJECT_REL_ROTATION
定义: obase.h:13
GeListNode::InsertUnder
void InsertUnder(GeListNode *bl)
定义: c4d_baselist.h:1835
BaseDocument
定义: c4d_basedocument.h:490
HIERARCHYCLONEFLAGS
HIERARCHYCLONEFLAGS
定义: ge_prepass.h:3142
BaseDraw::GetDisplayFilter
DISPLAYFILTER GetDisplayFilter() const
定义: c4d_basedraw.h:1588
DegToRad
Float32 DegToRad(Float32 r)
定义: apibasemath.h:247
NBIT::OHIDE
@ OHIDE
Hide object/tag in Object Manager or material in Material Manager.
AtomArray::GetIndex
C4DAtom * GetIndex(Int32 idx) const
定义: c4d_baselist.h:1634