EgtExecutor 1.9e1 :

- aggiunte funzioni Exe e Lua CAvToolStmPosition.
This commit is contained in:
Dario Sassi
2018-04-30 15:01:01 +00:00
parent 987d5c65b3
commit 34bc5e8f0d
11 changed files with 141 additions and 7 deletions
+57
View File
@@ -0,0 +1,57 @@
//----------------------------------------------------------------------------
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : EXE_CAvTool.cpp Data : 28.04.18 Versione : 1.9e1
// Contenuto : Funzioni per evitare coolisioni dell'utensile.
//
//
//
// Modifiche : 28.04.18 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "EXE.h"
#include "EXE_Macro.h"
#include "EXE_Const.h"
#include "AuxTools.h"
#include "GeoTools.h"
#include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EXeConst.h"
#include "/EgtDev/Include/EGkCAvToolSurfTm.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
using namespace std ;
//----------------------------------------------------------------------------
double
ExeCAvToolStmPosition( double dToolLen, double dToolDiam, double dToolCornR, int nSurfTmId,
const Point3d& ptP, const Vector3d& vtAx, const Vector3d& vtMove, int nRefType)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, false)
// recupero la superficie TriMesh
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
if ( pStm == nullptr)
return -1 ;
// recupero il riferimento della superficie
Frame3d frSurf ;
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
return -1 ;
// definizione oggetto per evitare collisioni
PtrOwner<ICAvToolSurfTm> pCAvTlStm( CreateCAvToolSurfTm()) ;
if ( IsNull( pCAvTlStm))
return -1 ;
// porto i dati geometrici in locale
Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frSurf) ;
Vector3d vtAxL = GetVectorLocal( pGeomDB, vtAx, nRefType, frSurf) ;
Vector3d vtMoveL = GetVectorLocal( pGeomDB, vtMove, nRefType, frSurf) ;
// imposto dati
if ( ! pCAvTlStm->SetStdTool( dToolLen, dToolDiam / 2, dToolCornR))
return -1 ;
pCAvTlStm->SetSurfTm( *pStm) ;
pCAvTlStm->SetMoveDir( vtMoveL) ;
return pCAvTlStm->TestPosition( ptPL, vtAxL) ;
}
+3 -3
View File
@@ -28,7 +28,7 @@
#include "/EgtDev/Include/EGkSurfLocal.h"
#include "/EgtDev/Include/EgkChainCurves.h"
#include "/EgtDev/Include/EGkStmFromTriangleSoup.h"
#include "/EgtDev/Include/EGkCDSimpleSurfFrMove.h"
#include "/EgtDev/Include/EGkCAvSimpleSurfFrMove.h"
#include "/EgtDev/Include/EGkIntersPlaneSurfTm.h"
#include "/EgtDev/Include/EGkStringUtils3d.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
@@ -375,7 +375,7 @@ ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, doubl
// porto in locale alla prima superficie il versore di movimento
Vector3d vtDirL = GetVectorLocal( pGeomDB, vtDir, nRefType, frSurf1) ;
// calcolo massima lunghezza di traslazione della prima regione senza semplice collisione con la seconda
return ( bOk && CDSimpleSurfFrMove( *pSfr1, *pSfr2L).Translate( vtDirL, dLen)) ;
return ( bOk && CAvSimpleSurfFrMove( *pSfr1, *pSfr2L).Translate( vtDirL, dLen)) ;
}
//----------------------------------------------------------------------------
@@ -397,7 +397,7 @@ ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, doub
// porto in locale alla prima superficie il versore di movimento
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frSurf1) ;
// calcolo massimo angolo di rotazione della prima regione senza semplice collisione con la seconda
return ( bOk && CDSimpleSurfFrMove( *pSfr1, *pSfr2L).Rotate(ptCenL, dAngDeg)) ;
return ( bOk && CAvSimpleSurfFrMove( *pSfr1, *pSfr2L).Rotate(ptCenL, dAngDeg)) ;
}
//----------------------------------------------------------------------------
+1 -1
View File
@@ -19,7 +19,7 @@
#include "EXE_Nst.h"
#include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EXeConst.h"
#include "/EgtDev/Include/EGkCDSimpleSurfFrMove.h"
#include "/EgtDev/Include/EGkCAvSimpleSurfFrMove.h"
#include "/EgtDev/Include/EMkOperationConst.h"
#include "/EgtDev/Include/EMkMachiningConst.h"
#include "/EgtDev/Include/EMkMachiningGeoConst.h"
+2 -2
View File
@@ -23,7 +23,7 @@
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EgkDistPointCurve.h"
#include "/EgtDev/Include/EGkSfrCreate.h"
#include "/EgtDev/Include/EGkCDSimpleSurfFrMove.h"
#include "/EgtDev/Include/EGkCAvSimpleSurfFrMove.h"
#include "/EgtDev/Include/EGkStringUtils3d.h"
#include "/EgtDev/Include/EMkMachiningGeoConst.h"
#include "/EgtDev/Include/EGkIntervals.h"
@@ -1201,7 +1201,7 @@ MySurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double
Vector3d vtDirL = vtDir ;
vtDirL.ToLoc( frSurf1) ;
// calcolo massima lunghezza di traslazione della prima regione senza semplice collisione con la seconda
CDSimpleSurfFrMove ScdSfrMove( *pSfr1, *pSfr2L) ;
CAvSimpleSurfFrMove ScdSfrMove( *pSfr1, *pSfr2L) ;
bOk = bOk && ScdSfrMove.Translate( vtDirL, dLen) ;
if ( bOk) {
scInfo = ScdSfrMove.GetSCollInfo() ;
BIN
View File
Binary file not shown.
+2
View File
@@ -232,6 +232,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="EXE_CAvTool.cpp" />
<ClCompile Include="EXE_GdbCreateVol.cpp" />
<ClCompile Include="EXE_GdbModifyVol.cpp" />
<ClCompile Include="EXE_Image.cpp" />
@@ -271,6 +272,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
<ClCompile Include="GenTools.cpp" />
<ClCompile Include="GeoTools.cpp" />
<ClCompile Include="GseContext.cpp" />
<ClCompile Include="LUA_CAvTool.cpp" />
<ClCompile Include="LUA_Picture.cpp" />
<ClCompile Include="PictureObj.cpp" />
<ClCompile Include="LUA_Base.cpp" />
+6
View File
@@ -314,6 +314,12 @@
<ClCompile Include="LUA_Picture.cpp">
<Filter>File di origine\LUA</Filter>
</ClCompile>
<ClCompile Include="EXE_CAvTool.cpp">
<Filter>File di origine\EXE</Filter>
</ClCompile>
<ClCompile Include="LUA_CAvTool.cpp">
<Filter>File di origine\LUA</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EgtExecutor.rc">
+4
View File
@@ -92,3 +92,7 @@ bool LuaInstallExchange( LuaMgr& luaMgr) ;
//-------------------------- Shortest Path -----------------------------------
bool LuaInstallShortestPath( LuaMgr& luaMgr) ;
//-------------------------- Collision Avoidance Tool -------------------------
bool LuaInstallCAvTool( LuaMgr& luaMgr) ;
+4
View File
@@ -130,6 +130,10 @@ LuaInstallEgtFunctions( LuaMgr& LuaMgr)
LOG_ERROR( GetLogger(), "Error in LuaInstallShortestPath (" __FUNCTION__ ")")
return false ;
}
if ( ! LuaInstallCAvTool( LuaMgr)) {
LOG_ERROR( GetLogger(), "Error in LuaInstallCAvTool (" __FUNCTION__ ")")
return false ;
}
return true ;
}
+61
View File
@@ -0,0 +1,61 @@
//----------------------------------------------------------------------------
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : LUA_CAvTool.cpp Data : 28.04.18 Versione : 1.9e1
// Contenuto : Funzioni per evitare collisioni utensile-superfici.
//
//
//
// Modifiche : 28.04.18 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "LUA.h"
#include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EXeConst.h"
#include "/EgtDev/Include/EGkLuaAux.h"
#include "/EgtDev/Include/EgnStringUtils.h"
using namespace std ;
//-------------------------------------------------------------------------------
static int
LuaCAvToolStmPosition( lua_State* L)
{
// 7 o 8 parametri : dToolLen, dToolDiam, dToolCornR, nSurfTmId, ptP, vtAx, vtMove [, nRefType]
double dToolLen ;
LuaCheckParam( L, 1, dToolLen)
double dToolDiam ;
LuaCheckParam( L, 2, dToolDiam)
double dToolCornR ;
LuaCheckParam( L, 3, dToolCornR)
int nSurfTmId ;
LuaCheckParam( L, 4, nSurfTmId)
Point3d ptP ;
LuaCheckParam( L, 5, ptP)
Vector3d vtAx ;
LuaCheckParam( L, 6, vtAx)
Vector3d vtMove ;
LuaCheckParam( L, 7, vtMove)
int nRefType = RTY_DEFAULT ;
LuaGetParam( L, 8, nRefType) ;
LuaClearStack( L) ;
// determino il movimento da dare all'utensile per evitare la collisione con la superficie
double dMove = ExeCAvToolStmPosition( dToolLen, dToolDiam, dToolCornR, nSurfTmId,
ptP, vtAx, vtMove, nRefType) ;
// restituisco il risultato
LuaSetParam( L, dMove) ;
return 1 ;
}
//-------------------------------------------------------------------------------
bool
LuaInstallCAvTool( LuaMgr& luaMgr)
{
bool bOk = ( &luaMgr != nullptr) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolStmPosition", LuaCAvToolStmPosition) ;
return bOk ;
}
+1 -1
View File
@@ -484,7 +484,7 @@ LuaCreateSurfTmByRevolve( lua_State* L)
LuaCheckParam( L, 4, vtAx)
bool bCapEnds ;
LuaCheckParam( L, 5, bCapEnds)
double dLinTol = 0.1 ;
double dLinTol = LIN_TOL_DEF ;
int nRefType = RTY_DEFAULT ;
if ( LuaGetParam( L, 6, dLinTol))
LuaGetParam( L, 7, nRefType) ;