• Identify Critical Stop Please?

    python r21
    6
    0 Votes
    6 Posts
    2k Views
    K
    @m_magalhaes said in Identify Critical Stop Please?: hello, For your next threads, please help us keeping things organised and clean. I know it's not your priority but it really simplify our work here. Q&A New Functionality. About the error it's related to FileName. But we need more information to help more. Be careful about the other thread, it may happen that we add stuff and the line will not refer to the correct DataType anymore. Cheers, Manuel Dammit! No wonder my code keeps breaking... I can't even follow simple forum instructions lol! But hey, at least I got it down to one link. Haha, progress! Yes, Filename, that actually makes perfect sense, so I'm pretty confident I've conquered this error. You're right that I shouldn't rely too strongly on those line numbers. Hell, the next bug fix could make that info obsolete, let alone a reference from years ago. But sometimes you can glean value from outdated info. Maybe in the future line 277 doesn't refer to Filename, but if that error pops up and all my Filename calls look to be in good order I might be able to make some guesses that increase my luck in identifying the issue faster. For instance, I might look at string or static text parameters first, thinking that like datatypes may have been grouped together in the source code. If 329 doesn't refer to baselink in the future I might start looking at in/exclude boxes or shader links first for the same reason. Maybe the list of datatypes in the description manual in the sdk is ordered how they are in ge_container.h and I can use that to choose my next lead. Shot in the dark type stuff, for sure, but maybe gets me generally in the right direction. You know what, this may have to do with me tracking down a weird behavior where Init() seemed to be the cause of every parameter invoking a MSG_DESCRIPTION_POSTSETPARAMETER message on any parameter change... but I have both debugging AND pandemic fog on my brain, so I don't even know exactly which thing I was doing wrong that may have been the culprit, so there's no point getting into all that... doesn't help that a VS Code update seems to like breaking my local git repo's randomly, so that makes reviewing previous code fun. In any case, the error hasn't popped up at all after ensuring all my base container calls were proper and there were no missing parameter initializations. Not that it was a readily reproduce-able error, just one that would pop up sometimes after a heavy testing session... so I had to do a lot of those to ensure it's really gone. But it does raise a question. Since the Filename object doesn't exist in python, what's the best way to initialize it? Docs say it's a string, but I saw something in a forum post that someone was initializing their filename parameter directly through the base container. I figured this had to do with how the python wrapper is internally converting the path to Filename object or something, so that's what I've been doing, but that WAS from 2013. So which is the proper way to initialize it? self.InitAttr(node, str, c4d.ID_FILENAME_PARAMETER) or data.SetFilename(c4d.ID_FILENAME_PARAMETER, "") And even if it's the former, do I set its default value through the basecontainer or in the normal way like so: node[c4d.ID_FILENAME_PARAMETER] = "" @r_gigante said in Identify Critical Stop Please?: Hi @kvb, with regard to the scope and purpose of the CriticalStop I warmly recommend you to have a look at: FAQ CriticalStop() Debug and Output Functions These pages properly explain how the CriticalStop is used in Cinema 4D, how it can be used in plugins and what to expect when it's hit. In you case, as already pointed out by @m_magalhaes , it's likely you're using a GeData::GetFilename() with a GeData whose type was not a Filename. Please recheck your code and if you don't spot the issue, provide us with an example or snippet to reproduce it. Cheers, R Thanks for the links. They'll come in handy on my next project, which will be in c++ (and I will be abusing the hell out of all the debugging options!). Could it have been caused by the filename returning None? Is that even a thing or just something I noticed while I was missing any initialization on my Filename parameter? I can't see it being anything else... unless an empty string could trigger that error? Thanks all! Kevin
  • 0 Votes
    3 Posts
    444 Views
    C4DSC
    @m_magalhaes said in GeUserArea - RemoveLastCursorInfo not compatible with ActivateFading: ActivateFading is also using RemoveLastCursorInfo internally. I more or less assumed this was the case. As such I went with an alternative solution using RemoveLastCursorInfo to be able to detect the mouse leaving the GeUserArea, while providing an own implementation for fading in and out. Thanks for confirming.
  • TagData plugin to "return" Vertex map?

    9
    0 Votes
    9 Posts
    2k Views
    intenditoreI
    Yeah, sure)
  • SpecialEventAdd unpredictable timing to GUI::Command

    c++ r21
    11
    0 Votes
    11 Posts
    1k Views
    ManuelM
    hi, without feedback, i'll set this thread to solved tomorrow. Cheers, Manuel
  • Materials don't accept Tags?

    r21 python
    4
    0 Votes
    4 Posts
    914 Views
    ManuelM
    hi, without futher feedback from you i'll set this thread to solved. Cheers, Manuel
  • DrawHUDText returns a white box instead of a text?

    r20 python
    19
    0 Votes
    19 Posts
    4k Views
    M
    Regarding the Z setting of DrawHUDText (I'm not sure about which one to be honest since there is no Z param for this method) previously the fact that HUD was behind poly object was a limitation regarding how our draw call was done by the viewport, but this is addressed in S22 and its the expected result that a HUD text is not overridden by any other objects but act as a HUD and to be draw in front of everything. Cheers, Maxime.
  • 0 Votes
    3 Posts
    750 Views
    oli_dO
    Merci Maxime ! It's work perfectly !
  • Question about BIT_CONTROLOBJECT

    c++ r21
    10
    0 Votes
    10 Posts
    2k Views
    F
    Thanks for confirming that this approach looks correct! "never use NULL to check your pointers against to or to assign it to your pointers: rather prefer using nullptr cause while the first comes from a define the second is a built-in pointer type." -Thanks, noted! "with regard to the last implementation, why not using:" -Because we only want to check the next object (obj=obj->GetNext()) if "inCache" is true. Otherwise, the function would not only check the object passed to the function and its cache, but also all subsequent objects on the same level of the hierarchy.
  • Exclude Objects from Environment

    3
    0 Votes
    3 Posts
    1k Views
    ManuelM
    Hello, this is a programming forum, if you want to ask question related to "how to use cinema4D" there are more appropriate forum out there. (in different languages) Cheers, Manuel
  • Draw Methods doesn't work on GeUserArea

    r21 python
    5
    0 Votes
    5 Posts
    445 Views
    B
    @zipit Thanks for pointing it out. It now works as expected.
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    1 Views
    No one has replied
  • Transparency channel - Color update

    3
    0 Votes
    3 Posts
    847 Views
    KantroninK
    I found the solution (I already had this problem but I couldn't remember the right code) mat [c4d.MATERIAL_TRANSPARENCY_COLOR] = c4d.Vector (1.0, 1.0, 1.0) #color white mat.Update (True, True)
  • Cinema 4D S22 availability

    Locked
    1
    0 Votes
    1 Posts
    663 Views
    No one has replied
  • BaseDraw known issues in S22

    Locked windows macos c++ python
    1
    1 Votes
    1 Posts
    591 Views
    No one has replied
  • GeUserArea ActivateFading and AdjustColor

    c++ r19 r20 r21
    6
    0 Votes
    6 Posts
    721 Views
    C4DSC
    @PluginStudent Yup ... it's official, I need glasses on top of my glasses. Thanks for pointing it out.
  • animation disregarded after toolplugin

    python r20
    8
    0 Votes
    8 Posts
    1k Views
    D
    But I appreciate that you where trying to make things more streamlined
  • Generators, Materials, Undo's, Oh My!

    python
    12
    0 Votes
    12 Posts
    2k Views
    ManuelM
    the whole thread is the answer anyway
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    7 Views
    No one has replied
  • SendModelingCommand() in R20 and R21

    Moved r20 r21 c++
    8
    0 Votes
    8 Posts
    1k Views
    Danchyg1337D
    @m_adam MODELINGCOMMANDFLAGS::NONE works! Thanks again for helping me out!
  • About plugin ids

    14
    0 Votes
    14 Posts
    4k Views
    r_giganteR
    Hi @tokai , nice to see you on the "new" PluginCafé With regard to your first question: Had to reregister (why?) We simply could not take the credentials straight from the old forum to the new one: to say one to dismiss all the sleeping accounts that grew up over the years but also to be sure that our new users were accepting the GDPR. With regard to your second question: OK, so I enter my label as "org.binaryriot.foo.bar" (because org.binaryriot.* would be my domain space) and I'll end up with "orgbinaryriotfoobar". Why? You don't have to enter it in the Label field of the Plugin ID Generation page. As you can see there are two sections: MAXON API suggested domain space: this is a suggested reverse-domain string that should be used by developers to be sure that the strings used for anything connected to MAXON API developement and for the ModuleId used in the projectdefinition.txt of their plugin is UNIQUE to them. This string is created by looking at the Plugincafé member's information and by default it's created by assembling use.yourdomain.<username> to invite members to use non-conflicting names. But if you go into your profile settings and change the website to www.binaryriot.org you'll see that getting back to the Plugin ID generation page the suggested domain will exactly be org.binaryriot.* Plugin ID generation: this is were you're supposed to enter, as in the old plugincafe, an arbitrary label for the plugin your creating - e.g. My Awesome Object Generator* that on pressing the "Get Plugin ID" will provide you with [image: 1588588698361-c8d5188a-21d7-4aa4-8c4d-710a0ac09bc1-image.png] Best and, once more, welcome back.