Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hello guys,
I wrote small script and got one problem. I can't export selected objects to separate files, after export operation i got obj files with duplicate meshes inside. Which the command do i must use for it?
import c4d import os from os.path import join, normpath dirpath = "c:/usr/temp/mayablender/" def main(): doc = c4d.documents.GetActiveDocument() selected = doc.GetActiveObjects(0) for ob in selected: ob.DelBit(c4d.BIT_ACTIVE) doc.SetActiveObject(ob) full_dirpath = normpath(join(dirpath + ob.GetName() + ".obj")) # export to obj c4d.documents.SaveDocument(doc,full_dirpath,c4d.SAVEDOCUMENTFLAGS_0,1030178) if __name__=='__main__': main()
Whos knows any solution for it?
Hi @klints2, first of all, welcome in the plugincafe community.
I would like to point you some rules on this forum regarding how to post questions in order to help us to help you!
Then additionally it's not necessary to bump a topic to put more pressure on us, we monitor this forum and try to answers as soon as we can due to our workload. Don't worry it's your first post you couldn't know, so I've setup your topic correctly.
Regarding your issue. Cinema 4D Obj exporter and all Cinema 4D exporters, does not offer a way to export only a list of objects. So you have to copy all the stuff needed into a temporary document and then export this temporary document the function c4d.documents.IsolateObjects does exactly that an returns the temporary BaseDocument.
Then in order to properly setup, the obj exported I invite you to read the export_OBJ in our GitHub repository.
If you have any questions, please let me know. Cheers, Maxime.
@klints2 Try to use IsolateObjects
A helper routine to copy the objects of document to a new document (returned). All materials associated are also copied over and the links are corrected.
@mikeudin Thanks, but don't undestand how works this command, i was tried to get list from isolated = c4d.documents.IsolateObjects(doc, selected) but it's give me nothing and i can't use for for it. How do i can exported only selected list to obj, without dialog windows?
isolated = c4d.documents.IsolateObjects(doc, selected)
for
Sorry this is my first script for c4d, i'm maya user and little confused. Thanks
Well, I think found it. Don't perfect but its works
import c4d import os from os.path import join, normpath from c4d import documents def export(): dirpath = "c:/usr/temp/" # temp directory global tdoc sobj = doc.GetActiveObjects(0) # isolate objects tdoc = c4d.documents.IsolateObjects(doc, sobj) # get path with object name full_dirpath = normpath(join(dirpath + (doc.GetActiveObjects(0)[0]).GetName() + ".obj")) # export to obj documents.SaveDocument(tdoc,full_dirpath,c4d.SAVEDOCUMENTFLAGS_0,1030178) if __name__=='__main__': export() documents.KillDocument(tdoc)
Hi @klints2, may I ask you why this is not perfect? Moreover here just a few corrections in your code.
dirpath = "c:/usr/temp/" # temp directory full_dirpath = normpath(join(dirpath, (doc.GetActiveObjects(0)[0]).GetName() + ".obj"))
sobj = doc.GetActiveObjects(0) if not sobj: return
Cheers, Maxime.
Hi @m_adam, thanks for you correction and advice, it's really usefull for me. I'm learn python just couple month and not sure in my code yet.
full_dirpath = normpath(join(dirpath, (doc.GetActiveObjects(0)[0]).GetName() + ".obj"))
Thanks one more time, always good to have help and support!