Python API - Arnold for Cinema4d
C4DtoA ships with a python API (since C4DtoA 4.2.0) which allows you to work with Arnold specific components, such as the Arnold Material, custom gui elements, etc.
The API is located in specific Python modules in the C4D_HOME/library/scripts/arnold folder (in case of a default install). In your Python script you have to make sure the scripts folder is added to the search path:
import c4d, os, sys
# add the script folder to the system path
scripts_folder = os.path.join(c4d.storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY), "scripts")
if scripts_folder not in sys.path:
sys.path.append(scripts_folder)
Note: The plugin can be installed to the user plugins folder or to a custom location, instead of the application folder. The following code snippet adds all potential script locations to the search path.
import c4d, os, sys # add scripts folders to the system path scripts_folders = [ # application library folder os.path.join(c4d.storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY), "scripts"), # user library folder os.path.join(c4d.storage.GeGetC4DPath(c4d.C4D_PATH_LIBRARY_USER), "scripts") ] # custom library folder if "C4D_SCRIPTS_DIR" in os.environ: scripts_folders.extend(os.environ["C4D_SCRIPTS_DIR"].split(';')) for scripts_folder in scripts_folders: if scripts_folder not in sys.path: sys.path.append(scripts_folder)
After the search path is set correctly, you can import the specific arnold modules, for instance:
import arnold.util as arnold_util
from arnold.material import *
The following pages contain examples of how to use the API and how to query and modify Arnold related nodes in the scene.