<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[General Talk]]></title><description><![CDATA[Discuss general programming topics, post a job offer, promote your plugins, or talk about everything else in the world of CGI.]]></description><link>http://developers.maxon.net/forum/category/4</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 09:44:43 GMT</lastBuildDate><atom:link href="http://developers.maxon.net/forum/category/4.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Aug 2026 11:27:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[List of selected edges]]></title><description><![CDATA[Hey @Kantronin,
you might want to look at geometry_polgyon_edges_2024.0.py, it should answer all your questions.
The TLDR is: full-edge maps as you hint at in your posting do exist in Cinema via helper functions, but they are often also not very useful. Internally, Cinema is operating as any other DCC application with the concept of what is often called a "half-edge" data structure. So, when you have the two polygons A and B:
  a---b---e
  | A | B |
  d---c---f

Which share an edge over the vertices b and c, this is actually two edges and not one, due to how normals work. For both polygons to have a normal facing in the same direction, they must have opposite winding orders, which means that the edge b-c is actually two edges: b-&gt;c and c-&gt;b. So, A could for example index the edge as bc, and B as cb. The example goes into more detail with this.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16438/list-of-selected-edges</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16438/list-of-selected-edges</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Tue, 11 Aug 2026 11:27:27 GMT</pubDate></item><item><title><![CDATA[Redshift Maya Extension SDK Access Request (Custom Hair Translator)]]></title><description><![CDATA[There seems to be some solution, please stay tuned until the RS team has sorted out things. I will then update this topic.
]]></description><link>http://developers.maxon.net/forum/topic/16434/redshift-maya-extension-sdk-access-request-custom-hair-translator</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16434/redshift-maya-extension-sdk-access-request-custom-hair-translator</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Mon, 27 Jul 2026 22:08:49 GMT</pubDate></item><item><title><![CDATA[[Free Plugin]Plugin Debug Manager v1.3.0— Python Plugin Reloading for Cinema 4D]]></title><description><![CDATA[@ferdinand Thank you so much!
I made some minor adjustments to the plugin, adding support for CTRL hotkey activation, which allows quick reloading of previously checked plugins that need to be reloaded without opening the window. As always, open source, and will continue to be open source.
Download: Plugin Debug Manager v1.5.0.zip
Cheers,
Anlv
]]></description><link>http://developers.maxon.net/forum/topic/16433/free-plugin-plugin-debug-manager-v1.3.0-python-plugin-reloading-for-cinema-4d</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16433/free-plugin-plugin-debug-manager-v1.3.0-python-plugin-reloading-for-cinema-4d</guid><dc:creator><![CDATA[Anlv]]></dc:creator><pubDate>Mon, 27 Jul 2026 06:30:25 GMT</pubDate></item><item><title><![CDATA[V-Ray Materials Not Detected by Project Asset Inspector]]></title><description><![CDATA[@ferdinand
Alright, thank you for your reply.
]]></description><link>http://developers.maxon.net/forum/topic/16410/v-ray-materials-not-detected-by-project-asset-inspector</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16410/v-ray-materials-not-detected-by-project-asset-inspector</guid><dc:creator><![CDATA[Ross]]></dc:creator><pubDate>Sat, 09 May 2026 14:26:11 GMT</pubDate></item><item><title><![CDATA[Is it okay to release a free plugin that overlaps with paid alternatives?]]></title><description><![CDATA[@ferdinand Thanks for the encouragement, much appreciated!
]]></description><link>http://developers.maxon.net/forum/topic/16401/is-it-okay-to-release-a-free-plugin-that-overlaps-with-paid-alternatives</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16401/is-it-okay-to-release-a-free-plugin-that-overlaps-with-paid-alternatives</guid><dc:creator><![CDATA[Anlv]]></dc:creator><pubDate>Tue, 07 Apr 2026 13:44:31 GMT</pubDate></item><item><title><![CDATA[Command to create a Nodes Modifier]]></title><description><![CDATA[@ferdinand Thanks for the reply. This will help immensely thank you.
]]></description><link>http://developers.maxon.net/forum/topic/16393/command-to-create-a-nodes-modifier</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16393/command-to-create-a-nodes-modifier</guid><dc:creator><![CDATA[ImperfectLink]]></dc:creator><pubDate>Tue, 17 Mar 2026 14:41:57 GMT</pubDate></item><item><title><![CDATA[Xref Material reference]]></title><description><![CDATA[Hello @Jespersather,
thank you for reaching out to us. This is a developer forum, not an end user support forum. We cannot help you here with your end user issues. Please use our Support Center to get end user support for Cinema 4D.
I have moved your topic into General Talk.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16382/xref-material-reference</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16382/xref-material-reference</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Tue, 10 Feb 2026 08:00:40 GMT</pubDate></item><item><title><![CDATA[Deadline Issues: TeamRender PRO]]></title><description><![CDATA[I did not see this as a rant or rude, if I had, I would have reacted differently. I understand your concerns, but this is a developer forum and we cannot help you here with your issue.
]]></description><link>http://developers.maxon.net/forum/topic/16374/deadline-issues-teamrender-pro</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16374/deadline-issues-teamrender-pro</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Mon, 26 Jan 2026 13:17:41 GMT</pubDate></item><item><title><![CDATA[How to measure Viewport performance? -&gt; Troubleshooting and optimization.]]></title><description><![CDATA[Hey @mogh,
I forgot this thread a bit, sorry. That sounds all very mysterious. When I summarize your issue, I would describe it as follows. I assume that is the gist of it?

