• General Question: Which Plugin Type? -> Curvature Comb / Plot

    python
    6
    0 Votes
    6 Posts
    757 Views
    M
    [image: 1739867168603-curvature_comb.png] not bad for 5 hours of dabbling --- thanks to you @ferdinand Gotcha's: The Curvature was 90dgree rotated - LLM to the rescue ... # c4d.plugins.RegisterTagPlugin( .... # That one nearly got me ;-) # c4d.TAG_IMPLEMENTS_DRAW_FUNCTION # R22 cheers
  • Add icons to treeview

    2023 python windows
    6
    2
    0 Votes
    6 Posts
    865 Views
    M
    Thanks @Neekoe to have shared your solution and thanks @Dunhou for helping. When you pass LV_TREE the Draw method is not called to have it called you need to pass either LV_USERTREE or LV_USER. Cheers, Maxime.
  • Continuously refresh the render result to the view port

    c++ windows 2025
    6
    0 Votes
    6 Posts
    896 Views
    kbarK
    @freeze I wrote this a few years back which might give you a good starting point. https://plugins4d.com/Product/FunRay https://github.com/kentbarber/rtow4d Cheers, Kent
  • Packaging and distributing python plugins via a launcher

    c++ python 2025
    2
    0 Votes
    2 Posts
    408 Views
    ferdinandF
    Hello @DayDreamer, 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 This is your first posting and you did well, but I would point you to our 'singular question' rule, as lined out above in the 'Asking Questions' link. While we usually cut user some slack regrading that, the rule exists for a reason, as topics otherwise tend to become gigantic. There are way too many questions in this topic, please split your questions into multiple topics in the future. There is no mechanism to package and ship plugins under Cinema 4D. You can just zip a plugin folder and the user unzips it then in a path where his or her Cinema 4D instance is looking for plugins. xdl64 is the extension Cinema 4D uses for libraries under Windows, i.e., it is more or less an alias for dll (our library linking is kind of special and right between static and dynamic libraries, hence the custom name). So, no, Python plugins cannot be packaged as xdl64 because Python is not compiled into machine code but interpreted at run time. You can mix C++ and Python plugins in the sense that Python plugins can depend/interact with C++ plugins with the means of the Cinema 4D API. E.g., a Python plugin can react to messages sent by a C++ plugin or data placed by a C++ plugin (or vice versa). That is how our Python API works under the hood. But C++ and Python code cannot interact directly of course, as they are vastly different languages. But you can run our Python VM from C++ and eval the results. When you want to protect your intellectual property, you can use our Cinema 4D | Extensions > Tools > Source Code Protector which will encrypt a pyp Python module. But code must of course be decrypted at runtime to be sent to the Python VM, so, this will not really stop anyone who really wants your source code (a cracker for example). C++ is the by far safer option when intellectual property is important (but also C++ can be decompiled). Cheers, Ferdinand
  • res file, formatting, line ending, or encoding ?

    windows c++ python
    11
    1
    0 Votes
    11 Posts
    1k Views
    ferdinandF
    Thanks for helping out @spedler!
  • C++ SDK: Custom Branching Code Example

    c++ 2025
    1
    3 Votes
    1 Posts
    632 Views
    No one has replied
  • Switching of Multi Object Working Axis for Move Tools

    python 2024
    3
    1
    0 Votes
    3 Posts
    544 Views
    chuanzhenC
    @ferdinand Thanks for reply. Perhaps not expressed clearly. For changing the axis of an object, it is not a problem. What I want to ask is whether the manual operation step of selecting the axis before the Move tool works can be implemented using a script.
  • Select objets by point number

    Moved programming plugin-information
    3
    0 Votes
    3 Posts
    607 Views
    P
    Thanks you for your help
  • How to correctly get maxon::NimbusInterface?

    2023 2024 c++
    2
    0 Votes
    2 Posts
    494 Views
    O
    Hi Kent, the cast is safe. In the public API, NimbusInterface is an incomplete type. Only NimbusBaseInterface is defined there. But internally, NimbusInterface is derived from NimbusBaseInterface, therefore you can safely do the cast.
  • C4D uses Python to search for referenced objects

    2023 python windows
    4
    1
    0 Votes
    4 Posts
    662 Views
    N
    @ferdinand Thank you so much. He perfectly solved all my problems
  • color space of MODATA_COLOR

    c++
    15
    0 Votes
    15 Posts
    1k Views
    B
    Thank you very much for following up with this, @ferdinand. At the moment, we are fairly confident about the way of fixing this issue after all the above discussion. But I'll reach out with a bug report (even though I don't think this is C4D bug) for further information.
  • can I move objects with an external script?

    python 2025
    2
    0 Votes
    2 Posts
    396 Views
    i_mazlovI
    Hi @ArjenA , 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 we're not able to provide you with support on designing an architecture of your application, hence my answer here is very limited. Though, you're very welcome to ask more specific questions Let's call your setup with physical board game, hardware and corresponding software as "backend" and the C4D part as "frontend". Generally speaking, there's nothing preventing you from making these parts communicating with each other and it all highly depends on your project setup: programming languages, physical interfaces, frameworks, etc that you're going to use. You can start with saving your live data in a file on your disk filesystem and read it using Python API in cinema. Once you have a proof of concept you can start optimizing, for example, by implement a proper communication interface, for example, REST API or Websocket sound like good (but not the only!) candidates for this purpose. With that's said, I wish you luck with your project. Feel free to make new postings with singular and more specific questions. Cheers, Ilia
  • 0 Votes
    3 Posts
    461 Views
    F
    @ferdinand Thank you for replying!
  • Python generator

    2025 python
    3
    0 Votes
    3 Posts
    437 Views
    J
    @i_mazlov Thanks for your help. I using visual studio code as you suggested and am getting to grips with the Drag and Drop to assist with parameter getting and setting.
  • Help with Attribute Manager History

    windows python 2025
    2
    0 Votes
    2 Posts
    325 Views
    i_mazlovI
    Hi @kimberlyhtown, 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 suppose you're asking about the Attribute Manager history, which one can access by using the following arrows: [image: 1738944299742-bf4e829b-8ae1-4eae-a86b-c8dbc57c713d-image.png] Unfortunately, no. the Attribute Manager is a quite complex part of C4D (e.g. with multiple AM having each their own history), hence it is not transparently exposed to our public SDK and one's typically limited by the functionality listed in our C++ SDK the AOM part: Active Object Manager. Cheers, Ilia
  • Start IPR rendering in the viewport

    windows c++ 2025
    5
    0 Votes
    5 Posts
    544 Views
    F
    @ferdinand Thank you for answering ,I 'll try it.
  • How to get FONT information and use it to create text objects in C++?

    c++
    10
    0 Votes
    10 Posts
    887 Views
    H
    I can confirm that you were right (nothing unexpected there!) - this is the second time in a couple of weeks where casting has bit me in the behind. I guess I was too spoiled by C# and need to keep my head turned on in the future.. For anyone from the future reading this: The problem with the code above was READING the value, not WRITING it back to the object. That part was ok. Either passing on for instance op as a parameter or using Get() (if you're on the right object) to get at it is the right move. Thanks again!
  • Cinema 4D Python on Windows Long Path Errors

    windows python 2025 2024
    4
    0 Votes
    4 Posts
    924 Views
    ferdinandF
    Hello everyone, we have moved this topic to a mail discussion, when there are outcomes relevant for other developers, I will post them here. Cheers, Ferdinand
  • Strange string addition crash

    r21 c++ windows
    3
    0 Votes
    3 Posts
    478 Views
    E
    Thanks for your response. We found the issue. Turns out we had to delay load our dlls for earlier versions of the plugin R21 etc
  • Capturing and Restoring Take Overrides in Cinema 4D Using JSON

    python 2023
    2
    0 Votes
    2 Posts
    335 Views
    ferdinandF
    Hello @Futurium, thank you for reaching out to us. It pains me a bit to say that, because you made so nicely sure that we have all resources, but your topic is out of scope of support, specifically the points: We provide code examples but we do not provide full solutions or design applications. We cannot debug your code for you and instead provide answers to specific problems. Sometimes we cut people some slack here but in your case this is just too much work. Some High-level Advice The Take system of Cinema 4D is one of its most liked features. What comes to users sometimes as a surprise, is the technical complexity of the Take System/API; one could also say that it has a bit the reputation of being overly difficult to deal with. While the API is manageable when you get used to it, I would really avoid trying to write a custom serialization and deserialization routine for take data, due to all that complexity. It is certainly possible to do, but at least I would be very hesitant to do that due to all that complexity wich must be met. In general, you can serialize and deserialize scene elements (nodes) with C4DAtom.Write/Read. Since takes are also of type C4DAtom, you could in theory also serialize/deserialize them like that. I added there the 'in theory' because we generally discourage third parties from using such low-level IO, as you can relatively easily brick your data like this by missing important internal dependencies and/or crash Cinema 4D like that. For takes this could mean that internal data is not copied/serialized properly or that one of the many (Base)links used in takes fails to reattach upon being loaded in another scene. I personally would try to use the Take Asset Presets to do what you want. Saving a preset is easy, just select it, and then call the command for it. Loading the take preset programmatically might be a bit trickier. Take assets were added after I wrote for S26 the Asset API documentation, and I never used them myself. I am not sure if you can load a take asset just with maxon.AssetManagerInterface.LoadAssets or if you have to get your hands dirty yourself with a more manual approach. Okay scratch that, I just tried out Take Assets and they probably do not do what you want to do (we might ourself have deemed this a too complex task to fully reattach takes in a new scene). In the end, doing it manually with JSON might indeed be the only option for what you want to do, but we cannot do that for you or debug your code for you. Cheers, Ferdinand