diff --git a/ExportThreeJS.cpp b/ExportThreeJS.cpp index fe1da04..0495912 100644 --- a/ExportThreeJS.cpp +++ b/ExportThreeJS.cpp @@ -63,7 +63,7 @@ ExportThreeJS::SetOptions( int nFilter) //---------------------------------------------------------------------------- bool -ExportThreeJS::Export( IGeomDB* pGDB, int nId, const string& sFile, const string& sFileM, IEGrScene* pScene) +ExportThreeJS::Export( IGeomDB* pGDB, int nId, const string& sFile, IEGrScene* pScene) { // verifico il DB geometrico if ( pGDB == nullptr) { @@ -87,14 +87,6 @@ ExportThreeJS::Export( IGeomDB* pGDB, int nId, const string& sFile, const string return false ; } - // apro il file di testo in scrittura - m_WriterM.Close() ; - if ( ! m_WriterM.Init( sFileM)) { - LOG_ERROR( GetEExLogger(), "ExportThreeJS : Error on open file") - return false ; - } - - // prelevo il Box3D globale (per ingombro e punto luce) BBox3d b3Globbox ; pGDB->GetGlobalBBox( nId, b3Globbox, BBF_ONLY_VISIBLE) ; @@ -122,9 +114,6 @@ ExportThreeJS::Export( IGeomDB* pGDB, int nId, const string& sFile, const string if ( ! m_Writer.Close()) bOk = false ; - if (! m_WriterM.Close()) - bOk = false ; - return bOk; } @@ -152,68 +141,66 @@ ExportThreeJS::HeadAmbient( IEGrScene* pScene, IGeomDB* pGDB, int nId) pScene->GetGridParam( &dSnapStep, &nExtStep) ; + m_spath = ""; // <----- da far scegliere all'utente + // scrittura parte iniziale del codice e librerie m_Writer.OutText( "") ; m_Writer.OutText( "") ; - m_Writer.OutText( " ") ; - // librerie - // --- m_Writer.OutText( " ") ; <---- original - // --- m_Writer.OutText( " ") ; <--- original - // --- m_Writer.OutText( " ") ; <--- original - // stile - m_Writer.OutText( " ") ; - // librerie (non moduli) - m_Writer.OutText( " ") ; //jquery - m_Writer.OutText( " ") ; //datGui - - m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; // + m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; + m_Writer.OutText( " "); + m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; + m_Writer.OutText( " "); + m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; + m_Writer.OutText( " ") ; // // body - m_Writer.OutText( " ") ; - m_Writer.OutText( "
") ; + m_Writer.OutText( " ") ; // + m_Writer.OutText( "
") ; + m_Writer.OutText("
") ; + m_Writer.OutText(" ") ; + m_Writer.OutText("
") ; //m_Writer.OutText( "
"); // div di aiuto per controllo parametri telecamera, zoom - m_Writer.OutText( "
") ; // --- m_Writer.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( "") ; - m_WriterM.OutText( "
") ; - m_WriterM.OutText( "") ; - m_WriterM.OutText( "
") ; - m_WriterM.OutText( "
") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( "
") ; - m_WriterM.OutText( " ") ; - m_WriterM.OutText( "
") ; - return true ; } @@ -388,7 +331,6 @@ ExportThreeJS::FinishAmbient() //scorro le superfici trasparenti for ( sSurfDist sCurrSurvDist : m_lTranspSurf) { - m_Writer.OutText( " // ---------------------------------------------------------------------") ; // aggiungo le mesh trasparenti alla mia lista di oggetti e alla scena (front e back) m_Writer.OutText( " list_of_objects.push(front_surf_mesh" + sCurrSurvDist.sName + ");") ; m_Writer.OutText( " list_of_objects.push(back_surf_mesh" + sCurrSurvDist.sName + ");") ; @@ -400,18 +342,11 @@ ExportThreeJS::FinishAmbient() m_Writer.OutText( " {") ; m_Writer.OutText( " scene.add(list_of_objects[i])") ; m_Writer.OutText( " };"); - // controllo menu Gui m_Writer.OutText( " var center;") ; m_Writer.OutText( " var boxCreated = false;") ; m_Writer.OutText( " var box;") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " /*") ; - m_Writer.OutText( " const helper = new THREE.CameraHelper( camera );") ; - m_Writer.OutText( " scene.add( helper );") ; - m_Writer.OutText( " */") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " var controls = {") ; + m_Writer.OutText( " controls = {") ; m_Writer.OutText( " element: null,") ; m_Writer.OutText( " motion : true,") ; m_Writer.OutText( " tar : orbitControls.target,") ; @@ -424,7 +359,7 @@ ExportThreeJS::FinishAmbient() m_Writer.OutText( " camera.lookAt(new THREE.Vector3(" + ToString( m_ptCenter.y) + ", " + ToString( m_ptCenter.z) + ", " + ToString( m_ptCenter.x) + "));") ; m_Writer.OutText( " orbitControls = new OrbitControls(camera, document.getElementById('WebGL-output'));") ; m_Writer.OutText( " orbitControls.autoRotate = controls.motion;") ; - m_Writer.OutText( "") ; + m_Writer.OutText( " orbitControls.target = new THREE.Vector3(" + ToString(m_ptCenter.y) + ", " + ToString(m_ptCenter.z) + ", " + ToString(m_ptCenter.x) + ");") ; m_Writer.OutText( " document.getElementsByClassName('obit-controls-gizmo')[0].remove();") ; m_Writer.OutText( " controlsGizmo = new OrbitControlsGizmo(orbitControls, { size: 100, padding : 8 });") ; m_Writer.OutText( " document.body.appendChild(controlsGizmo.domElement);") ; @@ -432,7 +367,6 @@ ExportThreeJS::FinishAmbient() m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchstart', false);") ; m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchend', false);") ; m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchcancel', false);") ; - m_Writer.OutText( "") ; m_Writer.OutText( " if (boxCreated) {") ; m_Writer.OutText( " box = new THREE.BoxHelper(controls.element, 0xff0000);") ; m_Writer.OutText( " camera.position.y = " + ToString( m_ptMin.y + ( m_dimZ * 1.1)) + ";") ; //115% @@ -440,312 +374,347 @@ ExportThreeJS::FinishAmbient() m_Writer.OutText( " orbitControls.target = center;") ; m_Writer.OutText( " }") ; m_Writer.OutText( " },") ; - m_Writer.OutText( "") ; m_Writer.OutText( " }") ; - // Cerco il parametro dall'url del gruppo da selezionare - m_Writer.OutText( "") ; - m_Writer.OutText( " // Lettura Parametri -------------- url -------") ; - m_Writer.OutText( " const queryString = window.location.search;") ; - m_Writer.OutText( " if (queryString != '') {") ; - m_Writer.OutText( " const urlParams = new URLSearchParams(queryString);") ; - m_Writer.OutText( " const element = urlParams.get('id')") ; - //m_Writer.OutText( " element = element.normalize('NFD').replace(/[\u0300-\u036f]/g, '') ") ; - m_Writer.OutText( " findGroupByNameAndId(groupRoot, element);") ; + m_Writer.OutText( " const queryString = window.location.search;") ; + m_Writer.OutText( " if (queryString != '') {") ; + m_Writer.OutText( " const urlParams = new URLSearchParams(queryString);") ; + m_Writer.OutText( " const element = urlParams.get('id')") ; + m_Writer.OutText( " if (!booked) {") ; + m_Writer.OutText( " booked = true;") ; + m_Writer.OutText( " findGroupByNameAndId(groupRoot, element, 0);") ; m_Writer.OutText( " }") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " // --------------------------------------------") ; - - - // funzione per ricavare un gruppo dato l'ID (name + ID) - m_Writer.OutText( "" ); - m_Writer.OutText( " function findGroupByNameAndId(CurrentGroup, Id) {") ; - m_Writer.OutText( " CurrentGroup.children.forEach(element => {") ; - m_Writer.OutText( " if (element.name == Id) {") ; - // --- m_Writer.OutText( " ScanElements(element, true);") ; <---- original - m_Writer.OutText( " // creo il box per telecamera -----") ; - m_Writer.OutText( " controls.element = element;") ; - m_Writer.OutText( " createBox(element);") ; - m_Writer.OutText( " // ----------------------------------") ; - m_Writer.OutText( " EvidenziaLoadPage(element);") ; - m_Writer.OutText( " trovato = true;"); - m_Writer.OutText( " }") ; - m_Writer.OutText( " if (element.children.length != 0) {") ; - m_Writer.OutText( " findGroupByNameAndId(element, Id);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " });") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " // --------------------------------------------") ; - m_Writer.OutText( "") ; - - // funzione per ricavare il gruppo selezionato dal menu - // --- m_Writer.OutText( " selectElement = function(val) {") ; - // --- m_Writer.OutText(" ScanElements(val, true);"); - // --- m_Writer.OutText( " }") ; - - // funzione per creare il box al gruppo selezionato - m_Writer.OutText( "") ; - m_Writer.OutText( " function createBox(element) {") ; - m_Writer.OutText( " var box = new THREE.BoxHelper(element, 0xff0000);") ; - m_Writer.OutText( " camera.position.y = " + ToString(m_ptMin.y + (m_dimZ * 1.1))+ ";") ; //115% - m_Writer.OutText( " var center = box.geometry.boundingSphere.center;") ; - m_Writer.OutText( " orbitControls.target = center;") ; - m_Writer.OutText(" controls.tar.x = center.x;") ; - m_Writer.OutText(" controls.tar.y = center.y;") ; - m_Writer.OutText(" controls.tar.z = center.z;") ; - m_Writer.OutText(" boxCreated = true;") ; - m_Writer.OutText(" }"); - m_Writer.OutText(" // --------------------------------------------"); - m_Writer.OutText( "") ; - - // creazione del menu Gui - m_Writer.OutText( " var gui = new dat.GUI({ width: 200 });") ; - m_Writer.OutText( " gui.add(controls, 'motion').name('Rotation');") ; - m_Writer.OutText( " gui.add(controls, 'reset').name('Reset camera');") ; - m_Writer.OutText( " document.getElementsByClassName('dg main a')[0].style.marginRight = '0px';") ; - m_Writer.OutText(" // --------------------------------------------") ; - - // funzione per evidenziare un gruppo selezionato (per timer) 0xFBF719 - m_Writer.OutText( "") ; - m_Writer.OutText( " function EnlightGroup(SelGroup) {") ; - m_Writer.OutText( " if (SelGroup !== null) {"); - m_Writer.OutText( " SelGroup.children.forEach(element => {") ; - m_Writer.OutText( " if (!(element instanceof THREE.Group)) {") ; - m_Writer.OutText( " if (element instanceof THREE.Line) { //linea") ; - m_Writer.OutText( " element.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Mesh) { //mesh") ; - m_Writer.OutText( " element.material.color = new THREE.Color(0x00ff00);") ; - m_Writer.OutText( " element.material.emissive = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " element.material.emissiveIntensity = 1.2;") ; - m_Writer.OutText( " element.material.transparent = false;") ; - m_Writer.OutText( " element.material.opacity = 1;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Points) { //punto") ; - m_Writer.OutText( " element.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Vector3) { //vettore") ; - m_Writer.OutText( " element.line.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " element.cone.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Object3D) { //frame") ; - m_Writer.OutText( " element.line.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " element.cone.material.color = new THREE.Color(0xFBF719);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else {") ; - m_Writer.OutText( " EnlightGroup(element);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " });") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " // --------------------------------------------") ; - m_Writer.OutText( "") ; - - // funzione per riportare il colore del gruppo selezionato a quello originale (per timer) - m_Writer.OutText( "") ; - m_Writer.OutText( " function GetColorBack(SelGroup) {") ; - m_Writer.OutText( " if (SelGroup !== null) {") ; - m_Writer.OutText( " SelGroup.children.forEach(element => {") ; - m_Writer.OutText( " if (!(element instanceof THREE.Group)) {") ; - m_Writer.OutText( " if (element instanceof THREE.Line) { //linea") ; - m_Writer.OutText( " element.material.color = element.material.oldColor;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Mesh) { //mesh") ; - m_Writer.OutText( " element.material.color = element.material.oldColor;") ; - m_Writer.OutText( " element.material.emissive = new THREE.Color(0x000000);") ; - m_Writer.OutText( " element.material.emissiveIntensity = 1;") ; - m_Writer.OutText( " if (element.material.wasTransparent) {") ; - m_Writer.OutText( " element.material.transparent = true;") ; - m_Writer.OutText( " element.material.opacity = element.material.hadOpacity;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Points) { //punto") ; - m_Writer.OutText( " element.material.color = element.material.oldColor;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Vector3) { //vettore") ; - m_Writer.OutText( " element.line.material.color = element.oldColor;") ; - m_Writer.OutText( " element.cone.material.color = element.oldColor; ") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (element instanceof THREE.Object3D) { //frame") ; - m_Writer.OutText( " element.line.material.color = element.oldColor;") ; - m_Writer.OutText( " element.cone.material.color = element.oldColor;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else {") ; - m_Writer.OutText( " GetColorBack(element);") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " });") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " // --------------------------------------------") ; - m_Writer.OutText( "") ; - - // funzione per tenere evidenziato il gruppo selezionato (funzione con il timer) - m_Writer.OutText( "") ; - m_Writer.OutText( " function EvidenziaLoadPage(ChoosenGroup) {") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " if (ChoosenGroup === null) {") ; - m_Writer.OutText( " return;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " var i = 0;") ; - m_Writer.OutText( " var YellowSet = false;") ; - m_Writer.OutText( " var OrigColSet = false;") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " function animation() {") ; - m_Writer.OutText( " var timer = setTimeout(function() {") ; - m_Writer.OutText( " i++;") ; - m_Writer.OutText( " //console.log(i); //delete it") ; - m_Writer.OutText( " if (!YellowSet && i < 10)") ; - m_Writer.OutText( " {") ; - m_Writer.OutText( " // coloro di giallo !!!") ; - m_Writer.OutText( " EnlightGroup(ChoosenGroup);") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " YellowSet = true;") ; - m_Writer.OutText( " OrigColSet = false;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (!OrigColSet && (i >= 10 && i < 20))") ; - m_Writer.OutText( " {") ; - m_Writer.OutText( " // riporto i colori originali ") ; - m_Writer.OutText( " GetColorBack(ChoosenGroup);") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " YellowSet = false;") ; - m_Writer.OutText( " OrigColSet = true;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " else if (i == 20)") ; - m_Writer.OutText( " {") ; - m_Writer.OutText( " i = 0;") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " animation();") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " }, 25); //1.5 seconds test") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " animation(); // prima chimata") ; - m_Writer.OutText( "") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " // --------------------------------------------") ; - m_Writer.OutText( "") ; - - // funzione per riportare il colore del gruppo selezionato a quello originale - // --- m_Writer.OutText(" GetColorBack = function(SelGroup) {") ; - // --- m_Writer.OutText(" if (SelGroup != = null) {") ; - // --- m_Writer.OutText(" SelGroup.children.forEach(element => {") ; - // --- m_Writer.OutText(" if (!(element instanceof THREE.Group)) {") ; - // --- m_Writer.OutText(" if (element instanceof THREE.Line) { //linea") ; - // --- m_Writer.OutText(" element.material.color = element.material.oldColor;") ; - // --- m_Writer.OutText(" }") ; - // --- m_Writer.OutText(" else if (element instanceof THREE.Mesh) { //mesh") ; - // --- m_Writer.OutText(" element.material.color = element.material.oldColor;"); - // --- m_Writer.OutText(" }") ; - // --- m_Writer.OutText(" else if (element instanceof THREE.Points) { //punto"); - // --- m_Writer.OutText(" element.material.color = element.material.oldColor;"); - // --- m_Writer.OutText(" }"); - // --- m_Writer.OutText(" else if (element instanceof THREE.Vector3) { //vettore"); - // --- m_Writer.OutText(" element.line.material.color = element.oldColor;"); - // --- m_Writer.OutText(" element.cone.material.color = element.oldColor;"); - // --- m_Writer.OutText(" }"); - // --- m_Writer.OutText(" else if (element instanceof THREE.Object3D) { //frame"); - // --- m_Writer.OutText(" element.line.material.color = element.oldColor;"); - // --- m_Writer.OutText(" element.cone.material.color = element.oldColor;"); - // --- m_Writer.OutText(" }"); - // --- m_Writer.OutText(" }"); - // --- m_Writer.OutText(" else {"); - // --- m_Writer.OutText(" GetColorBack(element);"); - // --- m_Writer.OutText(" }"); - // --- m_Writer.OutText(" });"); - // --- m_Writer.OutText(" };"); - // --- m_Writer.OutText(" }"); - - // funzione per evidenziare gli elementi dei un gruppo - // ---m_Writer.OutText( " ScanElements = function(SelGroup, c) {") ; - // ---m_Writer.OutText( " if(c){") ; - // ---m_Writer.OutText( " if (!first) {") ; - // ---m_Writer.OutText( " GetColorBack(LastGroupSelected);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " first = false;") ; - // ---m_Writer.OutText( " LastGroupSelected = SelGroup;") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " SelGroup.children.forEach(element => {") ; - // ---m_Writer.OutText( " if (!(element instanceof THREE.Group)) {") ; - // ---m_Writer.OutText( " if (element instanceof THREE.Line) { //linea") ; - // ---m_Writer.OutText( " element.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " else if (element instanceof THREE.Mesh) { //mesh") ; - // ---m_Writer.OutText( " element.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " else if (element instanceof THREE.Points) { //punto") ; - // ---m_Writer.OutText( " element.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " }"); - // ---m_Writer.OutText( " else if (element instanceof THREE.Vector3) { //vettore") ; - // ---m_Writer.OutText( " element.line.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " element.cone.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " else if (element instanceof THREE.Object3D) { //frame") ; - // ---m_Writer.OutText( " element.line.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " element.cone.material.color = new THREE.Color(0xFBF719);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " else {") ; - // ---m_Writer.OutText( " ScanElements(element, false);") ; - // ---m_Writer.OutText( " }") ; - // ---m_Writer.OutText( " });") ; - // ---m_Writer.OutText( " }") ; - - // funzione render per la scena - m_Writer.OutText( " function renderScene() {") ; - //m_Writer.OutText( "const div = document.getElementById('zoom_test');"); // div per controllo parametri - //m_Writer.OutText( "div.textContent = " + ToString( m_dDistance) +";") ; // div per controllo parametri - - m_Writer.OutText( " var delta = clock.get") ; - m_Writer.OutText( " orbitControls.update(zoom, " + ToString( m_dHalfWidth/2)+ ", " + ToString( m_dHalfHeight/2) + ");") ; // aggiornamento telecamera - // --- m_Writer.OutText( " camera.zoom = zoom;") ; <---- original - m_Writer.OutText( " orbitControls.autoRotate = controls.motion;") ; - m_Writer.OutText( " camera.zoom = zoom + orbitControls.ComputedZoom - 1;") ; - m_Writer.OutText( " camera.updateProjectionMatrix();") ; // aggiornamento matrice di proiezione su piano Near di clipping - m_Writer.OutText( " requestAnimationFrame(renderScene);") ; - m_Writer.OutText( " renderer.render(scene, camera);") ; - m_Writer.OutText( " }") ; - - // aggiungo il canvas alla pagina html con la mia scena - m_Writer.OutText( " document.getElementById('WebGL-output').appendChild(renderer.domElement);") ; - m_Writer.OutText( " document.body.appendChild(controlsGizmo.domElement);") ; - m_Writer.OutText( " renderScene();") ; - m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchmove', false);") ; - m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchstart', false);") ; - m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchend', false);") ; - m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchcancel', false);") ; m_Writer.OutText( " }") ; + // creazione del menu Gui + m_Writer.OutText( " var gui = new dat.GUI({ width: 200 });") ; + m_Writer.OutText( " gui.add(controls, 'motion').name('Rotation');") ; + m_Writer.OutText( " gui.add(controls, 'reset').name('Reset camera');") ; + m_Writer.OutText( " document.getElementsByClassName('dg main a')[0].style.marginRight = '0px';") ; + // funzione render per la scena + m_Writer.OutText( " function renderScene() {") ; + //m_Writer.OutText( " orbitControls.update(zoom, " + ToString( m_dHalfWidth / 2) + ", " + ToString( m_dHalfHeight / 2) + ");") ; // aggiornamento telecamera + m_Writer.OutText( " orbitControls.update();") ; + m_Writer.OutText( " orbitControls.autoRotate = controls.motion;") ; + m_Writer.OutText( " camera.zoom = zoom + orbitControls.ComputedZoom - 1;") ; + m_Writer.OutText( " camera.updateProjectionMatrix();") ; // aggiornamento matrice di proiezione su piano Near di clipping + m_Writer.OutText( " requestAnimationFrame(renderScene);") ; + m_Writer.OutText( " renderer.setSize(window.screen.availWidth, window.screen.availHeight);") ; + m_Writer.OutText( " renderer.render(scene, camera);") ; + m_Writer.OutText( " }"); + // applico il render al div #WEBGL-output + m_Writer.OutText( " document.getElementById('WebGL-output').appendChild(renderer.domElement);") ; + // imposto l'altezza massima del menu laterale sinistro + m_Writer.OutText( " document.querySelector('#contMenu').style.maxHeight = (window.screen.availHeight - 175) + 'px'; ") ; + // imposto la lunghezza e l'altezza del canvas al 100% dello schermo + m_Writer.OutText( " document.getElementsByTagName('canvas')[0].style.width = '100vw';") ; + m_Writer.OutText( " document.getElementsByTagName('canvas')[0].style.height = '100vh';") ; + // applico il cotroller OrbitControlGizmo in basso a destra + m_Writer.OutText( " document.body.appendChild(controlsGizmo.domElement);") ; + // chiamo il render della scena + m_Writer.OutText( " renderScene();") ; + // blocco i comandi Gizmo da tablet + m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchmove', false);") ; + m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchstart', false);") ; + m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchend', false);") ; + m_Writer.OutText( " $('.obit-controls-gizmo').bind('touchcancel', false);") ; + m_Writer.OutText( " Updatebadge(groupRoot, -1);") ; + m_Writer.OutText( " }"); // chiusura della funzione di init() + + // DICHIARAZIONE DI TUTTE LE FUNZIONI UTILIZZATE NELLA INIT() DELLA SCENA + + + // 1) funzione Updatebadge + // - obj: aggiornare i badge nel menu di sinistra + // - par: gruppo da cui iniziare la ricerca, id della radice (per contare i figli del gruppo e aggiornare il numero correttamente) + m_Writer.OutText( " function Updatebadge(CurrentGroup, Id_sup) {") ; + m_Writer.OutText( " CurrentGroup.children.forEach(element => {") ; + m_Writer.OutText( " if(element.children.length != 0 && element.type == 'Group') {") ; + m_Writer.OutText( " var i = 0;") ; + m_Writer.OutText( " for (var j = 0; j < element.children.length; j++) {") ; + m_Writer.OutText( " if (element.children[j].type == 'Group') {") ; + m_Writer.OutText( " i++;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " if(i != 0) {") ; + m_Writer.OutText( " document.getElementById('s_id_' + element.name).innerHTML = '' + i;") ; + m_Writer.OutText( " document.getElementById('ss_id_' + element.name).classList.add('fw-bold');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " Updatebadge(element, element.id);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " });") ; + m_Writer.OutText( " }") ; + + // 2) funzione findGroupByNameAndId + // - obj: trova il gruppo dato il suo id + // - par: gruppo da cui iniziare la ricerca, id, n = (0 o 1) | 0 -> id selezionato da URL e 1 -> id selezionato da MENU LATERALE + m_Writer.OutText( " function findGroupByNameAndId(CurrentGroup, Id, n) {") ; + m_Writer.OutText( " CurrentGroup.children.forEach(element => {") ; + m_Writer.OutText( " if (element.name == Id && element.children.length != 0) {") ; + m_Writer.OutText( " if (LastSelectedGroup == null) {") ; + m_Writer.OutText( " LastGroupSelected = element;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " LastGroupSelected = CurrentSelectedGroup") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " CurrentSelectedGroup = element;") ; + m_Writer.OutText( " if (n == 0) {") ; + m_Writer.OutText( " controls.element = element;") ; + m_Writer.OutText( " createBox(element);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText(" booked = true;"); + m_Writer.OutText( " EvidenziaLoadPage(element);") ; + m_Writer.OutText( " trovato = true;"); + m_Writer.OutText( " }") ; + m_Writer.OutText( " if (element.children.length != 0) {") ; + m_Writer.OutText( " findGroupByNameAndId(element, Id, n);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " });") ; + m_Writer.OutText( " }") ; + + // 3) funzione per creare il box per centrare l'elemento il cui Id è nell'URL + // - obj: crea il box attorno al gruppo selezionato + // - par: il gruppo + m_Writer.OutText( " function createBox(element) {") ; + m_Writer.OutText( " var box = new THREE.BoxHelper(element, 0xff0000);") ; + m_Writer.OutText( " camera.position.y = 2761.842488;") ; + m_Writer.OutText( " if (box.geometry.boundingSphere != null) {") ; + m_Writer.OutText( " var center = box.geometry.boundingSphere.center;") ; + m_Writer.OutText( " orbitControls.target = center;") ; + m_Writer.OutText( " controls.tar.x = center.x;") ; + m_Writer.OutText( " controls.tar.y = center.y;") ; + m_Writer.OutText( " controls.tar.z = center.z;") ; + m_Writer.OutText( " boxCreated = true;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + + // 4) funzione per evidenziare il gruppo selezionato (per il timer) + // - obj: evidenziare il gruppo (e i vari sottogruppi), togliendo le trasparenze durante l'evidenziatura + // - par: il gruppo + m_Writer.OutText( " function EnlightGroup(SelGroup) {") ; + m_Writer.OutText( " if (SelGroup !== null) {"); + m_Writer.OutText( " SelGroup.children.forEach(element => {") ; + m_Writer.OutText( " if (!(element instanceof THREE.Group)) {") ; + m_Writer.OutText( " if (element instanceof THREE.Line) { //linea") ; + m_Writer.OutText( " element.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Mesh) { //mesh") ; + m_Writer.OutText( " element.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " element.material.emissive = new THREE.Color(0x0000ff);") ; + m_Writer.OutText( " element.material.emissiveIntensity = 1.2;") ; + m_Writer.OutText( " element.material.transparent = false;") ; + m_Writer.OutText( " element.material.opacity = 1;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Points) { //punto") ; + m_Writer.OutText( " element.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Vector3) { //vettore") ; + m_Writer.OutText( " element.line.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " element.cone.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Object3D) { //frame") ; + m_Writer.OutText( " element.line.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " element.cone.material.color = new THREE.Color(0x0275D8);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " EnlightGroup(element);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " });") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + + // 5) funzione per riportare il colore del gruppo selezionato a quello originale (per il timer) + // - obj: riportare il gruppo (e i vari sottogruppi) ai colori originali, risportando le trasparenze a quelle originali + // - par: il gruppo + m_Writer.OutText( " function GetColorBack(SelGroup) {") ; + m_Writer.OutText( " if (SelGroup !== null) {") ; + m_Writer.OutText( " SelGroup.children.forEach(element => {") ; + m_Writer.OutText( " if (!(element instanceof THREE.Group)) {") ; + m_Writer.OutText( " if (element instanceof THREE.Line) { //linea") ; + m_Writer.OutText( " element.material.color = element.material.oldColor;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Mesh) { //mesh") ; + m_Writer.OutText( " element.material.color = element.material.oldColor;") ; + m_Writer.OutText( " element.material.emissive = new THREE.Color(0x000000);") ; + m_Writer.OutText( " element.material.emissiveIntensity = 1;") ; + m_Writer.OutText( " if (element.material.wasTransparent) {") ; + m_Writer.OutText( " element.material.transparent = true;") ; + m_Writer.OutText( " element.material.opacity = element.material.hadOpacity;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Points) { //punto") ; + m_Writer.OutText( " element.material.color = element.material.oldColor;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Vector3) { //vettore") ; + m_Writer.OutText( " element.line.material.color = element.oldColor;") ; + m_Writer.OutText( " element.cone.material.color = element.oldColor; ") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (element instanceof THREE.Object3D) { //frame") ; + m_Writer.OutText( " element.line.material.color = element.oldColor;") ; + m_Writer.OutText( " element.cone.material.color = element.oldColor;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " GetColorBack(element);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " });") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + + // 6) funzione per mostrare il gruppo lampeggiare (funzione con il timer, 3 secondi) + // - obj: evidenziare il gruppo per 0.5 secondi e poi riportarlo all'orginale per altri 0.5 secondi (questa procedure viene ripetuta per 3 volte, per una durata complessiva di 3 secondi) + // - par: il gruppo + m_Writer.OutText( " function EvidenziaLoadPage(ChoosenGroup) {") ; + m_Writer.OutText( " if (ChoosenGroup === null) {") ; + m_Writer.OutText( " return;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " ControlMenu(true, ChoosenGroup.name, 'grey');") ; + m_Writer.OutText( " var i = 0;") ; + m_Writer.OutText( " var j = 0;") ; + m_Writer.OutText( " var YellowSet = false;") ; + m_Writer.OutText( " var OrigColSet = false;") ; + m_Writer.OutText( " function animation() {") ; + m_Writer.OutText( " var timer = setTimeout(function() {") ; + m_Writer.OutText( " i++;") ; + m_Writer.OutText( " j++;") ; + m_Writer.OutText( " if (!YellowSet && i == 1)") ; + m_Writer.OutText( " {") ; + m_Writer.OutText( " EnlightGroup(ChoosenGroup);") ; + m_Writer.OutText( " YellowSet = true;") ; + m_Writer.OutText( " OrigColSet = false;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else if (!OrigColSet && i == 2)") ; + m_Writer.OutText( " {") ; + m_Writer.OutText( " GetColorBack(ChoosenGroup);") ; + m_Writer.OutText( " YellowSet = false;") ; + m_Writer.OutText( " OrigColSet = true;") ; + m_Writer.OutText( " i = 0") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " if (j < 6) {") ; + m_Writer.OutText( " animation();") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " clearTimeout(timer);") ; + m_Writer.OutText( " ControlMenu(false, ChoosenGroup.name, 'grey');") ; + m_Writer.OutText( " booked = false;") ; + m_Writer.OutText( " timer = 0;") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }, 500);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " animation();") ; + m_Writer.OutText( " }") ; + + // 7) funzione per gestire il menu di sinistra durante la selezione + // - obj: evidenziare il gruppo nel menu selezionato e disabilitare gli altri + // - par: ToBlock (T -> inizio selezione | F -> fine selezione), id del gruppo selezionato, colore + m_Writer.OutText( " function ControlMenu(toBlock, id, col) {") ; + m_Writer.OutText( " for (var i = 0; i < document.getElementsByName('btMenu').length; i++) {") ; + m_Writer.OutText( " if (document.getElementsByName('btMenu')[i].id.substr(5, document.getElementsByName('btMenu')[i].id.length) != id) {") ; + m_Writer.OutText( " if (toBlock) {") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.add('disabled');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.remove('disabled');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " if (toBlock) {") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.remove('list-group-item-dark');") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.add('bg-primary');") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.add('disabled');") ; + m_Writer.OutText( " document.getElementById('ss_id_' + id).style.color = '#ffffff';") ; + m_Writer.OutText( " document.getElementById('s_col_' + id).style.color = '#ffffff';") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.remove('bg-primary');") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.add('list-group-item-dark');") ; + m_Writer.OutText( " document.getElementsByName('btMenu')[i].classList.remove('disabled');") ; + m_Writer.OutText( " document.getElementById('ss_id_' + id).style.color = '#000000';") ; + m_Writer.OutText( " document.getElementById('s_col_' + id).style.color = '#000000';") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " for (var i = 0; i < document.getElementsByName('badgeMenu').length; i++) {") ; + m_Writer.OutText( " if (document.getElementsByName('badgeMenu')[i].id.substr(5, document.getElementsByName('badgeMenu')[i].id.length) != id) {") ; + m_Writer.OutText( " if (toBlock) {") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('bg-dark');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('bg-secondary');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('bg-secondary');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('bg-dark');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " if (toBlock) {") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('bg-dark')") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('bg-primary');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('border');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('border-light');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('bg-primary');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.add('bg-dark');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('border');") ; + m_Writer.OutText( " document.getElementsByName('badgeMenu')[i].classList.remove('border-light');") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " for (var i = 0; i < document.getElementsByName('s_col_ora').length; i++) {") ; + m_Writer.OutText( " if (document.getElementsByName('s_col_ora')[i].id.substr(6, document.getElementsByName('s_col_ora')[i].id.length) != id) {") ; + m_Writer.OutText( " if (toBlock) {") ; + m_Writer.OutText( " document.getElementsByName('s_col_ora')[i].style.color = 'grey';") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " else {") ; + m_Writer.OutText( " document.getElementsByName('s_col_ora')[i].style.color = 'black';") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " }") ; // funzione resize della pagina - m_Writer.OutText( " function onResize() {") ; - m_Writer.OutText( " camera.aspect = window.innerWidth / window.innerHeight;") ; - m_Writer.OutText( " camera.updateProjectionMatrix();") ; - m_Writer.OutText( " renderer.setSize(window.innerWidth, window.innerHeight);") ; - m_Writer.OutText( " }") ; + m_Writer.OutText( " function onResize() {") ; + m_Writer.OutText( " renderer.setSize(window.screen.availWidth, window.screen.availHeight);") ; + m_Writer.OutText( " }") ; //funzione per lo zoom della pagina - m_Writer.OutText( " function zoomView(){") ; - m_Writer.OutText( " zoom += event.wheelDeltaY * 0.00025;") ; - m_Writer.OutText( " zoom = Math.max( Math.min( zoom, 10000000 ), 0.00000001);") ; - m_Writer.OutText( " };") ; + m_Writer.OutText( " function zoomView(){") ; + m_Writer.OutText( " if (document.getElementsByTagName('canvas')[0] === document.elementFromPoint(event.clientX, event.clientY)) {") ; + m_Writer.OutText( " zoom += event.wheelDeltaY * 0.00025;") ; + m_Writer.OutText( " zoom = Math.max(Math.min(zoom, 10000000), 0.00000001);") ; + m_Writer.OutText( " }") ; + m_Writer.OutText( " };") ; // richiamo della funzione init() e dichiarazione degli eventi in javascript per controllo della scena - m_Writer.OutText( " window.onload = init") ; - // m_Writer.OutText( " window.addEventListener('resize', onResize, false);") ; - m_Writer.OutText( " window.addEventListener('wheel', zoomView, false);") ; + m_Writer.OutText( " window.onload = init") ; + m_Writer.OutText( " window.addEventListener('wheel', zoomView, false);") ; + m_Writer.OutText( " window.addEventListener('resize', onResize, false);") ; m_Writer.OutText( " ") ; + // script per pulsante del menu laterale + m_Writer.OutText( " ") ; + m_Writer.OutText( "") ; + // codice html per la creazione del menu laterale + m_Writer.OutText( " ") ; m_Writer.OutText( " ") ; m_Writer.OutText( "") ; - - - // Termino scrittura del File del Menu - m_WriterM.OutText( " ") ; - m_WriterM.OutText( "") ; - return true ; } @@ -1410,39 +1379,44 @@ ExportThreeJS::ScanGroup( const IGdbIterator& iIter, IGeomDB* pGDB, const int nG m_Writer.OutText( " const group" + ToString( m_nGroupCount) + " = new THREE.Group();") ; if (nGroupCount != -1) - m_WriterM.OutText("
    "); - else - m_WriterM.OutText( "
      ") ; - //m_WriterM.OutText( "
      ") ; //<--- + m_sCodMenu += "
        "; + //else + // m_WriterM.OutText( "
          ") ; + string sName ; pIter->GetName(sName); - for ( int i = 0; sName[i] != '\0'; i++) // sostituisco gli spazi con underscore + /* + for (int i = 0; sName[i] != '\0'; i++) // sostituisco gli spazi con underscore { if (sName[i] == ' ') sName[i] = '_'; } sName += "_" + ToString(pIter->GetId()); + */ string sId = ToString(pIter->GetId()) ; m_Writer.OutText( " group" + ToString( m_nGroupCount) + ".name = '" + sId + "'") ; - //m_Writer.OutText( " group" + ToString(m_nGroupCount) + ".name = group" + ToString(m_nGroupCount) + ".name.normalize('NFD').replace(/[\u0300-\u036f]/g, '')"); - //m_WriterM.OutText(" " + sName + ""); //<--- + // aggiung l'EventListner per il menù laterale sinistro + m_Writer.OutText( " document.getElementById('p_id_" + sId + "').addEventListener('click', function(){ if(!booked) { findGroupByNameAndId(groupRoot, " + sId + ", 1); }});") ; if (!sId.compare("0")) { - m_WriterM.OutText( " Basic ") ; + m_sCodMenu += ""; } else { - m_WriterM.OutText(" " + sName + " "); + m_sCodMenu += "" ; } - if (nGroupCount != -1 && m_nGroupCount != nGroupCount) { - // --- m_Writer.OutText(" var gui" + ToString(m_nGroupCount) + "= gui" + ToString(nGroupCount) + ".addFolder('" + sName + "');"); - } - - int nCurrentGroup = m_nGroupCount; for (bool bNext = pIter->GoToFirstInGroup( iIter) ; @@ -1456,22 +1430,10 @@ ExportThreeJS::ScanGroup( const IGdbIterator& iIter, IGeomDB* pGDB, const int nG if (nGroupCount != -1) { m_Writer.OutText( " group" + ToString(nGroupCount) + ".add(group" + ToString( nCurrentGroup) + ")"); - //m_WriterM.OutText( "
      ") ; - m_WriterM.OutText( "
    ") ; //<--- - - /* - if (!pIter->GetName(sName)) { - sName = "Layer" + ToString(pIter->GetId()); - } - */ - - /* <--- original - m_Writer.OutText( " var settings" + ToString( nCurrentGroup) + " = {") ; - m_Writer.OutText( " 'S_Group" + ToString( nCurrentGroup)+ "' : function() { selectElement(group" + ToString( nCurrentGroup) + ") }") ; - m_Writer.OutText( " }") ; - m_Writer.OutText( " gui" + ToString( nGroupCount) + ".add(settings" + ToString( nCurrentGroup) + ", 'S_Group" + ToString( nCurrentGroup) + "').name('" + sName + "')") ; - */ + } + + m_sCodMenu += "
