Saving the ACTIVE File

  • On 28/03/2013 at 02:12, xxxxxxxx wrote:

    Hey guys,

    I'm trying to save the ACTIVE scene, not a copy of it with the following code:

                doc = c4d.documents.GetActiveDocument()  
              if doc.GetDocumentPath() == "":  
                  filePath = doc.GetDocumentPath()  
                  if c4d.documents.SaveDocument(doc, doc.GetDocumentName(), saveflags = c4d.SAVEDOCUMENTFLAGS_SAVEAS, format = c4d.FORMAT_C4DEXPORT) == False:  
                      print "File not saved"  
                      Message = c4d.BaseContainer()  
                      Message.SetString(0, "blabla")  
                      result = gui.ShowPopupDialog(cd = None, bc = Message, x=700, y=700)  
                      print result  
                      return True  

    It saves the document allright, but it saves a copy of it, not the actual file i'm working on. For example, If i save it in the "Save As..." Popup as PluginTest.c4d, it's being saved as that, but the file i'm working on is still called untitled 1.c4d, and if I execute the plugin again,
    doc.GetDocumentPath() == ""
    still returns true, hence it was not really saved.

    Does anyone know what to do about it?

    Thanks in advance


  • On 28/03/2013 at 07:23, xxxxxxxx wrote:

    I'm not a big fan of using CallCommands because the built-in undos are such a hassle to deal with.
    But in this case. I think it's something you can probably get away with using.

      c4d.CallCommand(12098)      #Saves the active document  


  • On 28/03/2013 at 07:48, xxxxxxxx wrote:

    BaseDocument.GetName() will always be an empty string for unsaved documents. most os
    do not like empty strings as file names.

  • On 29/03/2013 at 03:25, xxxxxxxx wrote:

    Thanks guys!

    Will try that ;)

Log in to reply