I have a workstation and experience there micro- and macro-stutters in the viewport performance. This happens primarily in low performing scenes with a heavy payload. The odd thing is though, that these performance dips only happen on one machine. On other comparable machines I have an an order of magnitude better performance.

This is very hard to debug, but I would say there are two main cases of what could be going wrong.

Your GPU is damaged or you use corrupted drivers. Outdated drivers alone cannot explain the numbers you report. It could also be the mainboard, although somewhat unlikely.
You have another VRAM intensive app running on this machine. Cinema 4D and this app then play the VRAM memory battle, causing data to be constantly cycled in and out of VRAM, causing the performance dips. But this is somewhat unlikely as you probably would be aware of this.

What I would do:

Update all your drivers.
Go into Preferences/Viewport Hardware and start dialing knobs to see if you can make a difference. Cinema 4D has unfortunately not a software viewport renderer anymore with which you could do a baseline test.
Use a GPU monitoring tool (like MSI Afterburner) to see if your GPU is running at full load, or if there are spikes in VRAM usage. There are also more fancy tools with which you can monitor memory allocations over time.
Run GPU tests such as FurMark or 3DMark to see if your GPU behaves stable there.
Install a different GPU (not fun to do, but the best way to rule out hardware issues).

There could also be a bug in Cinema 4D but with numbers as shown below that strikes me as a very unlikely cause. This sounds more like damaged hardware or a really nasty driver issue.


