Call RhinoCommand in Python Script

back
A solution to call rhino command inside grasshopper.
Chen, 2016-01-12

It is sometimes very important to call rhino commands in python script to realize batch rendering/saving/viewcapturing etc. Here is a code demonstrating how to realize it. This code has several functions like render&save file/ view capture to file etc.

For instance, if you want to batch save file:

import rhinoscriptsyntax as rs
for i in range(10):
FileName = "C:\Users\XXX\Desktop\File%s.3dm" % i
rs.Command("_-SaveAs " + chr(34) + FileName + chr(34), 0)

Here is a code demonstrating several functions like render&save file/ view capture to file etc.(written by Lauren Vasey for batch rendering or animating)

import rhinoscriptsyntax as rs
import System
import scriptcontext as sc
import os

def RenderSingleFileViewName(filepath, filename, viewNames):

    executeStatement = "_-Open " + chr(34) + filepath + chr(34)

    # open file
    rs.Command( executeStatement)

    fileFolderName = filepath[:-4]

    for view in viewNames:

        renderName = fileFolderName  + "_" + view + ".png"


        #restore view and render
        rs.CurrentView(view)
        rs.Command ("_-Render")
        rs.Command ("_-SaveRenderWindowAs " + chr(34) + renderName + chr(34), 0)
        rs.Command ("_-CloseRenderWindow", 0)
    return


def MainviewCaptureToFile(Folder = None, FileLabel = None, saveImage= False, extImg = ".png", count = None, wi = None, h = None):



    allfiles = getAll3dmFilesinFolder(allfiles, extImg)


    if not count == None:
        nextfile = count
    else:
        nextfile = getExtensionNumber(allfiles)

    newfileStr = str(nextfile)
    lenNumber = len(newfileStr)

    print"next file",  nextfile
    newfileStr = str(nextfile)

    numVals = 4
    numZeros = numVals - lenNumber
    fileName = Folder + "\\" + FileLabel


    for l in range(numZeros):
        fileName = fileName + "0"

    fileNameImg = fileName + str(nextfile) + extImg
    print fileNameImg

    rs.Command ( "_-ViewCaptureToFile " + chr(34) +  fileNameImg  + chr(34) + " _-Enter", 0)
    return