Description of OpenAlea-Interface in GroIMP ------------------------------------------- - GroIMP provides an HTTP-server on a arbitrary port (standard: 58070) - data is transmitted via HTTP-POST - variables for POST are: - "graph": the scene graph to operate on - "xlcode": the xl program - "command": the command(s) of the xl program to execute - response of the HTTP-request depends on the status code: - status code 200 is transmitted when GroIMP run successfully -> the response string is the new scene graph - status code 400 is transmitted in an error case -> the response string is an error message - the Webserver requires you to use the content-type application/x-www-form-urlencoded to transfer the data to the server. But curl uses multipart/form-data if you use the -F option. You have to use --data or --data-urlencode instead. curl -X POST http://localhost:58070 --data "command=init;2run" --data-urlencode graph@sample.xeg --data-urlencode xlcode@sample.xl With that command line curl produces the transformed graph as output. graph ----- - based on a new scene graph language called xeg (xml exchange graph) - a xsd specification is avaiable - basic configuration: type definitions for unknown node types (not in the standard) root node nodes edges - type definition: - root node: - node: - edge: - complete example: xlcode ------ - a standard xl program as used in GroIMP - to use own defined node types, use an equivalent definition as in xeg string - example: module XY extends Node { float z; } protected void init() [ Axiom ==> XY; ] public void run() [ a:XY ==> a Cylinder; ] command ------- - sequence of one ore more methods of the xl program - methods must be public (except the "init"-method, which can be protected) and without parameters - methods are separeted with semicolons - to execute one method repeatedly, declare a number in front of the method name - example: "init;3run" => execute one time the init-method, three times the run method