laptop with ~60 FPS (Quadro 2000)
on my workstation with ~8 FPS (RTX 3090)


Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16351/how-to-measure-viewport-performance-troubleshooting-and-optimization.</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16351/how-to-measure-viewport-performance-troubleshooting-and-optimization.</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Wed, 12 Nov 2025 15:00:14 GMT</pubDate></item><item><title><![CDATA[C4D Prototype To Plugin Converter -&gt; Where did it go?]]></title><description><![CDATA[Hey @CJtheTiger,
Thank you for reaching out to us. That seems to be part of what the Cinversity team did before I joined Maxon. This was never a project of the SDK team. And more over, this seems to have been a private project of Niklas Rosenstein, an ex Maxon employe, because the link points to his GitHub. Niklas is still on GitHub, maybe you can send him a message if he still has his old code? But this looks like an R25 or even older project, so this will for sure require some update work.
There are also the Cinversity legacy downloads on Maxon's downloads page, but it does not seem to contain it either.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16338/c4d-prototype-to-plugin-converter-where-did-it-go</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16338/c4d-prototype-to-plugin-converter-where-did-it-go</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Thu, 16 Oct 2025 07:53:32 GMT</pubDate></item><item><title><![CDATA[String to Spline (cast)]]></title><description><![CDATA[Hey @Kantronin,
Thank you for reaching out to us. Unfortunately, I do not understand your question. The print out you provided, &lt;c4d.SplineObject object ..., already indicates that the object is a c4d.SplineObject. So, I do not really understand what you mean with 'get a spline-type variable'. To get the underlying editable spline object for a spline generator, e.g., get a spline with editable vertices and tangents for a Flower Spline generator, you should use BaseObject.GetRealSpline. But that is only necessary when you have a BaseObject which under the hood represents a spline. It does not apply when you already have a SplineObject as you do.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16308/string-to-spline-cast</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16308/string-to-spline-cast</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Tue, 05 Aug 2025 21:29:12 GMT</pubDate></item><item><title><![CDATA[How to expose C++ symbols to Python users as a third party?]]></title><description><![CDATA[Hi @ECHekman sorry it took me more time than I expected. From my meory octane already have a Python module registered in C++. So I assume you want to add symbols to this python module.
One important aspect is that the Symbol Parser by itself is completly agnostic of the c4d module therefor you can call it with any Python interpreter. This point is really important because this let you parse your C++ header files whenever you want within your build pipeline.
With that's said the Symbol Parser is bundled within the mxutils package which needs the c4d and maxon module.
So in order to have it running with any python intepreter you will need to do the following:
import sys
CI_PROJECT_DIR = r"C:\Users\m_adam.INTERN\Documents\MAXON\gitlab\c4d"

# Build path to import the parser_symbol
maxon_python_path = os.path.join(CI_PROJECT_DIR, "resource", "modules", "python", "libs")
if not os.path.exists(maxon_python_path):
    raise RuntimeError(f"DEBUG: update_python_symbols - Unable to find {maxon_python_path}")

# Get python311 folder where the symbol parser is located
mxutils_path, symbol_parser_path = None, None
for folder in os.listdir(maxon_python_path):
    full_path_folder = os.path.join(maxon_python_path, folder)
    if not os.path.isdir(full_path_folder):
        continue

    # We found the mxutils module containing the symbol parser.
    if os.path.exists(os.path.join(full_path_folder, "mxutils", "symbol_parser")):
        mxutils_path = os.path.join(full_path_folder, "mxutils")
        symbol_parser_path = os.path.join(mxutils_path, "symbol_parser")

if None in (mxutils_path, symbol_parser_path):
    raise ImportError(f"Could not find 'symbol_parser' module path in {maxon_python_path}.")

sys.path.append(mxutils_path)
print(f"DEBUG: Added {mxutils_path} to sys.path.")

# Import the symbol parser and do your stuff.
import symbol_parser
# Do something with it

sys.path.remove(mxutils_path)

Then the Symbol Parser paradigm is that you first parse your data and then the parser contain Scope that contains member (a name and a value).
Therefor once you have parsed your data you can freely output to multiple format if needed. You can also write your own format if you want to.
In this case because you are using mostly the Cinema API and not the Maxon API I re-use the same output as the one we use for the c4d Python package.
This output is implemented in c4d\resource\modules\python\libs\python311\mxutils\symbol_parser\output_classic_api.py. Everything in the Symbol Parser is open source so feel free to look at it.
So to get back to your question find bellow the next code that will parse all the resources files from the Redshift folder and insert them within the "redshift" Python Package. (You usually do not have to do that because Python is parsing automatically the c4d_symbols.h and include such symbols within the c4d Python package this is for the example). With that's said there is basically two ways, one hardcoding the parsed value in your C++ plugin when you register your Python module, the second one using a Python file that will get loaded at the startup of Cinema 4D once your Python module is already loaded and therefor inject symbol into your module.
import os
import c4d # Only used to retrieve various C4D paths used in this example, but not really necessary otherwise

# These imports bellow are not bound to the c4d module therefor they can be used with a standard Python3 interpreter
# But this code is written to be executed in the Script Manager, so you may need to adapt the import statement according to how you run this script.
from mxutils.symbol_parser.extractor import SymbolParser
from mxutils.symbol_parser.output_classic_api import _get_symbol_dict_from_parser


def ParseRedshiftResources() -&gt; SymbolParser:
    # Parse all Redshift ressource files and resolve their values
    rsDir = os.path.join(os.path.dirname(c4d.storage.GeGetStartupApplication()), "Redshift", "res", "description")
    parser = SymbolParser(rsDir,
                            parse_mx_attribute=False,
                            parse_define=True,
                            parse_enum=True,
                            parse_static_const=True)

    # Parse and resolve. Resolve means:
    #  - Transfrom values that depends to others to their actual integer or float values.
    #  - Transform complex values (such as bit mask, arithmetic, etc) into their actual integer or float values.
    # For more information about what is supported take a look at
    # https://developers.maxon.net/docs/py/2025_2_0/manuals/manual_py_symbols.html?highlight=symbol%20parser#symbols-parser-features
    parser.parse_all_files(resolve=True)
    return parser


def OutputPythonFile(parser: SymbolParser):
    def GeneratePythonFileToBeInjected(parser: SymbolParser) -&gt; str:
        """Generate a Python file that will inject all parsed symbols into the 'redshift' Python package when this file get imported.
        This function needs to be called once, most likely during your build pipeline.
        Once you have generated this Python file you should bundle it with your installer and then install it in the targeted Cinema 4D installation.
        See PatchCurrentC4DToInjectParsedSymbol for an example of such deployment
        """
        import tempfile

        tempPath = None
        # Retrieve a sorted dict containing the symbol name as key and it's value as values
        # This will flatten all scopes so an enums called SOMETHING with a value FOO in it will result in a symbol named SOMETHING_FOO
        # If you do not want this behavior feel free to create your own solution, this function is public and declared in
        # c4d\resource\modules\Python\libs\python311\mxutils\symbol_parser\output_classic_api.py
        symbolTable = _get_symbol_dict_from_parser(parser)
        
        with tempfile.NamedTemporaryFile('w', delete=False) as tmpFile:
            tempPath = tmpFile.name
            
            tmpFile.write("import redshift\n")
            
            for name, value in symbolTable.items():
                tmpFile.write(f"redshift.{name} = {value}\n")
            
        
        if not os.path.exists(tempPath):
            raise RunTimeError('Failed to create the Python File to Inject Symbols in "redshift" Python Package') 
        
        return tempPath

    def PatchCurrentC4DToInjectParsedSymbol(fileToBeLoaded: str):
        """This function is going to create a Python file that is going to be called at each startup of Cinema 4D to inject symbols into the "redshift" Python package.
        This is done by placing the previous file in a place where it can be imported by the C4D Python VM.
        And by importing this file by editing the python_init.py file located in the preferences.
        For more information about it please read 
        https://developers.maxon.net/docs/py/2025_2_0/manuals/manual_py_libraries.html?highlight=librarie#executing-code-with-Python-init-py
        """
        import sys
        import shutil
        
        # Pref folder that contains a python_init.py that is laoded once c4d and maxon package is loaded and a libs folder that is part of the sys.path of the c4d Python VM.
        pyTempDirPath = os.path.join(c4d.storage.GeGetStartupWritePath(), f"Python{sys.version_info.major}{sys.version_info.minor}")
    
        # Path to our module that will inject the parsed symbols in the "redshift" Python package
        pyTempRsDirPath = os.path.join(pyTempDirPath, "libs", "rs_symbols")
        # Path to the __init__ file of our module that will be called when we import our module
        # we need to place the file we generated previously in this location.
        pyTempRsFilePath = os.path.join(pyTempDirPath, "libs", "rs_symbols", "__init__.py")
        if not os.path.exists(pyTempRsDirPath):
            os.mkdir(pyTempRsDirPath)
            
        if os.path.exists(pyTempRsFilePath):
            os.remove(pyTempRsFilePath)
            
        shutil.copy2(fileToBeLoaded, pyTempRsFilePath)
        
        # Now that we have our module that will inject symbols within the "redshift" Python package. We need to get this "rs_symbols" module be called at each startup.
        # So we use the python_init.py file to get loaded once all plugins are loaded. Therefor the Redshift plugin is already loaded and have already setup its "redshift" Python package.
        # We will inject a line in this file to load our "rs_symbols" module
        pyTempInitFilePath = os.path.join(pyTempDirPath, "python_init.py")
        
        isImportRsSymbolPresent = False
        initFileExist = os.path.exists(pyTempInitFilePath)
        # Because this file me be already present and already patched or contain other content
        # We should first check if we need to add our import or not
        if initFileExist:
            with open(pyTempInitFilePath, 'r') as f:
                isImportRsSymbolPresent = "import rs_symbols" in f.read()
        
        # prepend our import statement to the file
        if not isImportRsSymbolPresent:
            with open(pyTempInitFilePath, "w+") as f:
                content = f.read()
                f.seek(0, 0)
                f.write('import rs_symbols\n' + content)

    pythonFileGeneratedPath = GeneratePythonFileToBeInjected(parser)
    PatchCurrentC4DToInjectParsedSymbol(pythonFileGeneratedPath)


def OutputCppFile(parser):
    # Retrieve a sorted dict containing the symbol name as key and it's value as values
    # This will flatten all scope so an enums called SOMETHING with a value FOO in it will result in a symbol named SOMETHING_FOO
    # If you do not want this behavior feel free to create your own solution, this function is public and declared in
    # c4d\resource\modules\Python\libs\python311\mxutils\symbol_parser\output_classic_api.py
    symbolTable = _get_symbol_dict_from_parser(parser)
    
    contentToPaste =  'auto mod_rs = lib.CPyImport_ImportModule("redshift");\n'
    contentToPaste += 'auto modDict = lib.CPyModule_GetDict(mod_rs);\n'
        
    for name, value in symbolTable.items():
        contentToPaste += f'\nauto name = lib.CPyUnicode_FromString("{name}");\n'
        contentToPaste += 'if (!name)\n'
        contentToPaste += '  CPyErr_Print();\n'
        contentToPaste += f'maxon::py::CPyRef value = lib.CPyLong_FromInt32({value});\n'
        contentToPaste += 'if (!value)\n'
        contentToPaste += '  CPyErr_Print();\n'
        contentToPaste += 'if (!lib.CPyDict_SetItem(modDict, name, value))\n'
        contentToPaste += '  CPyErr_Print();\n'
                
    return contentToPaste


def main() -&gt; None:
    # Parse the Redshift resources and return the parser that hold the parsed values
    parser = ParseRedshiftResources()

    # First way: Generate a file that patch the current C4D with a Python file that you need to deploy on the installer. You may prefer this option since you can update this file without having to recompile your plugin.
    OutputPythonFile(parser)

    # Second way: Output pseudo C++ code that can be pasted within your C++ plugin after you initialize your custom Python module. You may want to call this whole script before you compile in your build pipeline and put the "cppContent" within a file that will get compiled automatically
    cppContent = OutputCppFile(parser)

if __name__ == '__main__':
    main()

So the system is really modular and being able to run on a regular Python interpreter let you integrate it within your build pipeline to suits your needs.
If you have any questions, please let me know.
Cheers,
Maxime.
]]></description><link>http://developers.maxon.net/forum/topic/16208/how-to-expose-c-symbols-to-python-users-as-a-third-party</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16208/how-to-expose-c-symbols-to-python-users-as-a-third-party</guid><dc:creator><![CDATA[m_adam]]></dc:creator><pubDate>Tue, 29 Apr 2025 17:02:33 GMT</pubDate></item><item><title><![CDATA[how to use the commands from Octane&#x2F;Redshift&#x27;s symbols.h]]></title><description><![CDATA[Hey @RTF,
Thank you for reaching out to us. There is no fully automatic way to do this, as it is up to third parties to expose their APIs to Python. When a vendor does not offer a Python API, you can do two things:

Simply define the symbols yourself in your Python code, they are just integer values after all.
With mxutils.ImportSymbols you can import symbols from a resource, e.g., a symbols.h file. It is (a part of) the very mechanism we use to automatically expose the symbols from the native Cinema 4D C++ API to the Python API.

Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/16206/how-to-use-the-commands-from-octane-redshift-s-symbols-h</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16206/how-to-use-the-commands-from-octane-redshift-s-symbols-h</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Tue, 29 Apr 2025 07:38:16 GMT</pubDate></item><item><title><![CDATA[Graphic card]]></title><description><![CDATA[Great input, thanks.
I will have a look at the Mac mini, if not, I will go back to a windows desktop.
Again, thank you both.
Regards,
pim
]]></description><link>http://developers.maxon.net/forum/topic/16193/graphic-card</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16193/graphic-card</guid><dc:creator><![CDATA[pim]]></dc:creator><pubDate>Tue, 22 Apr 2025 17:33:59 GMT</pubDate></item><item><title><![CDATA[Expose material node inputs to material attributes]]></title><description><![CDATA[Hi @ferdinand ,
Thanks for the clarification.
I will contact user support and request this as a feature.
]]></description><link>http://developers.maxon.net/forum/topic/16165/expose-material-node-inputs-to-material-attributes</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16165/expose-material-node-inputs-to-material-attributes</guid><dc:creator><![CDATA[kng_ito]]></dc:creator><pubDate>Wed, 16 Apr 2025 11:28:36 GMT</pubDate></item><item><title><![CDATA[KDTree or OcTree with C4D Python]]></title><description><![CDATA[
tend to be very complex computationally and therefore not very sensible to be implemented in Python.

