The Maxon SDK Team is currently short staffed due to the winter holidays. No forum support is being provided between 15/12/2025 and 5/1/2026. For details see Maxon SDK 2025 Winter Holidays.
  • FIELDLIST SIZE DON'T FIT IN UI

    python
    7
    1
    0 Votes
    7 Posts
    1k Views
    M
    While the bug is still there I set the topic as solved. I will bump the topic once the fix is in a release. Cheers, Maxime
  • How to add Layers Shader - C++

    c++ r19 sdk
    6
    0 Votes
    6 Posts
    753 Views
    mfersaouiM
    @s_bach Thank you.
  • How to create object polygon from spline in C++?

    4
    1
    0 Votes
    4 Posts
    992 Views
    N
    Thanks everyone. The purpose of me is export model from revit to cinema 4d. I choose other way. Thanks you very much.
  • UserData Insert New Data

    Moved
    4
    1
    0 Votes
    4 Posts
    651 Views
    G
    Hey Guys! I think I figured it out! Will resoond if there's any questions! Cheers! MattG
  • Getting cache of a Python Generator under a Python Generator

    python sdk
    3
    0 Votes
    3 Posts
    759 Views
    M
    Hi @orestiskon SendModelingCommand and especially CurrentStateToObject need the object to be actually in the passed document. So you need to create a temporary doc and use it to operates. As bellow: import c4d def currentState(obj) : return c4d.utils.SendModelingCommand(c4d.MCOMMAND_CURRENTSTATETOOBJECT,[obj],c4d.MODELINGCOMMANDMODE_ALL,c4d.BaseContainer(),obj.GetDocument())[0] def main(): # Retrieve the python generator obj = op.GetDown() if obj is None: return objClone = obj.GetClone() if objClone is None: raise RuntimeError("Failed to clone the object") # Make the children Python Generator disapear obj.Touch() # Creates a temporary document that will be used to evaluate the cache of the object tempDoc = c4d.documents.BaseDocument() if tempDoc is None: raise RuntimeError("Failed to create a temporary doc") # Inserts the child python generator that exists only in memory into our tempo doc tempDoc.InsertObject(objClone) returnedObj = currentState(objClone) return currentState(objClone) Cheers, Maxime.
  • Dynamic VertexMap

    python sdk r20
    6
    0 Votes
    6 Posts
    1k Views
    N
    Hello Maxime, thanks for your answer! Its too bad that I can't do it without some hacky way, but thanks for your code snipped and example. I'll mark this thread as solved, so thanks! Best Regards, Florian
  • GeMemGetFreePhysicalMemoryEstimate()?

    5
    0 Votes
    5 Posts
    901 Views
    M
    As @zipit this is a rough quick estimation and could be wrong. If you want more information I suggest you use external libraries like psutil see https://stackoverflow.com/a/11615673. Cheers, Maxime
  • Porting a python command plugin to R21

    4
    0 Votes
    4 Posts
    836 Views
    matniedobaM
    The problem is solved. It was so trivial :D. I unchecked the plugins folder which I added in the preferences. My plugins folder was in the C4D directory, so as you described, it was loaded twice. Leaning for me: Never place a custom plugins folder in the C4D directory! Recommendation to the SDK team: Maybe you could adjust the error message in the console, which mentions that plugin folders should not be in the C4D directory. I would assume that many users/ devs will place the folder there, because of a habit from older versions. Thank you @r_gigante and @zipit for your quick response!
  • Python Generator does not update when children are edited

    2
    0 Votes
    2 Posts
    474 Views
    M
    I just figured out the answer - I needed to disable "Optimize Cache" on the generator's Object tab.
  • Python Generator: Getting polygon data from new generators

    python sdk
    6
    0 Votes
    6 Posts
    1k Views
    ferdinandF
    I did that for the same reason @m_adam created a copy in his version: A node can only be member of one document at a time and also only be inserted exactly one time into the same document (long way of saying that Cinema is monohierachical). Cheers zipit
  • Project Tool: Some projectdefinition.txt options don't seem to work

    9
    0 Votes
    9 Posts
    1k Views
    S
    I think we are talking past each other. You can of course build any project any way you like. An then make sure that your plugins link to the build result using the link options defined in projectdefinition.txt. But I think you want to include an already existing (non-plugin) project in the solution created by the Project Tool, right? And I think that is not possible. I guess you could add the project manually to the solution created by the Project Tool.
  • Inconsistent Matrix Behavior

    r20 c++
    13
    1
    0 Votes
    13 Posts
    2k Views
    J
    Thanks for the response. I changed my code to match the example you gave and it seems like that fixes the immediate problem I was running into. It will take some tests to verify if this covers all of the circumstances that I need it to. I appreciate the help. John Thomas
  • Python Generator associated with User Data?

    Moved python
    4
    0 Votes
    4 Posts
    1k Views
    M
    Thanks for the great suggestions! I just discovered I can also use "File | Save Object Preset" and "File | Load Object Preset" in the Attribute Manager.
  • UNIT METER SCALE ISSUE

    4
    0 Votes
    4 Posts
    740 Views
    r_giganteR
    Hi pyr, thanks for reaching out us. Consider that the Scale modifier operates on the transformation matrix of the object when in Object Mode, whilst it operates on the parameters specified as lengths when in Model Mode. Finally, as pointed out by @zipit, providing more context will be definitively beneficial since with a very simple example I'm not able to replicate the issue as well. Best, R
  • TreeView: c4d.DRAGTYPE_FILES

    r20 python
    10
    0 Votes
    10 Posts
    2k Views
    M
    Hello Maxime, thanks for that detailed answer. Much appreciated. I see, drawing slows down things massively. (3minutes vs. a few seconds) Bad luck for me then. But it still helped me though, I'm now going for another approach. (The GUI part was just for convenience, so everything is fine) Thank you and cheers, Robert
  • Output all renderpaths

    r20 r21 windows python
    3
    1 Votes
    3 Posts
    591 Views
    B
    Thanks Maxime! In the mean time I will cycle through takes, AOVs and Frames manually to get the paths.
  • Disable default Right-Click Menu

    python r19 r20 r21
    9
    0 Votes
    9 Posts
    2k Views
    U
    @m_adam Thanks! Thats a perfect explanation that solves many of my issues - even in some of my other Plugins. I am sorry, I did in fact refer to c4d freezing when I said crashing. Sorry for the confusion.
  • Catch other object's delete/undo

    c++ r19 r20 r21
    5
    0 Votes
    5 Posts
    930 Views
    rsodreR
    @m_adam , AddEventNotification was exactly what I needed. I created a notification to NOTIFY_EVENT_UNDO, and then add my object to it. Now if I delete anything from my object after a polygon is deleted, it will be restored with Undo. Thanks! case MSG_NOTIFY_EVENT: { CHECK_BREAK( data != nullptr ); const auto eventData = static_cast<NotifyEventData*>( data ); if( eventData->eventid == NOTIFY_EVENT_UNDO ) { NotifyEventMsg* notifyMessage = static_cast<NotifyEventMsg*>( eventData->event_data ); CHECK_BREAK( notifyMessage != nullptr ); if( notifyMessage->msg_id == Int32( UNDOTYPE_DELETE ) ) { eventData->doc->AddUndo( UNDOTYPE_CHANGE, Get() ); } } break; }
  • Adding polygon UVs & Normals.

    python r20
    13
    0 Votes
    13 Posts
    3k Views
    M
    Just to add additional information, In R21 GetAllHighlevelData() and SetAllHighlevelData() are working as expected for NormalTag, so data are not any more "shifted" and correctly interpreted internally. See What's New: Fixes: Fixed an issue where VariableTag.GetAllHighlevelData() and VariableTag.SetAllHighlevelData() used Uint16 instead of int16 for Tnormal. Fixed an issue where VariableTag.GetAllHighlevelData() returned data were shifted and not complete for Tnormal. Cheers, Maxime.
  • On the problems of C + + novice

    6
    0 Votes
    6 Posts
    928 Views
    S
    Hello, there aren't any official video tutorials regarding plugin development. If you are new to C++, I strongly suggest to learn the language and how to use Visual Studio before diving into Cinema 4D plugin programming. When you are familiar with C++ and Visual Studio, the first thing you should do is to compile the provided example projects. Especially the "microsdk" show the basics of a simple project. How to build the example projects is described here: Getting Started: Introduction. What specific issues do you encounter while compiling the examples? best wishes, Sebastian