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.
  • c4d.PrefsLib_OpenDialog is not working.

    python r20
    3
    0 Votes
    3 Posts
    635 Views
    merkvilsonM
    @m_adam Thanks, Maxime! You solved yet another issue.
  • Force fields for dynamics simulations

    c++
    6
    0 Votes
    6 Posts
    1k Views
    r_giganteR
    Hi Nikolay, thanks for following up. I've forwarded the idea request to the development department responsible for. After evaluating they'll decide if and when to schedule this API addition in our release cycle. Best, Riccardo
  • Detect single click

    python
    4
    0 Votes
    4 Posts
    796 Views
    r_giganteR
    Hi merkvilson, thanks for following up. With regard to the MSG_EDIT it's actually dispatched just when double-click event is executed by the user. What is then executed depends on what is implemented in the NodeData::Message() method when the MSG_EDIT message is received in a certain NodeData. An example on how the double-click event in the ObjectManager works can be found via the Physical Sky, where, double clicking on the icon in the OM, just opens the Sky Manager UI. Best, Riccardo
  • Timeline control via OSC and EventAdd doesnt update the scene

    Moved python
    2
    0 Votes
    2 Posts
    555 Views
    a_blockA
    Hi, welcome to the Plugin Café forum Before answering your question, I'd like to ask you to please read "Read Before Posting". No worries, I have turned this thread into a "question", added tags and moved it to the Cinema 4D Development category for you. I'm a bit surprised it's supposed to work on Mac. The thing is, SetTime() just sets the time of the document, but it does not implicitly trigger a re-evaluation or execution of the scene. For this you need to use ExecutePasses() after calling SetTime(). There's some more information on this in our C++ SDK manuals. I know, we are talking Python here, but maybe it's interesting anyway: BaseDocument manual -Time. Cheers, Andreas
  • BaseContainer::SetMemory() question

    c++ r19 r20
    6
    0 Votes
    6 Posts
    1k Views
    a_blockA
    Hello Roger, my thought was, if you allocated buffer properly via NewMem (or one of its siblings), then you should be able to use it directly. But as Cinema 4D will do an internal copy and destroy the passed buffer, you'd need to do something like this (pseudocode): SetMemory(buffer) buffer = GetMemory() // to get the pointer to the buffer owned by Cinema // ... and then in the end, if you need to free the memory yourself and can't rely on the memory being destroyed on destruction of the BaseContainer buffer = GetMemoryAndRelease() Free(buffer) Just thinking and probably you have thought of this option anyway. Cheers, Andreas
  • Function 12144 (connect objects)

    python
    9
    0 Votes
    9 Posts
    2k Views
    Passion3DP
    Thank you for all these details Maxime I solved the problem with a small loop that checks if the object has been converted or not The test reports I got are all positive My plugin will therefore remain compatible from R13 to R20:)
  • Export selected objects to separate files

    Moved
    8
    0 Votes
    8 Posts
    5k Views
    K
    Hi @m_adam, thanks for you correction and advice, it's really usefull for me. I'm learn python just couple month and not sure in my code yet. yeah i'm missed this mistake full_dirpath = normpath(join(dirpath, (doc.GetActiveObjects(0)[0]).GetName() + ".obj")) Thanks one more time, always good to have help and support!
  • Add tooltip to subcommand

    python windows r20
    3
    0 Votes
    3 Posts
    708 Views
    B
    Thanks for confirming my suspicion
  • Accessing Mesh Vertex Data

    3
    0 Votes
    3 Posts
    717 Views
    C
    @m_adam Sorry about the gaffe. I make sure for it not to happen again. Thanks for your response.
  • Pipeline integration

    Moved
    8
    0 Votes
    8 Posts
    2k Views
    M
    Because you didn't insert the actual renderer: InsertVideoPost() BaseVideoPost
  • Getting points and edges of parametric objects

    python
    5
    0 Votes
    5 Posts
    1k Views
    K
    Nevermind. I figured it out It was my mistake in the code. I made myself a helper function to initialize the ViewportSelect object, and I was initializing it with the wrong object. That's where the runtime error came from. Thanks anyway.
  • Get points within a given radius

    Moved
    4
    0 Votes
    4 Posts
    824 Views
    M
    You may want to consider to use scipy. You have to do indexing once, but can the efficiently iterate over the points within a desired radius with the functions that come with the module.
  • Incorrect file structure

    r20
    6
    0 Votes
    6 Posts
    3k Views
    a_blockA
    Hi Roger, that's good news! Cheers, Andreas
  • Open GeDialog on second screen

    python windows r20
    3
    0 Votes
    3 Posts
    720 Views
    B
    Ok, thanks!
  • Drawing into Rendering

    r20 python windows
    7
    0 Votes
    7 Posts
    2k Views
    r_giganteR
    Hi @rownn, thanks for having provided further details. Assuming that you're aware of the limitation in terms of appearance that you might face by using the functionalities delivered by GeClipMap, the only way to go to access a bitmap which is supposed to contain a rendering of the scene in Python is to execute the rendering invoking the BaseDocument::RenderDocument() and pass the BaseBitmap you intend to manipulate via the GeClipMap. Best, Riccardo
  • Get Active Light Parameters

    sdk c++ r20
    2
    0 Votes
    2 Posts
    492 Views
    r_giganteR
    Hi Ogers, thanks for reaching us. With regard to your question, I need some further explanation since I actually don't get what you mean by: to get these parameters from c4d lights Which parameters are you referring to? What is the final intent of the Light Translator plugin? Best, Riccardo
  • Merging external files into plugins

    python
    4
    0 Votes
    4 Posts
    789 Views
    M
    Hi Merkvilson, the best way would be in the NodeData.Init method to load the scene with LoadDocument(). This will give you a BaseDocument. Then you can retrieve the LineObject or whatever you need from this document. Then get a Clone of these things and draw it inside your Draw method. Just in case, if you would have to return everything in the GetVirtualObject methods, you would need to insert everything under a null and return this null. And to manually handles/tracks material (this part can become very tedious) If you have any questions, please let me know. Cheers, Maxime.
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    3 Views
    No one has replied
  • Spline shape for BaseDraw Handles

    python
    6
    0 Votes
    6 Posts
    1k Views
    M
    The best way would be to store directly the LineObject in a member variable of your ObjectData class. The alternative way to retrieves a LineObject (which is never visible in the ObjectManager) is to call GetCache() from a Spline Object. But a Spline Object can have multiple LineObject and a SplineObject (like any other objects) does not guarantee that a cache is available at any time. So if there is no cache, the best way would have been to clone the SplineObject to a Temporary document, call ExecutePass from this document in order to build the cache. Then retrieves the cached LineObject. But I think SplineHelp, is the best option you have which works in all case, easy to setup/use, is there any drawback to it? Cheers, Maxime.
  • BaseDocument.StartPickSession() Documentation

    python
    2
    0 Votes
    2 Posts
    635 Views
    M
    Hi, Donovan thanks for reaching us. The mystery variable is actually an int flag to retrieve if the user cancels the PickSession or not. def OnPick(flags, active, multi): if flags & c4d.PICKSESSION_FLAG_CANCELED: print "User cancel" print "active: ", active print "multi: ", multi def main(): doc.StartPickSession(OnPick, multi=True) No there is no way. Actually nothing, it's up to you to detect when the user cancels with PICKSESSION_FLAG_CANCELED and do whatever you want. Cinema 4D handle automatically undo. But you can call BaseDocument.GetSelection before and BaseDocument.SetSelection after if the user cancels the pick session) Finally, note the C++ version offer to adds userdata ( For more information please read the C++ documentation https://developers.maxon.net/docs/cpp/2023_2/struct_pick_session_data_struct.html) If you have any question, please let me know. Cheers, Maxime.