Geant4 Cross Reference |
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