Index: trunk/packages/vizservers/vtkvis/RpVtkRenderer.h
===================================================================
--- trunk/packages/vizservers/vtkvis/RpVtkRenderer.h	(revision 3109)
+++ trunk/packages/vizservers/vtkvis/RpVtkRenderer.h	(revision 3110)
@@ -431,4 +431,8 @@
 
     // Molecules
+
+    void setMoleculeAtomRadiusScale(const DataSetId& id, double scale);
+
+    void setMoleculeBondRadiusScale(const DataSetId& id, double scale);
 
     void setMoleculeAtomScaling(const DataSetId& id, Molecule::AtomScaling scaling);
Index: trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp
===================================================================
--- trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp	(revision 3109)
+++ trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp	(revision 3110)
@@ -552,13 +552,13 @@
 
 static Rappture::CmdSpec cameraOps[] = {
-    {"get", 1, CameraGetOp, 2, 2, ""},
-    {"mode", 1, CameraModeOp, 3, 3, "mode"},
+    {"get",    1, CameraGetOp, 2, 2, ""},
+    {"mode",   1, CameraModeOp, 3, 3, "mode"},
     {"orient", 3, CameraOrientOp, 6, 6, "qw qx qy qz"},
-    {"ortho", 1, CameraOrthoOp, 7, 7, "coordMode x y width height"},
-    {"pan", 1, CameraPanOp, 4, 4, "panX panY"},
-    {"reset", 2, CameraResetOp, 2, 3, "?all?"},
+    {"ortho",  1, CameraOrthoOp, 7, 7, "coordMode x y width height"},
+    {"pan",    1, CameraPanOp, 4, 4, "panX panY"},
+    {"reset",  2, CameraResetOp, 2, 3, "?all?"},
     {"rotate", 2, CameraRotateOp, 5, 5, "angle angle angle"},
-    {"set", 1, CameraSetOp, 11, 11, "posX posY posZ focalPtX focalPtY focalPtZ viewUpX viewUpY viewUpZ"},
-    {"zoom", 1, CameraZoomOp, 3, 3, "zoomAmount"}
+    {"set",    1, CameraSetOp, 11, 11, "posX posY posZ focalPtX focalPtY focalPtZ viewUpX viewUpY viewUpZ"},
+    {"zoom",   1, CameraZoomOp, 3, 3, "zoomAmount"}
 };
 static int nCameraOps = NumCmdSpecs(cameraOps);
@@ -3488,4 +3488,21 @@
 
 static int
