Jumpstart Cinema 4D plugin development
Project description
bootstrap4c4d
Simplify your Cinema 4D plugin development process by generating all the necessary c-headers, strings and resources automatically.
Table of contents
Description
With bootstrap you can automate a lot of the back and fore generally associated with writing Cinema 4D plugins. No need to write all those pesky header, string and resource files by hand. Just define them in your plugin.py file and automagically build your plugin.h, plugin.res, plugin.str and plugin.pyp file.
In the following excerpt you can see a very basic setup for a REAL value called STRENGTH which willbe displayed as PERCENT. This is wrappend in a GROUP with the name SETTINGS which is itself wrapped in a CONTAINER that represents the plugin:
#----begin_resource_section----
from bootstrap import Container, Assignment, Group, Description
strength = Description({
"id": "STRENGTH",
"key": "REAL",
"value": [
Assignment("UNIT", "PERCENT")
],
"locales": {
"strings_us": "Strength"
}
})
settings_group = Group("SETTINGS", {
"value": [
strength
],
"locales": {
"strings_us": "Settings"
}
})
root = Container("Tmyplugin", {
"value": [
Assignment("NAME", "Tmyplugin"),
Assignment("INCLUDE", "Tbase"),
Assignment("INCLUDE", "Texpression"),
settings_group
],
"locales": {
"strings_us": "My awesome plugin"
}
})
#----end_resource_section----
#----begin_id_section----
# IDs will be automatically injected
STRENGTH = strength.GetId()
#----end_id_section----
[...]
Building this will result in the following generated files:
tmyplugin.res
CONTAINER Tmyplugin
{
NAME Tmyplugin;
INCLUDE Tbase;
INCLUDE Texpression;
GROUP SETTINGS
{
REAL STRENGTH
{
UNIT PERCENT;
}
}
}
tmyplugin.h
#ifndef _Oatom_H_
#define _Oatom_H_
enum
{
Tmyplugin = 72636982,
SETTINGS = 59543963,
STRENGTH = 34087515,
};
#endif
tmyplugin.str
STRINGTABLE Tmyplugin
{
Tmyplugin "My awesome plugin";
SETTINGS "Base Settings";
STRENGTH "Strength";
}
tmyplugin.pyp
STRENGTH = 34087515
[...]
Installation
- First you need to get the path to c4dpy. On macOS this will be something like this:
/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy
For further information about c4dpy please refer to the official documentation.
- Next you need to download pip
$ curl https://bootstrap.pypa.io/get-pip.py -o /path/to/some/directory/get-pip.py
- For installing pip you need to make sure to use the path to c4dpy instead of your system's python installation
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" /path/to/some/directory/get-pip.py
- Now you are ready to install bootstrap4c4d via pip
This is not yet possible, plugin needs to be published to pypi
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" -m pip install beesperester/bootstrap
Usage
Display available cli arguments:
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" -m bootstrap -h
Build
Build an existing python plugin which has already been set up with bootstrap4c4d:
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" -m bootstrap build /path/to/your/plugin.py
Create
This is not yet implemented
Create a new plugin with bootstrap4c4d:
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" -m bootstrap create YOUR_PLUGIN_NAME tag /path/to/your/plugin_directory
Examples
Check out tmyplugin.py
for a simple working example.
You will notice two types of comments which describe specific parts of your plugin setup.
This will be where you setup the layout of your plugin, this will be omitted in the final output.
#----begin_resource_section----
...
#----end_resource_section----
This will be where you define your plugin IDs, the static IDs will be injected as integers during the build process:
#----begin_id_section----
...
#----end_id_section----
Using bootstrap4c4d like so will build the plugin:
$ "/Applications/Maxon Cinema 4D R23/c4dpy.app/Contents/MacOS/c4dpy" -m bootstrap build tmyplugin.py
This will result in the following files beeing created:
tmyplugin.pyp # the actual plugin file
res/description/tmyplugin.h # the header file with the IDs
res/description/tmyplugin.res # the layout
res/strings_us/description/tmyplugin.str # the localized strings
Plugins
Plugins build with bootstrap4c4d:
To do
- Rewrite build process in a functional way
- Add create functionality to cli / io
- Publish package to pypi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bootstrap4c4d-beesperester-2.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 446b679edcc6d3c67249936c635b825103a997db99bac138c4c04b7d112e2500 |
|
MD5 | 14906d8c3aa66f6cabaee38d2a8206d6 |
|
BLAKE2b-256 | 5b7112765880b0f19414fbec87aa7b6a2b5e264650769250c5028d07082f3519 |
Hashes for bootstrap4c4d_beesperester-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b01d8d135a3a521a8855739078f233aeaf9f84e72ec3826e6577af2b459158ad |
|
MD5 | 8c393e6e57aea7017f88635bf8fd09dd |
|
BLAKE2b-256 | c5ab479a641efd4cf8ba85824e43c635c537bf8807bc29ab3fc4a5b7624df8f6 |