• How to catch Preferences editing

    Cinema 4D SDK python r23 r21
    3
    0 Votes
    3 Posts
    307 Views
    ferdinandF
    Hi, without further feedback, we will consider this thread as solved by Wednesday and flag it accordingly. Cheers, Ferdinand
  • Default Object: How to apply those defaults?

    Cinema 4D SDK c++ r20 r21 s22 r23
    11
    0 Votes
    11 Posts
    1k Views
    ManuelM
    well sorry for the misleading. I was thinking it should work because the object is inserted with doc->InsertObject Cheers, Manuel
  • HOW TO BIND KEYBOARD SHORTCUT TO PLUGIN

    Cinema 4D SDK python r21
    3
    0 Votes
    3 Posts
    416 Views
    gheyretG
    @m_magalhaes Now i know how to solve my problem! Thank you for your reply. Cheers!
  • Empty response body from GET or POST HTTP request

    Cinema 4D SDK r21 c++
    8
    0 Votes
    8 Posts
    2k Views
    ferdinandF
    Hi, without further feedback, we will consider this thread as solved by Monday and flag it accordingly. Cheers, Ferdinand
  • PYTHON - INPUT DELAI

    Cinema 4D SDK python r21 macos
    7
    0 Votes
    7 Posts
    1k Views
    ferdinandF
    Hi, without further feedback, we will consider this thread as solved by Monday and flag it accordingly. Cheers, Ferdinand
  • PYSIDE FOR C4D PROBLEMS

    Cinema 4D SDK python r21
    7
    0 Votes
    7 Posts
    947 Views
    gheyretG
    @zipit I just read this(Connect C4D with Tkinter) post,It does seem to help me Thank you again!
  • Plugin is evaluated for all frames

    Cinema 4D SDK r21 s22 r23 r20 python
    2
    0 Votes
    2 Posts
    451 Views
    ferdinandF
    Hi @pyr, thank you for reaching out to us. I am afraid we will need a little bit more than that, as otherwise it will be very hard to answer your question What kind of plugin do you implement? What does it do or what would you consider as running? On a very abstract level you cannot really prevent plugins from running other than not registering them at the start of the application. But you can of course modify their output depending on basically everything, including render events and at what time offset some given document is. Cheers, Ferdinand
  • Snap settings issues in R21/R23?

    Cinema 4D SDK r21 r23 python
    12
    0 Votes
    12 Posts
    2k Views
    CairynC
    @zipit Thanks, I thought so... but you never know whether some functionality has a hidden internal purpose. Deprecating it will probably be the best solution.
  • 0 Votes
    5 Posts
    540 Views
    fwilleke80F
    Hi Manuel, thanks for getting back to me! The size of the bitmap you want to display ? It's 320x116 pixels. Do you want to bitmap to scale when you scale the GeDialog ? No. I rather want the dialog to be just wide enough to fit the bitmap in it. And that seems to happen automatically. Even if I open the dialog with a width of e.g. 100 px, it doesn't get any smaller than (width_of_bitmap + strange_gap * 2). Is it possible that it's a macOS-only issue? Maybe it's the radius of the windows' round corners that gets added to the size. Anyway, maybe this issue isn't worth spending more of your time on. Since it works with a ASYNC_POPUPEDIT style dialog, I think I can live with what I got.
  • Find BaseMaterial that owns a BaseShader?

    Cinema 4D SDK r20 r21 r23 s22 c++
    4
    0 Votes
    4 Posts
    492 Views
    ManuelM
    hi, Confirmed, thanks @mp5gosu. That also work if the shader is inside another shader. Cheers, Manuel
  • 0 Votes
    3 Posts
    432 Views
    fwilleke80F
    Hi Manuel, thanks for the info! If smooth is set to false, the wrong positions disappear in deed. The distribution of the positions, however, is much uglier. It requires the user to change some specific attributes of the spline to make it look nice. But I think, that's ok for now. Thanks again & greetings, Frank
  • But no plug-ins in R21.207 (demo version) possible?

    General Talk r21
    3
    1
    0 Votes
    3 Posts
    607 Views
    5
    Thank you for the detailed answer. and indeed, I can confirm that a plug-in (Reeper 3.2 SE) loaded as a trial for R21 is working properly. I will now contact Paul Everett directly first.
  • 0 Votes
    5 Posts
    691 Views
    fwilleke80F
    Thanks for confirming! The strange thing is that I can reproduce this even in R20. Seems, not many people use this function to open URLs. I'll mark this as solved then, as my solution presented in this thread works flawlessly on all R2x releases. Cheers, Frank
  • 1 Votes
    4 Posts
    469 Views
    ferdinandF
    Hi, I did not really expect an answer, I just did put it up to make you guys aware. Regarding your reply, I agree with most of it and am aware that there a some hurdles to overcome in mapping C++ interfaces to Python, i.e. that you do run into problems in general when you want to express overloaded methods in Python. But as @mp5gosu pointed out, my major point was that the function does not accept named arguments at all. Which is mainly a problem because the docs tell you explicitly otherwise in two ways. First of all the docs say explicitly that all arguments are optional which implies for Python usually that I can pick and choose in which arguments I can pass by passing named arguments. And secondly, you print out the signature as Vector.__init__(x=0.0, y=0.0, z=0.0) which implies the same. I would have probably ignored all this and booked it under "that's for me to know and for you to find out", if it wasn't for the fact that the method does not raise a TypeError on attempts of feeding it with such unknown named arguments. Which can make this quite critical IMHO. Cheers, zipit
  • Accessing object container in C++.

    General Talk
    4
    2
    0 Votes
    4 Posts
    737 Views
    M
    Hi internally as stated in the documentation of GeListNode.__setitem__ and GeListNode.__getitem__ it's just a wrapper arround respectively C4DAtom.SetParameter and C4DAtom.GetParameter. Then Set/GetParameter will call the respective NodeData.G/SetDParameter of the GeListNode implementation. This method lets you define how the parameter access is done (aka retrieving the data from a local member variable or reading the base container made by the description). So if we go back to the s/getitem, internally in python it builds automatically a DescId based on the data provided doing a stupid If pyData.Class == PyBool: DescId(pyData, DTYPE_BOOL, 0) so you can easily reproduce this part too. But I don't think in C++ you can't support multiple arguments in the bracket operator see C++ [] array operator with multiple arguments?, so you could somehow hack around with the usual () operator, but our classic API doesn't really provide a mean of inspection so you will need to either do a lot of overrides or have unsafe void pointer arguments while PythonObject always has a type attached to them so you can at any time accept a PyObject* and retrieve is real DataType, and this is exactly what is possible to do with the MAXON API where you register datatype as MAXON_DATATYPE then they all can be retrieved in the form of a maxon::Data but you still have access to its maxon::Id and you can know the datatype ID and doing a safe casting. Hope this answers your questions. Cheers, Maxime.
  • CAMorphNode.SetPointCount() always return false

    Cinema 4D SDK python r21
    5
    0 Votes
    5 Posts
    729 Views
    J
    @m_adam Thank you for your answer. C++ documentation have a "Example" show how to use flags in CAMorph.SetMode, but python documentation not (at least in R21.022), i compared the C++ code with Python, then went back to the C++ documentation and found this.
  • 0 Votes
    5 Posts
    555 Views
    B
    RE: This is a limitation you also have with the visual selector Not really. You can multiple select hotspots and/or controllers in the visual selector. Anyhow, thanks for the response. I guess there is no way around this.
  • Connect C4D with Tkinter (External Application) ?

    Cinema 4D SDK r21 python
    12
    0 Votes
    12 Posts
    2k Views
    B
    @r_gigante Thanks for the response and the website reference. I was able to work the code with the following revisions: def CoreMessage(self, id, bc): if id == 1234: P1MSG_UN = bc.GetVoid(c4d.BFM_CORE_PAR1) pythonapi.PyCObject_AsVoidPtr.restype = c_int pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object] P1MSG_EN = pythonapi.PyCObject_AsVoidPtr(P1MSG_UN) # check message and act if (P1MSG_EN == 1): c4d.documents.GetActiveDocument().InsertObject(c4d.BaseObject(c4d.Ocube)) elif (P1MSG_EN == 2): c4d.documents.GetActiveDocument().InsertObject(c4d.BaseObject(c4d.Osphere)) Thanks again. Will close this thread now.
  • R21 Project Tool?

    General Talk r21 c++
    7
    1
    0 Votes
    7 Posts
    967 Views
    B
    @Cairyn @zipit @m_magalhaes Thanks for the detailed response. After installing the C++ environments, it works as expected. Sorry new to this. As I only have python to reference for. I also managed to build the plug-ins using this guide: https://developers.maxon.net/forum/topic/10967/compiling-the-cinema-4d-r20-c-sdk-examples