EgtMachKernel :
- aggiunta funzione Lua EmtAddArcMove.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurveLine.h"
|
||||
#include "/EgtDev/Include/EGkCurveArc.h"
|
||||
#include "/EgtDev/Include/EGkGeomDB.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
@@ -191,6 +192,77 @@ Machine::LuaEmtAddLinearMove( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
Machine::LuaEmtAddArcMove( lua_State* L)
|
||||
{
|
||||
// 11 parametri : nPathId, ptIni, ptFin, ptCen, dAngCen, vtN, vtTool, vtCorr, vtAux, dFeed, nFlag
|
||||
int nPathId ;
|
||||
LuaCheckParam( L, 1, nPathId)
|
||||
Point3d ptIni ;
|
||||
LuaCheckParam( L, 2, ptIni)
|
||||
Point3d ptFin ;
|
||||
LuaCheckParam( L, 3, ptFin)
|
||||
Point3d ptCen ;
|
||||
LuaCheckParam( L, 4, ptCen)
|
||||
double dAngCen ;
|
||||
LuaCheckParam( L, 5, dAngCen)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 6, vtN)
|
||||
Vector3d vtTool ;
|
||||
LuaCheckParam( L, 7, vtTool)
|
||||
Vector3d vtCorr ;
|
||||
LuaCheckParam( L, 8, vtCorr)
|
||||
Vector3d vtAux ;
|
||||
LuaCheckParam( L, 9, vtAux)
|
||||
double dFeed ;
|
||||
LuaCheckParam( L, 10, dFeed)
|
||||
int nFlag ;
|
||||
LuaCheckParam( L, 11, nFlag)
|
||||
LuaClearStack( L) ;
|
||||
// verifico ci sia una macchina attiva valida
|
||||
if ( m_pMchLua == nullptr ||
|
||||
m_pMchLua->m_pMchMgr == nullptr || m_pMchLua->m_pGeomDB == nullptr)
|
||||
return luaL_error( L, " Unknown Machine") ;
|
||||
// creo oggetto arco per DB geometrico
|
||||
PtrOwner<ICurveArc> pArc( CreateCurveArc()) ;
|
||||
bool bOk = ! IsNull( pArc) ;
|
||||
// assegno i dati dell'arco
|
||||
double dDeltaZ = ( ptFin - ptIni) * vtN ;
|
||||
bOk = bOk && ( ! pArc->SetCPAN( ptCen, ptIni, dAngCen, dDeltaZ, vtN)) ;
|
||||
Point3d ptCalcFin ;
|
||||
bOk = bOk && ( ! pArc->GetEndPoint( ptCalcFin) || ! AreSamePointApprox( ptCalcFin, ptFin)) ;
|
||||
int nMove = ( dAngCen > 0 ? 3 : 2) ;
|
||||
// inserisco l'oggetto nel DB geometrico
|
||||
int nId = ( bOk ? m_pMchLua->m_pGeomDB->AddGeoObj( GDB_ID_NULL, nPathId, Release( pArc)) : GDB_ID_NULL) ;
|
||||
bOk = bOk && ( nId != GDB_ID_NULL) ;
|
||||
// creo oggetto dati Cam
|
||||
PtrOwner<CamData> pCam( new( nothrow) CamData) ;
|
||||
bOk = bOk && ! IsNull( pCam) ;
|
||||
if ( bOk) {
|
||||
// assegno valori
|
||||
pCam->SetMoveType( nMove) ;
|
||||
pCam->SetToolDir( vtTool) ;
|
||||
pCam->SetCorrDir( vtCorr) ;
|
||||
pCam->SetAuxDir( vtAux) ;
|
||||
pCam->SetEndPoint( ptFin) ;
|
||||
pCam->SetCenter( ptCen) ;
|
||||
pCam->SetAngCen( dAngCen) ;
|
||||
pCam->SetDeltaN( dDeltaZ) ;
|
||||
pCam->SetNormDir( vtN) ;
|
||||
pCam->SetFeed( dFeed) ;
|
||||
pCam->SetFlag( nFlag) ;
|
||||
// associo questo oggetto a quello geometrico
|
||||
m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ;
|
||||
}
|
||||
// assegno risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
Machine::LuaEmtGetAxesPos( lua_State* L)
|
||||
|
||||
Reference in New Issue
Block a user