EgtExchange :

- Correzione orientamento frame e vettori
- Modifica al groupRoot di ThreeJS
- Correzione cambio coordinate tra sistemi differenti.
This commit is contained in:
Riccardo Elitropi
2022-10-25 17:13:39 +02:00
parent 336c172eee
commit 0689e7df19
+48 -37
View File
@@ -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 += "<div class = 'd-flex flex-row bd-highlight'>" ;
m_sCodMenu += "<i id = 'lb_0' name = 'lb_on' class = 'fa-solid fa-lightbulb m-0 py-1 visible' style = 'cursor: pointer; color: #f0ad4e'></i>" ;
m_sCodMenu += "<button class = 'list-group-item list-group-item-action list-group-flush list-group-item-dark mb-0 border-0 ml-1 py-0 mx-1' name='btMenu' id = 'p_id_0'>" ;
m_sCodMenu += "<span class = 'badge bg-dark float-end my-0' id = 's_id_0' name ='badgeMenu'></span>" ;
m_sCodMenu += "<span class = 'border-0' name = 's_col_ora' id = 's_col_0'> <i>(0)</i></span>" ;
m_sCodMenu += "<span id = 'ss_id_0' name = 's_nb'> BASIC MODEL</span>" ;
m_sCodMenu += "</button>" ;
m_sCodMenu += "</div>" ;
//m_sCodMenu += "<div class = 'd-flex flex-row bd-highlight'>" ;
//m_sCodMenu += "<i id = 'lb_0' name = 'lb_on' class = 'fa-solid fa-lightbulb m-0 py-1 visible' style = 'cursor: pointer; color: #f0ad4e'></i>" ;
//m_sCodMenu += "<button class = 'list-group-item list-group-item-action list-group-flush list-group-item-dark mb-0 border-0 ml-1 py-0 mx-1' name='btMenu' id = 'p_id_0'>" ;
//m_sCodMenu += "<span class = 'badge bg-dark float-end my-0' id = 's_id_0' name ='badgeMenu'></span>" ;
//m_sCodMenu += "<span class = 'border-0' name = 's_col_ora' id = 's_col_0'> <i>(0)</i></span>" ;
//m_sCodMenu += "<span id = 'ss_id_0' name = 's_nb'> BASIC MODEL</span>" ;
//m_sCodMenu += "</button>" ;
//m_sCodMenu += "</div>" ;
}
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 += "<div class = 'd-flex flex-row bd-highlight'>" ;
m_sCodMenu += "<i id = 'lb_" + sId + "' name = 'lb_on' class = 'fa-solid fa-lightbulb m-0 py-1 visible' style = 'cursor: pointer; color: #f0ad4e'></i>" ;
m_sCodMenu += "<button class = 'list-group-item list-group-item-action list-group-flush list-group-item-dark mb-0 border-0 ml-1 py-0 mx-1' name='btMenu' id = 'p_id_" + sId + "'>" ;