Advertisement
Guest User

Untitled

a guest
Feb 6th, 2013
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # This script invokes blender to import and save external model formats as
  2. # .blend files to be processed further.
  3. #
  4. # Example usage for this importer:
  5. #  blender --background --factory-startup --python $HOME/import_3ds.py -- \
  6. #          --i="/tmp/hello.3ds" \
  7. #          --o="/tmp/hello.blend" \
  8. #
  9. # See blender --help for details.
  10.  
  11. import bpy
  12.  
  13. # Imports a file using importer
  14. def import_file(file_path):
  15.     # Import the model
  16.     bpy.ops.wm.collada_import(filepath = file_path)
  17.  
  18. # Clear existing objects.
  19. def clear_scene():
  20.     scene = bpy.context.scene
  21.     scene.camera = None
  22.     for obj in scene.objects:
  23.         scene.objects.unlink(obj)
  24.  
  25. # Save current scene as .blend file
  26. def save_file(save_path):
  27.     # Check if output file exists already
  28.     try:
  29.         f = open(save_path, 'w')
  30.         f.close()
  31.         ok = True
  32.     except:
  33.         print("Cannot save to path %r" % save_path)
  34.  
  35.         import traceback
  36.         traceback.print_exc()
  37.  
  38.     # Save .blend file
  39.     if ok:
  40.         bpy.ops.wm.save_as_mainfile(filepath=save_path)
  41.  
  42. # DIFFERENT STUFF
  43. def open_save_file(open_path):
  44.      bpy.ops.wm.open_mainfile(filepath=save_path)
  45.      bpy.ops.wm.save_as_mainfile(filepath=save_path)
  46.  
  47. # END DIFFERENT STUFF
  48.  
  49. def main():
  50.     import sys       # to get command line args
  51.     import argparse  # to parse options for us and print a nice help message
  52.  
  53.     # get the args passed to blender after "--", all of which are ignored by
  54.     # blender so scripts may receive their own arguments
  55.     argv = sys.argv
  56.  
  57.     if "--" not in argv:
  58.         argv = []  # as if no args are passed
  59.     else:
  60.         argv = argv[argv.index("--") + 1:]  # get all args after "--"
  61.  
  62.     # When --help or no args are given, print this help
  63.     usage_text = \
  64.     "Run blender in background mode with this script:"
  65.     "  blender --background --factory-startup --python " + __file__ + " -- [options]"
  66.  
  67.     parser = argparse.ArgumentParser(description=usage_text)
  68.  
  69.     # Possible types are: string, int, long, choice, float and complex.
  70.     parser.add_argument("-i", "--input", dest="file_path", metavar='FILE',
  71.             help="Import the specified file")
  72.     parser.add_argument("-o", "--output", dest="save_path", metavar='FILE',
  73.             help="Save the generated file to the specified path")
  74.  
  75.     args = parser.parse_args(argv)  # In this example we wont use the args
  76.  
  77.     if not argv:
  78.         parser.print_help()
  79.         return
  80.  
  81.     # Run the conversion
  82.     clear_scene()
  83.     import_file(args.file_path)
  84.     save_file(args.save_path)
  85.     open_save_file(args.save_path)
  86.  
  87.     print("batch job finished, exiting")
  88.  
  89.  
  90. if __name__ == "__main__":
  91.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement