0966f86f9d
- utilizzato gestore lua di EgtGeneral.
845 lines
26 KiB
C++
845 lines
26 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2014-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : LUA_GdbCreateCurve.cpp Data : 07.01.15 Versione : 1.6a1
|
|
// Contenuto : Funzioni di creazione curve per LUA.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 07.01.15 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "API.h"
|
|
#include "LUA.h"
|
|
#include "LUA_Base.h"
|
|
#include "LUA_Aux.h"
|
|
#include "AuxTools.h"
|
|
#include "/EgtDev/Include/EInAPI.h"
|
|
#include "/EgtDev/Include/EInConst.h"
|
|
#include "/EgtDev/Include/EgkPolyLine.h"
|
|
#include "/EgtDev/Include/EgnStringUtils.h"
|
|
|
|
using namespace std ;
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveLine( lua_State* L)
|
|
{
|
|
// 3 o 4 parametri : ParentId, PtIni, PtFin [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 2, ptIni)
|
|
Point3d ptFin ;
|
|
LuaCheckParam( L, 3, ptFin)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 4, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il segmento di retta
|
|
int nId = EgtCreateCurveLine( nParentId, ptIni.v, ptFin.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveLineEx( lua_State* L)
|
|
{
|
|
// 7 o 8 parametri : ParentId, PtIni, sSepI, nIdI, PtFin, sSEpF, nIdF [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 2, ptIni)
|
|
string sSepI ;
|
|
LuaCheckParam( L, 3, sSepI)
|
|
int nIdI ;
|
|
LuaCheckParam( L, 4, nIdI)
|
|
Point3d ptFin ;
|
|
LuaCheckParam( L, 5, ptFin)
|
|
string sSepF ;
|
|
LuaCheckParam( L, 6, sSepF)
|
|
int nIdF ;
|
|
LuaCheckParam( L, 7, nIdF)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 8, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il segmento di retta
|
|
int nId = EgtCreateCurveLineEx( nParentId,
|
|
ptIni.v, StringToSep( sSepI), nIdI,
|
|
ptFin.v, StringToSep( sSepF), nIdF, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveLinePVL( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtIni, VtDir, dLen [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 2, ptIni)
|
|
Vector3d vtDir ;
|
|
LuaCheckParam( L, 3, vtDir)
|
|
double dLen ;
|
|
LuaCheckParam( L, 4, dLen)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il segmento di retta
|
|
int nId = EgtCreateCurveLinePVL( nParentId, ptIni.v, vtDir.v, dLen, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveLineMinPointCurve( lua_State* L)
|
|
{
|
|
// 3 o 4 o 5 parametri : ParentId, PtIni, CrvId [, NearPar] [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 2, ptIni)
|
|
int nCrvId ;
|
|
LuaCheckParam( L, 3, nCrvId)
|
|
double dNearPar = 0 ;
|
|
int nRefType = RTY_DEFAULT ;
|
|
if ( LuaGetParam( L, 4, dNearPar))
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
else
|
|
LuaGetRefType( L, 4, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il segmento di retta
|
|
int nId = EgtCreateCurveLineMinPointCurve( nParentId, ptIni.v, nCrvId, dNearPar, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCircle( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtCen, VtN, Rad [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 3, vtN)
|
|
double dRad ;
|
|
LuaCheckParam( L, 4, dRad)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveCircle( nParentId, ptCen.v, vtN.v, dRad, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCircleCPN( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtCen, PtOn, VtN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Point3d ptOn ;
|
|
LuaCheckParam( L, 3, ptOn)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 4, vtN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveCircleCPN( nParentId, ptCen.v, ptOn.v, vtN.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCircleCPNEx( lua_State* L)
|
|
{
|
|
// 6 o 7 parametri : ParentId, PtCen, PtOn, sSepO, nIdO, VtN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Point3d ptOn ;
|
|
LuaCheckParam( L, 3, ptOn)
|
|
string sSepO ;
|
|
LuaCheckParam( L, 4, sSepO)
|
|
int nIdO ;
|
|
LuaCheckParam( L, 5, nIdO)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 6, vtN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 7, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveCircleCPNEx( nParentId, ptCen.v, ptOn.v, StringToSep( sSepO), nIdO, vtN.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCircle3P( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtP1, PtP2, PtP3 [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptP1 ;
|
|
LuaCheckParam( L, 2, ptP1)
|
|
Point3d ptP2 ;
|
|
LuaCheckParam( L, 3, ptP2)
|
|
Point3d ptP3 ;
|
|
LuaCheckParam( L, 4, ptP3)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveCircle3P( nParentId, ptP1.v, ptP2.v, ptP3.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArc( lua_State* L)
|
|
{
|
|
// 7 o 8 parametri : ParentId, PtCen, VtN, Rad, VtS, AngCenDeg, DeltaN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 3, vtN)
|
|
double dRad ;
|
|
LuaCheckParam( L, 4, dRad)
|
|
Vector3d vtS ;
|
|
LuaCheckParam( L, 5, vtS)
|
|
double dAngCenDeg ;
|
|
LuaCheckParam( L, 6, dAngCenDeg)
|
|
double dDeltaN ;
|
|
LuaCheckParam( L, 7, dDeltaN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 8, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArc( nParentId, ptCen.v, vtN.v, dRad, vtS.v, dAngCenDeg, dDeltaN, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArcC2PN( lua_State* L)
|
|
{
|
|
// 5 o 6 parametri : ParentId, PtCen, PtStart, PtNearEnd, VtNorm [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Point3d ptStart ;
|
|
LuaCheckParam( L, 3, ptStart)
|
|
Point3d ptNearEnd ;
|
|
LuaCheckParam( L, 4, ptNearEnd)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 5, vtNorm)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 6, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArcC2PN( nParentId, ptCen.v, ptStart.v, ptNearEnd.v, vtNorm.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArcC2PNEx( lua_State* L)
|
|
{
|
|
// 7 o 8 parametri : ParentId, PtCen, PtStart, sSepS, nIdS, PtNearEnd, VtNorm [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptCen ;
|
|
LuaCheckParam( L, 2, ptCen)
|
|
Point3d ptStart ;
|
|
LuaCheckParam( L, 3, ptStart)
|
|
string sSepS ;
|
|
LuaCheckParam( L, 4, sSepS)
|
|
int nIdS ;
|
|
LuaCheckParam( L, 5, nIdS)
|
|
Point3d ptNearEnd ;
|
|
LuaCheckParam( L, 6, ptNearEnd)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 7, vtNorm)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 8, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArcC2PNEx( nParentId, ptCen.v, ptStart.v, StringToSep( sSepS), nIdS, ptNearEnd.v, vtNorm.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArc3P( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtP1, PtP2, PtP3 [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptP1 ;
|
|
LuaCheckParam( L, 2, ptP1)
|
|
Point3d ptP2 ;
|
|
LuaCheckParam( L, 3, ptP2)
|
|
Point3d ptP3 ;
|
|
LuaCheckParam( L, 4, ptP3)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArc3P( nParentId, ptP1.v, ptP2.v, ptP3.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArc2PVN( lua_State* L)
|
|
{
|
|
// 5 o 6 parametri : ParentId, PtStart, PtEnd, VtDirS, VtNorm [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptStart ;
|
|
LuaCheckParam( L, 2, ptStart)
|
|
Point3d ptEnd ;
|
|
LuaCheckParam( L, 3, ptEnd)
|
|
Vector3d vtDirS ;
|
|
LuaCheckParam( L, 4, vtDirS)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 5, vtNorm)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 6, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArc2PVN( nParentId, ptStart.v, ptEnd.v, vtDirS.v, vtNorm.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveArc2PVNEx( lua_State* L)
|
|
{
|
|
// 7 o 8 parametri : ParentId, PtStart, PtEnd, sSepE, nIdE, VtDirS, VtNorm [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptStart ;
|
|
LuaCheckParam( L, 2, ptStart)
|
|
Point3d ptEnd ;
|
|
LuaCheckParam( L, 3, ptEnd)
|
|
string sSepE ;
|
|
LuaCheckParam( L, 4, sSepE)
|
|
int nIdE ;
|
|
LuaCheckParam( L, 5, nIdE)
|
|
Vector3d vtDirS ;
|
|
LuaCheckParam( L, 6, vtDirS)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 7, vtNorm)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 8, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco
|
|
int nId = EgtCreateCurveArc2PVNEx( nParentId, ptStart.v, ptEnd.v, StringToSep( sSepE), nIdE,
|
|
vtDirS.v, vtNorm.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveFillet( lua_State* L)
|
|
{
|
|
// 8 o 9 parametri : ParentId, nCrv1, PtNear1, nCrv2, PtNear2, VtNorm, dRad, bTrim [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nCrv1 ;
|
|
LuaCheckParam( L, 2, nCrv1)
|
|
Point3d ptNear1 ;
|
|
LuaCheckParam( L, 3, ptNear1)
|
|
int nCrv2 ;
|
|
LuaCheckParam( L, 4, nCrv2)
|
|
Point3d ptNear2 ;
|
|
LuaCheckParam( L, 5, ptNear2)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 6, vtNorm)
|
|
double dRad ;
|
|
LuaCheckParam( L, 7, dRad)
|
|
bool bTrim ;
|
|
LuaCheckParam( L, 8, bTrim)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 9, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco di fillet
|
|
int nId = EgtCreateCurveFillet( nParentId, nCrv1, ptNear1.v, nCrv2, ptNear2.v,
|
|
vtNorm.v, dRad, bTrim, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveChamfer( lua_State* L)
|
|
{
|
|
// 8 o 9 parametri : ParentId, nCrv1, PtNear1, nCrv2, PtNear2, VtNorm, dDist, bTrim [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nCrv1 ;
|
|
LuaCheckParam( L, 2, nCrv1)
|
|
Point3d ptNear1 ;
|
|
LuaCheckParam( L, 3, ptNear1)
|
|
int nCrv2 ;
|
|
LuaCheckParam( L, 4, nCrv2)
|
|
Point3d ptNear2 ;
|
|
LuaCheckParam( L, 5, ptNear2)
|
|
Vector3d vtNorm ;
|
|
LuaCheckParam( L, 6, vtNorm)
|
|
double dDist ;
|
|
LuaCheckParam( L, 7, dDist)
|
|
bool bTrim ;
|
|
LuaCheckParam( L, 8, bTrim)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 9, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo l'arco di fillet
|
|
int nId = EgtCreateCurveChamfer( nParentId, nCrv1, ptNear1.v, nCrv2, ptNear2.v,
|
|
vtNorm.v, dDist, bTrim, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveBezier( lua_State* L)
|
|
{
|
|
// 3 o 4 parametri : ParentId, Degree, CtrlPnts [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nDegree ;
|
|
LuaCheckParam( L, 2, nDegree)
|
|
PNTVECTOR vPnt ;
|
|
LuaCheckParam( L, 3, vPnt)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 4, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo la curva
|
|
int nId = EgtCreateCurveBezier( nParentId, nDegree, vPnt, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveBezierRational( lua_State* L)
|
|
{
|
|
// 3 o 4 parametri : ParentId, Degree, CtrlPntWs [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nDegree ;
|
|
LuaCheckParam( L, 2, nDegree)
|
|
PNTUVECTOR vPntW ;
|
|
LuaCheckParam( L, 3, vPntW)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 4, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo la curva
|
|
int nId = EgtCreateCurveBezierRational( nParentId, nDegree, vPntW, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveBezierFromArc( lua_State* L)
|
|
{
|
|
// 2 o 3 parametri : ParentId, ArcId[ , Erase]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nArcId ;
|
|
LuaCheckParam( L, 2, nArcId)
|
|
bool bErase = true ;
|
|
if ( lua_gettop( L) >= 3)
|
|
LuaCheckParam( L, 3, bErase) ;
|
|
LuaClearStack( L) ;
|
|
// creo la curva
|
|
int nId = EgtCreateCurveBezierFromArc( nParentId, nArcId, bErase) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCompo( lua_State* L)
|
|
{
|
|
// 2 o 3 parametri : ParentId, nIds [, Erase]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
INTVECTOR vIds ;
|
|
LuaCheckParam( L, 2, vIds)
|
|
bool bErase = true ;
|
|
if ( lua_gettop( L) >= 3)
|
|
LuaCheckParam( L, 3, bErase) ;
|
|
LuaClearStack( L) ;
|
|
// creo la curva composita
|
|
int nId = EgtCreateCurveCompo( nParentId, vIds, bErase) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCompoByChain( lua_State* L)
|
|
{
|
|
// 3 o 4 o 5 parametri : ParentId, nIds, PtNear [, Erase] [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
INTVECTOR vIds ;
|
|
LuaCheckParam( L, 2, vIds)
|
|
Point3d ptNear ;
|
|
LuaCheckParam( L, 3, ptNear)
|
|
bool bErase = true ;
|
|
int nRefType = RTY_DEFAULT ;
|
|
if ( LuaGetParam( L, 4, bErase))
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
else
|
|
LuaGetRefType( L, 4, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo la curva composita
|
|
int nId = EgtCreateCurveCompoByChain( nParentId, vIds, ptNear, bErase, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCompoFromPoints( lua_State* L)
|
|
{
|
|
// 2 o 3 parametri : ParentId, ptPs [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
PNTVECTOR vPnt ;
|
|
LuaCheckParam( L, 2, vPnt)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 3, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
PolyLine PL ;
|
|
// creo una polilinea a partire dai punti
|
|
for ( size_t i = 0 ; i < vPnt.size() ; ++ i)
|
|
PL.AddUPoint( 0, vPnt[i]) ;
|
|
// creo la curva composita
|
|
int nId = EgtCreateCurveCompoFromPoints( nParentId, PL, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCompoFromPointBulges( lua_State* L)
|
|
{
|
|
// 2 o 3 parametri : ParentId, ptPBs [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
PNTUVECTOR vPntB ;
|
|
LuaCheckParam( L, 2, vPntB)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 3, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo un poliarco a partire dai punti con bulge
|
|
PolyArc PA ;
|
|
for ( size_t i = 0 ; i < vPntB.size() ; ++ i)
|
|
PA.AddUPoint( 0, vPntB[i].first, vPntB[i].second) ;
|
|
// creo la curva composita
|
|
int nId = EgtCreateCurveCompoFromPointBulges( nParentId, PA, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateCurveCompoByApprox( lua_State* L)
|
|
{
|
|
// 3 o 4 parametri : ParentId, nSouId, sType [, dLinTol]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nSouId ;
|
|
LuaCheckParam( L, 2, nSouId)
|
|
bool bArcsVsLines = true ;
|
|
string sTemp ;
|
|
LuaCheckParam( L, 3, sTemp)
|
|
ToUpper( sTemp) ;
|
|
if ( sTemp == "LINES")
|
|
bArcsVsLines = false ;
|
|
double dLinTol = 0.01 ;
|
|
if ( lua_gettop( L) >= 4)
|
|
LuaCheckParam( L, 4, dLinTol)
|
|
LuaClearStack( L) ;
|
|
// creo la curva composita
|
|
int nId = EgtCreateCurveCompoByApprox( nParentId, nSouId, bArcsVsLines, dLinTol) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreateRectangle3P( lua_State* L)
|
|
{
|
|
// 4 o 5 parametri : ParentId, PtIni, PtCross, PtDir [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 2, ptIni)
|
|
Point3d ptCross ;
|
|
LuaCheckParam( L, 3, ptCross)
|
|
Point3d ptDir ;
|
|
LuaCheckParam( L, 4, ptDir)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 5, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il poligono
|
|
int nId = EgtCreateRectangle3P( nParentId, ptIni.v, ptCross.v, ptDir.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreatePolygonFromRadius( lua_State* L)
|
|
{
|
|
// 5 o 6 parametri : ParentId, nNumSides, PtCen, PtCorn, VtN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nNumSides ;
|
|
LuaCheckParam( L, 2, nNumSides)
|
|
Point3d PtCen ;
|
|
LuaCheckParam( L, 3, PtCen)
|
|
Point3d PtCorn ;
|
|
LuaCheckParam( L, 4, PtCorn)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 5, vtN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 6, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il poligono
|
|
int nId = EgtCreatePolygonFromRadius( nParentId, nNumSides, PtCen.v, PtCorn.v, vtN.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreatePolygonFromApothem( lua_State* L)
|
|
{
|
|
// 5 o 6 parametri : ParentId, nNumSides, PtCen, PtMid, VtN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nNumSides ;
|
|
LuaCheckParam( L, 2, nNumSides)
|
|
Point3d PtCen ;
|
|
LuaCheckParam( L, 3, PtCen)
|
|
Point3d PtMid ;
|
|
LuaCheckParam( L, 4, PtMid)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 5, vtN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 6, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il poligono
|
|
int nId = EgtCreatePolygonFromApothem( nParentId, nNumSides, PtCen.v, PtMid.v, vtN.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
static int
|
|
LuaCreatePolygonFromSide( lua_State* L)
|
|
{
|
|
// 5 o 6 parametri : ParentId, nNumSides, PtIni, PtFin, VtN [, sRefType]
|
|
int nParentId ;
|
|
LuaCheckParam( L, 1, nParentId)
|
|
int nNumSides ;
|
|
LuaCheckParam( L, 2, nNumSides)
|
|
Point3d ptIni ;
|
|
LuaCheckParam( L, 3, ptIni)
|
|
Point3d ptFin ;
|
|
LuaCheckParam( L, 4, ptFin)
|
|
Vector3d vtN ;
|
|
LuaCheckParam( L, 5, vtN)
|
|
int nRefType = RTY_DEFAULT ;
|
|
LuaGetRefType( L, 6, nRefType) ;
|
|
LuaClearStack( L) ;
|
|
// creo il poligono
|
|
int nId = EgtCreatePolygonFromSide( nParentId, nNumSides, ptIni.v, ptFin.v, vtN.v, nRefType) ;
|
|
// restituisco il risultato
|
|
if ( nId != GDB_ID_NULL)
|
|
LuaSetReturn( L, nId) ;
|
|
else
|
|
LuaSetReturn( L) ;
|
|
return 1 ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
bool
|
|
LuaInstallGdbCreateCurve( void)
|
|
{
|
|
bool bOk = true ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtLine", LuaCreateCurveLine) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtLineEx", LuaCreateCurveLineEx) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtLinePVL", LuaCreateCurveLinePVL) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtLineMinPointCurve", LuaCreateCurveLineMinPointCurve) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCircle", LuaCreateCurveCircle) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCircleCPN", LuaCreateCurveCircleCPN) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCircleCPNEx", LuaCreateCurveCircleCPNEx) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCircle3P", LuaCreateCurveCircle3P) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArc", LuaCreateCurveArc) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArcC2PN", LuaCreateCurveArcC2PN) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArcC2PNEx", LuaCreateCurveArcC2PNEx) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArc3P", LuaCreateCurveArc3P) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArc2PVN", LuaCreateCurveArc2PVN) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtArc2PVNEx", LuaCreateCurveArc2PVNEx) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveFillet", LuaCreateCurveFillet) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveChamfer", LuaCreateCurveChamfer) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveBezier", LuaCreateCurveBezier) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveBezierRat", LuaCreateCurveBezierRational) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveBezierFromArc", LuaCreateCurveBezierFromArc) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveCompo", LuaCreateCurveCompo) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveCompoByChain", LuaCreateCurveCompoByChain) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveCompoFromPoints", LuaCreateCurveCompoFromPoints) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveCompoFromPointBulges", LuaCreateCurveCompoFromPointBulges) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtCurveCompoByApprox", LuaCreateCurveCompoByApprox) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtRectangle3P", LuaCreateRectangle3P) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtPolygonFromRadius", LuaCreatePolygonFromRadius) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtPolygonFromApothem", LuaCreatePolygonFromApothem) ;
|
|
bOk = bOk && LuaRegisterFunction( "EgtPolygonFromSide", LuaCreatePolygonFromSide) ;
|
|
return bOk ;
|
|
}
|