|
706 | 706 | JSROOT.TGeoPainter.prototype.drawNode = function(scene, toplevel, node, visible) { |
707 | 707 | var container = toplevel; |
708 | 708 | var volume = node['fVolume']; |
| 709 | + if (visible==0) return; // cut all volumes below 0 level |
709 | 710 |
|
710 | 711 | var translation_matrix = [0, 0, 0]; |
711 | 712 | var rotation_matrix = null;//[1, 0, 0, 0, 1, 0, 0, 0, 1]; |
|
961 | 962 |
|
962 | 963 | var dom = this.select_main().node(); |
963 | 964 |
|
964 | | - if (opt == 'count') { |
| 965 | + var maxlvl = opt=="all" ? 9999 : -1; |
| 966 | + |
| 967 | + if ((opt == 'count') || (opt == 'limit')) { |
965 | 968 | var arr = []; |
966 | 969 | for (var lvl=0;lvl<100;++lvl) arr.push(0); |
967 | 970 |
|
968 | 971 | var cnt = this.CountVolumes(this._geometry, 0, arr); |
969 | 972 |
|
970 | | - var res = 'Total number: ' + cnt + '<br/>'; |
971 | | - for (var lvl=0;lvl<arr.length;++lvl) { |
972 | | - if (arr[lvl] !== 0) |
973 | | - res += (' lvl' + lvl + ': ' + arr[lvl] + '<br/>'); |
| 973 | + if (opt == 'count') { |
| 974 | + var res = 'Total number: ' + cnt + '<br/>'; |
| 975 | + for (var lvl=0;lvl<arr.length;++lvl) { |
| 976 | + if (arr[lvl] !== 0) |
| 977 | + res += (' lvl' + lvl + ': ' + arr[lvl] + '<br/>'); |
| 978 | + } |
| 979 | + |
| 980 | + dom.innerHTML = res; |
| 981 | + return this.DrawingReady(); |
| 982 | + } |
| 983 | + |
| 984 | + var sum = 0; |
| 985 | + for (var lvl=1;lvl<arr.length;++lvl) { |
| 986 | + sum += arr[lvl]; |
| 987 | + if (sum > 10000) { |
| 988 | + maxlvl = lvl - 1; |
| 989 | + console.log('set level on ' + maxlvl); |
| 990 | + break; |
| 991 | + } |
974 | 992 | } |
975 | 993 |
|
976 | | - dom.innerHTML = res; |
977 | | - return this.DrawingReady(); |
978 | 994 | } |
979 | 995 |
|
980 | 996 | // three.js 3D drawing |
|
1033 | 1049 | visible: false, transparent: true, opacity: 0.0 } ) ); |
1034 | 1050 | toplevel.add(cube); |
1035 | 1051 |
|
1036 | | - this.drawNode(this._scene, cube, { _typename:"TGeoNode", fVolume:this._geometry, fName:"TopLevel" }, opt=="all" ? 9999 : 0); |
| 1052 | + this.drawNode(this._scene, cube, { _typename:"TGeoNode", fVolume:this._geometry, fName:"TopLevel" }, maxlvl); |
1037 | 1053 |
|
1038 | 1054 | top.computeBoundingBox(); |
1039 | 1055 | var overall_size = 3 * Math.max( Math.max(Math.abs(top.boundingBox.max.x), Math.abs(top.boundingBox.max.y)), |
|
1419 | 1435 | return true; |
1420 | 1436 | } |
1421 | 1437 |
|
1422 | | - JSROOT.addDrawFunc({ name: "TGeoVolumeAssembly", icon: 'img_geoassembly', func: JSROOT.Painter.drawGeometry, expand: "JSROOT.expandGeoVolume", painter_kind : "base", opt : "all;count;" }); |
| 1438 | + JSROOT.addDrawFunc({ name: "TGeoVolumeAssembly", icon: 'img_geoassembly', func: JSROOT.Painter.drawGeometry, expand: "JSROOT.expandGeoVolume", painter_kind : "base", opt : "all;count;limit;" }); |
1423 | 1439 |
|
1424 | 1440 |
|
1425 | 1441 | return JSROOT.Painter; |
|
0 commit comments