+MoleculeAtomScaleFactorOp(ClientData clientData, Tcl_Interp *interp, int objc, 
+                          Tcl_Obj *const *objv)
+{
+    double scale;
+    if (Tcl_GetDoubleFromObj(interp, objv[2], &scale) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (objc == 4) {
+        const char *name = Tcl_GetString(objv[3]);
+        g_renderer->setMoleculeAtomRadiusScale(name, scale);
+    } else {
+        g_renderer->setMoleculeAtomRadiusScale("all", scale);
+    }
+    return TCL_OK;
+}
+
+static int
 MoleculeAtomScalingOp(ClientData clientData, Tcl_Interp *interp, int objc, 
                       Tcl_Obj *const *objv)
@@ -3516,4 +3533,21 @@
 
 static int
+MoleculeBondScaleFactorOp(ClientData clientData, Tcl_Interp *interp, int objc, 
+                          Tcl_Obj *const *objv)
+{
+    double scale;
+    if (Tcl_GetDoubleFromObj(interp, objv[2], &scale) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (objc == 4) {
+        const char *name = Tcl_GetString(objv[3]);
+        g_renderer->setMoleculeBondRadiusScale(name, scale);
+    } else {
+        g_renderer->setMoleculeBondRadiusScale("all", scale);
+    }
+    return TCL_OK;
+}
+
+static int
 MoleculeBondVisibilityOp(ClientData clientData, Tcl_Interp *interp, int objc, 
                          Tcl_Obj *const *objv)
@@ -3740,6 +3774,8 @@
 static Rappture::CmdSpec moleculeOps[] = {
     {"add",        2, MoleculeAddOp, 2, 3, "?dataSetName?"},
+    {"ascale",     2, MoleculeAtomScaleFactorOp, 3, 4, "value ?dataSetName?"},
     {"atoms",      2, MoleculeAtomVisibilityOp, 3, 4, "bool ?dataSetName?"},
     {"bonds",      2, MoleculeBondVisibilityOp, 3, 4, "bool ?dataSetName?"},
+    {"bscale",     2, MoleculeBondScaleFactorOp, 3, 4, "value ?dataSetName?"},
     {"colormap",   1, MoleculeColorMapOp, 3, 4, "colorMapName ?dataSetName?"},
     {"delete",     1, MoleculeDeleteOp, 2, 3, "?dataSetName?"},
Index: trunk/packages/vizservers/vtkvis/RpVtkRendererGraphicsObjs.cpp
===================================================================
--- trunk/packages/vizservers/vtkvis/RpVtkRendererGraphicsObjs.cpp	(revision 3109)
+++ trunk/packages/vizservers/vtkvis/RpVtkRendererGraphicsObjs.cpp	(revision 3110)
@@ -1083,7 +1083,7 @@
 
 /**
- * \brief Set radius standard for scaling atoms
- */
-void Renderer::setMoleculeAtomScaling(const DataSetId& id, Molecule::AtomScaling scaling)
+ * \brief Set radius scale factor for atoms
+ */
+void Renderer::setMoleculeAtomRadiusScale(const DataSetId& id, double scale)
 {
     MoleculeHashmap::iterator itr;
@@ -1103,4 +1103,31 @@
 
     do {
+        itr->second->setAtomRadiusScale(scale);
+    } while (doAll && ++itr != _molecules.end());
+
+    _needsRedraw = true;
+}
+
+/**
+ * \brief Set radius standard for scaling atoms
+ */
+void Renderer::setMoleculeAtomScaling(const DataSetId& id, Molecule::AtomScaling scaling)
+{
+    MoleculeHashmap::iterator itr;
+
+    bool doAll = false;
+
+    if (id.compare("all") == 0) {
+        itr = _molecules.begin();
+        doAll = true;
+    } else {
+        itr = _molecules.find(id);
+    }
+    if (itr == _molecules.end()) {
+        ERROR("Molecule not found: %s", id.c_str());
+        return;
+    }
+
+    do {
         itr->second->setAtomScaling(scaling);
     } while (doAll && ++itr != _molecules.end());
@@ -1131,4 +1158,31 @@
     do {
         itr->second->setAtomVisibility(state);
+    } while (doAll && ++itr != _molecules.end());
+
+    _needsRedraw = true;
+}
+
+/**
+ * \brief Set radius scale factor for atoms
+ */
+void Renderer::setMoleculeBondRadiusScale(const DataSetId& id, double scale)
+{
+    MoleculeHashmap::iterator itr;
+
+    bool doAll = false;
+
+    if (id.compare("all") == 0) {
+        itr = _molecules.begin();
+        doAll = true;
+    } else {
+        itr = _molecules.find(id);
+    }
+    if (itr == _molecules.end()) {
+        ERROR("Molecule not found: %s", id.c_str());
+        return;
+    }
+
+    do {
+        itr->second->setBondRadiusScale(scale);
     } while (doAll && ++itr != _molecules.end());
 
Index: trunk/packages/vizservers/vtkvis/protocol.txt
===================================================================
--- trunk/packages/vizservers/vtkvis/protocol.txt	(revision 3109)
+++ trunk/packages/vizservers/vtkvis/protocol.txt	(revision 3110)
@@ -274,6 +274,10 @@
 molecule atoms <bool> <?datasetName?>
          Toggle rendering of atoms
+molecule ascale <val> <?datasetName?>
+         Set atom scale factor
 molecule bonds <bool> <?datasetName?>
          Toggle rendering of bonds
+molecule bscale <val> <?datasetName?>
+         Set bond scale factor
 molecule colormap <colormapName> <?datasetName?>
 molecule delete <?datasetName?>
