When adding an object, you will specify its:
DEF myCube Cube {}
[whatever VRML stuff you want to do here...]
Translation { translation 1 0 0 }
DEF myOtherCube USE myCube
In Viz, at run-time, you can take advantage of the object you've added before, therefore you would do:
add('myCube','world','shape:cube',(0,0,0),(0,0,0),1)
And later on:
add('myOtherCube','world','use:myCube',(1,0,0),(0,0,0),1)
Note that the argument of use:, namely <VRML named node>, can be any VRML node that was DEF'ed when loaded into Viz, and not just any named Viz object. For instance:
add('myWeirdShape','world','vrml: Separator { DEF myCube Cube{} Sphere {} } ',(0,0,0),(0,0,0),1)
... will add a Cube and a Sphere. The node Cube has been named myCube.
add('myOtherCube','world','use:myCube',(0,0,0),(0,0,0),1)
... will reuse that Cube.