"; return bOk ; } @@ -1496,14 +1458,3 @@ ExportThreeJS::TestFilter( int nLev, int nMode, int nStat) return true ; } - - - - - - - - - - - diff --git a/ExportThreeJS.h b/ExportThreeJS.h index aae95d1..a8eb7f4 100644 --- a/ExportThreeJS.h +++ b/ExportThreeJS.h @@ -35,7 +35,7 @@ class ExportThreeJS : public IExportThreeJS { public: virtual bool SetOptions(int nFilter); - virtual bool Export(IGeomDB* pGDB, int nId, const std::string& sFile, const std::string& sFileM, IEGrScene* pScene); + virtual bool Export(IGeomDB* pGDB, int nId, const std::string& sFile, IEGrScene* pScene); public: ExportThreeJS(void) : m_nFilter(EEXFLT_DEFAULT) {} @@ -60,7 +60,6 @@ private: private: int m_nFilter; // filtro su livello, modo e stato Writer m_Writer; // scrittore di file di testo oggetto - Writer m_WriterM; // scritto di file di testo menu Point3d m_ptMin; // punto minimo del box3d double m_dimX; // dimX Box3d Global double m_dimY; // dimY Box3d Global @@ -77,4 +76,6 @@ private: Frame3d m_frTHREEJSFrame; // frame di ThreeJS std::list< sSurfDist> m_lTranspSurf; // Lista di superfici trasparenti int m_nGroupCount = -1; // Contatore del gruppo + std::string m_sCodMenu; // Stringa per la creazione del menu laterale della scena + std::string m_spath; // Path dove salvare il file };