DataDoors 2.7c1 :
- primo commit con versione corrente.
This commit is contained in:
@@ -0,0 +1,483 @@
|
||||
--
|
||||
-- EEEEEEEEEE GGGGGG wwww wwww
|
||||
-- EEEEEEEEEE GGGGGGGGGG wwww wwww
|
||||
-- EEEE GGGG GGGG wwww wwww wwww
|
||||
-- EEEE GGGG wwww wwww wwww
|
||||
-- EEEEEEE GGGG GGGGGGG wwww wwwwww wwww
|
||||
-- EEEEEEE GGGG GGGGGGG wwww wwwwww wwww
|
||||
-- EEEE GGGG GGGG wwww wwwwwwww wwww
|
||||
-- EEEE GGGG GGGG wwww wwww wwww wwww
|
||||
-- EEEEEEEEEE GGGGGGGGGG wwwwwwww wwwwwwww
|
||||
-- EEEEEEEEEE GGGGGG wwwwwww wwwwwww
|
||||
--
|
||||
-- AssemblyDisp.lua by EgalWare s.r.l. 2017.11.14
|
||||
-- disposizione assemblato a raggruppamento
|
||||
|
||||
-- Tavola per definizione modulo (serve ma non usata)
|
||||
local AssemblyDisp = {}
|
||||
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-----------------------------------------------------------------
|
||||
local function GetFromPos( nIdPiece)
|
||||
|
||||
local pPosPlaced = EgtGetInfo( nIdPiece, 'MoveedTo', 'p')
|
||||
return pPosPlaced
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
local function GetPosToMove( nIdPiece)
|
||||
|
||||
local pPosFrom = EgtGetInfo( nIdPiece, 'PosFromDoor', 'p')
|
||||
return pPosFrom
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
local function GetTypePiece( nIdPiece)
|
||||
|
||||
local nTypePiece = EgtGetInfo( nIdPiece, 'Piece Type', 'i')
|
||||
local sAssembType = EgtGetInfo( nIdPiece, 'Assembly', 's') or ''
|
||||
|
||||
-- se non trovate note esco con errore
|
||||
if not ( nTypePiece and sAssembType) then
|
||||
return
|
||||
end
|
||||
|
||||
-- comparo i valori per trovare corrispondenza certa
|
||||
if nTypePiece == 1 and sAssembType == 'first' then
|
||||
return nTypePiece
|
||||
elseif nTypePiece == 2 and sAssembType == 'second' then
|
||||
return nTypePiece
|
||||
elseif nTypePiece == 3 and sAssembType == 'framesx' then
|
||||
return nTypePiece
|
||||
elseif nTypePiece == 4 and sAssembType == 'framedx' then
|
||||
return nTypePiece
|
||||
elseif nTypePiece == 5 and sAssembType == 'frametop' then
|
||||
return nTypePiece
|
||||
elseif nTypePiece == 6 and sAssembType == 'framebot' then
|
||||
return nTypePiece
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
local function MovePieceOfAssemb( Pz, nPrevDisp, nDispose, dExtraMove, dSecondDoorGap)
|
||||
|
||||
local bTypePiece = GetTypePiece( Pz)
|
||||
local pPosAct = GetFromPos( Pz)
|
||||
local pPosToMove = GetPosToMove( Pz)
|
||||
local pCalcPos
|
||||
|
||||
-- se manca qualche dato non faccio nulla
|
||||
if not ( bTypePiece and pPosAct and pPosToMove) then
|
||||
return
|
||||
end
|
||||
|
||||
-- se le disposizioni sono uguali non faccio nulla
|
||||
if nPrevDisp == nDispose then
|
||||
return
|
||||
end
|
||||
|
||||
if nDispose == 0 then -- se devo disporre come presentato dal Door
|
||||
|
||||
if bTypePiece == 2 then -- se porta secondaria
|
||||
|
||||
if nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( dSecondDoorGap,0,0)
|
||||
end
|
||||
|
||||
-- movimento
|
||||
EgtMove( Pz, pPosAct - pCalcPos, GDB_RT.GRID)
|
||||
-- assegno nota disposizione
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
else
|
||||
|
||||
if bTypePiece == 3 then -- se frame sx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d(-dExtraMove,0,0)
|
||||
end
|
||||
|
||||
-- porto il pezzo a zero
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
-- riporto il pezzo nella posizione originaria
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtMove( Pz, Point3d(dThickPiece,0,0) - ORIG(), GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
-- muovo a posizione disposta
|
||||
EgtMove( Pz, pPosAct - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota disposta
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 4 then -- se frame dx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( ( dExtraMove + dSecondDoorGap),0,0)
|
||||
end
|
||||
|
||||
-- porto il pezzo a zero
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
-- riporto il pezzo nella posizione originaria
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d(dWidthPiece,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtMove( Pz, Point3d(-dWidthPiece,0,0) - ORIG(), GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
-- muovo a posizione disposta
|
||||
EgtMove( Pz, pPosAct - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota disposta
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 5 then -- se frame top
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( (dSecondDoorGap/2), dExtraMove,0)
|
||||
end
|
||||
|
||||
-- porto il pezzo a zero
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
-- riporto il pezzo nella posizione originaria
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(-dLengthPiece,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia sinistra
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
EgtMove( Pz, Point3d(0,-dLengthPiece,0) - ORIG(), GDB_RT.GRID)
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia sinistra
|
||||
EgtMove( Pz, Point3d(dThickPiece,0,0) - ORIG(), GDB_RT.GRID)
|
||||
-- muovo a posizione disposta
|
||||
EgtMove( Pz, pPosAct - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota disposta
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 6 then -- se frame bottom
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( (dSecondDoorGap/2), -dExtraMove,0)
|
||||
end
|
||||
|
||||
-- porto il pezzo a zero
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
-- riporto il pezzo nella posizione originaria
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia sinistra
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia sinistra
|
||||
-- muovo a posizione disposta
|
||||
EgtMove( Pz, pPosAct - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota disposta
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
end
|
||||
end
|
||||
elseif nDispose == 1 then -- se devo disporre raggruppato
|
||||
|
||||
if bTypePiece == 2 then -- se porta secondaria
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( dSecondDoorGap,0,0)
|
||||
end
|
||||
|
||||
EgtMove( Pz, pPosToMove - pCalcPos, GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
else
|
||||
|
||||
if bTypePiece == 3 then -- se frame sx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( -dThickPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d(-dExtraMove,0,0)
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, pPosToMove - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 4 then -- se frame dx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( dWidthPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d( dWidthPiece,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( ( dExtraMove + dSecondDoorGap),0,0)
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, pPosToMove - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 5 then -- se frame top
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( -dThickPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia top
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia left
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
EgtMove( Pz, Point3d(0,dLengthPiece,0) - ORIG(), GDB_RT.GRID)
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( (dSecondDoorGap/2), dExtraMove,0)
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, pPosToMove - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 6 then -- se frame bottom
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia top
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia left
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 2 then -- se disposizione attuale esplosa
|
||||
pCalcPos = pPosToMove + Vector3d( (dSecondDoorGap/2), -dExtraMove,0)
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, pPosToMove - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
end
|
||||
end
|
||||
elseif nDispose == 2 then -- se devo disporre esploso
|
||||
|
||||
if bTypePiece == 2 then -- se porta secondaria
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
elseif nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
end
|
||||
|
||||
EgtMove( Pz, ( pPosToMove + Vector3d( dSecondDoorGap,0,0)) - pCalcPos, GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
else
|
||||
|
||||
if bTypePiece == 3 then -- se frame sx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( -dThickPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, ( pPosToMove + Vector3d( -dExtraMove,0,0)) - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 4 then -- se frame dx
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( dWidthPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.FRONT))
|
||||
EgtRotate( Pz, Point3d( dWidthPiece,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia frontale
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, ( pPosToMove + Vector3d( ( dExtraMove + dSecondDoorGap),0,0)) - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 5 then -- se frame top
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, Point3d( -dThickPiece,0,0) - pCalcPos, GDB_RT.GRID)
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia top
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia left
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
EgtMove( Pz, Point3d(0,dLengthPiece,0) - ORIG(), GDB_RT.GRID)
|
||||
elseif nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, ( pPosToMove + Vector3d( (dSecondDoorGap/2), dExtraMove,0)) - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
elseif bTypePiece == 6 then -- se frame bottom
|
||||
|
||||
-- acquisisco le misure del pezzo relative al tipo di pezzo
|
||||
local dWidthPiece = EgtGetInfo( Pz, 'H', 'd')
|
||||
local dLengthPiece = EgtGetInfo( Pz, 'T', 'd')
|
||||
local dThickPiece = EgtGetInfo( Pz, 'W', 'd')
|
||||
|
||||
if nPrevDisp == 0 then -- se disposizione attuale disposta come door
|
||||
pCalcPos = pPosAct
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), -90, GDB_RT.GRID) -- ruoto su faccia top
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.LEFT))
|
||||
EgtRotate( Pz, Point3d(0,0,0), Z_AX(), 90, GDB_RT.GRID) -- ruoto su faccia left
|
||||
EgtSetGridFrame( Frame3d( 0,0,0, GDB_FR.TOP))
|
||||
elseif nPrevDisp == 1 then -- se disposizione attuale raggruppata
|
||||
pCalcPos = pPosToMove
|
||||
-- prima devo portare il pezzo a zero e ruotarlo come originale
|
||||
EgtMove( Pz, ORIG() - pCalcPos, GDB_RT.GRID)
|
||||
end
|
||||
|
||||
-- movimento a nuova posizione
|
||||
EgtMove( Pz, ( pPosToMove + Vector3d( (dSecondDoorGap/2), -dExtraMove,0)) - ORIG(), GDB_RT.GRID)
|
||||
-- assegno nota raggruppata
|
||||
EgtSetInfo( Pz, 'DisposeAssembly', nDispose)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
function AssemblyDisp.AssemblyDispose( nDisposeMain)
|
||||
|
||||
-- ciclo per leggere i pezzi
|
||||
local dExtraMove = 100
|
||||
local dSecondDoorGap = 0
|
||||
local Pz = EgtGetFirstPart()
|
||||
|
||||
while Pz do
|
||||
local bTypePiece = GetTypePiece( Pz)
|
||||
if bTypePiece and bTypePiece == 2 then
|
||||
dSecondDoorGap = dExtraMove / 2
|
||||
Pz = nil
|
||||
else
|
||||
-- passo al pezzo successivo
|
||||
Pz = EgtGetNextPart( Pz)
|
||||
end
|
||||
end
|
||||
|
||||
Pz = EgtGetFirstPart()
|
||||
local nDispose
|
||||
|
||||
while Pz do
|
||||
|
||||
local nPrevDisp = EgtGetInfo( Pz, 'DisposeAssembly', 'i')
|
||||
if nPrevDisp == nil then
|
||||
nDispose = 1
|
||||
nPrevDisp = 0
|
||||
elseif nPrevDisp == 0 then
|
||||
nDispose = 1
|
||||
elseif nPrevDisp == 1 then
|
||||
nDispose = 2
|
||||
elseif nPrevDisp == 2 then
|
||||
nDispose = 0
|
||||
end
|
||||
|
||||
-- se il flag passato dal main non è nil prendo questo valore
|
||||
if nDisposeMain ~= nil then nDispose = nDisposeMain end
|
||||
|
||||
-- muovo il pezzo
|
||||
MovePieceOfAssemb( Pz, nPrevDisp, nDispose, dExtraMove, dSecondDoorGap)
|
||||
|
||||
-- passo al pezzo successivo
|
||||
Pz = EgtGetNextPart( Pz)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return AssemblyDisp
|
||||
|
||||
Reference in New Issue
Block a user