Solved Python - Cinema 4D R20.057 - Export to Alembic without Dialog

Hi all,

i know the example on github. I tried to export to alembic. But the alembic-file is not written and I don't get any error. If I set the parameter to "c4d.FORMAT_ABCEXPORT" nothing changes. Only when I use "c4d.FORMAT_C4DEXPORT" it writes a file. But thats not what I want. When I use the script on Github and change the "filePath" to an actual path it works only with c4d Export. But not with Alembic.

I wonder what I do wrong. Heres the code:

"""
Export Settings Example
This example shows how to change an exporter settings.
This works also for importers/scene loaders.
"""

import c4d
from c4d import documents, plugins, storage

def main():
    # Get Alembic export plugin, 1028082 is its ID
    plug = plugins.FindPlugin(1028082, c4d.PLUGINTYPE_SCENESAVER)
    if plug is None:
        return
    
    # Get a path to save the exported file
    filePath = "D:\\a.abc"
    if filePath is None:
        return
    
    op = {}
    # Send MSG_RETRIEVEPRIVATEDATA to Alembic export plugin
    if plug.Message(c4d.MSG_RETRIEVEPRIVATEDATA, op):
        if "imexporter" not in op:
            return
        
        # BaseList2D object stored in "imexporter" key hold the settings
        abcExport = op["imexporter"]
        if abcExport is None:
            return
        
        # Change Alembic export settings
        abcExport[c4d.ABCEXPORT_SELECTION_ONLY] = True
        abcExport[c4d.ABCEXPORT_PARTICLES] = True
        abcExport[c4d.ABCEXPORT_PARTICLE_GEOMETRY] = True
        
        # Finally export the document
        if documents.SaveDocument(doc, filePath, c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST, c4d.FORMAT_ABCEXPORT):
            print "Document successfully exported to:"
            print filePath
        else:
            print "Export failed!"


if __name__=='__main__':
    main()

Btw: I don't get any error. And if I change the parameter "c4d.FORMAT_ABCEXPORT" back to "1028082" doesnt change anything. And I dont want to get a dialog either.

It's the same with the simple code below:

import c4d
from c4d import documents, plugins, storage

def main():

    # Get a path to save the exported file
    filePath = "D:\\hallo.abc"

    c4d.documents.SaveDocument(doc, filePath, c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST, c4d.FORMAT_ABCEXPORT)
    c4d.EventAdd()
        

if __name__=='__main__':
    main()

Thx in advance!

Hi @PdZ, are you sure you get the permission(Cinema 4D) to write directly into a drive folder? Could you try on your desktop or any other one that you are sure is writable?

Cheers,
Maxime.

Dear m_adam,

thx for your response. Iam pretty sure C4D has permission to write but weirdly enough it only happens with exports other than .c4d.
Fortunately I was able to use R20 new feature to write alembics out by using the build in function "save as alembic and delete".

Hi @PdZ I'm not able to reproduce it, in a folder I do have the right to write, both success, in a folder I do not have the right to write both fails.

Could you try for a folder where you are sure your user is allowed to write such as a temp folder?

Cheers,
Maxime.

@PdZ does it's solved?

Yes it is! Thank you very much!