yeah, I forgot the BaseView, but whatever, I agree whit you.
And this is just the beginning, I'm still in the research and testing phase.
My final goal is to write a procedural tree generator, so maybe combine L-System to improve some performance, I'll also try to write an Octree.
Thank you for your suggestion and reply.
Cheers!
Gheyret
]]></description><link>http://developers.maxon.net/forum/topic/16136/kdtree-or-octree-with-c4d-python</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/16136/kdtree-or-octree-with-c4d-python</guid><dc:creator><![CDATA[gheyret]]></dc:creator><pubDate>Wed, 26 Mar 2025 08:07:48 GMT</pubDate></item><item><title><![CDATA[Redshift API documentation]]></title><description><![CDATA[Hi @hamgod ,
Welcome to the Maxon developers forum and its community, it is great to have you with us!
Getting Started
Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules.

Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment.
Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support.
Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads.

It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: Asking Questions.
About your First Question
Unfortunately there's no single place with aggregated Redshift Python API documentation. Such things are usually discussed on redshift forums and as a side effect are partially available in some of threads on this forum here.
Cheers,
Ilia
]]></description><link>http://developers.maxon.net/forum/topic/15999/redshift-api-documentation</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15999/redshift-api-documentation</guid><dc:creator><![CDATA[i_mazlov]]></dc:creator><pubDate>Wed, 12 Feb 2025 16:53:59 GMT</pubDate></item><item><title><![CDATA[Keep Needing to Login]]></title><description><![CDATA[Hi @presuta ,
Welcome to the Maxon developers forum and its community, it is great to have you with us!
Getting Started
Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules.

Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment.
Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support.
Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads.

