Hi!
I am a total beginner in python ... so this might be easy
I am using C4D Release 20 and looking for a way to import files and then work with the files as if they where actually in my C4D Editor. With that I mean I want to work with those CallCommands etc. I know that´s not the pro way but... I am not a pro yet Down below you se the code so far.
The issue now is that this line:
c4d.documents.LoadDocument(sk_doc, loadflags = 0)
...does not really load the file into a state where I can work with it. At this point my editor still shows my empty "BaseDocument" and if I try to "GetActiveDocument" I get a FALSE boolean return. So for python I still have loaded nothing it seams.
I allready tried all sorts of other "loading" methods as you can see here:
https://miro.com/app/board/o9J_kjIM1Ko=/
So somehow I think I need to get the loaded file out of some obscure hidden "position/state" into the state of the "ActiveDocument". So I added those lines here:
c4d.documents.InsertBaseDocument(sk_doc)
c4d.documents.SetActiveDocument(sk_doc)
But with them I get a "TypeError: argument 1 must be c4d.documents.BaseDocument, not str"
And I have no idea how to change the file URL into a "c4d.documents.BaseDocument"-Type...
Any idea anybody?
Thanks!
Sascha
import c4d
import os
from c4d import gui
from c4d import documents
# Main function
def main():
def tool():
return c4d.plugins.FindPlugin(doc.GetAction(), c4d.PLUGINTYPE_TOOL)
def object():
return doc.GetActiveObject()
def tag():
return doc.GetActiveTag()
def renderdata():
return doc.GetActiveRenderData()
def prefs(id):
return c4d.plugins.FindPlugin(id, c4d.PLUGINTYPE_PREFS)
# Set Variables for pathes with dialog
c4d.gui.MessageDialog("Please select the folder with the BVH files.", type = 0)
sk_sourcefolder = c4d.storage.LoadDialog(flags = 2)
c4d.gui.MessageDialog("Please select the destination folder for the converted .c4d files.", type = 0)
sk_exportfolder = c4d.storage.LoadDialog(flags = 2)
# Listing and filtering all .bvh files in directory
sk_filteredfiles = filter(lambda x: x.endswith(".bvh"), os.listdir(sk_sourcefolder))
# Loop through selected directory
for file in sk_filteredfiles:
# Load and activate current project from list
sk_doc = file
print sk_doc
c4d.documents.LoadDocument(sk_doc, loadflags = 0)
c4d.documents.InsertBaseDocument(sk_doc)
c4d.documents.SetActiveDocument(sk_doc)
# Set Render Settings
c4d.CallCommand(600000098) # Projectname_As_Rendername
c4d.CallCommand(12161) # Edit Render Settings...
renderdata()[c4d.RDATA_RENDERENGINE] = 300001061 # Use Hardware OpenGL
renderdata()[c4d.RDATA_XRES] = 400 # X Render Resolution
renderdata()[c4d.RDATA_YRES] = 400 # Y Render Resolution
renderdata()[c4d.RDATA_FRAMERATE] = doc[c4d.DOCUMENT_FPS]
renderdata()[c4d.RDATA_FRAMESEQUENCE] = 3 # Preview Range als Render Range
... much more but irrelevant code for the current issue...