From 0689e7df19c2fb268d4eb74675811f5a2ebb6719 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Tue, 25 Oct 2022 17:13:39 +0200 Subject: [PATCH] EgtExchange : - Correzione orientamento frame e vettori - Modifica al groupRoot di ThreeJS - Correzione cambio coordinate tra sistemi differenti. --- ExportThreeJS.cpp | 85 ++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/ExportThreeJS.cpp b/ExportThreeJS.cpp index f4ea8d8..a8d5031 100644 --- a/ExportThreeJS.cpp +++ b/ExportThreeJS.cpp @@ -1348,7 +1348,7 @@ ExportThreeJS::FinishAmbient( void) m_Writer.OutText( " document.getElementsByTagName('canvas')[0].style.height = '100vh';") ; // chiamo il render della scena m_Writer.OutText( " renderScene();") ; - m_Writer.OutText( " Updatebadge(groupRoot, -1);") ; + m_Writer.OutText( " Updatebadge(groupRoot.children[0], -1);") ; // dal gruppo esportato da EGTCAM5 m_Writer.OutText( " document.getElementsByTagName('canvas')[0].setAttribute('id', 'CScena');") ; m_Writer.OutText( " document.getElementById('CScena').addEventListener('mouseover', (event) => {") ; m_Writer.OutText( " if (GLOB_DIST) {") ; @@ -1824,7 +1824,7 @@ ExportThreeJS::FinishAmbient( void) m_Writer.OutText( " getGroupByuuid(groupRoot.children[0], intersects[0].object.uuid);") ; m_Writer.OutText( " for (var i = 0; i < groupRoot.children[0].children.length; i++) {") ; m_Writer.OutText( " bSel = false;") ; - m_Writer.OutText( " getObj(groupRoot.children[0].children[i], SelectedCurrG.name)") ; + m_Writer.OutText( " getObj(groupRoot.children[0].children[i], intersects[0].object.uuid)") ; m_Writer.OutText( " if (bSel) {"); m_Writer.OutText( " SelectedObject_id = groupRoot.children[0].children[i].name;") ; m_Writer.OutText( " entrato = true;") ; @@ -1868,15 +1868,15 @@ ExportThreeJS::FinishAmbient( void) m_Writer.OutText( " }") ; // 12) funzione getObj - // - obj: dato un gruppo e un Id, capire se l'id è contenuto nel gruppo e nei suoi sottogruppi - // - par: il gruppo da cui iniziare e l'id - m_Writer.OutText( " function getObj(obj, n) {") ; + // - obj: dato un gruppo e un uuid, capire se l'uuid è contenuto nel gruppo e nei suoi sottogruppi + // - par: il gruppo da cui iniziare e l'uuid + m_Writer.OutText( " function getObj(obj, uuid) {") ; m_Writer.OutText( " obj.children.forEach(e => {") ; - m_Writer.OutText( " if (e.name == n) {") ; + m_Writer.OutText( " if (e.uuid == uuid) {") ; m_Writer.OutText( " bSel = true;") ; m_Writer.OutText( " }") ; m_Writer.OutText( " else {") ; - m_Writer.OutText( " getObj(e, n);") ; + m_Writer.OutText( " getObj(e, uuid);") ; m_Writer.OutText( " }") ; m_Writer.OutText( " });") ; m_Writer.OutText( " }") ; @@ -2593,10 +2593,10 @@ ExportThreeJS::ExportVector3D( const string& sName, const IGeoObj* pGeoObj, cons m_Writer.OutText( " var vettore" + sName + " = new THREE.Vector3(" + ToString( vVec.y) + ", " + ToString( vVec.z) + ", " + ToString( vVec.x) + ")") ; m_Writer.OutText( " vettore" + sName + ".normalize();") ; m_Writer.OutText( " var origin = new THREE.Vector3(" + ToString( ptVec.x) + ", " + ToString( ptVec.y) + ", " + ToString( ptVec.z) + ")") ; - m_Writer.OutText( " var length = " + ToString( vVec.Len()) + ";") ; - m_Writer.OutText( " var hex = " + sHexCol +";") ; - m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(vettore" + sName + ", origin, length, hex);") ; - m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(hex);") ; //salvataggio colore per selezione + m_Writer.OutText( " var vlength" + sName + " = " + ToString( vVec.Len()) + ";") ; + m_Writer.OutText( " var vhex" + sName + " = " + sHexCol +";") ; + m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(vettore" + sName + ", origin, vlength" + sName + ", vhex" + sName + ");") ; + m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(vhex" + sName + ");") ; //salvataggio colore per selezione m_Writer.OutText( " list_of_objects.push(arrowHelper" + sName + ");") ; // aggiungo il vettore al suo gruppo di appartenenza @@ -2682,26 +2682,34 @@ ExportThreeJS::ExportFrame3D( const string& sName, const IGeoObj* pGeoObj, const Frame3d frCurrentFrame = pFrame->GetFrame() ; // porto il punto in coordinate ThreeJS - frCurrentFrame.ToGlob( frFrame) ; + //frCurrentFrame.ToGlob( frFrame) ; string sHexCol ; GetColor( Ccol, sHexCol) ; Point3d ptOrig = frCurrentFrame.Orig() ; ptOrig.LocToLoc( frFrame, m_frTHREEJSFrame) ; - Vector3d vx = frCurrentFrame.VersZ() ; - Vector3d vy = frCurrentFrame.VersX() ; - Vector3d vz = frCurrentFrame.VersY() ; + // porto i vettori in coordinate ThreeJS + Vector3d vx = frCurrentFrame.VersX() ; + Vector3d vy = frCurrentFrame.VersY() ; + Vector3d vz = frCurrentFrame.VersZ() ; + + vx.LocToLoc( frFrame, m_frTHREEJSFrame) ; + vy.LocToLoc(frFrame, m_frTHREEJSFrame) ; + vz.LocToLoc(frFrame, m_frTHREEJSFrame) ; + + double dVecLen = sqrt( vx.x * vx.x + vx.y * vx.y + vx.z * vx.z) ; // riferimento al vettore lungo x (lunghezza vettori) + // scrivo i 3 vettori // x m_Writer.OutText( " var xdir" + sName + " = new THREE.Vector3(" + ToString( vx.x) + ", " + ToString( vx.y) + ", " + ToString( vx.z) + ");") ; m_Writer.OutText( " xdir" + sName + ".normalize()") ; m_Writer.OutText( " var origin" + sName + " = new THREE.Vector3(" + ToString( ptOrig.x) + ", " + ToString( ptOrig.y) + ", " + ToString( ptOrig.z)+ ");") ; - m_Writer.OutText( " var length = 25;") ; - m_Writer.OutText( " var hex = 0xff0000;") ; - m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(xdir" + sName + ", origin" + sName + ", length, hex);") ; - m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(hex);") ; + m_Writer.OutText( " var xlength" + sName + " = " + ToString( dVecLen) + " * 10;") ; + m_Writer.OutText( " var xhex" + sName + " = 0xff0000;") ; + m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(xdir" + sName + ", origin" + sName + ", xlength" + sName +", xhex" + sName + ", " + ToString( dVecLen) + " * 2);") ; + m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(xhex" + sName + ");") ; m_Writer.OutText( " list_of_objects.push(arrowHelper" + sName + ");") ; // aggiungo il vettore al suo gruppo di appartenenza @@ -2712,10 +2720,10 @@ ExportThreeJS::ExportFrame3D( const string& sName, const IGeoObj* pGeoObj, const m_Writer.OutText( " var ydir" + sName + " = new THREE.Vector3(" + ToString( vy.x) + ", " + ToString( vy.y) + ", " + ToString( vy.z) + ");") ; m_Writer.OutText( " ydir" + sName + ".normalize()") ; m_Writer.OutText( " var origin" + sName + " = new THREE.Vector3(" + ToString( ptOrig.x) + ", " + ToString( ptOrig.y) + ", " + ToString( ptOrig.z) + ");") ; - m_Writer.OutText( " var length = 25;") ; - m_Writer.OutText( " var hex = 0x00ff00;") ; - m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(ydir" + sName + ", origin" + sName + ", length, hex);") ; - m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(hex);") ; + m_Writer.OutText( " var ylength" + sName + " = " + ToString( dVecLen) + " * 10;") ; + m_Writer.OutText( " var yhex" + sName + " = 0x00ff00;") ; + m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(ydir" + sName + ", origin" + sName + ", ylength" + sName +", yhex" + sName + ", " + ToString( dVecLen) + " * 2);") ; + m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(yhex" + sName + ");") ; m_Writer.OutText( " list_of_objects.push(arrowHelper" + sName + ");") ; // aggiungo il vettore al suo gruppo di appartenenza @@ -2726,10 +2734,10 @@ ExportThreeJS::ExportFrame3D( const string& sName, const IGeoObj* pGeoObj, const m_Writer.OutText( " var zdir" + sName + " = new THREE.Vector3(" + ToString( vz.x) + ", " + ToString( vz.y) + ", " + ToString( vz.z) + ");") ; m_Writer.OutText( " zdir" + sName + ".normalize()") ; m_Writer.OutText( " var origin" + sName + " = new THREE.Vector3(" + ToString( ptOrig.x) + ", " + ToString( ptOrig.y) + ", " + ToString( ptOrig.z) + ");") ; - m_Writer.OutText( " var length = 25;") ; - m_Writer.OutText( " var hex = 0x0000ff;") ; - m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(zdir" + sName + ", origin" + sName + ", length, hex);") ; - m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(hex);") ; + m_Writer.OutText( " var zlength" + sName + " = " + ToString( dVecLen) + " * 10;") ; + m_Writer.OutText( " var zhex" + sName + " = 0x0000ff;") ; + m_Writer.OutText( " var arrowHelper" + sName + " = new THREE.ArrowHelper(zdir" + sName + ", origin" + sName + ", zlength" + sName + ", zhex" + sName + ", " + ToString( dVecLen) + " * 2);") ; + m_Writer.OutText( " arrowHelper" + sName + ".oldColor = new THREE.Color(zhex" + sName + ");") ; m_Writer.OutText( " list_of_objects.push(arrowHelper" + sName + ");") ; // aggiungo il vettore al suo gruppo di appartenenza @@ -3084,20 +3092,23 @@ ExportThreeJS::ScanGroup( const IGdbIterator& iIter, IGeomDB* pGDB, const int nG m_Writer.OutText( " group" + ToString( m_nGroupCount) + ".name = '" + sId + "'") ; // aggiungo l'EventListner per il menu laterale sinistro - m_Writer.OutText( " document.getElementById('p_id_" + sId + "').addEventListener('click', function(){ if(!booked) { findGroupByNameAndId(groupRoot, " + sId + ", 1); }});") ; - m_Writer.OutText( " document.getElementById('lb_" + sId + "').addEventListener('click', function(){ lightbulb('lb_" + sId + "', 0)});") ; + //m_Writer.OutText( " document.getElementById('p_id_" + sId + "').addEventListener('click', function(){ if(!booked) { findGroupByNameAndId(groupRoot, " + sId + ", 1); }});") ; + //m_Writer.OutText( " document.getElementById('lb_" + sId + "').addEventListener('click', function(){ lightbulb('lb_" + sId + "', 0)});") ; if ( ! sId.compare( "0")) { - m_sCodMenu += "
" ; - m_sCodMenu += "" ; - m_sCodMenu += "" ; - m_sCodMenu += "
" ; + + //m_sCodMenu += "
" ; + //m_sCodMenu += "" ; + //m_sCodMenu += "" ; + //m_sCodMenu += "
" ; } else { + m_Writer.OutText(" document.getElementById('p_id_" + sId + "').addEventListener('click', function(){ if(!booked) { findGroupByNameAndId(groupRoot, " + sId + ", 1); }});") ; + m_Writer.OutText(" document.getElementById('lb_" + sId + "').addEventListener('click', function(){ lightbulb('lb_" + sId + "', 0)});") ; m_sCodMenu += "
" ; m_sCodMenu += "" ; m_sCodMenu += "