Command line parameter problem



  • On 19/08/2015 at 06:18, xxxxxxxx wrote:

    Hi,

    We are trying to develop a (Tag) plugin to switch camera's from the command line. We thought we had it working since it works when we open a c4d file in the GUI and it switches to the right camera, but when we render on the render farm (command line / nogui) it doesn't work. It gives us:

    File "'CommandLine.pyp'", line 31, in Execute
    AttributeError: 'module' object has no attribute 'argv'

    In the log

    This is the code:

    import c4d
    import os
    import sys
    import getopt

    print 'Number of arguments:', len(sys.argv), 'arguments.'
              print 'Argument List:', str(sys.argv)
              try:
                  opts, args = getopt.getopt(sys.argv,"c:s:",["camera=","setting="])
              except getopt.GetoptError as err:
                  print "Error: Unknown command line options!"
                  print "We only support -c|--camera= -s|--setting="
                  return False
                 
              camera = ''
              setting = ''
              for opt, arg in opts:
                  if opt in ("-c", "--camera") :
                      camera = arg
                      print "camera = ", camera
                  elif opt in ("-s", "--setting") :
                      setting = arg
                      print "setting = ", setting
              commandRead = 1
         
              adraw = doc.GetActiveBaseDraw()
              roots = doc.GetObjects()
             
              cameraFound = 0
              for obj in roots:
                  if obj.GetName() == camera:
                      adraw.SetSceneCamera(obj)
                      cameraFound = 1
              c4d.EventAdd()
                 
              if cameraFound == 1:
                  camname = adraw.GetSceneCamera(doc).GetName()
                  print "Camera :", camname, "selected"
              else:
                  print "Camera not Found!"

    Is getopt not availble during load? Of are we missing something here? I hope someone can help. We need this for a customer job.



  • On 20/08/2015 at 02:54, xxxxxxxx wrote:

    Hi,

    To get the Cinema 4D command line arguments implement PluginMessage() and filter the C4DPL_COMMANDLINEARGS message. In this message sys.argv holds the command line arguments.
    You can then store them using a global variable to be used afterwards in your Tag's Execute().

    See Command Line Arguments in the Python documentation for a code snippet and more information.



  • On 20/08/2015 at 14:09, xxxxxxxx wrote:

    Thank you very much :) I'm going to try that.


Log in to reply