HiddenLineDrawing.compute() error: No Viewport defined

Hi,

I’m just getting my head around JS and Rhino.Compute in general. I am trying to create a hidden line drawing using Rhino.Compute.

The code for the API calls is here (it uses compute.rhino3d.js as a template):

 var HiddenLineDrawing = {
	Parameters: {
	    new : function(multiple=false) {
	        let url="/rhino/geometry/hiddenlinedrawingparameters/new";
            if(multiple) url = url + "?multiple=true"	        
	        let args = RhinoCompute.zipArgs(multiple);
	        var promise = RhinoCompute.computeFetch(url, args);
	        return promise;
	    },

	    addGeometry : function(self, geometry, tag=null, multiple=false) {
	        let url="/rhino/geometry/hiddenlinedrawingparameters/addgeometry-hiddenlinedrawingparameters_geometrybase_object";
            if(multiple) url = url + "?multiple=true"	        
	        let args = RhinoCompute.zipArgs(multiple, self, geometry, tag);
	        var promise = RhinoCompute.computeFetch(url, args);
	        return promise;
	    },

	    setViewport : function(self, viewport, multiple=false) {
	        let url="/rhino/geometry/hiddenlinedrawingparameters/setviewport-hiddenlinedrawingparameters_viewportinfo";
            if(multiple) url = url + "?multiple=true"	        
	        let args = RhinoCompute.zipArgs(multiple, self, viewport);
	        var promise = RhinoCompute.computeFetch(url, args);
	        return promise;
	    }
	},

 compute : function(hldp, multipleThreads=false, multiple=false) {
    let url="/rhino/geometry/hiddenlinedrawing/compute";
    if(multiple) url = url + "?multiple=true"	        
    let args = RhinoCompute.zipArgs(multiple, hldp, multipleThreads);
    var promise = RhinoCompute.computeFetch(url, args);
    return promise;
 },

 getSegments : function(hld, multiple=false) {
    let url="/rhino/geometry/hiddenlinedrawing/getsegments";
    if(multiple) url = url + "?multiple=true"	        
    let args = RhinoCompute.zipArgs(multiple, hld);
    var promise = RhinoCompute.computeFetch(url, args);
    return promise;
}
}

The code for using these is here:

	    // Initialize RhinoCompute    	    
	    RhinoCompute.authToken = RhinoCompute.getAuthToken();  
	    // Create HiddenLineDrawingParameters      	
	    var hldp = HiddenLineDrawing.Parameters.new()

	    var res;

        // Create Viewport
	    var vp = new _rhino3dm.ViewportInfo();
	    res = vp.setCameraDirection([1, 0, 0]);
	    res = vp.setCameraLocation([-10000, 0, 0]);

	    res = HiddenLineDrawing.Parameters.setViewport(hldp, vp);

	    // Add some geometry
        HiddenLineDrawing.Parameters.addGeometry(hldp, some_mesh, null);

	    // Compute HiddenLineDrawing
        let hld = HiddenLineDrawing.compute(hldp);

This generates a 500 server error with the message:

details: "Nancy.RequestExecutionException: Oh noes! ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: No Viewport defined in parameters

As far as I understand, I’m successfully adding a ViewportInfo object to the HiddenLineDrawingParameters and then passing that to the HiddenLineDrawing computing…

Any tips / comments about what is going wrong? Much thanks!

Tom