EgtGraphics 1.6g2 :
- intersezione di curve da grafica ora calcola anche auto-intersezioni.
This commit is contained in:
+30
-2
@@ -25,7 +25,7 @@
|
||||
#include "/EgtDev/Include/EGkDistPointCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkExtText.h"
|
||||
#include "/EgtDev/Include/EgkIntersCurveCurve.h"
|
||||
#include "/EgtDev/Include/EgkIntersCurves.h"
|
||||
#include "/EgtDev/Include/EGkIntersLineSurfTm.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
@@ -164,8 +164,36 @@ Scene::FindSelectedIntersectionPoint( const Point3d& ptWin, int nW, int nH)
|
||||
++ nCrvNum ;
|
||||
}
|
||||
}
|
||||
if ( nCrvNum != 2)
|
||||
// se nessuna curva, esco
|
||||
if ( nCrvNum == 0)
|
||||
return false ;
|
||||
// se una sola curva, può essere auto intersezione
|
||||
if ( nCrvNum == 1) {
|
||||
// recupero il riferimento di griglia
|
||||
Frame3d frGrid = GetGridFrame() ;
|
||||
// se il riferimento della curva è diverso da quello della griglia, devo trasformarla
|
||||
PtrOwner<ICurve> crvTrans0( nullptr) ;
|
||||
if ( ! AreSameFrame( frEnt[0], frGrid)) {
|
||||
crvTrans0.Set( pCrv[0]->Clone()) ;
|
||||
if ( IsNull( crvTrans0))
|
||||
return false ;
|
||||
crvTrans0->LocToLoc( frEnt[0], frGrid) ;
|
||||
pCrv[0] = ::Get( crvTrans0) ;
|
||||
}
|
||||
// uso il punto sketch come punto vicino e lo porto nel riferimento della griglia
|
||||
Point3d ptWinZ( ptWin.x, ptWin.y, dWinZ) ;
|
||||
Point3d ptNear ;
|
||||
if ( ! UnProject( ptWinZ, ptNear))
|
||||
ptNear = ORIG ;
|
||||
ptNear.ToLoc( frGrid) ;
|
||||
// calcolo il punto di intersezione sulla prima curva più vicino al punto di riferimento
|
||||
SelfIntersCurve sintC( *pCrv[0]) ;
|
||||
if ( ! sintC.GetIntersPointNearTo( ptNear, m_ptLastSnapPnt))
|
||||
return false ;
|
||||
m_ptLastSnapPnt.ToGlob( frGrid) ;
|
||||
return true ;
|
||||
}
|
||||
// altrimenti due curve, procedo normalmente
|
||||
// recupero il riferimento di griglia
|
||||
Frame3d frGrid = GetGridFrame() ;
|
||||
// se il riferimento della prima curva è diverso da quello della griglia, devo trasformarla
|
||||
|
||||
Reference in New Issue
Block a user