Merge commit '5fe0c3e3768b481137a3f90f5ad342d039130c6a' into ThreeJS
This commit is contained in:
Binary file not shown.
+2
-4
@@ -403,10 +403,8 @@ Scene::ZoomWin( const Point3d& ptWin1, const Point3d& ptWin2)
|
||||
return false ;
|
||||
|
||||
// porto i punti in coordinate camera (vista)
|
||||
Point3d ptView1 = ptWorld1 ;
|
||||
ptView1.ToLoc( frView) ;
|
||||
Point3d ptView2 = ptWorld2 ;
|
||||
ptView2.ToLoc( frView) ;
|
||||
Point3d ptView1 = GetToLoc( ptWorld1, frView) ;
|
||||
Point3d ptView2 = GetToLoc( ptWorld2, frView) ;
|
||||
|
||||
// imposto il nuovo centro di vista
|
||||
Point3d ptNewCen = 0.5 * ( ptWorld1 + ptWorld2) ;
|
||||
|
||||
+8
-16
@@ -881,26 +881,20 @@ CalcCurveTailMark( const Vector3d& vtRef, const PolyLine& plCrv, PolyLine& plMar
|
||||
// disegno traverso
|
||||
Frame3d frF ;
|
||||
if ( frF.Set( ptTail, vtDir, vtRef)) {
|
||||
Point3d ptP0 = ORIG + Vector3d( 0, 0.5 * dLenTr, 0) ;
|
||||
ptP0.ToGlob( frF) ;
|
||||
Point3d ptP0 = GetToGlob( ORIG + Vector3d( 0, 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 0, ptP0) ;
|
||||
Point3d ptP1 = ORIG + Vector3d( 0, - 0.5 * dLenTr, 0) ;
|
||||
ptP1.ToGlob( frF) ;
|
||||
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0, - 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 1, ptP1) ;
|
||||
}
|
||||
else {
|
||||
frF.Set( ptTail, vtDir) ;
|
||||
Point3d ptP0 = ORIG + Vector3d( - 0.5 * dLenTr, - 0.5 * dLenTr, 0) ;
|
||||
ptP0.ToGlob( frF) ;
|
||||
Point3d ptP0 = GetToGlob( ORIG + Vector3d( - 0.5 * dLenTr, - 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 0, ptP0) ;
|
||||
Point3d ptP1 = ORIG + Vector3d( 0.5 * dLenTr, - 0.5 * dLenTr, 0) ;
|
||||
ptP1.ToGlob( frF) ;
|
||||
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0.5 * dLenTr, - 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 1, ptP1) ;
|
||||
Point3d ptP2 = ORIG + Vector3d( 0.5 * dLenTr, 0.5 * dLenTr, 0) ;
|
||||
ptP2.ToGlob( frF) ;
|
||||
Point3d ptP2 = GetToGlob( ORIG + Vector3d( 0.5 * dLenTr, 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 2, ptP2) ;
|
||||
Point3d ptP3 = ORIG + Vector3d( - 0.5 * dLenTr, 0.5 * dLenTr, 0) ;
|
||||
ptP3.ToGlob( frF) ;
|
||||
Point3d ptP3 = GetToGlob( ORIG + Vector3d( - 0.5 * dLenTr, 0.5 * dLenTr, 0), frF) ;
|
||||
plMark.AddUPoint( 3, ptP3) ;
|
||||
// punto di chiusura coincidente con il primo
|
||||
plMark.AddUPoint( 4, ptP0) ;
|
||||
@@ -957,11 +951,9 @@ CalcCurveTipArrow( const Vector3d& vtRef, const PolyLine& plCrv, PolyLine& plArr
|
||||
if ( ! frF.Set( ptTip, vtDir, vtRef))
|
||||
frF.Set( ptTip, vtDir) ;
|
||||
plArr.AddUPoint( 0, ptTip) ;
|
||||
Point3d ptP1 = ORIG + Vector3d( 0, A_WIDTH_COEFF, -1) * dLenArr ;
|
||||
ptP1.ToGlob( frF) ;
|
||||
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0, A_WIDTH_COEFF, -1) * dLenArr, frF) ;
|
||||
plArr.AddUPoint( 1, ptP1) ;
|
||||
Point3d ptP2 = ORIG + Vector3d( 0, - A_WIDTH_COEFF, -1) * dLenArr ;
|
||||
ptP2.ToGlob( frF) ;
|
||||
Point3d ptP2 = GetToGlob( ORIG + Vector3d( 0, - A_WIDTH_COEFF, -1) * dLenArr, frF) ;
|
||||
plArr.AddUPoint( 2, ptP2) ;
|
||||
plArr.AddUPoint( 3, ptTip) ;
|
||||
|
||||
|
||||
+52
-26
@@ -15,6 +15,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "Scene.h"
|
||||
#include "EGrUtils.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
#include <algorithm>
|
||||
|
||||
using namespace std ;
|
||||
@@ -35,8 +36,8 @@ Scene::SetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int n
|
||||
const double MIN_SNAP_STEP = 0.1 ;
|
||||
m_dSnapStep = max( abs( dSnapStep), MIN_SNAP_STEP) ;
|
||||
m_nMinLineSstep = abs( nMinLineSstep) ;
|
||||
m_nMajLineSstep = abs( nMajLineSstep) ;
|
||||
m_nExtSstep = abs( nExtSstep) ;
|
||||
m_nMajLineSstep = max( abs( nMajLineSstep), m_nMinLineSstep) ;
|
||||
m_nExtSstep = max( abs( nExtSstep), m_nMajLineSstep) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -49,6 +50,26 @@ Scene::SetGridColor( Color colMinLine, Color colMajLine)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
GetSpecialCoeff( double dVal)
|
||||
{
|
||||
if ( dVal < 1.99)
|
||||
return 1 ;
|
||||
else if ( dVal < 4.99)
|
||||
return 2 ;
|
||||
else if ( dVal < 9.99)
|
||||
return 5 ;
|
||||
else if ( dVal < 24.99)
|
||||
return 10 ;
|
||||
else if ( dVal < 49.99)
|
||||
return 25 ;
|
||||
else if ( dVal < 99.99)
|
||||
return 50 ;
|
||||
else
|
||||
return 100 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Scene::DrawGrid( void)
|
||||
@@ -73,35 +94,40 @@ Scene::DrawGrid( void)
|
||||
|
||||
// se richiesto, disegno la griglia
|
||||
if ( m_bShowGrid) {
|
||||
// disegno linee minori (a trattini)
|
||||
glLineStipple( 2, 0xAAAA) ;
|
||||
glEnable( GL_LINE_STIPPLE) ;
|
||||
glBegin( GL_LINES) ;
|
||||
glColor3f( m_colMinLine.GetRed(), m_colMinLine.GetGreen(), m_colMinLine.GetBlue()) ;
|
||||
for ( int i = m_nMinLineSstep ; i <= m_nExtSstep ; i += m_nMinLineSstep) {
|
||||
// se non si sovrappongono alle maggiori
|
||||
if ( ( i % m_nMajLineSstep) != 0) {
|
||||
float dPos = float( i * m_dSnapStep) ;
|
||||
// X +
|
||||
glVertex3f( dPos, - dExt, Z_DOWN) ;
|
||||
glVertex3f( dPos, dExt, Z_DOWN) ;
|
||||
// X -
|
||||
glVertex3f( - dPos, - dExt, Z_DOWN) ;
|
||||
glVertex3f( - dPos, dExt, Z_DOWN) ;
|
||||
// Y +
|
||||
glVertex3f( - dExt, dPos, Z_DOWN) ;
|
||||
glVertex3f( dExt, dPos, Z_DOWN) ;
|
||||
// Y -
|
||||
glVertex3f( - dExt, - dPos, Z_DOWN) ;
|
||||
glVertex3f( dExt, - dPos, Z_DOWN) ;
|
||||
// disegno linee minori (a trattini), se non troppe
|
||||
double dMinRapp = min( m_dHalfWidth, m_dHalfHeight) / ( m_dSnapStep * m_nMinLineSstep) ;
|
||||
if ( dMinRapp < 60) {
|
||||
glLineStipple( 2, 0xAAAA) ;
|
||||
glEnable( GL_LINE_STIPPLE) ;
|
||||
glBegin( GL_LINES) ;
|
||||
glColor3f( m_colMinLine.GetRed(), m_colMinLine.GetGreen(), m_colMinLine.GetBlue()) ;
|
||||
for ( int i = m_nMinLineSstep ; i <= m_nExtSstep ; i += m_nMinLineSstep) {
|
||||
// se non si sovrappongono alle maggiori
|
||||
if ( ( i % m_nMajLineSstep) != 0) {
|
||||
float dPos = float( i * m_dSnapStep) ;
|
||||
// X +
|
||||
glVertex3f( dPos, - dExt, Z_DOWN) ;
|
||||
glVertex3f( dPos, dExt, Z_DOWN) ;
|
||||
// X -
|
||||
glVertex3f( - dPos, - dExt, Z_DOWN) ;
|
||||
glVertex3f( - dPos, dExt, Z_DOWN) ;
|
||||
// Y +
|
||||
glVertex3f( - dExt, dPos, Z_DOWN) ;
|
||||
glVertex3f( dExt, dPos, Z_DOWN) ;
|
||||
// Y -
|
||||
glVertex3f( - dExt, - dPos, Z_DOWN) ;
|
||||
glVertex3f( dExt, - dPos, Z_DOWN) ;
|
||||
}
|
||||
}
|
||||
glEnd() ;
|
||||
glDisable( GL_LINE_STIPPLE) ;
|
||||
}
|
||||
glEnd() ;
|
||||
glDisable( GL_LINE_STIPPLE) ;
|
||||
// disegno linee maggiori
|
||||
double dMaxRapp = min( m_dHalfWidth, m_dHalfHeight) / ( m_dSnapStep * m_nMajLineSstep) ;
|
||||
int nCoeff = GetSpecialCoeff( 0.06 * dMaxRapp) ;
|
||||
glBegin( GL_LINES) ;
|
||||
glColor3f( m_colMajLine.GetRed(), m_colMajLine.GetGreen(), m_colMajLine.GetBlue()) ;
|
||||
for ( int i = m_nMajLineSstep ; i <= m_nExtSstep ; i += m_nMajLineSstep) {
|
||||
for ( int i = min( nCoeff * m_nMajLineSstep, m_nExtSstep) ; i <= m_nExtSstep ; i += nCoeff * m_nMajLineSstep) {
|
||||
float dPos = float( i * m_dSnapStep) ;
|
||||
// X +
|
||||
glVertex3f( dPos, - dExt, Z_DOWN) ;
|
||||
|
||||
+16
-32
@@ -275,24 +275,21 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
// recupero il geo-punto
|
||||
const IGeoPoint3d* pGP = GetGeoPoint3d( pGObj) ;
|
||||
// recupero il punto
|
||||
ptSel = pGP->GetPoint() ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( pGP->GetPoint(), frEnt) ;
|
||||
}
|
||||
// se vettore
|
||||
else if ( pGObj->GetType() == GEO_VECT3D) {
|
||||
// recupero il geo-vettore
|
||||
const IGeoVector3d* pGV = GetGeoVector3d( pGObj) ;
|
||||
// recupero il punto
|
||||
ptSel = pGV->GetBase() ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( pGV->GetBase(), frEnt) ;
|
||||
}
|
||||
// se frame
|
||||
else if ( pGObj->GetType() == GEO_FRAME3D) {
|
||||
// recupero il geo-frame
|
||||
const IGeoFrame3d* pGF = GetGeoFrame3d( pGObj) ;
|
||||
// recupero il punto
|
||||
ptSel = pGF->GetFrame().Orig() ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( pGF->GetFrame().Orig(), frEnt) ;
|
||||
}
|
||||
// se curva
|
||||
else if ( ( pGObj->GetType() & GEO_CURVE) != 0) {
|
||||
@@ -310,8 +307,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
MinDistPCInfo mdInfo ;
|
||||
DistPointCurve dstPtCurve( ptRef, *pCrv) ;
|
||||
if ( dstPtCurve.GetMinDistInfo( 0, mdInfo)) {
|
||||
Point3d ptP = mdInfo.ptQ ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
Point3d ptP = GetToGlob( mdInfo.ptQ, frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist)) {
|
||||
ptSel = ptP ;
|
||||
nAux = int( mdInfo.dPar) ;
|
||||
@@ -325,14 +321,12 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
vtExtr *= dTh ;
|
||||
vtExtr.ToGlob( frEnt) ;
|
||||
// correggo il punto di riferimento del contrario dell'estrusione
|
||||
Vector3d vtTemp = vtExtr ;
|
||||
vtTemp.ToLoc( frEnt) ;
|
||||
Vector3d vtTemp = GetToLoc( vtExtr, frEnt) ;
|
||||
// determino il punto più vicino della curva a questo
|
||||
MinDistPCInfo mdInfo ;
|
||||
DistPointCurve dstPtCurve( ptRef - vtTemp, *pCrv) ;
|
||||
if ( dstPtCurve.GetMinDistInfo( 0, mdInfo)) {
|
||||
Point3d ptP = mdInfo.ptQ ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
Point3d ptP = GetToGlob( mdInfo.ptQ, frEnt) ;
|
||||
ptP += vtExtr ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist)) {
|
||||
ptSel = ptP ;
|
||||
@@ -353,8 +347,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
// lo porto nel frame della superficie
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della superficie
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
// recupero il raggio del box di ingombro
|
||||
double dBlRad = 1000 ;
|
||||
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
|
||||
@@ -371,8 +364,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
if ( ! IntersLineSurfTm( ptMir, vtDir, dLenMir, *pStm, vInfo) || vInfo.size() == 0)
|
||||
return false ;
|
||||
// recupero il primo punto
|
||||
ptSel = vInfo[0].ptI ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( vInfo[0].ptI, frEnt) ;
|
||||
nAux = vInfo[0].nT ;
|
||||
}
|
||||
// se regione
|
||||
@@ -387,8 +379,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
// lo porto nel frame della regione
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della regione
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
// recupero il piano della regione
|
||||
Plane3d plReg ;
|
||||
plReg.Set( pReg->GetPlanePoint(), pReg->GetNormVersor()) ;
|
||||
@@ -397,8 +388,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
if ( IntersLinePlane( ptRef, vtDir, INFINITO, plReg, ptInt, false) != ILPT_YES)
|
||||
return false ;
|
||||
// assegno il punto
|
||||
ptSel = ptInt ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( ptInt, frEnt) ;
|
||||
// determino il chunk
|
||||
nAux = 0 ;
|
||||
if ( pReg->GetChunkCount() > 1) {
|
||||
@@ -429,8 +419,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
// lo porto nel frame della superficie
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della superficie
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
// recupero il raggio del box di ingombro
|
||||
double dBlRad = 1000 ;
|
||||
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
|
||||
@@ -447,8 +436,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
if ( ! IntersLineSurfTm( ptMir, vtDir, dLenMir, *pStm, vInfo) || vInfo.size() == 0)
|
||||
return false ;
|
||||
// recupero il primo punto
|
||||
ptSel = vInfo[0].ptI ;
|
||||
ptSel.ToGlob( frEnt) ;
|
||||
ptSel = GetToGlob( vInfo[0].ptI, frEnt) ;
|
||||
nAux = 0 ;
|
||||
}
|
||||
// se testo
|
||||
@@ -505,23 +493,19 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
|
||||
double dMinSqDist = INFINITO * INFINITO ;
|
||||
Point3d ptP ;
|
||||
// punto iniziale
|
||||
ptP = pDim->GetStart() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetStart(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
|
||||
ptSel = ptP ;
|
||||
// punto sopra iniziale
|
||||
ptP = pDim->GetOverStart() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetOverStart(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
|
||||
ptSel = ptP ;
|
||||
// punto finale
|
||||
ptP = pDim->GetEnd() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetEnd(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
|
||||
ptSel = ptP ;
|
||||
// punto sopra finale
|
||||
ptP = pDim->GetOverEnd() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetOverEnd(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
|
||||
ptSel = ptP ;
|
||||
// punto medio
|
||||
|
||||
+46
-96
@@ -262,8 +262,7 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
|
||||
// recupero il geo-punto
|
||||
const IGeoPoint3d* pGP = GetGeoPoint3d( pGObj) ;
|
||||
// recupero il punto
|
||||
Point3d ptP = pGP->GetPoint() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
Point3d ptP = GetToGlob( pGP->GetPoint(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
@@ -276,26 +275,22 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
|
||||
// recupero il geo-vettore
|
||||
const IGeoVector3d* pGV = GetGeoVector3d( pGObj) ;
|
||||
// recupero il punto base
|
||||
Point3d ptP = pGV->GetBase() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
Point3d ptP = GetToGlob( pGV->GetBase(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pGV->GetVector() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pGV->GetVector(), frEnt) ;
|
||||
}
|
||||
// recupero il punto tip
|
||||
Point3d ptTip= pGV->GetBase() + pGV->GetVector() ;
|
||||
ptTip.ToGlob( frEnt) ;
|
||||
Point3d ptTip = GetToGlob( pGV->GetBase() + pGV->GetVector(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptTip, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptTip ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pGV->GetVector() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pGV->GetVector(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// se frame
|
||||
@@ -303,8 +298,7 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
|
||||
// recupero il geo-frame
|
||||
const IGeoFrame3d* pGF = GetGeoFrame3d( pGObj) ;
|
||||
// recupero l'origine del riferimento
|
||||
Point3d ptP = pGF->GetFrame().Orig() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
Point3d ptP = GetToGlob( pGF->GetFrame().Orig(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
@@ -631,8 +625,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
// porto il punto nel riferimento della superficie
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della superficie
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
// recupero il raggio del box di ingombro
|
||||
double dBlRad = 1000 ;
|
||||
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
|
||||
@@ -662,8 +655,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
|
||||
m_bLastSnapDirOk = false ;
|
||||
}
|
||||
}
|
||||
@@ -719,11 +711,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptEnd ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptEnd, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = vtN ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -749,11 +739,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptMid ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptMid, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = vtN ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -777,11 +765,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptCen ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptCen, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = vtN ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -799,8 +785,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
m_nLastSnapId = nId ;
|
||||
// punto
|
||||
Point3d ptInt = vInfo[0].ptI ;
|
||||
m_ptLastSnapPnt = ptInt ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptInt, frEnt) ;
|
||||
// direzione
|
||||
Triangle3d Tria ;
|
||||
TriNormals3d Tnorms ;
|
||||
@@ -809,8 +794,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
pStm->GetTriangleSmoothNormals( vInfo[0].nT, Tnorms) &&
|
||||
CalcNormal( ptInt, Tria, Tnorms, vtNorm)) {
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = vtNorm ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( vtNorm, frEnt) ;
|
||||
}
|
||||
else
|
||||
m_bLastSnapDirOk = false ;
|
||||
@@ -841,8 +825,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
// porto il punto nel riferimento della superficie
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della superficie
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
|
||||
// determino se oggetto trasparente
|
||||
Color cCol ;
|
||||
@@ -862,8 +845,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
|
||||
m_bLastSnapDirOk = false ;
|
||||
}
|
||||
}
|
||||
@@ -881,8 +863,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
|
||||
m_bLastSnapDirOk = false ;
|
||||
}
|
||||
}
|
||||
@@ -901,8 +882,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
bFound = true ;
|
||||
dMinSqDist = 0 ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptInt ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptInt, frEnt) ;
|
||||
m_bLastSnapDirOk = false ;
|
||||
}
|
||||
// in tutti gli altri casi
|
||||
@@ -947,8 +927,7 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
// porto il punto nel riferimento della superficie
|
||||
ptRef.ToLoc( frEnt) ;
|
||||
// recupero la direzione di mira e la porto nel riferimento della superficie
|
||||
Vector3d vtDir = - m_vtDirCamera ;
|
||||
vtDir.ToLoc( frEnt) ;
|
||||
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
|
||||
// recupero il raggio del box di ingombro
|
||||
double dBlRad = 1000 ;
|
||||
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pVzm) ;
|
||||
@@ -978,8 +957,7 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
|
||||
m_bLastSnapDirOk = false ;
|
||||
}
|
||||
}
|
||||
@@ -1028,11 +1006,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = trTria.GetP( nVert) ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( trTria.GetP( nVert), frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = trTria.GetN() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1050,11 +1026,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptMid ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptMid, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = trTria.GetN() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1076,11 +1050,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
bFound = true ;
|
||||
dMinSqDist = dSqDist ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptCen ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
m_ptLastSnapPnt = GetToGlob( ptCen, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = trTria.GetN() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1095,15 +1067,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
|
||||
bFound = true ;
|
||||
dMinSqDist = 0 ;
|
||||
m_nLastSnapId = nId ;
|
||||
// punto
|
||||
Point3d ptInt = vInfo[0].ptI ;
|
||||
m_ptLastSnapPnt = ptInt ;
|
||||
m_ptLastSnapPnt.ToGlob( frEnt) ;
|
||||
// direzione
|
||||
Vector3d vtNorm = vInfo[0].trTria.GetN() ;
|
||||
m_ptLastSnapPnt = GetToGlob( vInfo[0].ptI, frEnt) ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = vtNorm ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( vInfo[0].trTria.GetN(), frEnt) ;
|
||||
}
|
||||
break ;
|
||||
default :
|
||||
@@ -1135,8 +1101,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto sopra iniziale
|
||||
@@ -1147,8 +1112,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto finale
|
||||
@@ -1159,8 +1123,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto sopra finale
|
||||
@@ -1171,8 +1134,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
@@ -1185,8 +1147,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
@@ -1200,8 +1161,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pTxt->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
@@ -1221,54 +1181,46 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
|
||||
case SP_END :
|
||||
// punto iniziale
|
||||
if ( pDim->IsValid()) {
|
||||
ptP = pDim->GetStart() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetStart(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto sopra iniziale
|
||||
if ( pDim->IsValid()) {
|
||||
ptP = pDim->GetOverStart() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetOverStart(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto finale
|
||||
if ( pDim->IsValid()) {
|
||||
ptP = pDim->GetEnd() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetEnd(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
// punto sopra finale
|
||||
if ( pDim->IsValid()) {
|
||||
ptP = pDim->GetOverEnd() ;
|
||||
ptP.ToGlob( frEnt) ;
|
||||
ptP = GetToGlob( pDim->GetOverEnd(), frEnt) ;
|
||||
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
|
||||
bFound = true ;
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
@@ -1281,8 +1233,7 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
@@ -1296,8 +1247,7 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
|
||||
m_nLastSnapId = nId ;
|
||||
m_ptLastSnapPnt = ptP ;
|
||||
m_bLastSnapDirOk = true ;
|
||||
m_vtLastSnapDir = pDim->GetNormVersor() ;
|
||||
m_vtLastSnapDir.ToGlob( frEnt) ;
|
||||
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
|
||||
}
|
||||
}
|
||||
break ;
|
||||
|
||||
Reference in New Issue
Block a user