It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: Asking Questions.
About your First Question
Please note that this developers forum is for the public APIs of Maxon products related topics. We unfortunately cannot help with the end user issues. Please ask your end user questions in our Support Center.
Cheers,
Ilia
]]></description><link>http://developers.maxon.net/forum/topic/15996/keep-needing-to-login</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15996/keep-needing-to-login</guid><dc:creator><![CDATA[i_mazlov]]></dc:creator><pubDate>Tue, 11 Feb 2025 16:26:57 GMT</pubDate></item><item><title><![CDATA[Issues with my license]]></title><description><![CDATA[Hello @0x0f0000,
Welcome to the Maxon developers forum and its community, it is great to have you with us!
Getting Started
Before creating your next postings, we would recommend making yourself accustomed with our forum and support procedures. You did not do anything wrong, we point all new users to these rules.

Forum Overview: Provides a broad overview of the fundamental structure and rules of this forum, such as the purpose of the different sub-forums or the fact that we will ban users who engage in hate speech or harassment.
Support Procedures: Provides a more in detail overview of how we provide technical support for APIs here. This topic will tell you how to ask good questions and limits of our technical support.
Forum Features: Provides an overview of the technical features of this forum, such as Markdown markup or file uploads.

It is strongly recommended to read the first two topics carefully, especially the section Support Procedures: Asking Questions.
About your First Question
I am sorry to hear that you have issues with your license. But this is not an end-user forum, but a development support forum, i.e., software developers can get here support in developing for Maxon products. Please visit our Maxon.net: Support Center to receive end-user support.
Cheers,
Ferdinand
]]></description><link>http://developers.maxon.net/forum/topic/15971/issues-with-my-license</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15971/issues-with-my-license</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Fri, 31 Jan 2025 16:43:40 GMT</pubDate></item><item><title><![CDATA[Cannot post？]]></title><description><![CDATA[@ferdinand Thanks for the detailed explanation
]]></description><link>http://developers.maxon.net/forum/topic/15954/cannot-post</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15954/cannot-post</guid><dc:creator><![CDATA[chuanzhen]]></dc:creator><pubDate>Fri, 24 Jan 2025 00:22:13 GMT</pubDate></item><item><title><![CDATA[Help on Car Rig]]></title><description><![CDATA[@m_adam  oops, sorry...yeah wrong forum. Went to Cineversity.. thanks
]]></description><link>http://developers.maxon.net/forum/topic/15879/help-on-car-rig</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15879/help-on-car-rig</guid><dc:creator><![CDATA[chakuew0]]></dc:creator><pubDate>Tue, 17 Dec 2024 20:24:13 GMT</pubDate></item><item><title><![CDATA[Center Axis with Python]]></title><description><![CDATA[Hi @Kantronin,
Instead of creating multiple consequent postings please consolidate them in a single one. I've also noticed that you've added "programming" tag but haven't mentioned the language you're talking about (is it c++ or python?).
Regarding your questions. Transforming the axis of a PointObject effectively means transforming the point values. There're some helping commands that I've shown you in my previous message, but what they effectively do is just transforming the points. Please have a look into the operation_transfer_axis_s26.py example, which demonstrates how to perform axis translation.
As for the rotation part, I'd need to point you once again to our Matrix Manual, which actually contains the answer to your question. Namely, the chapter "Constructing and Combining Transforms" explains the usage of functions c4d.utils.MatrixRotX(),  c4d.utils.MatrixRotY() and c4d.utils.MatrixRotZ(). I will not copy &amp; paste the same code snippet from our manual, so please check it youself.
Combining these with the example above should do the trick for you, unless you don't have the initial transformation of your ring splines. If that's the case, then your task turns into a way more complex form of the optimization problem.
Please also note, that you can only do the object axis transformations on PointObject (and on PolygonObject since it's inherited from PointObject). This effectively means that if you're using the Osplinecircle instead of an ordinary Ospline, this wouldn't work, as it doesn't store any points inside. In this case you'd need to convert to Ospline. If that's not an option for you, you can check the Geometry Axis and Geometry Orientation scene nodes, as they allow you to transform the axis "on-the-fly", so this would work even with non-point objects.
Cheers,
Ilia
]]></description><link>http://developers.maxon.net/forum/topic/15873/center-axis-with-python</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15873/center-axis-with-python</guid><dc:creator><![CDATA[i_mazlov]]></dc:creator><pubDate>Sat, 14 Dec 2024 06:29:12 GMT</pubDate></item><item><title><![CDATA[Add Title Items (not packable) to Custom Menu]]></title><description><![CDATA[Well, my answer answers that, check out the posting I linked to. You must insert a MENURESOURCE_SUBTITLE:
menu.InsData(c4d.MENURESOURCE_SUBTITLE, "My Heading")

]]></description><link>http://developers.maxon.net/forum/topic/15850/add-title-items-not-packable-to-custom-menu</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15850/add-title-items-not-packable-to-custom-menu</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Wed, 04 Dec 2024 13:15:12 GMT</pubDate></item><item><title><![CDATA[New Simulation system: the Compound Collision Shape is no longer available?]]></title><description><![CDATA[Hi @yaya,
I see your point here and I can only guess if such behavior is expected or not, as this is (and I've already mentioned this to you earlier) a question that has nothing to do with development.
In general it sounds like a bug, so you're very welcome to reach out to our Support Team and ask them for a proper workaround if they actually classify this issue as a bug.
I'm moving your thread to general talk section in case someone from our community might be willing to share their experience on that topic.
Cheers,
Ilia
]]></description><link>http://developers.maxon.net/forum/topic/15847/new-simulation-system-the-compound-collision-shape-is-no-longer-available</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15847/new-simulation-system-the-compound-collision-shape-is-no-longer-available</guid><dc:creator><![CDATA[i_mazlov]]></dc:creator><pubDate>Mon, 02 Dec 2024 07:30:35 GMT</pubDate></item><item><title><![CDATA[Customize Palettes by Python ( add Buttons )]]></title><description><![CDATA[Thanks for the answer
]]></description><link>http://developers.maxon.net/forum/topic/15824/customize-palettes-by-python-add-buttons</link><guid isPermaLink="true">http://developers.maxon.net/forum/topic/15824/customize-palettes-by-python-add-buttons</guid><dc:creator><![CDATA[Gemini]]></dc:creator><pubDate>Wed, 20 Nov 2024 10:20:08 GMT</pubDate></item></channel></rss>