• How to Apply a modeling command?

    s26 windows python
    3
    0 Votes
    3 Posts
    640 Views
    G
    Thanks man, i'll take a look at it!
  • How to set options when saving TIF file

    2023 c++
    2
    1
    0 Votes
    2 Posts
    498 Views
    ferdinandF
    Hello @kbar, Thank you for reaching out to us. You cannot do what you want to do from the classic API. When we use the classic API interface BaseBitmap::Save internally, we always pass nullptr or the empty container when saving a FILTER_TIF. There is unfortunately no classic API translation layer anymore for this aspect of TIFF saving. But you can get the underlying ImageRef with BaseBitmap::GetImageRef and then use the Image API directly to save things as you want them to be saved: Saving an ImageRef to Disk maxon::MEDIASESSION::TIFF::EXPORT Namespace Note that other than in the classic API, image data is expressed by more than one type in the maxon API. To save a plain ImageRef, you will have first to insert it into a ImageTextureRef via ::AddChildren, as only it has the ::Save method. Cheers, Ferdinand
  • How do you manipulate the points on a spline?

    2023 windows python
    3
    0 Votes
    3 Posts
    725 Views
    M
    Hi @ll2pakll, I am glad that you solved your issue. Message(c4d.MSG_UPDATE) is indeed required to finalize your spline editing. If you want a complete example on spline editing please take a look at geometry_splineobject.py example. Cheers, Maxime.
  • How to create a radial (pie) menu?

    windows s26 python
    6
    0 Votes
    6 Posts
    2k Views
    G
    Thanks for your detailed answers, i hoped there is a simpler way to do it)... Pie menus is a very common thing nowadays, why maxon developers haven't implemented it already? In modo for example you can create pie menus, popups...etc without any coding. Not every user is ready/have the time/etc to learn python to build a simple popup, but almost every user needs to customize their working software. I really hope you'll implement these features soon.
  • OBJ Import setting not changing

    python 2024 windows
    5
    0 Votes
    5 Posts
    1k Views
    ferdinandF
    Hey @del, Thank you for pointing out that this part of our examples, I overlooked this aspect this morning. I have fixed the issue in our local repository for import_obj_r13.py. The updated line is: objImport[c4d.OBJIMPORTOPTIONS_PHONG_ANGLE_DEFAULT] = c4d.utils.DegToRad(22.5) and it will go live with the next docs update. I cannot update the legacy version of the SDK in import_OBJ.py as I lack the permissions to write there even in our local repository. Cheers, Ferdinand
  • Check if a texture is missing

    python 2024 macos
    2
    0 Votes
    2 Posts
    690 Views
    ferdinandF
    Hello @visualride, Thank you for reaching out to us. I would recommend having a look at c4d.documents.GetAllAssetsNew . Helpful might also be the thread Get all Textures for a Material. It is one of the multiple threads where I showcased the usage of GetAllAssetsNew (search for GetAllAssetsNew and my user name to find the other threads). In this thread you can see here how to read the exists field in asset data to know if Cinema 4D can find that asset. But asset handling can get complex when node materials are involved as shown here (also a good place to better understand the data associated with MSG_GETALLASSETS). The thread shows also a simpler approach using BaseDocument.GetAllTextures. You can then just check with os.exists if the paths do exist. You might have to deal with relative paths here, depending on the document. Cheers, Ferdinand
  • Problem with MessageData plugin

    2023 windows python
    5
    0 Votes
    5 Posts
    1k Views
    gheyretG
    Hi @ferdinand Thank you so much for your explain, i understand what's happen now. Cheers
  • How to access PLA data

    c++
    19
    0 Votes
    19 Posts
    3k Views
    F
    Hi @ferdinand , Thanks very much for all of your time and tips!! Facundo
  • Adding a STATICTEXT element to a Description... changes in C4D 2024?

    2024 c++
    10
    0 Votes
    10 Posts
    2k Views
    fwilleke80F
    Very informative, thank you Ferdinand!
  • Custom Build C4D.2024.py310 ?

    2024 python
    7
    0 Votes
    7 Posts
    2k Views
    gheyretG
    Hi @Unit-Image-Dev Thank you for your reply. That's so cool! and i will try it.
  • [PYTHON] How to properly set the toggle of viewport solo

    python 2024 2023 s26
    3
    0 Votes
    3 Posts
    778 Views
    B
    In the past I have refrained from CallCommands and CallButtons because they used to add to the undo queue or did. But I suppose in this instance I can just do it for thise purpose.
  • 0 Votes
    6 Posts
    2k Views
    H
    Hi Ferdinand, Yeah, I'll need to do dirty checking for sure. Not because I am shipping this to any customers (unless I can find a good licensing framework ), but because the nature of my plugin is to create quite a few objects; We could easily reach 100s or even 1000s of objects, depending on the situation. So I implemented primitive dirty checking from one of the links you provided, and this helps a LOT with the performance - as you're mentioning, just ignoring the cache and recreating everything every time GetVirtualObjects is called would effectively kill Cinema 4D. Especially when fiddling with parameters, as the algorithm to layout all the objects I am creating is quite intensive. So I'm using your code from this topic https://developers.maxon.net/forum/topic/14936/difficulties-to-dedect-the-right-message-data/2 to make sure I do proper dirty checking for my own generator and all linked objects before I decide to return the cache or generate all objects again. I'm not done yet, but early tests seem pretty promosing. Now if only there was a simple way to split the large python file into multiple files, then bundle them all together for one giant python file so I wouldn't have to mess with module paths. 1000 line code files get old real fast. Thanks again!
  • How to obtain the selection order of objects in C++

    s26 c++ macos windows
    4
    1
    0 Votes
    4 Posts
    894 Views
    P
    @spedler Thank you for your help
  • CreateRay

    sdk c++
    6
    0 Votes
    6 Posts
    1k Views
    rsodreR
    Ok, but if RS can call it, when and how does it? Call just once... makes no sense, because the effect calls once per pixel at least, on every frame. Why would RS call it in a different context? What do you mean not fully functional? Is it partially functional? How so?
  • How to increase the number of calculations in a Python tag?

    windows python 2023
    4
    0 Votes
    4 Posts
    975 Views
    ferdinandF
    Hey @ll2pakll, yes, any kind of simulation/solver is usually quite a bit of work; and as with most things, most of it is pushing data around in a 'clever' way and not the actual algorithm. You might get away with just saturating the system (add frames or "redraws"), but be warned, you will run into more problems with this approach. To have a robust solver, you must decouple it from the FPS and scene update events; this is not just a Cinema 4D thing, but universal. Cheers, Ferdinand
  • Time Shift. Python tag.

    windows python 2023
    3
    0 Votes
    3 Posts
    704 Views
    L
    @ferdinand Thank you very much for your reply. I only need to animate one parameter and I have already written something similar to this parameter cache myself, you saw it in a previous question and advised me to change the location of the cache for more reliability. I will take your advice in the future to avoid reinventing the wheel. Thanks again for your help.
  • Python tag doesn't work when rendering

    windows 2023 python
    6
    0 Votes
    6 Posts
    1k Views
    L
    @ferdinand Your solution of replacing the doc = c4d.documents.GetActiveDocument() line with doc: c4d.documents.BaseDocument = op.GetDocument() really worked. From my point of view, as an ordinary person, your level of understanding of the code seems to be something beyond the realm of possibility. I wish you a good day and thank you again for your help.
  • Saving Documents

    python 2023
    3
    0 Votes
    3 Posts
    618 Views
    A
    Hi Ilia, Thanks for the reply - you're correct about what I'm trying to do! I've tried your first option and unfortunately the following dialog pops up: "Unable to write file $FILE$ (file may be write protected)" This dialog does not appear if the file is saved manually with the File -> Save Project As... Dialog The save location is a network drive. Let me know if theres a workaround? For your second option - is it possible to specify the exact filename here? EDIT: It looks like you can also specify a filename here, which has worked - thanks !
  • node size

    python windows 2023
    4
    0 Votes
    4 Posts
    934 Views
    L
    Thank you for the answers.
  • Import NumPy?

    python 2024
    4
    0 Votes
    4 Posts
    1k Views
    G
    Hi, I'm also trying to install numpy, but after registering c4dpy I'm getting a syntax error after running "c4dpy -m ensurepip" command. c4dpy -m ensurepip (null) File "<stdin>", line 1 c4dpy -m ensurepip ^^^^^^^^^ (null)SyntaxError: invalid syntax