Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/management/src/G4VisCommandsTouchableSet.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/management/src/G4VisCommandsTouchableSet.cc (Version 11.3.0) and /visualization/management/src/G4VisCommandsTouchableSet.cc (Version 11.0.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27                                                    27 
 28 // /vis/touchable/set commands - John Allison      28 // /vis/touchable/set commands - John Allison  8th October 2012
 29                                                    29 
 30 #include "G4VisCommandsTouchableSet.hh"            30 #include "G4VisCommandsTouchableSet.hh"
 31                                                    31 
 32 #include "G4UImanager.hh"                          32 #include "G4UImanager.hh"
 33 #include "G4UIcommand.hh"                          33 #include "G4UIcommand.hh"
 34 #include "G4UIcmdWithABool.hh"                     34 #include "G4UIcmdWithABool.hh"
 35 #include "G4UIcmdWithADouble.hh"                   35 #include "G4UIcmdWithADouble.hh"
 36 #include "G4UIcmdWithAnInteger.hh"                 36 #include "G4UIcmdWithAnInteger.hh"
 37 #include "G4UIcmdWithAString.hh"                   37 #include "G4UIcmdWithAString.hh"
 38                                                    38 
 39 #include <sstream>                                 39 #include <sstream>
 40                                                    40 
 41 #define G4warn G4cout                          << 
 42                                                << 
 43 ////////////// /vis/touchable/set/colour /////     41 ////////////// /vis/touchable/set/colour ///////////////////////////////////////
 44                                                    42 
 45 G4VisCommandsTouchableSet::G4VisCommandsToucha     43 G4VisCommandsTouchableSet::G4VisCommandsTouchableSet()
 46 {                                                  44 {
 47   G4bool omitable;                                 45   G4bool omitable;
 48   G4UIparameter* parameter;                        46   G4UIparameter* parameter;
 49                                                    47   
 50   fpCommandSetColour = new G4UIcommand             48   fpCommandSetColour = new G4UIcommand
 51   ("/vis/touchable/set/colour", this);             49   ("/vis/touchable/set/colour", this);
 52   fpCommandSetColour->SetGuidance("Set colour      50   fpCommandSetColour->SetGuidance("Set colour of current touchable.");
 53   fpCommandSetColour->SetGuidance                  51   fpCommandSetColour->SetGuidance
 54   ("Use \"/vis/set/touchable\" to set current      52   ("Use \"/vis/set/touchable\" to set current touchable.");
 55   fpCommandSetColour->SetGuidance(ConvertToCol     53   fpCommandSetColour->SetGuidance(ConvertToColourGuidance());
 56   parameter = new G4UIparameter("red", 's', om     54   parameter = new G4UIparameter("red", 's', omitable = true);
 57   parameter->SetDefaultValue("1.");                55   parameter->SetDefaultValue("1.");
 58   fpCommandSetColour->SetParameter(parameter);     56   fpCommandSetColour->SetParameter(parameter);
 59   parameter = new G4UIparameter("green", 'd',      57   parameter = new G4UIparameter("green", 'd', omitable = true);
 60   parameter->SetDefaultValue(1.);                  58   parameter->SetDefaultValue(1.);
 61   fpCommandSetColour->SetParameter(parameter);     59   fpCommandSetColour->SetParameter(parameter);
 62   parameter = new G4UIparameter("blue", 'd', o     60   parameter = new G4UIparameter("blue", 'd', omitable = true);
 63   parameter->SetDefaultValue(1.);                  61   parameter->SetDefaultValue(1.);
 64   fpCommandSetColour->SetParameter(parameter);     62   fpCommandSetColour->SetParameter(parameter);
 65   parameter = new G4UIparameter("opacity", 'd'     63   parameter = new G4UIparameter("opacity", 'd', omitable = true);
 66   parameter->SetDefaultValue(1.);                  64   parameter->SetDefaultValue(1.);
 67   fpCommandSetColour->SetParameter(parameter);     65   fpCommandSetColour->SetParameter(parameter);
 68                                                    66 
 69   fpCommandSetDaughtersInvisible = new G4UIcmd     67   fpCommandSetDaughtersInvisible = new G4UIcmdWithABool
 70   ("/vis/touchable/set/daughtersInvisible", th     68   ("/vis/touchable/set/daughtersInvisible", this);
 71   fpCommandSetDaughtersInvisible->SetGuidance      69   fpCommandSetDaughtersInvisible->SetGuidance
 72   ("Daughters of current touchable invisible:      70   ("Daughters of current touchable invisible: true/false.");
 73   fpCommandSetDaughtersInvisible->SetGuidance      71   fpCommandSetDaughtersInvisible->SetGuidance
 74   ("Use \"/vis/set/touchable\" to set current      72   ("Use \"/vis/set/touchable\" to set current touchable.");
 75   fpCommandSetDaughtersInvisible->SetParameter     73   fpCommandSetDaughtersInvisible->SetParameterName("daughtersInvisible", omitable = true);
 76   fpCommandSetDaughtersInvisible->SetDefaultVa     74   fpCommandSetDaughtersInvisible->SetDefaultValue(true);
 77                                                    75 
 78   fpCommandSetForceAuxEdgeVisible = new G4UIcm     76   fpCommandSetForceAuxEdgeVisible = new G4UIcmdWithABool
 79   ("/vis/touchable/set/forceAuxEdgeVisible", t     77   ("/vis/touchable/set/forceAuxEdgeVisible", this);
 80   fpCommandSetForceAuxEdgeVisible->SetGuidance     78   fpCommandSetForceAuxEdgeVisible->SetGuidance
 81     ("Force auxiliary (soft) edges of current      79     ("Force auxiliary (soft) edges of current touchable to be visible: true/false.");
 82   fpCommandSetForceAuxEdgeVisible->SetGuidance     80   fpCommandSetForceAuxEdgeVisible->SetGuidance
 83   ("Use \"/vis/set/touchable\" to set current      81   ("Use \"/vis/set/touchable\" to set current touchable.");
 84   fpCommandSetForceAuxEdgeVisible->SetParamete     82   fpCommandSetForceAuxEdgeVisible->SetParameterName("forceAuxEdgeVisible", omitable = true);
 85   fpCommandSetForceAuxEdgeVisible->SetDefaultV     83   fpCommandSetForceAuxEdgeVisible->SetDefaultValue(true);
 86                                                    84 
 87   fpCommandSetForceCloud = new G4UIcmdWithABoo     85   fpCommandSetForceCloud = new G4UIcmdWithABool
 88   ("/vis/touchable/set/forceCloud", this);         86   ("/vis/touchable/set/forceCloud", this);
 89   fpCommandSetForceCloud->SetGuidance              87   fpCommandSetForceCloud->SetGuidance
 90   ("Force current touchable always to be drawn     88   ("Force current touchable always to be drawn as a cloud.");
 91   fpCommandSetForceCloud->SetGuidance              89   fpCommandSetForceCloud->SetGuidance
 92   ("Use \"/vis/set/touchable\" to set current      90   ("Use \"/vis/set/touchable\" to set current touchable.");
 93   fpCommandSetForceCloud->SetParameterName("fo     91   fpCommandSetForceCloud->SetParameterName("force", omitable = true);
 94   fpCommandSetForceCloud->SetDefaultValue(true     92   fpCommandSetForceCloud->SetDefaultValue(true);
 95                                                    93 
 96   fpCommandSetForceSolid = new G4UIcmdWithABoo     94   fpCommandSetForceSolid = new G4UIcmdWithABool
 97   ("/vis/touchable/set/forceSolid", this);         95   ("/vis/touchable/set/forceSolid", this);
 98   fpCommandSetForceSolid->SetGuidance              96   fpCommandSetForceSolid->SetGuidance
 99   ("Force current touchable always to be drawn     97   ("Force current touchable always to be drawn solid (surface drawing).");
100   fpCommandSetForceSolid->SetGuidance              98   fpCommandSetForceSolid->SetGuidance
101   ("Use \"/vis/set/touchable\" to set current      99   ("Use \"/vis/set/touchable\" to set current touchable.");
102   fpCommandSetForceSolid->SetParameterName("fo    100   fpCommandSetForceSolid->SetParameterName("force", omitable = true);
103   fpCommandSetForceSolid->SetDefaultValue(true    101   fpCommandSetForceSolid->SetDefaultValue(true);
104                                                   102 
105   fpCommandSetForceWireframe = new G4UIcmdWith    103   fpCommandSetForceWireframe = new G4UIcmdWithABool
106   ("/vis/touchable/set/forceWireframe", this);    104   ("/vis/touchable/set/forceWireframe", this);
107   fpCommandSetForceWireframe->SetGuidance         105   fpCommandSetForceWireframe->SetGuidance
108   ("Force current touchable always to be drawn    106   ("Force current touchable always to be drawn as wireframe.");
109   fpCommandSetForceWireframe->SetGuidance         107   fpCommandSetForceWireframe->SetGuidance
110   ("Use \"/vis/set/touchable\" to set current     108   ("Use \"/vis/set/touchable\" to set current touchable.");
111   fpCommandSetForceWireframe->SetParameterName    109   fpCommandSetForceWireframe->SetParameterName("forceWireframe", omitable = true);
112   fpCommandSetForceWireframe->SetDefaultValue(    110   fpCommandSetForceWireframe->SetDefaultValue(true);
113                                                   111 
114   fpCommandSetLineSegmentsPerCircle = new G4UI    112   fpCommandSetLineSegmentsPerCircle = new G4UIcmdWithAnInteger
115   ("/vis/touchable/set/lineSegmentsPerCircle",    113   ("/vis/touchable/set/lineSegmentsPerCircle", this);
116   fpCommandSetLineSegmentsPerCircle->SetGuidan    114   fpCommandSetLineSegmentsPerCircle->SetGuidance
117     ("For current touchable, set number of lin    115     ("For current touchable, set number of line segments per circle, the"
118      "\nprecision with which a curved line or     116      "\nprecision with which a curved line or surface is represented by a"
119      "\npolygon or polyhedron, regardless of t    117      "\npolygon or polyhedron, regardless of the view parameters."
120      "\nNegative to pick up G4Polyhedron defau    118      "\nNegative to pick up G4Polyhedron default value.");
121   fpCommandSetLineSegmentsPerCircle->SetGuidan    119   fpCommandSetLineSegmentsPerCircle->SetGuidance
122   ("Use \"/vis/set/touchable\" to set current     120   ("Use \"/vis/set/touchable\" to set current touchable.");
123   fpCommandSetLineSegmentsPerCircle->SetParame    121   fpCommandSetLineSegmentsPerCircle->SetParameterName("lineSegmentsPerCircle", omitable = true);
124   fpCommandSetLineSegmentsPerCircle->SetDefaul    122   fpCommandSetLineSegmentsPerCircle->SetDefaultValue(0);
125                                                   123 
126   fpCommandSetLineStyle = new G4UIcmdWithAStri    124   fpCommandSetLineStyle = new G4UIcmdWithAString
127   ("/vis/touchable/set/lineStyle", this);         125   ("/vis/touchable/set/lineStyle", this);
128   fpCommandSetLineStyle->SetGuidance("Set line    126   fpCommandSetLineStyle->SetGuidance("Set line style of current touchable drawing.");
129   fpCommandSetLineStyle->SetGuidance              127   fpCommandSetLineStyle->SetGuidance
130   ("Use \"/vis/set/touchable\" to set current     128   ("Use \"/vis/set/touchable\" to set current touchable.");
131   fpCommandSetLineStyle->SetParameterName("lin    129   fpCommandSetLineStyle->SetParameterName("lineStyle", omitable = true);
132   fpCommandSetLineStyle->SetCandidates("unbrok    130   fpCommandSetLineStyle->SetCandidates("unbroken dashed dotted");
133   fpCommandSetLineStyle->SetDefaultValue("unbr    131   fpCommandSetLineStyle->SetDefaultValue("unbroken");
134                                                   132 
135   fpCommandSetLineWidth = new G4UIcmdWithADoub    133   fpCommandSetLineWidth = new G4UIcmdWithADouble
136   ("/vis/touchable/set/lineWidth", this);         134   ("/vis/touchable/set/lineWidth", this);
137   fpCommandSetLineWidth->SetGuidance("Set line    135   fpCommandSetLineWidth->SetGuidance("Set line width of current touchable.");
138   fpCommandSetLineWidth->SetGuidance              136   fpCommandSetLineWidth->SetGuidance
139   ("Use \"/vis/set/touchable\" to set current     137   ("Use \"/vis/set/touchable\" to set current touchable.");
140   fpCommandSetLineWidth->SetParameterName("lin    138   fpCommandSetLineWidth->SetParameterName("lineWidth", omitable = true);
141   fpCommandSetLineWidth->SetDefaultValue(1.);     139   fpCommandSetLineWidth->SetDefaultValue(1.);
142                                                   140 
143   fpCommandSetNumberOfCloudPoints = new G4UIcm    141   fpCommandSetNumberOfCloudPoints = new G4UIcmdWithAnInteger
144   ("/vis/touchable/set/numberOfCloudPoints", t    142   ("/vis/touchable/set/numberOfCloudPoints", this);
145   fpCommandSetNumberOfCloudPoints->SetGuidance    143   fpCommandSetNumberOfCloudPoints->SetGuidance
146   ("For current touchable, set number of cloud    144   ("For current touchable, set number of cloud points for cloud drawing."
147    "\n<= 0 means under control of viewer.");      145    "\n<= 0 means under control of viewer.");
148   fpCommandSetNumberOfCloudPoints->SetGuidance    146   fpCommandSetNumberOfCloudPoints->SetGuidance
149   ("Use \"/vis/set/touchable\" to set current     147   ("Use \"/vis/set/touchable\" to set current touchable.");
150   fpCommandSetNumberOfCloudPoints->SetParamete    148   fpCommandSetNumberOfCloudPoints->SetParameterName("numberOfCloudPoints", omitable = true);
151   fpCommandSetNumberOfCloudPoints->SetDefaultV    149   fpCommandSetNumberOfCloudPoints->SetDefaultValue(0);
152                                                   150 
153   fpCommandSetVisibility = new G4UIcmdWithABoo    151   fpCommandSetVisibility = new G4UIcmdWithABool
154   ("/vis/touchable/set/visibility", this);        152   ("/vis/touchable/set/visibility", this);
155   fpCommandSetVisibility->SetGuidance             153   fpCommandSetVisibility->SetGuidance
156   ("Set visibility of current touchable: true/    154   ("Set visibility of current touchable: true/false.");
157   fpCommandSetVisibility->SetGuidance             155   fpCommandSetVisibility->SetGuidance
158   ("Use \"/vis/set/touchable\" to set current     156   ("Use \"/vis/set/touchable\" to set current touchable.");
159   fpCommandSetVisibility->SetParameterName("vi    157   fpCommandSetVisibility->SetParameterName("visibility", omitable = true);
160   fpCommandSetVisibility->SetDefaultValue(true    158   fpCommandSetVisibility->SetDefaultValue(true);
161 }                                                 159 }
162                                                   160 
163 G4VisCommandsTouchableSet::~G4VisCommandsTouch    161 G4VisCommandsTouchableSet::~G4VisCommandsTouchableSet() {
164   delete fpCommandSetVisibility;                  162   delete fpCommandSetVisibility;
165   delete fpCommandSetNumberOfCloudPoints;         163   delete fpCommandSetNumberOfCloudPoints;
166   delete fpCommandSetLineWidth;                   164   delete fpCommandSetLineWidth;
167   delete fpCommandSetLineStyle;                   165   delete fpCommandSetLineStyle;
168   delete fpCommandSetForceWireframe;              166   delete fpCommandSetForceWireframe;
169   delete fpCommandSetForceSolid;                  167   delete fpCommandSetForceSolid;
170   delete fpCommandSetForceCloud;                  168   delete fpCommandSetForceCloud;
171   delete fpCommandSetLineSegmentsPerCircle;       169   delete fpCommandSetLineSegmentsPerCircle;
172   delete fpCommandSetForceAuxEdgeVisible;         170   delete fpCommandSetForceAuxEdgeVisible;
173   delete fpCommandSetDaughtersInvisible;          171   delete fpCommandSetDaughtersInvisible;
174   delete fpCommandSetColour;                      172   delete fpCommandSetColour;
175 }                                                 173 }
176                                                   174 
177 G4String G4VisCommandsTouchableSet::GetCurrent    175 G4String G4VisCommandsTouchableSet::GetCurrentValue(G4UIcommand*) {
178   return "";                                      176   return "";
179 }                                                 177 }
180                                                   178 
181 void G4VisCommandsTouchableSet::SetNewValue       179 void G4VisCommandsTouchableSet::SetNewValue
182 (G4UIcommand* command,G4String newValue)          180 (G4UIcommand* command,G4String newValue)
183 {                                                 181 {
184   G4VisManager::Verbosity verbosity = fpVisMan    182   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
185                                                   183 
186   G4VViewer* currentViewer = fpVisManager->Get    184   G4VViewer* currentViewer = fpVisManager->GetCurrentViewer();
187   if (!currentViewer) {                           185   if (!currentViewer) {
188     if (verbosity >= G4VisManager::errors) {      186     if (verbosity >= G4VisManager::errors) {
189       G4warn <<                                << 187       G4cerr <<
190       "ERROR: G4VisCommandsTouchableSet::SetNe    188       "ERROR: G4VisCommandsTouchableSet::SetNewValue: no current viewer."
191       << G4endl;                                  189       << G4endl;
192     }                                             190     }
193     return;                                       191     return;
194   }                                               192   }
195                                                   193 
196   G4ViewParameters workingVP = currentViewer->    194   G4ViewParameters workingVP = currentViewer->GetViewParameters();
197   G4VisAttributes workingVisAtts;                 195   G4VisAttributes workingVisAtts;
198                                                   196   
199   if (command == fpCommandSetColour)              197   if (command == fpCommandSetColour)
200   {                                               198   {
201     G4String redOrString;                         199     G4String redOrString;
202     G4double green, blue, opacity;                200     G4double green, blue, opacity;
203     std::istringstream iss(newValue);             201     std::istringstream iss(newValue);
204     iss >> redOrString >> green >> blue >> opa    202     iss >> redOrString >> green >> blue >> opacity;
205     G4Colour colour(1,1,1,1);  // Default whit    203     G4Colour colour(1,1,1,1);  // Default white and opaque.
206     ConvertToColour(colour, redOrString, green    204     ConvertToColour(colour, redOrString, green, blue, opacity);    
207     workingVisAtts.SetColour(colour);             205     workingVisAtts.SetColour(colour);
208     workingVP.AddVisAttributesModifier            206     workingVP.AddVisAttributesModifier
209     (G4ModelingParameters::VisAttributesModifi    207     (G4ModelingParameters::VisAttributesModifier
210      (workingVisAtts,                             208      (workingVisAtts,
211       G4ModelingParameters::VASColour,            209       G4ModelingParameters::VASColour,
212       fCurrentTouchableProperties.fTouchablePa    210       fCurrentTouchableProperties.fTouchablePath));
213   }                                               211   }
214                                                   212   
215   else if (command == fpCommandSetDaughtersInv    213   else if (command == fpCommandSetDaughtersInvisible) {
216     workingVisAtts.SetDaughtersInvisible(G4UIc    214     workingVisAtts.SetDaughtersInvisible(G4UIcommand::ConvertToBool(newValue));
217     workingVP.AddVisAttributesModifier            215     workingVP.AddVisAttributesModifier
218     (G4ModelingParameters::VisAttributesModifi    216     (G4ModelingParameters::VisAttributesModifier
219      (workingVisAtts,                             217      (workingVisAtts,
220       G4ModelingParameters::VASDaughtersInvisi    218       G4ModelingParameters::VASDaughtersInvisible,
221       fCurrentTouchableProperties.fTouchablePa    219       fCurrentTouchableProperties.fTouchablePath));
222   }                                               220   }
223                                                   221   
224   else if (command == fpCommandSetForceAuxEdge    222   else if (command == fpCommandSetForceAuxEdgeVisible) {
225     workingVisAtts.SetForceAuxEdgeVisible(G4UI    223     workingVisAtts.SetForceAuxEdgeVisible(G4UIcommand::ConvertToBool(newValue));
226     workingVP.AddVisAttributesModifier            224     workingVP.AddVisAttributesModifier
227     (G4ModelingParameters::VisAttributesModifi    225     (G4ModelingParameters::VisAttributesModifier
228      (workingVisAtts,                             226      (workingVisAtts,
229       G4ModelingParameters::VASForceAuxEdgeVis    227       G4ModelingParameters::VASForceAuxEdgeVisible,
230       fCurrentTouchableProperties.fTouchablePa    228       fCurrentTouchableProperties.fTouchablePath));
231   }                                               229   }
232                                                   230   
233   else if (command == fpCommandSetLineSegments    231   else if (command == fpCommandSetLineSegmentsPerCircle) {
234     workingVisAtts.SetForceLineSegmentsPerCirc    232     workingVisAtts.SetForceLineSegmentsPerCircle
235     (G4UIcommand::ConvertToInt(newValue));        233     (G4UIcommand::ConvertToInt(newValue));
236     workingVP.AddVisAttributesModifier            234     workingVP.AddVisAttributesModifier
237     (G4ModelingParameters::VisAttributesModifi    235     (G4ModelingParameters::VisAttributesModifier
238      (workingVisAtts,                             236      (workingVisAtts,
239       G4ModelingParameters::VASForceLineSegmen    237       G4ModelingParameters::VASForceLineSegmentsPerCircle,
240       fCurrentTouchableProperties.fTouchablePa    238       fCurrentTouchableProperties.fTouchablePath));
241   }                                               239   }
242                                                   240   
243   else if (command == fpCommandSetForceCloud)     241   else if (command == fpCommandSetForceCloud) {
244     workingVisAtts.SetForceCloud(G4UIcommand::    242     workingVisAtts.SetForceCloud(G4UIcommand::ConvertToBool(newValue));
245     workingVP.AddVisAttributesModifier            243     workingVP.AddVisAttributesModifier
246     (G4ModelingParameters::VisAttributesModifi    244     (G4ModelingParameters::VisAttributesModifier
247      (workingVisAtts,                             245      (workingVisAtts,
248       G4ModelingParameters::VASForceCloud,        246       G4ModelingParameters::VASForceCloud,
249       fCurrentTouchableProperties.fTouchablePa    247       fCurrentTouchableProperties.fTouchablePath));
250   }                                               248   }
251                                                   249 
252   else if (command == fpCommandSetForceSolid)     250   else if (command == fpCommandSetForceSolid) {
253     workingVisAtts.SetForceSolid(G4UIcommand::    251     workingVisAtts.SetForceSolid(G4UIcommand::ConvertToBool(newValue));
254     workingVP.AddVisAttributesModifier            252     workingVP.AddVisAttributesModifier
255     (G4ModelingParameters::VisAttributesModifi    253     (G4ModelingParameters::VisAttributesModifier
256      (workingVisAtts,                             254      (workingVisAtts,
257       G4ModelingParameters::VASForceSolid,        255       G4ModelingParameters::VASForceSolid,
258       fCurrentTouchableProperties.fTouchablePa    256       fCurrentTouchableProperties.fTouchablePath));
259   }                                               257   }
260                                                   258 
261   else if (command == fpCommandSetForceWirefra    259   else if (command == fpCommandSetForceWireframe) {
262     workingVisAtts.SetForceWireframe(G4UIcomma    260     workingVisAtts.SetForceWireframe(G4UIcommand::ConvertToBool(newValue));
263     workingVP.AddVisAttributesModifier            261     workingVP.AddVisAttributesModifier
264     (G4ModelingParameters::VisAttributesModifi    262     (G4ModelingParameters::VisAttributesModifier
265      (workingVisAtts,                             263      (workingVisAtts,
266       G4ModelingParameters::VASForceWireframe,    264       G4ModelingParameters::VASForceWireframe,
267       fCurrentTouchableProperties.fTouchablePa    265       fCurrentTouchableProperties.fTouchablePath));
268   }                                               266   }
269                                                   267   
270   else if (command == fpCommandSetLineStyle) {    268   else if (command == fpCommandSetLineStyle) {
271     G4VisAttributes::LineStyle lineStyle = G4V    269     G4VisAttributes::LineStyle lineStyle = G4VisAttributes::unbroken;
272     if (newValue == "dashed") {                   270     if (newValue == "dashed") {
273       lineStyle = G4VisAttributes::dashed;        271       lineStyle = G4VisAttributes::dashed;
274     } else if (newValue == "dotted") {            272     } else if (newValue == "dotted") {
275       lineStyle = G4VisAttributes::dotted;        273       lineStyle = G4VisAttributes::dotted;
276     }                                             274     }
277     // All other values are "unbroken".           275     // All other values are "unbroken".
278     workingVisAtts.SetLineStyle(lineStyle);       276     workingVisAtts.SetLineStyle(lineStyle);
279     workingVP.AddVisAttributesModifier            277     workingVP.AddVisAttributesModifier
280     (G4ModelingParameters::VisAttributesModifi    278     (G4ModelingParameters::VisAttributesModifier
281      (workingVisAtts,                             279      (workingVisAtts,
282       G4ModelingParameters::VASLineStyle,         280       G4ModelingParameters::VASLineStyle,
283       fCurrentTouchableProperties.fTouchablePa    281       fCurrentTouchableProperties.fTouchablePath));
284   }                                               282   }
285                                                   283   
286   else if (command == fpCommandSetLineWidth) {    284   else if (command == fpCommandSetLineWidth) {
287     workingVisAtts.SetLineWidth(G4UIcommand::C    285     workingVisAtts.SetLineWidth(G4UIcommand::ConvertToDouble(newValue));
288     workingVP.AddVisAttributesModifier            286     workingVP.AddVisAttributesModifier
289     (G4ModelingParameters::VisAttributesModifi    287     (G4ModelingParameters::VisAttributesModifier
290      (workingVisAtts,                             288      (workingVisAtts,
291       G4ModelingParameters::VASLineWidth,         289       G4ModelingParameters::VASLineWidth,
292       fCurrentTouchableProperties.fTouchablePa    290       fCurrentTouchableProperties.fTouchablePath));
293   }                                               291   }
294                                                   292   
295   else if (command == fpCommandSetNumberOfClou    293   else if (command == fpCommandSetNumberOfCloudPoints) {
296     workingVisAtts.SetForceNumberOfCloudPoints    294     workingVisAtts.SetForceNumberOfCloudPoints
297     (G4UIcommand::ConvertToInt(newValue));        295     (G4UIcommand::ConvertToInt(newValue));
298     workingVP.AddVisAttributesModifier            296     workingVP.AddVisAttributesModifier
299     (G4ModelingParameters::VisAttributesModifi    297     (G4ModelingParameters::VisAttributesModifier
300      (workingVisAtts,                             298      (workingVisAtts,
301       G4ModelingParameters::VASForceNumberOfCl    299       G4ModelingParameters::VASForceNumberOfCloudPoints,
302       fCurrentTouchableProperties.fTouchablePa    300       fCurrentTouchableProperties.fTouchablePath));
303   }                                               301   }
304                                                   302 
305   else if (command == fpCommandSetVisibility)     303   else if (command == fpCommandSetVisibility) {
306     workingVisAtts.SetVisibility(G4UIcommand::    304     workingVisAtts.SetVisibility(G4UIcommand::ConvertToBool(newValue));
307     workingVP.AddVisAttributesModifier            305     workingVP.AddVisAttributesModifier
308     (G4ModelingParameters::VisAttributesModifi    306     (G4ModelingParameters::VisAttributesModifier
309      (workingVisAtts,                             307      (workingVisAtts,
310       G4ModelingParameters::VASVisibility,        308       G4ModelingParameters::VASVisibility,
311       fCurrentTouchableProperties.fTouchablePa    309       fCurrentTouchableProperties.fTouchablePath));
312     if (verbosity >= G4VisManager::warnings) { << 
313       static G4bool first = true;              << 
314       if (first) {                             << 
315         first = false;                         << 
316         G4warn << "WARNING: If \"/vis/touchabl << 
317         "\n  work, check that opacity (4th com << 
318         G4warn << "ALSO: The volume must be in << 
319         "\n  not in the \"base path\". E.g., i << 
320         "\n    /vis/drawVolume volume-name"    << 
321         "\n  there is no way to make a parent  << 
322         "\n  explicitly adding the parent:"    << 
323         "\n    /vis/scene/add/volume parent-na << 
324       }                                        << 
325     }                                          << 
326   }                                               310   }
327                                                   311   
328   else {                                          312   else {
329     if (verbosity >= G4VisManager::errors) {      313     if (verbosity >= G4VisManager::errors) {
330       G4warn <<                                << 314       G4cerr <<
331       "ERROR: G4VisCommandsTouchableSet::SetNe    315       "ERROR: G4VisCommandsTouchableSet::SetNewValue: unrecognised command."
332       << G4endl;                                  316       << G4endl;
333     }                                             317     }
334     return;                                       318     return;
335   }                                               319   }
336                                                   320 
337   SetViewParameters(currentViewer,workingVP);     321   SetViewParameters(currentViewer,workingVP);
338                                                   322 
339   // To update all views                          323   // To update all views
340   G4UImanager::GetUIpointer()->ApplyCommand("/    324   G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers");
341 }                                                 325 }
342                                                   326