• 0 Votes
    3 Posts
    719 Views
    I
    Hi Ilia, Thanks a lot for the quick and clear reply! That makes sense. I had a feeling it might be a limitation of the current API. I’ll definitely follow up with the Redshift team on their forum to confirm whether there’s any workaround or future support planned for accessing those fields. Appreciate your help and the reference to the related thread! Cheers, Anthony
  • 0 Votes
    5 Posts
    1k Views
    i_mazlovI
    Hi @d_keith, I would kindly ask you to check our Support Procedures, namely the "How To Ask Questions" paragraph: Singular Question: The initial posting of a support topic must contain a singular question. Do not ask ten things at once, that makes it extremely hard to answer topics. Break up your questions into multiple topics. Here you effectively have 4 different questions about Asset Browser, and these are candidates for 4 different threads on the forum. In your further postings please try to follow the aforementioned rules. Regarding your questions: Should I be able to mount a directory and have it auto-create a DB? Mounting database is effectively executing the AssetDataBasesInterface.SetDatabases. It has nothing to do with creating database neither semantically, nor is this mentioned in the docu. If you need to create repository, please use maxon.AssetInterface.CreateRepositoryFromUrl(), it will scan the directory for being already a database and create proper dir structure if it's not. Any idea why I need to re-try creating the Repo for it to work? If you face any errors in the script, please always attach at least the error message! In this case I assume you receive the following error, when executing the maxon.AssetRepositoryTypes.AssetDatabase() for the first time after Cinema 4D started. Looks like a bug to me, I've created a bug report for that (ITEM#585831). The error message: Traceback (most recent call last): File "console", line 1, in <module> File "C:\Program Files\Maxon Cinema 4D 2025\resource\modules\python\libs\python311\maxon\interface.py", line 5049, in __call__ self._cachedObj.R = _maxon_mapping.GetAssociatedDataType(dt) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Exception: unable to find datatype As a workaround you can just execute the following line first in your main(): maxon.AssetRepositoryTypes.AssetDatabase() ... about multiple DBs ... You're giving your databases unique IDs with the line repo_id = maxon.AssetInterface.MakeUuid(str(url), True). If you need them to be the same, just pick one instead, e.g. repo_id = maxon.Id('net.maxon.sdk.cool.things.repo') ... revealing assets doesn't work... I've created a bug report for that, as it looks like a bug with refreshing in the Asset Browser. As a workaround you can reload databases and reopen the AB before reveling your assets, e.g.: def RepenAssetBrowser(): CID_ASSET_BROWSER = 1054225 # Close the Asset Browser if it's alredy opened if c4d.IsCommandChecked(CID_ASSET_BROWSER): c4d.CallCommand(CID_ASSET_BROWSER) # Open again c4d.CallCommand(CID_ASSET_BROWSER) def main(): # ... # assets = [] # ... # assets.append(asset) # ... maxon.AssetDataBasesInterface.ReloadAssetRepositories(True) RepenAssetBrowser() maxon.AssetManagerInterface.RevealAsset(assets) Cheers, Ilia
  • connect material to reference node

    Cinema 4D SDK 2025 python
    6
    0 Votes
    6 Posts
    1k Views
    ferdinandF
    Hey, Node attributes are things that are directly present on a GraphNode. You could also call them fields, because a GraphNode like many things in our API has qualities of a DataDictionay, i.e., you can write values over keys into it, just like for Python's own dict. Such node attributes (for true nodes) are then rendered out quite similarly to port values in the Attribute Manager but they are fundamentally different from ports, as users cannot drive their value with a connection, i.e., the value of a port of another node. And a port also always requires another GraphNode attached to the true node¹ for which they are a port, while the attribute sits directly on the true node. An attribute, e.g., the name of a node, will also never show up in the node representation in the graph. In the screen below I for example right clicked on the RS Reference node and invoked Add Input > All; but things like Name, Color, Show Preview etc. are alle not listed. [image: 1744368637847-174097cf-d777-49d2-b0ea-0057c8474a5e-image.png] That is because they are all attributes and not ports. There is unfortunately no absolute rule like 'everything in Basic is attributes and everything else is ports'. While it holds (for now) true that everything in Basic is an attribute, especially Redshift also puts attributes into other tabs. They usually only appear in more complex scenarios when dealing with port bundles and variadic ports, but they exist. And just for clarity, attributes do not only exist on nodes that are what our API calls 'true nodes'¹, but also on other GraphNode types, e.g., a GraphNode representing a port. It is just that they are usually not rendered out to the GUI there and more of an internal nature (nodes have a lot of internal attributes). Cheers, Ferdinand ¹ GraphNode instances that represent what the end user would consider a 'node', e.g., the RS Reference node, and with that excluding GraphNode instances that for example represent an input port.
  • Xpresso python tag issue

    Cinema 4D SDK 2025 python
    5
    0 Votes
    5 Posts
    984 Views
    A
    Ah, super! thank you.
  • 0 Votes
    3 Posts
    776 Views
    D
    @ferdinand said in SAVEDOCUMENTFLAGS_AUTOSAVE still added to the recent file list?: But please provide instructions on how to use your code when required in the future. oh shit, i'm so sorry. you're right. completly missed this one. ... and of cause thanks for the explaination / clarification.
  • 0 Votes
    3 Posts
    777 Views
    chuanzhenC
    @i_mazlov Thanks
  • How to simulate a drag behavior with UA?

    Cinema 4D SDK windows python 2025
    5
    0 Votes
    5 Posts
    1k Views
    DunhouD
    @ferdinand said in How to simulate a drag behavior with UA?: All it it does when the users starts to drag, according to Maxime, is inject the asset object into the document, make sure there is no object selected and then enable the place tool (and probably set the mouse cursor) This is my solution in my mind, definitely take a try after work.
  • BaseDraw.DrawTexture Issue

    Cinema 4D SDK 2025 python
    3
    0 Votes
    3 Posts
    873 Views
    FlavioDinizF
    Fantastic @i_mazlov ! Both issues are solved, thank you so much ! Cheers, Flavio Diniz
  • 2025.2.0 SDK Release

    News & Information news cinema 4d c++ python sdk information
    2
    2 Votes
    2 Posts
    7k Views
    DunhouD
    Love the mxutils and GeDialog Changes, I use these features almost every time, thank you for having a more refined official version. Thank you to the SDK team for their work achievements Cheers~ DunHou
  • 0 Votes
    6 Posts
    1k Views
    indexofrefractionI
    hi, i came up with this now... def hasGenFlag(op): description = op.GetDescription(c4d.DESCFLAGS_DESC_NONE) bc = description.GetParameter(c4d.ID_BASEOBJECT_GENERATOR_FLAG) return not bc[c4d.DESC_HIDE] if bc else False also its clear that "Generator" is a wide definition which doesn't match the Green Checkmark / Enabled GUI Element. in this sense the topic title is wrong bc i was just searching for a way to distinct objects having this GUI element from others which don't. (i can't change the topic title, i guess)
  • 0 Votes
    7 Posts
    1k Views
    chuanzhenC
    @i_mazlov Thanks,it works!
  • Tree view boolean column bug

    Cinema 4D SDK python windows
    2
    0 Votes
    2 Posts
    508 Views
    M
    Hi @Gregor-M please make sure that your script is executable before sending it to us. Since in it's current state it does raise Traceback (most recent call last): File "scriptmanager", line 53, in GetDown File "scriptmanager", line 33, in GetChildren AttributeError: 'Entity' object has no attribute 'children'. Did you mean: 'GetChildren'? I added self.children = [] within the __init__ of Entity and it fixed the issue but this indicate that you are working on a different version than us. But even with it I'm not able to reproduce any issue and everything is working as expected. With that's said your else statement within the SetCheck looks very suspicious and I won't be surprised that the behavior you are experiencing is coming from this else statement. Finally note that you can call the function TreeViewCustomGui.SetRoot to define a root. Then the root argument that is available in all functions will be pointing to it. Cheers, Maxime.
  • 0 Votes
    3 Posts
    637 Views
    ymoonY
    @ferdinand Thank you for your kind explanation. I will explore other options.
  • Change Icon Color parameter

    Cinema 4D SDK 2024 python
    6
    0 Votes
    6 Posts
    1k Views
    chuanzhenC
    @i_mazlov Thanks for your help, it works well.
  • 0 Votes
    6 Posts
    1k Views
    i_mazlovI
    Hi Sebastian, correct, it hasn't been included into 2025.2.0. The next minor release will likely have it fixed though. Cheers, Ilia
  • 0 Votes
    6 Posts
    1k Views
    ferdinandF
    Hey, there is no NOT in the query syntax, if that is what you are asking for, although that could be a cool idea. What you would have to do, is apply two partial descriptions in one ApplyDescription call, one that first selects all nodes with an enabled preview and disables it, and then one which selects the end node and disables its preview. Or just carry out two successive ApplyDescription calls. Cheers, Ferdinand PS: You can of course do whatever you want with your module attributes, and things like __author__, __license__, __email__, etc are not formally standardized, but the quasi standard module attribute is called __author__, there is no __authors__. When you have multiple authors, you usually put them semicolon separated into the __author__ field. When you use __authors__, tools which support that quasi standard won't find your attribute and the whole purpose of these module attributes is being machine readable, as you could otherwise also just write things into the doc string of the module. See: The original Python Enhancement Proposal by Guido van Rossum (the now famous pep8) which introduced the concept of module dunder attributes and one of the many guides of how people interpret this, what this has evolved into.
  • 0 Votes
    3 Posts
    753 Views
    S
    @ferdinand Your response was helpful. Thank you:)
  • 0 Votes
    5 Posts
    1k Views
    M
    Hi sorry I fixed my code. Cheers, Maxime.
  • Python Tag: Detecting Edge Selection Changes

    Cinema 4D SDK windows 2025 python
    3
    0 Votes
    3 Posts
    657 Views
    ymoonY
    Thanks, I'll test Dirty on selection.
  • 0 Votes
    4 Posts
    885 Views
    ferdinandF
    Hey, Yes, parallel/orthographic projection is effectively just the dot product. The modelling examples cover point plane projections with a function very similar to yours. There is also c4d.utils.PointLineSegmentDistance but I never use it, as it strikes me as more cumbersome to use than just doing the math yourself. Cheers, Ferdinand