64 fpCommand =
new G4UIcommand (
"/vis/viewer/addCutawayPlane",
this);
65 fpCommand -> SetGuidance
66 (
"Add cutaway plane to current viewer.");
69 parameter -> SetDefaultValue (0);
70 parameter -> SetGuidance (
"Coordinate of point on the plane.");
73 parameter -> SetDefaultValue (0);
74 parameter -> SetGuidance (
"Coordinate of point on the plane.");
77 parameter -> SetDefaultValue (0);
78 parameter -> SetGuidance (
"Coordinate of point on the plane.");
81 parameter -> SetDefaultValue (
"m");
82 parameter -> SetGuidance (
"Unit of point on the plane.");
85 parameter -> SetDefaultValue (1);
86 parameter -> SetGuidance (
"Component of plane normal.");
89 parameter -> SetDefaultValue (0);
90 parameter -> SetGuidance (
"Component of plane normal.");
93 parameter -> SetDefaultValue (0);
94 parameter -> SetGuidance (
"Component of plane normal.");
114 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
122 std::istringstream is (newValue);
123 is >> x >> y >> z >> unit >> nx >> ny >> nz;
125 x *= F; y *= F; z *= F;
130 G4cout <<
"Cutaway planes for viewer \"" << viewer->
GetName() <<
"\" now:";
132 for (
size_t i = 0; i < cutaways.size(); ++i)
133 G4cout <<
"\n " << i <<
": " << cutaways[i];
144 fpCommandCentreAndZoomInOn =
new G4UIcommand (
"/vis/viewer/centreAndZoomInOn",
this);
146 (
"Centre and zoom in on the given physical volume.");
148 (
"The names of all volumes in all worlds are matched against pv-name. If"
149 "\ncopy-no is supplied, it matches the copy number too. If pv-name is of the"
150 "\nform \"/regexp/\", where regexp is a regular expression (see C++ regex),"
151 "\nthe match uses the usual rules of regular expression matching."
152 "\nOtherwise an exact match is required."
153 "\nFor example, \"/Shap/\" matches \"Shape1\" and \"Shape2\".");
155 (
"It may help to see a textual representation of the geometry hierarchy of"
156 "\nthe worlds. Try \"/vis/drawTree [worlds]\" or one of the driver/browser"
157 "\ncombinations that have the required functionality, e.g., HepRepFile.");
159 (
"If there are more than one matching physical volumes they will all be"
160 "\nincluded. If this is not what you want, and what you want is to centre on a"
161 "\nparticular touchable, then select the touchable (\"/vis/set/touchable\") and"
162 "\nuse \"/vis/touchable/centreOn\". (You may need \"/vis/touchable/findPath\".)");
164 parameter =
new G4UIparameter(
"pv-name",
's',omitable =
false);
167 parameter =
new G4UIparameter(
"copy-no",
'i',omitable =
true);
169 parameter->
SetGuidance (
"Copy number. -1 means any or all copy numbers");
172 fpCommandCentreOn =
new G4UIcommand (
"/vis/viewer/centreOn",
this);
173 fpCommandCentreOn->
SetGuidance (
"Centre the view on the given physical volume.");
181 delete fpCommandCentreAndZoomInOn;
182 delete fpCommandCentreOn;
195 if (!currentViewer) {
198 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
206 std::istringstream is (newValue);
207 is >> pvName >> copyNo;
212 size_t nWorlds = transportationManager->
GetNoWorlds();
213 std::vector<G4PhysicalVolumesSearchScene::Findings> findingsVector;
214 std::vector<G4VPhysicalVolume*>::iterator iterWorld =
216 for (
size_t i = 0; i < nWorlds; ++i, ++iterWorld) {
222 for (
const auto& findings: searchScene.
GetFindings()) {
223 findingsVector.push_back(findings);
227 if (findingsVector.empty()) {
230 <<
"WARNING: Volume \"" << pvName <<
"\" ";
232 G4cerr <<
"copy number " << copyNo;
240 G4Scene tempScene(
"Centre Scene");
241 for (
const auto& findings: findingsVector) {
243 findings.fpFoundPV->SetCopyNo(findings.fFoundPVCopyNo);
250 findings.fFoundObjectTransformation,
253 findings.fFoundBasePVPath);
258 G4cout <<
"\"" << findings.fpFoundPV->GetName()
259 <<
"\", copy no. " << findings.fFoundPVCopyNo
260 <<
",\n found in searched volume \""
261 << findings.fpSearchPV->GetName()
262 <<
"\" at depth " << findings.fFoundDepth
263 <<
",\n base path: \"" << findings.fFoundBasePVPath
264 <<
",\n has been added to temporary scene \"" << tempScene.
GetName() <<
"\"."
271 delete sceneModel.fpModel;
281 if (command == fpCommandCentreAndZoomInOn) {
295 <<
"Viewer \"" << currentViewer->
GetName()
297 if (fpCommandCentreAndZoomInOn) {
298 G4cout <<
"and zoomed in";
300 G4cout <<
" on physical volume(s) \"" << pvName <<
'\"'
311 fpCommand =
new G4UIcommand (
"/vis/viewer/changeCutawayPlane",
this);
312 fpCommand -> SetGuidance(
"Change cutaway plane.");
315 parameter -> SetGuidance (
"Index of plane: 0, 1, 2.");
318 parameter -> SetDefaultValue (0);
319 parameter -> SetGuidance (
"Coordinate of point on the plane.");
322 parameter -> SetDefaultValue (0);
323 parameter -> SetGuidance (
"Coordinate of point on the plane.");
326 parameter -> SetDefaultValue (0);
327 parameter -> SetGuidance (
"Coordinate of point on the plane.");
330 parameter -> SetDefaultValue (
"m");
331 parameter -> SetGuidance (
"Unit of point on the plane.");
334 parameter -> SetDefaultValue (1);
335 parameter -> SetGuidance (
"Component of plane normal.");
338 parameter -> SetDefaultValue (0);
339 parameter -> SetGuidance (
"Component of plane normal.");
342 parameter -> SetDefaultValue (0);
343 parameter -> SetGuidance (
"Component of plane normal.");
363 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
372 std::istringstream is (newValue);
373 is >> index >> x >> y >> z >> unit >> nx >> ny >> nz;
375 x *= F; y *= F; z *= F;
381 G4cout <<
"Cutaway planes for viewer \"" << viewer->
GetName() <<
"\" now:";
383 for (
size_t i = 0; i < cutaways.size(); ++i)
384 G4cout <<
"\n " << i <<
": " << cutaways[i];
394 G4bool omitable, currentAsDefault;
396 fpCommand -> SetGuidance (
"Clears viewer.");
397 fpCommand -> SetGuidance
398 (
"By default, clears current viewer. Specified viewer becomes current."
399 "\n\"/vis/viewer/list\" to see possible viewer names.");
400 fpCommand -> SetParameterName (
"viewer-name",
402 currentAsDefault =
true);
411 return viewer ? viewer -> GetName () :
G4String(
"none");
422 G4cerr <<
"ERROR: Viewer \"" << clearName
423 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
433 G4cout <<
"Viewer \"" << clearName <<
"\" cleared." <<
G4endl;
442 (
"/vis/viewer/clearCutawayPlanes",
this);
443 fpCommand -> SetGuidance (
"Clear cutaway planes of current viewer.");
462 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
471 G4cout <<
"Cutaway planes for viewer \"" << viewer->
GetName()
472 <<
"\" now cleared." <<
G4endl;
481 G4bool omitable, currentAsDefault;
483 fpCommand -> SetGuidance (
"Clears transients from viewer.");
484 fpCommand -> SetGuidance
485 (
"By default, operates on current viewer. Specified viewer becomes current."
486 "\n\"/vis/viewer/list\" to see possible viewer names.");
487 fpCommand -> SetParameterName (
"viewer-name",
489 currentAsDefault =
true);
498 return viewer ? viewer -> GetName () :
G4String(
"none");
509 G4cerr <<
"ERROR: Viewer \"" << clearName
510 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
521 G4cout <<
"Viewer \"" << clearName <<
"\" cleared of transients."
531 (
"/vis/viewer/clearVisAttributesModifiers",
this);
532 fpCommand -> SetGuidance (
"Clear vis attribute modifiers of current viewer.");
533 fpCommand -> SetGuidance (
"(These are used for touchables, etc.)");
552 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
561 G4cout <<
"Vis attributes modifiers for viewer \"" << viewer->
GetName()
562 <<
"\" now cleared." <<
G4endl;
572 fpCommand =
new G4UIcommand (
"/vis/viewer/clone",
this);
573 fpCommand -> SetGuidance (
"Clones viewer.");
574 fpCommand -> SetGuidance
575 (
"By default, clones current viewer. Clone becomes current."
576 "\nClone name, if not provided, is derived from the original name."
577 "\n\"/vis/viewer/list\" to see possible viewer names.");
579 parameter =
new G4UIparameter (
"original-viewer-name",
's', omitable =
true);
580 parameter -> SetCurrentAsDefault (
true);
581 fpCommand -> SetParameter (parameter);
582 parameter =
new G4UIparameter (
"clone-name",
's', omitable =
true);
583 parameter -> SetDefaultValue (
"none");
584 fpCommand -> SetParameter (parameter);
594 return "\"" + originalName +
"\"";
602 std::istringstream is (newValue);
607 while (is.get(c) && c ==
' '){}
609 while (is.get(c) && c !=
'"') {originalName += c;}
613 while (is.get(c) && c !=
' ') {originalName += c;}
619 if (!originalViewer) {
621 G4cerr <<
"ERROR: Viewer \"" << originalName
622 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
627 originalName = originalViewer->
GetName();
629 while (is.get(c) && c ==
' '){}
631 while (is.get(c) && c !=
'"') {cloneName += c;}
635 while (is.get(c) && c !=
' ') {cloneName += c;}
640 G4bool errorWhileNaming =
false;
641 if (cloneName ==
"none") {
644 cloneName = originalName;
645 std::ostringstream oss;
646 oss <<
'-' << subID++;
647 G4String::size_type lastDashPosition, nextSpacePosition;
648 if ((lastDashPosition = cloneName.rfind(
'-')) != G4String::npos &&
649 (nextSpacePosition = cloneName.find(
" ", lastDashPosition)) !=
651 cloneName.insert(nextSpacePosition, oss.str());
653 G4String::size_type spacePosition = cloneName.find(
' ');
654 if (spacePosition != G4String::npos)
655 cloneName.insert(spacePosition, oss.str());
657 errorWhileNaming =
true;
659 }
while (!errorWhileNaming &&
fpVisManager -> GetViewer (cloneName));
662 if (errorWhileNaming) {
664 G4cerr <<
"ERROR: While naming clone viewer \"" << cloneName
673 G4cerr <<
"ERROR: Putative clone viewer \"" << cloneName
674 <<
"\" already exists."
686 if (keepVerbose >= 2 ||
692 (
G4String(
"/vis/viewer/create ! \"" + cloneName +
"\" " + windowSizeHint));
697 G4cout <<
"Viewer \"" << originalName <<
"\" cloned." <<
G4endl;
698 G4cout <<
"Clone \"" << cloneName <<
"\" now current." <<
G4endl;
706 fpCommand =
new G4UIcommand (
"/vis/viewer/colourByDensity",
this);
707 fpCommand -> SetGuidance
708 (
"If a volume has no vis attributes, colour it by density.");
709 fpCommand -> SetGuidance
710 (
"Provide algorithm number, e.g., \"1\" (or \"0\" to switch off)."
711 "\nThen a unit of density, e.g., \"g/cm3\"."
712 "\nThen parameters for the algorithm assumed to be densities in that unit.");
713 fpCommand -> SetGuidance
714 (
"Algorithm 1: Simple algorithm takes 3 parameters: d0, d1 and d2."
715 "\n Volumes with density < d0 are invisible."
716 "\n Volumes with d0 <= density < d1 have colour on range red->green."
717 "\n Volumes with d1 <= density < d2 have colour on range green->blue."
718 "\n Volumes with density > d2 are blue.");
721 parameter -> SetGuidance (
"Algorithm number (or \"0\" to switch off).");
722 parameter -> SetDefaultValue (1);
725 parameter -> SetGuidance (
"Unit of following densities, e.g., \"g/cm3\".");
726 parameter -> SetDefaultValue (
"g/cm3");
729 parameter -> SetGuidance (
"Density parameter 0");
730 parameter -> SetDefaultValue (0.5);
733 parameter -> SetGuidance (
"Density parameter 1");
734 parameter -> SetDefaultValue (3.0);
737 parameter -> SetGuidance (
"Density parameter 2.");
738 parameter -> SetDefaultValue (10.0);
758 "ERROR: No current viewer - \"/vis/viewer/list\" to see possibilities."
765 G4int algorithmNumber;
768 std::istringstream is (newValue);
769 is >> algorithmNumber >> unit >> d0 >> d1 >> d2;
771 if (algorithmNumber < 0 || algorithmNumber > 1) {
774 "ERROR: Unrecognised algorithm number: " << algorithmNumber
780 std::vector<G4double> parameters;
781 if (algorithmNumber > 0) {
782 const G4String where =
"G4VisCommandViewerColourByDensity::SetNewValue";
787 d0 *= valueOfUnit; d1 *= valueOfUnit; d2 *= valueOfUnit;
791 "ERROR: Unrecognised or inappropriate unit: " << unit
796 parameters.push_back(d0);
797 parameters.push_back(d1);
798 parameters.push_back(d2);
808 <<
" selected for viewer \"" << viewer->
GetName()
825 fpCommand -> SetGuidance
826 (
"Copy the camera-specific parameters from the specified viewer.");
827 fpCommand -> SetGuidance
828 (
"Note: To copy ALL view parameters, including scene modifications,"
829 "\nuse \"/vis/viewer/set/all\"");
830 fpCommand -> SetParameterName (
"from-viewer-name", omitable =
false);
846 if (!currentViewer) {
849 "ERROR: G4VisCommandsViewerCopyViewFrom::SetNewValue: no current viewer."
855 const G4String& fromViewerName = newValue;
859 G4cerr <<
"ERROR: Viewer \"" << fromViewerName
860 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
866 if (fromViewer == currentViewer) {
869 "WARNING: G4VisCommandsViewerSet::SetNewValue:"
870 "\n from-viewer and current viewer are identical."
891 G4cout <<
"Camera parameters of viewer \"" << currentViewer->
GetName()
892 <<
"\"\n set to those of viewer \"" << fromViewer->
GetName()
902 fpCommand =
new G4UIcommand (
"/vis/viewer/create",
this);
903 fpCommand -> SetGuidance
904 (
"Creates a viewer for the specified scene handler.");
905 fpCommand -> SetGuidance
906 (
"Default scene handler is the current scene handler. Invents a name"
907 "\nif not supplied. (Note: the system adds information to the name"
908 "\nfor identification - only the characters up to the first blank are"
909 "\nused for removing, selecting, etc.) This scene handler and viewer"
910 "\nbecome current.");
912 parameter =
new G4UIparameter (
"scene-handler",
's', omitable =
true);
913 parameter -> SetCurrentAsDefault (
true);
914 fpCommand -> SetParameter (parameter);
915 parameter =
new G4UIparameter (
"viewer-name",
's', omitable =
true);
916 parameter -> SetCurrentAsDefault (
true);
917 fpCommand -> SetParameter (parameter);
918 parameter =
new G4UIparameter (
"window-size-hint",
's', omitable =
true);
920 (
"integer (pixels) for square window placed by window manager or"
921 " X-Windows-type geometry string, e.g. 600x600-100+100");
923 fpCommand -> SetParameter (parameter);
930G4String G4VisCommandViewerCreate::NextName () {
931 std::ostringstream oss;
933 oss <<
"viewer-" << fId <<
" (";
935 oss << sceneHandler -> GetGraphicsSystem () -> GetName ();
938 oss <<
"no_scene_handlers";
948 if (currentSceneHandler) {
949 currentValue = currentSceneHandler -> GetName ();
952 currentValue =
"none";
956 currentValue += NextName ();
959 currentValue +=
" 600";
970 std::istringstream is (newValue);
971 is >> sceneHandlerName;
976 while (is.get(c) && c ==
' '){}
978 while (is.get(c) && c !=
'"') {newName += c;}
982 while (is.get(c) && c !=
' ') {newName += c;}
988 is >> windowSizeHintString;
992 G4int nHandlers = sceneHandlerList.size ();
993 if (nHandlers <= 0) {
996 "ERROR: G4VisCommandViewerCreate::SetNewValue: no scene handlers."
997 "\n Create a scene handler with \"/vis/sceneHandler/create\""
1004 for (iHandler = 0; iHandler < nHandlers; iHandler++) {
1005 if (sceneHandlerList [iHandler] -> GetName () == sceneHandlerName)
break;
1008 if (iHandler < 0 || iHandler >= nHandlers) {
1012 G4cout <<
"G4VisCommandViewerCreate::SetNewValue:"
1013 " invalid scene handler specified."
1022 if (sceneHandler !=
fpVisManager -> GetCurrentSceneHandler ()) {
1028 if (newName ==
"") {
1031 if (newName == nextName) fId++;
1034 for (
G4int ih = 0; ih < nHandlers; ih++) {
1036 const G4ViewerList& viewerList = sh -> GetViewerList ();
1037 for (
size_t iViewer = 0; iViewer < viewerList.size (); iViewer++) {
1038 if (viewerList [iViewer] -> GetShortName () == newShortName ) {
1040 G4cerr <<
"ERROR: Viewer \"" << newShortName <<
"\" already exists."
1052 fpVisManager -> CreateViewer (newName,windowSizeHintString);
1055 if (newViewer && newViewer -> GetName () == newName) {
1057 G4cout <<
"New viewer \"" << newName <<
"\" created." <<
G4endl;
1063 G4cerr <<
"ERROR: New viewer doesn\'t match!!! Curious!!" <<
G4endl;
1076 G4cout <<
"Issue /vis/viewer/refresh or flush to see effect."
1086 fDollyIncrement (0.),
1089 G4bool omitable, currentAsDefault;
1092 (
"/vis/viewer/dolly",
this);
1093 fpCommandDolly -> SetGuidance
1094 (
"Incremental dolly.");
1095 fpCommandDolly -> SetGuidance
1096 (
"Moves the camera incrementally towards target point.");
1097 fpCommandDolly -> SetParameterName(
"increment",
1099 currentAsDefault=
true);
1100 fpCommandDolly -> SetDefaultUnit(
"m");
1103 (
"/vis/viewer/dollyTo",
this);
1104 fpCommandDollyTo -> SetGuidance
1105 (
"Dolly to specific coordinate.");
1106 fpCommandDollyTo -> SetGuidance
1107 (
"Places the camera towards target point relative to standard camera point.");
1108 fpCommandDollyTo -> SetParameterName(
"distance",
1110 currentAsDefault=
true);
1111 fpCommandDollyTo -> SetDefaultUnit(
"m");
1115 delete fpCommandDolly;
1116 delete fpCommandDollyTo;
1121 if (command == fpCommandDolly) {
1124 else if (command == fpCommandDollyTo) {
1127 return currentValue;
1137 if (!currentViewer) {
1140 "ERROR: G4VisCommandsViewerDolly::SetNewValue: no current viewer."
1148 if (command == fpCommandDolly) {
1152 else if (command == fpCommandDollyTo) {
1167 G4bool omitable, currentAsDefault;
1169 fpCommand -> SetGuidance
1170 (
"Compound command: \"/vis/viewer/refresh\" + \"/vis/viewer/update\".");
1171 fpCommand -> SetGuidance
1172 (
"Useful for refreshing and initiating post-processing for graphics"
1173 "\nsystems which need post-processing. By default, acts on current"
1174 "\nviewer. \"/vis/viewer/list\" to see possible viewers. Viewer"
1175 "\nbecomes current.");
1176 fpCommand -> SetParameterName (
"viewer-name",
1178 currentAsDefault =
true);
1188 return viewer ? viewer -> GetName () :
G4String(
"none");
1199 G4cerr <<
"ERROR: Viewer \"" << flushName <<
"\"" <<
1200 " not found - \"/vis/viewer/list\"\n to see possibilities."
1208 G4int newVerbose(0);
1216 G4cout <<
"Viewer \"" << viewer -> GetName () <<
"\""
1217 <<
" flushed." <<
G4endl;
1225 fpCommand =
new G4UIcommand (
"/vis/viewer/interpolate",
this);
1226 fpCommand -> SetGuidance
1227 (
"Interpolate views defined by the first argument, which can contain "
1228 "Unix-shell-style pattern matching characters such as '*', '?' and '[' "
1229 "- see \"man sh\" and look for \"Pattern Matching\". The contents "
1230 "of each file are assumed to be \"/vis/viewer\" commands "
1231 "that specify a particular view. The files are processed in alphanumeric "
1232 "order of filename. The files may be written by hand or produced by the "
1233 "\"/vis/viewer/save\" command.");
1234 fpCommand -> SetGuidance
1235 (
"The default is to search the working directory for files with a .g4view "
1236 "extension. Another procedure is to assemble view files in a subdirectory, "
1237 "e.g., \"myviews\"; then they can be interpolated with\n"
1238 "\"/vis/viewer/interpolate myviews/*\".");
1239 fpCommand -> SetGuidance
1240 (
"To export interpolated views to file for a future possible movie, "
1241 "write \"export\" as 5th parameter (OpenGL only).");
1243 parameter =
new G4UIparameter(
"pattern",
's', omitable =
true);
1244 parameter -> SetGuidance(
"Pattern that defines the view files.");
1245 parameter -> SetDefaultValue(
"*.g4view");
1246 fpCommand -> SetParameter(parameter);
1247 parameter =
new G4UIparameter(
"no-of-points",
'i', omitable =
true);
1248 parameter -> SetGuidance (
"Number of interpolation points per interval.");
1249 parameter -> SetDefaultValue(50);
1250 fpCommand -> SetParameter(parameter);
1251 parameter =
new G4UIparameter(
"wait-time",
's', omitable =
true);
1252 parameter -> SetGuidance(
"Wait time per interpolated point");
1253 parameter -> SetDefaultValue(
"20.");
1254 fpCommand -> SetParameter(parameter);
1255 parameter =
new G4UIparameter(
"time-unit",
's', omitable =
true);
1256 parameter -> SetDefaultValue(
"millisecond");
1257 fpCommand -> SetParameter (parameter);
1258 parameter =
new G4UIparameter(
"export",
's', omitable =
true);
1259 parameter -> SetDefaultValue(
"no");
1260 fpCommand -> SetParameter (parameter);
1276 if (!currentViewer) {
1279 "ERROR: G4VisCommandViewerInterpolate::SetNewValue: no current viewer."
1286 G4int nInterpolationPoints;
1291 std::istringstream iss (newValue);
1294 >> nInterpolationPoints
1295 >> waitTimePerPointString
1298 G4String waitTimePerPointDimString(waitTimePerPointString +
' ' + timeUnit);
1301 G4int waitTimePerPointmilliseconds = waitTimePerPoint/millisecond;
1302 if (waitTimePerPointmilliseconds < 0) waitTimePerPointmilliseconds = 0;
1324 std::vector<G4ViewParameters> viewVector;
1326 const G4int safety = 9999;
1327 G4int safetyCount = 0;
1333 G4String shellCommand =
"echo " + pattern;
1334 FILE *filelist = popen(shellCommand.c_str(),
"r");
1338 <<
"ERROR: G4VisCommandViewerInterpolate::SetNewValue:"
1339 <<
"\n Error obtaining pipe."
1346 const size_t BUFLENGTH = 999999;
1347 char buf[BUFLENGTH];
1348 char* result = std::fgets(buf, BUFLENGTH, filelist);
1350 std::istringstream fileliststream(result);
1351 while (fileliststream >> pathname
1352 && safetyCount++ < safety) {
1353 uiManager->
ApplyCommand(
"/control/execute " + pathname);
1357 viewVector.push_back(vp);
1364 std::filesystem::path filePattern = pattern.c_str();
1369 std::string regexp_pattern(
"^" + filePattern.filename().string());
1370 std::string result_pattern =
"";
1372 size_t currentPos = 0;
1374 std::string currentReplacement =
"";
1375 size_t pos1 = regexp_pattern.find(
'.', nextPos);
1376 size_t pos2 = regexp_pattern.find(
'*', nextPos);
1377 size_t pos3 = regexp_pattern.find(
'?', nextPos);
1378 while ((pos1 != std::string::npos) || (pos2 != std::string::npos) || (pos3 != std::string::npos)) {
1380 currentReplacement =
"\\.";
1381 if (pos2 < nextPos) {
1383 currentReplacement =
".*";
1385 if (pos3 < nextPos) {
1387 currentReplacement =
"(.{1,1})";
1389 result_pattern += regexp_pattern.substr(currentPos, nextPos - currentPos) + currentReplacement;
1391 currentPos = nextPos;
1392 pos1 = regexp_pattern.find(
'.', currentPos);
1393 pos2 = regexp_pattern.find(
'*', currentPos);
1394 pos3 = regexp_pattern.find(
'?', currentPos);
1396 result_pattern += regexp_pattern.substr(currentPos);
1400 G4String parentPath(filePattern.parent_path().string().length() ? filePattern.parent_path().string() : std::string(
"./"));
1401 std::filesystem::path parentPathPattern = parentPath.c_str();
1403 std::regex result_pattern_regex (result_pattern, std::regex_constants::basic | std::regex_constants::icase);
1404 for (
auto iter = std::filesystem::directory_iterator(parentPathPattern);
1405 iter != std::filesystem::directory_iterator() && safetyCount++ < safety;
1408 const auto& file = iter->path();
1410 G4String filename(file.filename().string());
1411 if (std::regex_match(filename, result_pattern_regex))
1413 uiManager->
ApplyCommand(
"/control/execute " + filename);
1417 viewVector.push_back(vp);
1423 if (safetyCount >= safety) {
1426 "/vis/viewer/interpolate:"
1427 "\n the number of way points exceeds the maximum currently allowed: "
1434 (currentViewer,viewVector,
1435 nInterpolationPoints,waitTimePerPointmilliseconds,exportString);
1445 G4cout <<
"Viewer \"" << currentViewer -> GetName () <<
"\""
1446 <<
" restored." <<
G4endl;
1454 fpCommand =
new G4UIcommand (
"/vis/viewer/list",
this);
1455 fpCommand -> SetGuidance (
"Lists viewers(s).");
1456 fpCommand -> SetGuidance
1457 (
"See \"/vis/verbose\" for definition of verbosity.");
1461 parameter -> SetDefaultValue (
"all");
1462 fpCommand -> SetParameter (parameter);
1465 parameter -> SetDefaultValue (
"warnings");
1466 fpCommand -> SetParameter (parameter);
1479 std::istringstream is (newValue);
1480 is >> name >> verbosityString;
1487 if (currentViewer) {
1488 currentViewerShortName = currentViewer -> GetShortName ();
1491 currentViewerShortName =
"none";
1496 G4int nHandlers = sceneHandlerList.size ();
1498 G4bool foundCurrent =
false;
1499 for (
int iHandler = 0; iHandler < nHandlers; iHandler++) {
1501 const G4ViewerList& viewerList = sceneHandler -> GetViewerList ();
1503 <<
"Scene handler \"" << sceneHandler -> GetName () <<
"\" ("
1505 const G4Scene* pScene = sceneHandler -> GetScene ();
1507 G4cout <<
", scene \"" << pScene -> GetName () <<
"\"";
1510 G4int nViewers = viewerList.size ();
1511 if (nViewers == 0) {
1512 G4cout <<
"\n No viewers for this scene handler." <<
G4endl;
1515 for (
int iViewer = 0; iViewer < nViewers; iViewer++) {
1516 const G4VViewer* thisViewer = viewerList [iViewer];
1517 G4String thisName = thisViewer -> GetName ();
1518 G4String thisShortName = thisViewer -> GetShortName ();
1519 if (name !=
"all") {
1520 if (thisShortName != shortName)
continue;
1524 if (thisShortName == currentViewerShortName) {
1525 foundCurrent =
true;
1531 G4cout <<
" viewer \"" << thisName <<
"\"";
1533 G4cout <<
"\n " << *thisViewer;
1540 if (!foundCurrent) {
1541 G4cout <<
"No valid current viewer - please create or select one."
1547 if (name !=
"all") {
1548 G4cout <<
" of name \"" << name <<
"\"";
1557 fPanIncrementRight (0.),
1558 fPanIncrementUp (0.),
1565 (
"/vis/viewer/pan",
this);
1566 fpCommandPan -> SetGuidance
1567 (
"Incremental pan.");
1568 fpCommandPan -> SetGuidance
1569 (
"Moves the camera incrementally right and up by these amounts (as seen"
1570 "\nfrom viewpoint direction).");
1572 parameter =
new G4UIparameter(
"right-increment",
'd', omitable =
true);
1573 parameter -> SetCurrentAsDefault (
true);
1574 fpCommandPan -> SetParameter (parameter);
1575 parameter =
new G4UIparameter(
"up-increment",
'd', omitable =
true);
1576 parameter -> SetCurrentAsDefault (
true);
1577 fpCommandPan -> SetParameter (parameter);
1578 parameter =
new G4UIparameter (
"unit",
's', omitable =
true);
1579 parameter -> SetDefaultValue (
"m");
1580 fpCommandPan -> SetParameter (parameter);
1583 (
"/vis/viewer/panTo",
this);
1584 fpCommandPanTo -> SetGuidance
1585 (
"Pan to specific coordinate.");
1586 fpCommandPanTo -> SetGuidance
1587 (
"Places the camera in this position right and up relative to standard"
1588 "\ntarget point (as seen from viewpoint direction).");
1589 parameter =
new G4UIparameter(
"right",
'd', omitable =
true);
1590 parameter -> SetCurrentAsDefault (
true);
1591 fpCommandPanTo -> SetParameter (parameter);
1593 parameter -> SetCurrentAsDefault (
true);
1594 fpCommandPanTo -> SetParameter (parameter);
1595 parameter =
new G4UIparameter (
"unit",
's', omitable =
true);
1596 parameter -> SetDefaultValue (
"m");
1597 fpCommandPanTo -> SetParameter (parameter);
1601 delete fpCommandPan;
1602 delete fpCommandPanTo;
1607 if (command == fpCommandPan) {
1608 currentValue =
ConvertToString(fPanIncrementRight, fPanIncrementUp,
"m");
1610 else if (command == fpCommandPanTo) {
1613 return currentValue;
1623 if (!currentViewer) {
1626 "ERROR: G4VisCommandsViewerPan::SetNewValue: no current viewer."
1634 if (command == fpCommandPan) {
1638 else if (command == fpCommandPanTo) {
1640 vp.
SetPan(fPanToRight, fPanToUp);
1654 G4bool omitable, currentAsDefault;
1656 fpCommand -> SetGuidance (
"Forces rebuild of graphical database.");
1657 fpCommand -> SetGuidance
1658 (
"By default, acts on current viewer. \"/vis/viewer/list\""
1659 "\nto see possible viewers. Viewer becomes current.");
1660 fpCommand -> SetParameterName (
"viewer-name",
1662 currentAsDefault =
true);
1672 return viewer -> GetName ();
1688 G4cerr <<
"ERROR: Viewer \"" << rebuildName
1689 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
1696 if (!sceneHandler) {
1698 G4cerr <<
"ERROR: Viewer \"" << viewer->
GetName() <<
"\"" <<
1699 " has no scene handler - report serious bug."
1718 G4bool omitable, currentAsDefault;
1720 fpCommand -> SetGuidance
1721 (
"Refreshes viewer.");
1722 fpCommand -> SetGuidance
1723 (
"By default, acts on current viewer. \"/vis/viewer/list\""
1724 "\nto see possible viewers. Viewer becomes current.");
1725 fpCommand -> SetParameterName (
"viewer-name",
1727 currentAsDefault =
true);
1736 return viewer ? viewer -> GetName () :
G4String(
"none");
1748 G4cerr <<
"ERROR: Viewer \"" << refreshName <<
"\"" <<
1749 " not found - \"/vis/viewer/list\"\n to see possibilities."
1756 if (!sceneHandler) {
1758 G4cerr <<
"ERROR: Viewer \"" << refreshName <<
"\"" <<
1759 " has no scene handler - report serious bug."
1768 G4cout <<
"NOTE: SceneHandler \"" << sceneHandler->
GetName()
1769 <<
"\", to which viewer \"" << refreshName <<
"\"" <<
1770 "\n is attached, has no scene - \"/vis/scene/create\" and"
1771 " \"/vis/sceneHandler/attach\""
1772 "\n (or use compound command \"/vis/drawVolume\")."
1778 G4bool successful = scene -> AddWorldIfEmpty (warn);
1782 "WARNING: Scene is empty. Perhaps no geometry exists."
1783 "\n Try /run/initialize."
1794 G4cout <<
"Refreshing viewer \"" << viewer -> GetName () <<
"\"..."
1797 viewer -> SetView ();
1798 viewer -> ClearView ();
1799 viewer -> DrawView ();
1801 G4cout <<
"Viewer \"" << viewer -> GetName () <<
"\"" <<
" refreshed."
1802 "\n (You might also need \"/vis/viewer/update\".)" <<
G4endl;
1810 G4bool omitable, currentAsDefault;
1812 fpCommand -> SetGuidance (
"Resets viewer.");
1813 fpCommand -> SetGuidance
1814 (
"By default, acts on current viewer. \"/vis/viewer/list\""
1815 "\nto see possible viewers. Viewer becomes current.");
1816 fpCommand -> SetParameterName (
"viewer-name",
1818 currentAsDefault =
true);
1828 return viewer -> GetName ();
1843 G4cerr <<
"ERROR: Viewer \"" << resetName
1844 <<
"\" not found - \"/vis/viewer/list\" to see possibilities."
1859 fpCommand -> SetGuidance
1860 (
"Write commands that define the current view to file.");
1861 fpCommand -> SetGuidance
1862 (
"Read them back into the same or any viewer with \"/control/execute\".");
1863 fpCommand -> SetGuidance
1864 (
"If the filename is omitted the view is saved to a file "
1865 "\"g4_nn.g4view\", where nn is a sequential two-digit number.");
1866 fpCommand -> SetGuidance
1867 (
"If the filename is \"-\", the data are written to G4cout.");
1868 fpCommand -> SetGuidance
1869 (
"If you are wanting to save views for future interpolation a recommended "
1870 "procedure is: save views to \"g4_nn.g4view\", as above, then move the files "
1871 "into a sub-directory, say, \"views\", then interpolate with"
1872 "\"/vis/viewer/interpolate views/\" (note the trailing \'/\').");
1873 fpCommand -> SetParameterName (
"filename", omitable =
true);
1874 fpCommand -> SetDefaultValue (
"");
1907 if (!currentViewer) {
1910 "ERROR: G4VisCommandsViewerSave::SetNewValue: no current viewer."
1917 if (!currentScene) {
1920 "ERROR: G4VisCommandsViewerSave::SetNewValue: no current scene."
1929 const std::vector<G4ModelingParameters::VisAttributesModifier>*
1932 std::vector<G4ModelingParameters::VisAttributesModifier>::const_iterator i;
1933 for (i = privateVAMs->begin(); i != privateVAMs->end(); ++i) {
1941 if (newValue.length() == 0) {
1943 const G4int maxNoOfFiles = 100;
1944 static G4int sequenceNumber = 0;
1945 if (sequenceNumber >= maxNoOfFiles) {
1948 <<
"ERROR: G4VisCommandsViewerSave::SetNewValue: Maximum number, "
1950 <<
", of files exceeded."
1955 std::ostringstream oss;
1956 oss << std::setw(2) << std::setfill(
'0') << sequenceNumber++;
1957 filename =
"g4_" + oss.str() +
".g4view";
1960 if (filename ==
"-") {
1962 WriteCommands(
G4cout,vp,stp);
1967 filename +=
".g4view";
1969 std::ofstream ofs(filename);
1973 "ERROR: G4VisCommandsViewerSave::SetNewValue: Trouble opening file \""
1974 << filename <<
"\"."
1980 WriteCommands(ofs,vp,stp);
1985 G4cout <<
"Viewer \"" << currentViewer -> GetName ()
1986 <<
"\"" <<
" saved to ";
1987 if (filename ==
"-") {
1990 G4cout <<
"file \'" << filename <<
"\"." <<
1991 "\n Read the view back into this or any viewer with"
1992 "\n \"/control/execute " << filename <<
"\" or use"
1993 "\n \"/vis/viewer/interpolate\" if you have several saved files -"
1994 "\n see \"help /vis/viewer/interpolate\" for guidance.";
2006 G4bool omitable, currentAsDefault;
2009 (
"/vis/viewer/scale",
this);
2010 fpCommandScale -> SetGuidance (
"Incremental (non-uniform) scaling.");
2011 fpCommandScale -> SetGuidance
2012 (
"Multiplies components of current scaling by components of this factor."
2013 "\n Scales (x,y,z) by corresponding components of the resulting factor.");
2014 fpCommandScale -> SetGuidance
2016 fpCommandScale -> SetParameterName
2017 (
"x-scale-multiplier",
"y-scale-multiplier",
"z-scale-multiplier",
2018 omitable=
true, currentAsDefault=
true);
2021 (
"/vis/viewer/scaleTo",
this);
2022 fpCommandScaleTo -> SetGuidance (
"Absolute (non-uniform) scaling.");
2023 fpCommandScaleTo -> SetGuidance
2024 (
"Scales (x,y,z) by corresponding components of this factor.");
2025 fpCommandScaleTo -> SetParameterName
2026 (
"x-scale-factor",
"y-scale-factor",
"z-scale-factor",
2027 omitable=
true, currentAsDefault=
true);
2031 delete fpCommandScale;
2032 delete fpCommandScaleTo;
2037 if (command == fpCommandScale) {
2040 else if (command == fpCommandScaleTo) {
2043 return currentValue;
2053 if (!currentViewer) {
2056 "ERROR: G4VisCommandsViewerScale::SetNewValue: no current viewer."
2064 if (command == fpCommandScale) {
2068 else if (command == fpCommandScaleTo) {
2085 fpCommand -> SetGuidance (
"Selects viewer.");
2086 fpCommand -> SetGuidance
2087 (
"Specify viewer by name. \"/vis/viewer/list\" to see possible viewers.");
2088 fpCommand -> SetParameterName (
"viewer-name", omitable =
false);
2108 G4cerr <<
"ERROR: Viewer \"" << selectName <<
"\"";
2109 G4cerr <<
" not found - \"/vis/viewer/list\""
2110 "\n to see possibilities."
2118 G4cout <<
"WARNING: Viewer \"" << viewer -> GetName () <<
"\""
2119 <<
" already selected." <<
G4endl;
2133 G4bool omitable, currentAsDefault;
2135 fpCommand -> SetGuidance
2136 (
"Triggers graphical database post-processing for viewers"
2137 "\nusing that technique.");
2138 fpCommand -> SetGuidance
2139 (
"For such viewers the view only becomes visible with this command."
2140 "\nBy default, acts on current viewer. \"/vis/viewer/list\""
2141 "\nto see possible viewers. Viewer becomes current.");
2142 fpCommand -> SetParameterName (
"viewer-name",
2144 currentAsDefault =
true);
2154 return viewer -> GetName ();
2171 "WARNING: command \"/vis/viewer/update\" could not be applied: no current viewer."
2178 if (!sceneHandler) {
2180 G4cerr <<
"ERROR: Viewer \"" << updateName <<
"\"" <<
2181 " has no scene handler - report serious bug."
2190 G4cout <<
"NOTE: SceneHandler \"" << sceneHandler->
GetName()
2191 <<
"\", to which viewer \"" << updateName <<
"\"" <<
2192 "\n is attached, has no scene - \"/vis/scene/create\" and"
2193 " \"/vis/sceneHandler/attach\""
2194 "\n (or use compound command \"/vis/drawVolume\")."
2201 G4cout <<
"Viewer \"" << viewer -> GetName () <<
"\"";
2204 viewer -> ShowView ();
2206 sceneHandler -> SetMarkForClearingTransientStore(
true);
2212 fZoomMultiplier (1.),
2215 G4bool omitable, currentAsDefault;
2218 (
"/vis/viewer/zoom",
this);
2219 fpCommandZoom -> SetGuidance (
"Incremental zoom.");
2220 fpCommandZoom -> SetGuidance
2221 (
"Multiplies current magnification by this factor.");
2222 fpCommandZoom -> SetParameterName(
"multiplier",
2224 currentAsDefault=
true);
2227 (
"/vis/viewer/zoomTo",
this);
2228 fpCommandZoomTo -> SetGuidance (
"Absolute zoom.");
2229 fpCommandZoomTo -> SetGuidance
2230 (
"Magnifies standard magnification by this factor.");
2231 fpCommandZoomTo -> SetParameterName(
"factor",
2233 currentAsDefault=
true);
2237 delete fpCommandZoom;
2238 delete fpCommandZoomTo;
2243 if (command == fpCommandZoom) {
2246 else if (command == fpCommandZoomTo) {
2249 return currentValue;
2259 if (!currentViewer) {
2262 "ERROR: G4VisCommandsViewerZoom::SetNewValue: no current viewer."
2270 if (command == fpCommandZoom) {
2274 else if (command == fpCommandZoomTo) {
HepGeom::Normal3D< G4double > G4Normal3D
HepGeom::Plane3D< G4double > G4Plane3D
HepGeom::Point3D< G4double > G4Point3D
CLHEP::Hep3Vector G4ThreeVector
std::vector< G4Plane3D > G4Planes
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
void DescribeYourselfTo(G4VGraphicsScene &)
const std::vector< Findings > & GetFindings() const
G4bool AddRunDurationModel(G4VModel *, G4bool warn=false)
const std::vector< Model > & GetRunDurationModelList() const
const G4VisExtent & GetExtent() const
const G4Point3D & GetStandardTargetPoint() const
const G4String & GetName() const
G4bool contains(const std::string &) const
G4String strip(G4int strip_Type=trailing, char c=' ')
static G4TransportationManager * GetTransportationManager()
std::vector< G4VPhysicalVolume * >::iterator GetWorldsIterator()
size_t GetNoWorlds() const
static G4ThreeVector GetNew3VectorValue(const char *paramString)
static G4double GetNewDoubleValue(const char *paramString)
static G4double GetNewDoubleValue(const char *paramString)
static G4double ValueOf(const char *unitName)
static G4String ConvertToString(G4bool boolVal)
void SetParameter(G4UIparameter *const newParameter)
void SetGuidance(const char *aGuidance)
static G4double ConvertToDimensionedDouble(const char *st)
G4int ApplyCommand(const char *aCommand)
G4int GetVerboseLevel() const
static G4UImanager * GetUIpointer()
void SetVerboseLevel(G4int val)
void SetDefaultValue(const char *theDefaultValue)
void SetGuidance(const char *theGuidance)
const G4String & GetNickname() const
void SetModelingParameters(const G4ModelingParameters *)
virtual void ClearTransientStore()
void SetMarkForClearingTransientStore(G4bool)
G4VGraphicsSystem * GetGraphicsSystem() const
G4Scene * GetScene() const
const G4String & GetName() const
const G4String & GetName() const
virtual void DrawView()=0
const G4ViewParameters & GetViewParameters() const
virtual const std::vector< G4ModelingParameters::VisAttributesModifier > * GetPrivateVisAttributesModifiers() const
virtual void FinishView()
void SetViewParameters(const G4ViewParameters &vp)
virtual void ClearView()=0
G4VSceneHandler * GetSceneHandler() const
void CheckSceneAndNotifyHandlers(G4Scene *=nullptr)
static G4VisManager * fpVisManager
void InterpolateToNewView(G4VViewer *currentViewer, const G4ViewParameters &oldVP, const G4ViewParameters &newVP, const G4int nInterpolationPoints=50, const G4int waitTimePerPointmilliseconds=20, const G4String exportString="")
static G4bool ConvertToDoublePair(const G4String ¶mString, G4double &xval, G4double &yval)
void RefreshIfRequired(G4VViewer *viewer)
void SetViewParameters(G4VViewer *viewer, const G4ViewParameters &viewParams)
void CopyParametersFrom(const G4UIcommand *fromCmd, G4UIcommand *toCmd)
G4bool ProvideValueOfUnit(const G4String &where, const G4String &unit, const G4String &category, G4double &value)
static G4String ConvertToString(G4double x, G4double y, const char *unitName)
void CopyGuidanceFrom(const G4UIcommand *fromCmd, G4UIcommand *toCmd, G4int startLine=0)
void InterpolateViews(G4VViewer *currentViewer, std::vector< G4ViewParameters > viewVector, const G4int nInterpolationPoints=50, const G4int waitTimePerPointmilliseconds=20, const G4String exportString="")
void SetCBDParameters(const std::vector< G4double > &)
void SetViewpointDirection(const G4Vector3D &viewpointDirection)
void SetScaleFactor(const G4Vector3D &scaleFactor)
const G4Vector3D & GetScaleFactor() const
void SetAutoRefresh(G4bool)
const G4String & GetXGeometryString() const
G4String CameraAndLightingCommands(const G4Point3D standardTargetPoint) const
void AddVisAttributesModifier(const G4ModelingParameters::VisAttributesModifier &)
void SetCurrentTargetPoint(const G4Point3D ¤tTargetPoint)
const G4Vector3D & GetLightpointDirection() const
void SetFieldHalfAngle(G4double fieldHalfAngle)
const G4Vector3D & GetViewpointDirection() const
void ClearCutawayPlanes()
const G4Point3D & GetCurrentTargetPoint() const
void SetCBDAlgorithmNumber(G4int)
void MultiplyScaleFactor(const G4Vector3D &scaleFactorMultiplier)
G4double GetFieldHalfAngle() const
G4double GetZoomFactor() const
void SetDolly(G4double dolly)
G4String SceneModifyingCommands() const
void IncrementPan(G4double right, G4double up)
const G4Vector3D & GetUpVector() const
G4String TimeWindowCommands() const
G4String TouchableCommands() const
const std::vector< G4double > & GetCBDParameters() const
G4int GetCBDAlgorithmNumber() const
void ChangeCutawayPlane(size_t index, const G4Plane3D &cutawayPlane)
void SetZoomFactor(G4double zoomFactor)
void SetUpVector(const G4Vector3D &upVector)
void SetPan(G4double right, G4double up)
const G4Planes & GetCutawayPlanes() const
void SetLightpointDirection(const G4Vector3D &lightpointDirection)
void SetLightsMoveWithCamera(G4bool moves)
void MultiplyZoomFactor(G4double zoomFactorMultiplier)
G4String DrawingStyleCommands() const
G4bool IsAutoRefresh() const
G4bool GetLightsMoveWithCamera() const
void IncrementDolly(G4double dollyIncrement)
void ClearVisAttributesModifiers()
void AddCutawayPlane(const G4Plane3D &cutawayPlane)
G4double GetDolly() const
G4VisCommandViewerAddCutawayPlane()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerAddCutawayPlane()
G4VisCommandViewerCentreOn()
virtual ~G4VisCommandViewerCentreOn()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
G4VisCommandViewerChangeCutawayPlane()
virtual ~G4VisCommandViewerChangeCutawayPlane()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerClearCutawayPlanes()
virtual ~G4VisCommandViewerClearCutawayPlanes()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
G4VisCommandViewerClearTransients()
virtual ~G4VisCommandViewerClearTransients()
G4VisCommandViewerClearVisAttributesModifiers()
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerClearVisAttributesModifiers()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerClear()
virtual ~G4VisCommandViewerClear()
G4String GetCurrentValue(G4UIcommand *command)
G4VisCommandViewerClone()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerClone()
void SetNewValue(G4UIcommand *command, G4String newValue)
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerColourByDensity()
G4VisCommandViewerColourByDensity()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerCopyViewFrom()
G4VisCommandViewerCopyViewFrom()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
G4VisCommandViewerCreate()
virtual ~G4VisCommandViewerCreate()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerDolly()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerDolly()
virtual ~G4VisCommandViewerFlush()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerFlush()
G4String GetCurrentValue(G4UIcommand *command)
G4VisCommandViewerInterpolate()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerInterpolate()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerList()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerPan()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerRebuild()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerRebuild()
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerRefresh()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerRefresh()
G4VisCommandViewerReset()
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerReset()
G4String GetCurrentValue(G4UIcommand *command)
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerSave()
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
virtual ~G4VisCommandViewerScale()
G4VisCommandViewerScale()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerSelect()
G4VisCommandViewerSelect()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VisCommandViewerUpdate()
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerUpdate()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
virtual ~G4VisCommandViewerZoom()
void SetNewValue(G4UIcommand *command, G4String newValue)
G4double GetExtentRadius() const
const G4Point3D & GetExtentCentre() const
G4VViewer * GetCurrentViewer() const
static Verbosity GetVerbosity()
void ResetTransientsDrawnFlags()
void SetVerboseLevel(G4int)
static Verbosity GetVerbosityValue(const G4String &)