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.
  • Detect unicode character keypress in a Python script

    6
    0 Votes
    6 Posts
    1k Views
    R
    Ah yes thank you so much!
  • Hiring Developers

    Moved
    1
    0 Votes
    1 Posts
    341 Views
    No one has replied
  • best way to watermark the output

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    S
    many thanks for the information and the friendly attitude. i think its better for me to start another well-structured topic regarding my question.
  • Need help with NumPy build MacOS

    3
    0 Votes
    3 Posts
    675 Views
    ferdinandF
    Hello @InterfaceGuy, without further questions or replies, we will consider this topic as solved by Monday, the 30th and flag it accordingly. Thank you for your understanding, Ferdinand
  • Volume Builder Index returning None

    python
    4
    0 Votes
    4 Posts
    701 Views
    ferdinandF
    Hello @falcon, without further questions or replies, we will consider this topic as solved by Monday, the 30th and flag it accordingly. Thank you for your understanding, Ferdinand
  • How to make a GUI for getting user inputs for my python script?

    5
    0 Votes
    5 Posts
    1k Views
    ferdinandF
    Hello @delizade, without further questions or replies, we will consider this topic as solved by Monday, the 30th and flag it accordingly. Thank you for your understanding, Ferdinand
  • New User: Question Regarding Render Automation Capabilities.

    5
    0 Votes
    5 Posts
    826 Views
    ferdinandF
    Hello @Spools_Arbuckle, without further questions or replies, we will consider this topic as solved by Monday, the 30th and flag it accordingly. Thank you for your understanding, Ferdinand
  • How to access ‘Freeze View function’ with Python ?

    7
    0 Votes
    7 Posts
    2k Views
    M
    Hi Unfortually this is not exposed, since it retrieve automatically the size of the view. Cheers, Maxime.
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    2 Views
    No one has replied
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    4 Views
    No one has replied
  • Content Browser modifications via Python?

    2
    0 Votes
    2 Posts
    541 Views
    ManuelM
    Hi, 1- you can't with python. (I'm not even sure you can with c++) 2 - I'm not sure to fully following you. I don't understand the "render preview image" is that a command? In the preferences there is a "Render scene" option. That's maybe the version I'm using. (R24) To fix the texture path in your material presets, you would need to set the preview with a file save on your harddrive. But this is not possible with Python. Cheers, Manuel
  • Find object / surface normal for given point in space

    python
    6
    0 Votes
    6 Posts
    1k Views
    ferdinandF
    Hello @indexofrefraction, without further questions or replies, we will consider this topic as solved by Thursday and flag it accordingly. Thank you for your understanding, Ferdinand
  • Interfacing with Gumroad's API

    Moved python
    16
    0 Votes
    16 Posts
    4k Views
    kbarK
    Just one last comment on this licensing issue. I have a video that tells users how to install and license my own plugins for R21 upwards. It has been viewed 33,882 times as of today. It is my most watched video every month. I don’t have that many customers or sales. These views are from regular C4D users using Google to figure out what to do now since the old way is gone.
  • GetSplineLength() is failing?

    5
    0 Votes
    5 Posts
    978 Views
    ManuelM
    Hi, Spline Segment are explained in the Cinema 4D documentation About the initialisation, if you just move the point that should work but i would recommend to init again SplineLengthData. if you add a point, you need to initialize the SplineLengthData again. Cheers, Manuel
  • CKey.SetValue() for BaseTime object as value

    python
    2
    0 Votes
    2 Posts
    484 Views
    I
    I actually found the solution while posting the question but wanted to still post it in order to help others who might have the same problem. (If this is against community guidelines I apologise) The solution is to use the CKey.SetGeData() method. Done!
  • The layer material ID is the same as the node material ID.

    r21 python
    8
    0 Votes
    8 Posts
    2k Views
    indexofrefractionI
    I also just ran into this... < R24 you dont have BaseList2D.IsNodeBased, but as a small hack you can do: def isNodeMaterial(op): return True if op.GetType == c4d.Mmaterial and '[Node]' in op.GetBubbleHelp() else False
  • Iterate through selected Materials

    3
    0 Votes
    3 Posts
    731 Views
    M
    @ferdinand Thank you very much! The second way works great. I didnt get the first approach to work, but the second does well Here is the script if someone needs it. It is probably messy I am not a programmer, but it does write the names of the selected materials into the texturname import c4d from c4d import gui from c4d import storage import os #Welcome to the world of Python def changeTexture(shader): # shader ID texturePath = shader[c4d.BITMAPSHADER_FILENAME] # split aboslute path oldTexturename = os.path.split(texturePath) fileExtension = os.path.splitext(texturePath) # add prefix to newTexturename = matName + fileExtension[1] print (newTexturename) newTexturePath = os.path.join(oldTexturename[0], newTexturename) print (newTexturePath) # rename texture try : os.rename(texturePath, newTexturePath) print("Source path renamed to destination path successfully.") except OSError as error: print(error) # Assign the new value shader[c4d.BITMAPSHADER_FILENAME] = newTexturePath shader.Message(c4d.MSG_UPDATE) # Main function def main() : c4d.CallCommand(1029486) # Project Asset Inspector... c4d.CallCommand(1029816) # Select Assets of Active Elements c4d.CallCommand(1029820) # Globalize Filenames # Iterate over selected material material = doc.GetFirstMaterial() if not material: return while material: if material.GetBit(c4d.BIT_ACTIVE): shader = material.GetFirstShader() global matName matName = material.GetName() while shader: # Test if the current node is a bitmap shader. if shader.CheckType(c4d.Xbitmap) : changeTexture(shader) shader (shader.GetDown()) shader = shader.GetNext() material = material.GetNext() c4d.CallCommand(200000273) # Reload All Textures # Execute main() if __name__=='__main__': main()
  • C++ Plugin Development Tutorials

    Moved
    5
    8 Votes
    5 Posts
    6k Views
    kbarK
    @thomasb said in C++ Plugin Development Tutorials: This is great, why does nobody make this for Python, I mean Plugin development @Cairyn already has: https://www.patreon.com/cairyn In my opinion he should be charging $50 - $100 a month to make it viable to keep going.
  • [Fork] Detailed C++ Plugin Development Process Tutorial

    Moved c++
    4
    1 Votes
    4 Posts
    925 Views
    ferdinandF
    Hello @x_nerve, excuse my late reply. But our answer remains the same, we can give no guarantee that we will do this immediately and it is rather unlikely that we will do it. The reason being, that the information is already there, mostly in Getting Started: Introduction, it just happens to be in a slightly inconvenient form. And doing it here in the forum instead of the documentation would not be an improvement, especially if it is meant to be "detailed", as we then would do work that is not integrated with the document space users usually use to learn about concepts in the SDK, the SDK documentation hosted on develeoprs.maxon.net. As most people and companies, we have to plan where we invest our time best. And writing and maintaining the SDK documentation is only a part of our tasks. Which is why we did decide against doing it right now. Thank you for your understanding, Ferdinand
  • We are looking for plugin developers!

    Moved
    2
    1 Votes
    2 Posts
    486 Views
    kbarK
    Just checked out your website, looks really great. Can't wait to see that in C4D. Best of luck with the project!