EgtExecutor 1.9e1 :
- aggiunte funzioni Exe e Lua CAvToolStmPosition.
This commit is contained in:
@@ -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) ;
|
||||
}
|
||||
@@ -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)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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() ;
|
||||
|
||||
Binary file not shown.
@@ -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" />
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -92,3 +92,7 @@ bool LuaInstallExchange( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- Shortest Path -----------------------------------
|
||||
bool LuaInstallShortestPath( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- Collision Avoidance Tool -------------------------
|
||||
bool LuaInstallCAvTool( LuaMgr& luaMgr) ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user