Compare commits

...

25 Commits

Author SHA1 Message Date
andrea.villa f4f94827d5 Modifiche a funzione riposizionemanto carrelli 2026-03-27 14:43:32 +01:00
andrea.villa 27bb16b3b7 Cambio nome variabili, per essere più chiaro quale è riferita alla paratia lato carico e quale allo scarico 2026-03-16 12:44:33 +01:00
andrea.villa 43166831e8 Merge branch 'develop' 2026-03-16 12:20:02 +01:00
andrea.villa c509cefe08 - Cambio versione per rilascio a cliente
- Cambio nome per distanza di collisione con paratie cabina
2026-03-16 12:19:49 +01:00
daniele.nicoli c520f90a5b Spostamento della faccia interna dei solidi di collisione dell'interno della cabina impostando la distanza da centro mandrino a carter nel TS3Data, sempre in positivo. Ticket#2852 2026-03-10 11:47:18 +01:00
andrea.villa 35d573cc20 Aggiunto info "PreviewShow" per anteprima utensile/testa nel MACH 2026-03-06 15:15:53 +01:00
andrea.villa 69054d2c90 Merge branch 'master' into develop 2026-03-06 15:15:06 +01:00
andrea.villa cddc5abcc1 Aggiunto in BeamData il parametro MAX_ANGLE_DRILL_CUT 2026-03-05 08:44:06 +01:00
andrea.villa 0324b24222 - Nuova strategia di pinzaggio attivo di default
- modificato distanza per collisione carro C a 403mm
- Lunghezza utensile lungo impostata a 218.5
2026-02-23 08:20:05 +01:00
andrea.villa a845258a81 Cambio versione per rilascio a cliente 2026-02-06 13:31:27 +01:00
andrea.villa 5486fab487 Merge branch 'develop' 2026-02-06 13:30:47 +01:00
Dario Sassi d2f093772d MachNotes modificato per nuovi parametri lavorazioni 5 assi. 2026-01-29 18:25:01 +01:00
daniele.nicoli a362c59c6f corretta visualizzazione elementi nel file nge 2026-01-28 08:59:49 +01:00
daniele.nicoli 69de0b9cc5 - Mosso nell' .nge il solido di collisione tra utensile e asse C superiore per essere portato al livello del solido reale.
- Implementati nell' .mlde un nuovo parametro (DistRotCenterBToTopC), reso impostabile LONG_TOOL_MINLEN e il movimento del solido di collisione sopracitato e della faccia della flangia dell'asse C superiore per regolare l'ingombro per ogni macchina. I parametri sono impostabili da Ts3Data.lua.
2026-01-27 17:09:17 +01:00
daniele.nicoli dc14d46bbc Merge branch 'master' into develop 2026-01-27 09:41:49 +01:00
andrea.villa c4270df480 Allineamento a common ver. 3.1a2 2026-01-26 15:57:20 +01:00
andrea.villa 096d04f640 - Nome macchina ricavato con funzione EGT dedicata
- HOTFIX: DeltaTol spostato in MLDE
2026-01-08 12:36:07 +01:00
andrea.villa 2d8d5a38a6 Merge branch 'develop' 2026-01-08 08:47:57 +01:00
andrea.villa 4fcf50951b Allineamento a common ver. 3.1a1 2026-01-08 08:47:48 +01:00
daniele.nicoli 4b2827f2cd Merge branch 'master' into develop 2026-01-07 10:44:33 +01:00
andrea.villa 29dddf0d52 Rimosse funzioni riportare da PF1250 2025-12-23 08:16:22 +01:00
andrea.villa 45148ee0c5 Merge remote-tracking branch 'origin/develop' 2025-12-22 10:10:01 +01:00
andrea.villa bc7fa48823 Cambio versione per rilascio a cliente 2025-12-22 10:09:22 +01:00
andrea.villa 05ebbc9221 Merge branch 'CheckPinzaggioVMILL' into develop 2025-12-22 10:08:42 +01:00
andrea.villa a909f2460c Corretto disegno porta utensile 2025-12-11 09:05:30 +01:00
11 changed files with 178 additions and 139 deletions
+4 -28
View File
@@ -9,8 +9,8 @@ local BeamData = {
RIGHT_LOAD = false, -- flag carico da destra RIGHT_LOAD = false, -- flag carico da destra
ROT90 = false, -- flag abilitazione rotazione 90 gradi ROT90 = false, -- flag abilitazione rotazione 90 gradi
ROT180 = true, -- flag abilitazione rotazione 180 gradi ROT180 = true, -- flag abilitazione rotazione 180 gradi
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli NEWCLAMPING = true, -- flag abilitazione nuovo metodo riposizionamento carrelli
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento FASTCLAMPING= false, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
MIN_WIDTH = 40, -- larghezza minima del grezzo MIN_WIDTH = 40, -- larghezza minima del grezzo
MIN_HEIGHT = 40, -- altezza minima del grezzo MIN_HEIGHT = 40, -- altezza minima del grezzo
MAX_WIDTH = 240, -- larghezza massima del grezzo MAX_WIDTH = 240, -- larghezza massima del grezzo
@@ -23,8 +23,6 @@ local BeamData = {
STD_RAW = 14000, -- lunghezza standard della barra di grezzo STD_RAW = 14000, -- lunghezza standard della barra di grezzo
OVM_HEAD = 10, -- sovramateriale testa OVM_HEAD = 10, -- sovramateriale testa
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama) OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
MIN_JOIN_S = 100, -- minima presa pinza per pezzo piccolo
MIN_JOIN_L = 450, -- minima presa pinza per pezzo grande
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda
@@ -44,6 +42,7 @@ local BeamData = {
DRILL_VZ_MIN = -0.51, -- componente limite in Z del versore di un foro DRILL_VZ_MIN = -0.51, -- componente limite in Z del versore di un foro
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
MAX_ANGLE_DRILL_CUT = 10, -- angolo massimo tra la foratura e il taglio che la attraversa
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda
@@ -107,6 +106,7 @@ if EgtExistsFile( sData) then
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
if Machine.Offsets.MAX_ANGLE_DRILL_CUT then BeamData.MAX_ANGLE_DRILL_CUT = EgtClamp( Machine.Offsets.MAX_ANGLE_DRILL_CUT, 1, 89) end
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
@@ -156,30 +156,6 @@ local function GetMaxLenRidgeLapFromBottom( dHRaw)
end end
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
---------------------------------------------------------------------
local function GetSectionCoeff( dW, dH, dL)
local SEZ_L = 80000
local SEZ_S = 20000
local LEN_SMALL = 2000
local dSez = dW * dH
if dSez <= SEZ_S then
return 0.0
elseif dSez < SEZ_L then
if dL and dL < LEN_SMALL then dSez = max( 0.6 * dSez, SEZ_S) end
local dCoeff = ( dSez - SEZ_S) / ( SEZ_L - SEZ_S)
return dCoeff
else
return 1.0
end
end
---------------------------------------------------------------------
local function GetMinUnloadableRaw( dW, dH)
local dCoeff = GetSectionCoeff( dW, dH)
return BeamData.MINRAW_S + dCoeff * ( BeamData.MINRAW_L - BeamData.MINRAW_S)
end
BeamData.GetMinUnloadableRaw = GetMinUnloadableRaw
--------------------------------------------------------------------- ---------------------------------------------------------------------
local function GetBlockedAxis( sHead, nToolType, sBlockedAxis) local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
-- lama -- lama
+3 -3
View File
@@ -609,6 +609,9 @@ function OnRapid()
MyBackupAxes() MyBackupAxes()
-- se primo movimento della lavorazione, gestione speciale -- se primo movimento della lavorazione, gestione speciale
if EMT.MCHFIRST and not EMT.OPEISDISP then if EMT.MCHFIRST and not EMT.OPEISDISP then
-- primo posizionamento
local MyZHome = EgtGetAxisHomePos( 'Z')
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
-- decido se muovere prima testa o carrelli (standard prima testa) -- decido se muovere prima testa o carrelli (standard prima testa)
local bHeadFirst = true local bHeadFirst = true
local sLateG101 local sLateG101
@@ -641,9 +644,6 @@ function OnRapid()
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3) local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
local sES = ' ES'..EgtNumToString( EMT.S, 0) local sES = ' ES'..EgtNumToString( EMT.S, 0)
-- primo posizionamento
local MyZHome = EgtGetAxisHomePos( 'Z')
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti -- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) .. local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
+3 -3
View File
@@ -657,6 +657,9 @@ function OnRapid()
MyBackupAxes() MyBackupAxes()
-- se primo movimento della lavorazione, gestione speciale -- se primo movimento della lavorazione, gestione speciale
if EMT.MCHFIRST and not EMT.OPEISDISP then if EMT.MCHFIRST and not EMT.OPEISDISP then
-- primo posizionamento
local MyZHome = EgtGetAxisHomePos( 'Z')
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
-- decido se muovere prima testa o carrelli (standard prima testa) -- decido se muovere prima testa o carrelli (standard prima testa)
local bHeadFirst = true local bHeadFirst = true
local sLateG101 local sLateG101
@@ -713,9 +716,6 @@ function OnRapid()
local sES = ' ES'..EgtNumToString( EMT.S, 0) local sES = ' ES'..EgtNumToString( EMT.S, 0)
-- primo posizionamento
local MyZHome = EgtGetAxisHomePos( 'Z')
local bZmax = ( #EMT.AUXSTR > 0 or EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
-- se avevo motosega, torno in zona sicura senza ruotare assi rotanti -- se avevo motosega, torno in zona sicura senza ruotare assi rotanti
if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then if not EMT.LOAD and EMT.PREVHEAD == 'H3' and EMT.FLAG2 == 1 then
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) .. local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
+27 -36
View File
@@ -464,11 +464,10 @@ function OnSimulDispositionStart()
EgtMove( nRawId, vtMove, GDB_RT.GLOB) EgtMove( nRawId, vtMove, GDB_RT.GLOB)
EmtLinkRawPartToGroup( nRawId, 'Y') EmtLinkRawPartToGroup( nRawId, 'Y')
end end
nRawId = nNextRawId
end end
--nRawId = nNextRawId nRawId = nNextRawId
EMT.LB = b3Bar:getDimX()
end end
EMT.LB = b3Bar:getDimX()
end end
-- Indicazione angolo rotazione pezzo -- Indicazione angolo rotazione pezzo
EMT.ROT = EgtGetInfo( EMT.DISPID, 'ROT', 'i') or 0 EMT.ROT = EgtGetInfo( EMT.DISPID, 'ROT', 'i') or 0
@@ -1100,16 +1099,17 @@ end
--------------------------------------------------------------------- ---------------------------------------------------------------------
function CheckClamping( sClampName) function CheckClamping( sClampName)
nIndexClamp = EgtGetAxisId( sClampName)
local idClampPath = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nIndexClamp, 'CLAMP_CHECK') or GDB_ID.NULL) local nClampId = EgtGetAxisId( sClampName) or GDB_ID.NULL
local b3ClampingArea = EgtGetBBoxGlob( idClampPath or GDB_ID.NULL, GDB_BB.STANDARD) local nClampPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nClampId, 'CLAMP_CHECK') or GDB_ID.NULL)
local b3ClampingArea = EgtGetBBoxGlob( nClampPathId or GDB_ID.NULL, GDB_BB.STANDARD)
-- se non trovo percorso area di clamping, esco subito -- se non trovo percorso area di clamping, esco subito
if not idClampPath or not EMT.VMILL or not ClampingCoeffMin then if not nClampPathId or not EMT.VMILL or not ClampingCoeffMin then
return return
end end
local function GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth) local function GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth)
local idCurveList = {} local vCurveListId = {}
local vtIntersPlane local vtIntersPlane
-- piano di interpolazione -- piano di interpolazione
if sIntersPlane == 'X' then if sIntersPlane == 'X' then
@@ -1128,44 +1128,35 @@ function CheckClamping( sClampName)
elseif sPosIntersPlane == 'MAX' then elseif sPosIntersPlane == 'MAX' then
ptPosIntersPlane = b3VMill:getMax() - dDepth * vtIntersPlane ptPosIntersPlane = b3VMill:getMax() - dDepth * vtIntersPlane
end end
local nLoopId, nLoopCnt = EgtPlaneVolZmapInters( ptPosIntersPlane, vtIntersPlane, EMT.VMILL[i], CLAMP_CHECK_INTERS, GDB_RT.GLOB)
local idLoop, nLoopCnt = EgtPlaneVolZmapInters( ptPosIntersPlane, vtIntersPlane, EMT.VMILL[i], CLAMP_CHECK_INTERS, GDB_RT.GLOB) vCurveListId = EgtTableAdd( vCurveListId, nLoopId, nLoopCnt)
-- se c'è almeno una curva
if idLoop then
for j = 1, nLoopCnt do
local idLoopTemp = idLoop + j - 1
table.insert( idCurveList, idLoopTemp)
end
end
end end
return idCurveList
return vCurveListId
end end
local function CalculateIntersectionArea( sPosIntersPlane, sIntersPlane, dDepth) local function CalculateIntersectionArea( sPosIntersPlane, sIntersPlane, dDepth)
-- test piano frontale -- test piano frontale
local idCurveList = GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth) local vCurveListId = GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth)
-- si copia curva intersezione e curva pinza in gruppo di confronto -- si copia curva intersezione e curva pinza in gruppo di confronto
local idFlatSurf, nFlatSurfCnt = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, idCurveList) local nFlatSurfId, nFlatSurfCnt = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, vCurveListId)
local idClampSurf = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, idClampPath) local vFlatSurfId = EgtTableFill( nFlatSurfId, nFlatSurfCnt) or {}
local nClampSurfId = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, nClampPathId)
if idFlatSurf then local dTotalArea = 0
local dTotalArea = 0 local dTotalXLenght = 0
local dTotalXLenght = 0 for i = 1, #vFlatSurfId do
for k = 1, nFlatSurfCnt do local nTempSurfId = vFlatSurfId[i]
local idTempSurf = idFlatSurf + k - 1 EgtSurfFrIntersect( nTempSurfId, nClampSurfId)
EgtSurfFrIntersect( idTempSurf, idClampSurf) if nTempSurfId then
if idTempSurf then dTotalArea = dTotalArea + ceil( EgtSurfArea( nTempSurfId) or 0)
dTotalArea = dTotalArea + ceil( EgtSurfArea( idTempSurf) or 0) local b3BoxIntersectionBox = EgtGetBBoxGlob( nTempSurfId, GDB_BB.STANDARD)
local b3BoxIntersectionBox = EgtGetBBoxGlob( idTempSurf, GDB_BB.STANDARD) if b3BoxIntersectionBox then
if b3BoxIntersectionBox then dTotalXLenght = dTotalXLenght + ceil( b3BoxIntersectionBox:getDimX()) -- somma lunghezze (x) delle aree pinzate
dTotalXLenght = dTotalXLenght + ceil( b3BoxIntersectionBox:getDimX()) -- somma lunghezze (x) delle aree pinzate
end
end end
end end
return dTotalArea, dTotalXLenght
end end
return 0 return dTotalArea, dTotalXLenght
end end
-- minima area considerata per un corretto pinzaggio -- minima area considerata per un corretto pinzaggio
+54 -19
View File
@@ -32,7 +32,6 @@ end
---------- OnSpecialApplyDisposition & OnPostApplyMachining --------- ---------- OnSpecialApplyDisposition & OnPostApplyMachining ---------
----------------------- Costanti ------------------------------------ ----------------------- Costanti ------------------------------------
local DELTA_TOL_FIXED = 50 local DELTA_TOL_FIXED = 50
local DeltaTol = 210
local DELTA_SIC = 1 local DELTA_SIC = 1
local AGG_LOAD = 50 local AGG_LOAD = 50
@@ -1537,9 +1536,12 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dTPosF = MaxV - dVDeltaF dTPosF = MaxV - dVDeltaF
end end
-- se il pinzaggio deve essere invertito forzo entrata nei riposizionamenti
-- altrimenti posizioni iniziali e finali sono coincidenti dato che la pinza non in presa viene posizionata alla distanza minima a quella in presa
local bInvertClamping = not EMC.PILGRIMSTEP and EMC.YDELTA ~= EMC.YDELTANEXT and EMC.VDELTA ~= EMC.VDELTANEXT
-- verifico che le morse non sono in posizione -- verifico che le morse non sono in posizione
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL or if ( abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL or abs( dVDeltaF - dVDeltaI) > 10 * GEO.EPS_SMALL or bInvertClamping) and
EMC.YDELTA ~= EMC.YDELTANEXT or EMC.VDELTA ~= EMC.VDELTANEXT then ( EMC.YDELTA ~= EMC.YDELTANEXT or EMC.VDELTA ~= EMC.VDELTANEXT) then
if #vCmd == 0 then if #vCmd == 0 then
table.insert( vCmd, { 0, 'Clamp repositioning'}) table.insert( vCmd, { 0, 'Clamp repositioning'})
-- risalita testa a Zmax -- risalita testa a Zmax
@@ -1611,6 +1613,18 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- se spostamento verso il carico -- se spostamento verso il carico
elseif ( dVPosI + ( dVDeltaF - dVDeltaI)) > MaxV then elseif ( dVPosI + ( dVDeltaF - dVDeltaI)) > MaxV then
dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MaxV dBeamMove = dVPosI + ( dVDeltaF - dVDeltaI) - MaxV
-- se è FASTCLAMPING attivo, si suddivide il movimento
elseif BD.FASTCLAMPING then
-- se la trave si sposta dal carico verso lo scarico
if dTPosI - dTPosF > 0 then
dBeamMove = min( -( dTPosF - dTPosI), -( MyMinY - dYPosI), -( dVDeltaI - dVDeltaF))
else
dBeamMove = max( -( dTPosF - dTPosI), -( MyMinY - dYPosI))
end
dBeamMove = dBeamMove / 2
-- altrimenti la trave resta ferma e la pinza 1 va in presa (si limita lo scivolamento del pezzo)
else
;
end end
-- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare -- se serve un grande spostamento e si sta pinzando poco. Y trascinatore pinza poco e V si sposta per prima per recuperare
@@ -1685,6 +1699,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- movimento terminato -- movimento terminato
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
EMC.YDELTA = EMC.YDELTANEXT
EMC.VDELTA = EMC.VDELTANEXT
-- SECONDO CASO -> SCAMBIO DIRETTO : Y IN POSIZIONE FINALE -- SECONDO CASO -> SCAMBIO DIRETTO : Y IN POSIZIONE FINALE
-- Y può andare in posizione direttamente se : -- Y può andare in posizione direttamente se :
@@ -1721,6 +1737,18 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- se spostamento verso il carico -- se spostamento verso il carico
elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then elseif ( dYPosI + ( dYDeltaF - dYDeltaI)) > MaxY then
dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MaxY) dBeamMove = -( dYPosI + ( dYDeltaF - dYDeltaI) - MaxY)
-- se è FASTCLAMPING attivo, si suddivide il movimento
elseif BD.FASTCLAMPING then
-- se la trave si sposta dal carico verso lo scarico
if dTPosI - dTPosF > 0 then
dBeamMove = max( ( dTPosF - dTPosI), ( MinV - dVPosI), ( dYDeltaI - dYDeltaF))
else
dBeamMove = min( ( dTPosF - dTPosI), ( dVPosI - MaxV))
end
dBeamMove = dBeamMove / 2
-- altrimenti la trave resta ferma e la pinza 1 va in presa (si limita lo scivolamento del pezzo)
else
;
end end
-- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare -- se serve un grande spostamento e si sta pinzando poco. V trascinatore pinza poco e Y si sposta per prima per recuperare
@@ -1794,6 +1822,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
end end
-- movimento terminato -- movimento terminato
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
EMC.YDELTA = EMC.YDELTANEXT
EMC.VDELTA = EMC.VDELTANEXT
-- TERZO CASO -> PASSO DEL PELLEGRINO -- TERZO CASO -> PASSO DEL PELLEGRINO
-- non è possibile fare scambio diretto. -- non è possibile fare scambio diretto.
@@ -1842,6 +1872,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
dDeltaBeam = dTPosI - dTPosF dDeltaBeam = dTPosI - dTPosF
-- a questo punto entrambe le pinze sono in presa sul pezzo. -- a questo punto entrambe le pinze sono in presa sul pezzo.
-- trave si muove dal carico allo scarico
-- Il trascinatore si decide in base alla direzione di movimento trave -- Il trascinatore si decide in base alla direzione di movimento trave
-- trascino con morsa allo scarico. Obiettivo mandare Y in posizione per prima -- trascino con morsa allo scarico. Obiettivo mandare Y in posizione per prima
if dDeltaBeam > 0 then if dDeltaBeam > 0 then
@@ -1884,18 +1915,21 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo -- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos) SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- recupero una corsa massima e l'altra solo di quello che serve -- recupero una corsa massima e l'altra solo di quello che serve
elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampY then elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampV then
-- suddivido il movimento su entrambe le morse
local dTotMove = ( dYDeltaF - dYDeltaI) / 2
-- morsa Y arriva in posizione finale -- morsa Y arriva in posizione finale
dYDeltaI = dYDeltaF
dVPosA = MinV dVPosA = MaxV - dTotMove
dTPosA = dTPosI - dVPosI + MinV dTPosA = dTPosI - dVPosI + MaxV - dTotMove
dYPosA = dYDeltaF + dTPosA dYPosA = dYDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA}) table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)}) table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
table.insert( vCmd, { 12, 0}) table.insert( vCmd, { 12, 0})
dYDeltaI = dYDeltaF
dTPosI = dTPosA dTPosI = dTPosA
EMC.YDELTA = dYDeltaF EMC.YDELTA = dYDeltaF
EMC.VDELTA = dVDeltaI EMC.VDELTA = nil
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo -- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos) SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- non serve recuperare al massimo della corsa, suddivido movimento in due -- non serve recuperare al massimo della corsa, suddivido movimento in due
@@ -1929,9 +1963,9 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
end end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA}) table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
EMC.YDELTA = EMC.YDELTANEXT
EMC.VDELTA = EMC.VDELTANEXT
-- aggiorno nuova posizione della morsa allo scarico dopo riposizionamento
dVDeltaI = dVDeltaF
end end
-- imposto i nuovi parametri di aggancio -- imposto i nuovi parametri di aggancio
@@ -1990,17 +2024,19 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo -- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos) SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
-- recupero una corsa massima e l'altra solo di quello che serve -- recupero una corsa massima e l'altra solo di quello che serve
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampV then elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampY then
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento -- suddivido il movimento su entrambe le morse
dVDeltaI = dVDeltaF local dTotMove = ( dVDeltaI - dVDeltaF) / 2
dYPosA = MaxY -- morsa V arriva in posizione finale
dTPosA = dTPosI + ( MaxY - dYPosI) dYPosA = MaxY + dTotMove
dTPosA = dTPosI + ( MaxY - dYPosI) + dTotMove
dVPosA = dVDeltaF + dTPosA dVPosA = dVDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA}) table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)}) table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
table.insert( vCmd, { 11, 0}) table.insert( vCmd, { 11, 0})
dVDeltaI = dVDeltaF
dTPosI = dTPosA dTPosI = dTPosA
EMC.YDELTA = dYDeltaI EMC.YDELTA = nil
EMC.VDELTA = dVDeltaF EMC.VDELTA = dVDeltaF
-- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo -- mi serve riposizonare di nuovo, quindi richiamo funzione in modo ricorsivo
SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos) SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF, dVDeltaF, bFixedDelta, bFixedPos)
@@ -2035,9 +2071,8 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
end end
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA}) table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF dTPosI, dYDeltaI, dVDeltaI = dTPosF, dYDeltaF, dVDeltaF
EMC.YDELTA = EMC.YDELTANEXT
-- aggiorno nuova posizione della morsa al carico dopo riposizionamento EMC.VDELTA = EMC.VDELTANEXT
dYDeltaI = dYDeltaF
end end
-- imposto i nuovi parametri di aggancio -- imposto i nuovi parametri di aggancio
+52 -32
View File
@@ -24,10 +24,10 @@
require( 'EmtGenerator') require( 'EmtGenerator')
EgtEnableDebug( false) EgtEnableDebug( false)
PP_VER = '2.7l4_DEV1' PP_VER = '3.1c2'
PP_NVER = '2.7.12.4' PP_NVER = '3.1.3.2'
MIN_MACH_VER = '2.7j1' MIN_MACH_VER = '2.7j1'
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio MACH_NAME = EgtGetCurrMachineName()
-- Carico i dati globali -- Carico i dati globali
local sMachDir = EgtGetCurrMachineDir() local sMachDir = EgtGetCurrMachineDir()
@@ -46,7 +46,7 @@ end
EgtOutLog ( '** ' .. MACH_NAME..' '..PP_VER..' ** ( '..INFO_STD_PP.NAME..': '..INFO_STD_PP.VERSION..' - MinMach: '.. MIN_MACH_VER ..') **', 1) EgtOutLog ( '** ' .. MACH_NAME..' '..PP_VER..' ** ( '..INFO_STD_PP.NAME..': '..INFO_STD_PP.VERSION..' - MinMach: '.. MIN_MACH_VER ..') **', 1)
-- Parametri macchina -- Parametri macchina
NumericalControl = 'TPA' -- NUM o TPA o NUM_PLUS NumericalControl = 'TPA' -- NUM o TPA o NUM_PLUS
MinX = 0 MinX = 0
MaxX = 1350 MaxX = 1350
MinZ = -1350 MinZ = -1350
@@ -65,6 +65,7 @@ LoadT = 1454.2
UnloadT = -1700 UnloadT = -1700
MaxOpen = 305 MaxOpen = 305
MillOffs = 177.35 MillOffs = 177.35
DistRotCenterBToTopC = 403 -- distanza tra il centro di rotazione del mandrino B e la mensola C
SawOffs = -242.68 SawOffs = -242.68
SawBOffs = 0 SawBOffs = 0
SawCOffs = 0 SawCOffs = 0
@@ -75,7 +76,7 @@ AngTrBHOffs = 154.5
AngTrBHLen = 90 AngTrBHLen = 90
TurnerOffs = 200.0 TurnerOffs = 200.0
DeltaTabY = 898.0 DeltaTabY = 898.0
DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4 DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
DimTabY = 400 DimTabY = 400
DimTabX = 34000 DimTabX = 34000
LenToPress = 900 LenToPress = 900
@@ -86,22 +87,24 @@ DefTcPos = 'T2'
SecondSupport = 0 SecondSupport = 0
SpecialBH = false SpecialBH = false
MaxUnloadLen = 0 MaxUnloadLen = 0
BeamHeightForFixRot = 9999 -- per abilitare assegnare 500 BeamHeightForFixRot = 9999 -- per abilitare assegnare 500
NewTopC = true NewTopC = true
SafeXRotAxes = 150 SafeXRotAxes = 150
AggreBlockHaus = false AggreBlockHaus = false
SecondToolChanger = false SecondToolChanger = false
EstimationRapidMultiplier = 1 EstimationRapidMultiplier = 1
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
MinJoinVV = 75 MinJoinVV = 75
MinJoinSS = 100 MinJoinSS = 100
MinJoinLS = 290 MinJoinLS = 290
MinJoinSL = 100 MinJoinSL = 100
MinJoinLL = 400 MinJoinLL = 400
DistHeadToCabinUnload = nil -- distanza tra la paratia al carico e la testa macchina (Y) in valore assoluto
DistHeadToCabinLoad = nil -- distanza tra la paratia allo scarico e la testa macchina (Y) in valore assoluto
-- costanti dimensioni utensili -- costanti dimensioni utensili
LONG_TOOL_MINLEN = 221 LONG_TOOL_MINLEN = 218.5
BIG_TOOL_DIAM = 300 BIG_TOOL_DIAM = 300
-- leggo e aggiorno con parametri da BeamData -- leggo e aggiorno con parametri da BeamData
@@ -178,6 +181,10 @@ if EgtExistsFile( sData) then
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
if Machine.Offsets.MAX_HEIGHT_ROT_B_ABOVE then BeamHeightForFixRot = Machine.Offsets.MAX_HEIGHT_ROT_B_ABOVE end if Machine.Offsets.MAX_HEIGHT_ROT_B_ABOVE then BeamHeightForFixRot = Machine.Offsets.MAX_HEIGHT_ROT_B_ABOVE end
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
if Machine.Offsets.DIST_ROT_CENTER_B_TO_TOP_C then DistRotCenterBToTopC = EgtClamp( Machine.Offsets.DIST_ROT_CENTER_B_TO_TOP_C, 395, 410) end
if Machine.Offsets.LONG_TOOL_MINLEN then LONG_TOOL_MINLEN = EgtClamp( Machine.Offsets.LONG_TOOL_MINLEN, 216, 226.1) end
if Machine.Offsets.DIST_HEAD_TO_CABIN_UNLOAD then DistHeadToCabinUnload = Machine.Offsets.DIST_HEAD_TO_CABIN_UNLOAD end
if Machine.Offsets.DIST_HEAD_TO_CABIN_LOAD then DistHeadToCabinLoad = Machine.Offsets.DIST_HEAD_TO_CABIN_LOAD end
end end
end end
end end
@@ -185,6 +192,7 @@ if SpecialBH then SecondSupport = 0 end
-- Aggiorno valori MinJoin -- Aggiorno valori MinJoin
MinJoin = MinJoinSS MinJoin = MinJoinSS
MinOther = abs( MinY) + abs( MaxV) + MinJoin MinOther = abs( MinY) + abs( MaxV) + MinJoin
DeltaTol = 210
-- compongo i gruppi appartenenti alla base -- compongo i gruppi appartenenti alla base
local sBaseAux = {'BASE/SOLID', 'BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'} local sBaseAux = {'BASE/SOLID', 'BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}
@@ -204,7 +212,19 @@ local BaseId = EmtBase {
Name = 'Base', Name = 'Base',
Geo='BASE/GEO', Geo='BASE/GEO',
Aux = sBaseAux} Aux = sBaseAux}
-- Sposta la faccia interna alla cabina dei solidi di collisione se sono impostati nel TS3Data, valori positivi
if DistHeadToCabinLoad then
local nSide1Id = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), 'SIDE1')
local b3Collision = EgtGetBBox( nSide1Id, GDB_BB.STANDARD)
local vtMove = Vector3d( -abs( DistHeadToCabinLoad) - b3Collision:getMax()[1], 0, 0)
EgtSurfTmMoveFacet( nSide1Id, 3, vtMove, GDB_RT.GLOB)
end
if DistHeadToCabinUnload then
local nSide2Id = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), 'SIDE2')
local b3Collision = EgtGetBBox( nSide2Id, GDB_BB.STANDARD)
local vtMove = Vector3d( abs( DistHeadToCabinUnload) - b3Collision:getMin()[1], 0, 0)
EgtSurfTmMoveFacet( nSide2Id, 3, vtMove, GDB_RT.GLOB)
end
local XId = EmtAxis { local XId = EmtAxis {
Name = 'X', Name = 'X',
Parent = 'Base', Parent = 'Base',
@@ -236,28 +256,28 @@ local CId = EmtAxis {
Home = 0, Home = 0,
Geo = 'C_AXIS/GEO', Geo = 'C_AXIS/GEO',
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION', 'C_AXIS/COLLISION2'}} Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION', 'C_AXIS/COLLISION2'}}
if NewTopC then
local vtMove = Vector3d( 65,0,0) -- Imposto i vettori di movimento separatamente se sono presenti le variabili di riferimento
local SolidArmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'SOLID'), 'ARM') local vtXMove = Vector3d( EgtIf( NewTopC, 65, 0), 0, 0)
if EgtSurfTmMoveFacet then -- si prende la minima distanza tra DistRotCenterBToTopC e LONG_TOOL_MINLEN + pivot (comunque distanza minima 403)
EgtSurfTmMoveFacet( SolidArmId, 11, vtMove, GDB_RT.GLOB) local dZMove = max( 403, min( ( MillOffs + LONG_TOOL_MINLEN + 5), DistRotCenterBToTopC)) - 400
else local vtZMove = Vector3d( 0, 0, dZMove)
EgtSurfTmMoveVertex( SolidArmId, 23, EgtSurfTmGetVertex( SolidArmId, 23, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB) -- Muove le facce in X e Z del solido principale
EgtSurfTmMoveVertex( SolidArmId, 25, EgtSurfTmGetVertex( SolidArmId, 25, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB) local SolidArmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'SOLID'), 'ARM')
EgtSurfTmMoveVertex( SolidArmId, 35, EgtSurfTmGetVertex( SolidArmId, 35, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB) EgtSurfTmMoveFacet( SolidArmId, 14, vtZMove, GDB_RT.GLOB)
EgtSurfTmMoveVertex( SolidArmId, 36, EgtSurfTmGetVertex( SolidArmId, 36, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB) EgtSurfTmMoveFacet( SolidArmId, 11, vtXMove, GDB_RT.GLOB)
end -- Muove il solido di collisione denominato "TOP" in X e muove la sua faccia inferiore per portarla al pari del solido principale
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP') local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP')
EgtMove( CollTopId, vtMove, GDB_RT.GLOB) EgtMove( CollTopId, vtXMove, GDB_RT.GLOB)
EgtSetName( CollTopId, 'BOX') EgtSurfTmMoveFacet( CollTopId, 4, vtZMove, GDB_RT.GLOB)
local RefId = CollTopId + EgtGetInfo( CollTopId, 'Frame', 'i') EgtSetName( CollTopId, 'BOX')
EgtSetInfo( RefId, 'CollSkip', 'C_TOP') -- Imposta nel Frame di riferimento l'info "CollSkip"
else local RefId = CollTopId + EgtGetInfo( CollTopId, 'Frame', 'i')
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP') EgtSetInfo( RefId, 'CollSkip', 'C_TOP')
EgtSetName( CollTopId, 'BOX') -- Muove il solido di collisione C_TOP
local RefId = CollTopId + EgtGetInfo( CollTopId, 'Frame', 'i') local CollUtTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION2'), 'C_TOP')
EgtSetInfo( RefId, 'CollSkip', 'C_TOP') EgtMove( CollUtTopId, vtZMove, GDB_RT.GLOB)
end
EmtAxis { EmtAxis {
Name = 'B', Name = 'B',
Parent = 'C', Parent = 'C',
BIN
View File
Binary file not shown.
+26 -17
View File
@@ -20,6 +20,7 @@
2=d,OpenMinSafe,0 2=d,OpenMinSafe,0
3=d,OpenOutRaw,0 3=d,OpenOutRaw,0
4=l,MaxOptSize,0 4=l,MaxOptSize,0
5=b,AdjustFeed,1
[Mortising] [Mortising]
0=l,MaxElev,0 0=l,MaxElev,0
@@ -33,26 +34,34 @@
[GenMachining] [GenMachining]
[SurfRoughing] [SurfRoughing]
0=l,MaxElev,1000 0=l,MaxElev,0
1=b,PlaneZ,0 1=b,PlaneZ,0
2=i,Order,[0=ByPlane;1=ByDepth]
[SurfFinishing] [SurfFinishing]
0=b,SkipMaxDown,1 0=b,SkipMaxDown,1
1=i,OptimalType,[0=ZigZag;2=SpiralIn;3=SpiralOut]
2=d,SplitAngle,45
3=d,AngleTol,5
[5AxMilling] [5AxMilling]
0=l,LinTol,0.01 0=s,VtAuxDir,0,1,0
1=l,MaxLen,10 1=l,LinTol,0.01
2=s,Type,ZigZag 2=l,MaxLen,10
3=d,SideAng,90 3=i,ProjType,[0=MinDist;1=FixedDir;2=Guide]
4=l,Step,10 4=i,PocketType,[0=ZigZag;2=SpiralIn;3=SpiralOut]
5=d,AngIni,-90 5=d,PocketAng,0
6=d,AngFin,90 6=d,SideAng,90
7=l,LiTang,0 7=d,LeadAng,0
8=l,LiOrth,0 8=l,Step,10
9=l,LiElev,0 9=d,AngIni,-90
10=l,LoTang,0 10=d,AngFin,90
11=l,LoOrth,0 11=l,LiTang,0
12=l,LoElev,0 12=l,LiOrth,0
13=b,DirFromGuide,0 13=l,LiElev,0
14=b,SurfAvoid,0 14=l,LoTang,0
15=l,LoOrth,0
16=l,LoElev,0
17=b,DirFromGuide,0
18=b,SurfAvoid,0
19=d,SingConeAng,0.1
Binary file not shown.
+8
View File
@@ -1,5 +1,13 @@
==== Common_FAST Update Log ==== ==== Common_FAST Update Log ====
Versione 3.1a2 (26/01/2026)
- (GEN) Nella G101 il parametro EE era sempre a 4 perchè la variabile veniva settata dopo. Ticket#2796
Versione 3.1a1 (08/01/2026)
- (SIM) Ottimizzata scrittura funzione ClampCheck post aggiornamento dll
- (SIM) Corretto problema della funzione OnSimulDispositionStart in caso di fase finale.
- (MLDE-SIM-GEN) Variabile DeltaTol deve essere spostata in MLDE
Versione 2.7l3 (22/12/2025) Versione 2.7l3 (22/12/2025)
- (SIM) Eliminata MinJoin, utilizzata al suo posto funzione già esistente UpdateMinJoin nell'mlde - (SIM) Eliminata MinJoin, utilizzata al suo posto funzione già esistente UpdateMinJoin nell'mlde
- (SIM) Modificata formula calcolo Area minima - (SIM) Modificata formula calcolo Area minima
+1 -1
View File
@@ -3,7 +3,7 @@
local InfoCommon_STD_PP = { local InfoCommon_STD_PP = {
NAME = 'Common_FAST', -- nome script PP standard NAME = 'Common_FAST', -- nome script PP standard
VERSION = '2.7l3', -- versione script VERSION = '3.1a2', -- versione script
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
} }