From 4fb1ed39c1dbfb64c7dda1a75449c49dc856162d Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 7 Jul 2015 18:33:54 +0000 Subject: [PATCH] EgtGraphics 1.6g2 : - intersezione di curve da grafica ora calcola anche auto-intersezioni. --- EgtGraphics.rc | Bin 11604 -> 11604 bytes SceneSnap.cpp | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/EgtGraphics.rc b/EgtGraphics.rc index 0f1e8e06b65bdf7ff327e35790244ed5f83b80b7..c8de0c5cbb90c45700ac9214dd677108688d05e5 100644 GIT binary patch delta 103 zcmcZ-btP)UFE&P_%?J7RGfm>rnVhGn#%MJ8ptSDhKaxI-o7=dpn8C8TKng4@BhrnVhGn#%MVCptSDhKaxI-o7=dpn8C8TKng4@Bh 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