volume_builder_add_object

Creates a volume builder and adds a cube object to it. Configures cube’s object settings.

volume_builder_add_object.py

"""Creates a volume builder and adds a cube object to it. Configures cube's object settings.

Topics:
    * c4d.Ovolumebuilder
    * c4d.modules.volume.VolumeBuilder
"""
__author__ = "Maxime Adam"
__copyright__ = "Copyright (C) 2026 MAXON Computer GmbH"
__license__ = "Apache-2.0 License"
__version__ = "R20"

import c4d


def main():
    # Creates volume builder object
    volumeBuilder = c4d.BaseObject(c4d.Ovolumebuilder)
    if volumeBuilder is None:
        raise Exception('Could not create Volume Builder object')

    # Inserts volume builder into the active document
    doc.InsertObject(volumeBuilder, None, None)
    doc.SetActiveObject(volumeBuilder)

    # Creates a cube object
    cube = c4d.BaseObject(c4d.Ocube)
    if cube is None:
        raise Exception('Could not create cube object')

    # Inserts cube into the active document
    doc.InsertObject(cube, None, None)

    # Adds cube object to the volume builder
    ret = volumeBuilder.AddSceneObject(cube)
    if not ret:
        raise Exception('Could not add scene object')

    # Retrieves cube's volume builder settings container
    settings = volumeBuilder.GetSettingsContainerForObject(cube)
    if settings is None:
        raise Exception('Could not access settings')

    # Configures cube's settings
    settings[c4d.ID_VOLUMEBUILDER_TAG_USEPOINTS] = True
    settings[c4d.ID_VOLUMEBUILDER_TAG_MESHRADIUS] = 10.0

    # Pushes an update event to Cinema 4D
    c4d.EventAdd()


if __name__ == '__main__':
    main()