DataBeam :

- T010 se troppo inclinati verso il basso e di dimensioni non compatibili ora sono dichiarati non lavorabili causa orientamento
- T138/L138 corretti tagli di lama errati
- L030 ora si usa il truciolatore dove richiesto e compatibilmente con la sua profondità massima di lavorazione
- L020 con Q03=1 ora si inserisce il truciolatore come richiesto
- L012 corretti attacchi e uscite quando rivolto verso il basso, concavo e facce molto inclinate.
This commit is contained in:
Dario Sassi
2020-08-03 16:32:49 +00:00
parent 268f33ef24
commit 8c9d3d3ce1
7 changed files with 73 additions and 28 deletions
+37 -6
View File
@@ -1,4 +1,4 @@
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/07/23
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/07/31
-- Gestione calcolo mezzo-legno per Travi
-- 2019/10/08 Agg. gestione OpenPocket.
@@ -2390,10 +2390,11 @@ local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev)
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
-- Cerco le facce adiacenti alla principale con angolo concavo >= 90
local tWidth = {}
local tExtremPt = {}
for i = 1, #vAdj do
if vAdj[i] >= 0 then
-- verifico l'angolo tra le facce
local bAdj, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, vAdj[i], GDB_ID.ROOT)
-- verifico l'angolo tra le facce ( esco se angolo compreso < 90)
local bAdj, pPt1, pPt2, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, vAdj[i], GDB_ID.ROOT)
if bAdj and dAng < -90 - 20 * GEO.EPS_ANG_SMALL then
return false
end
@@ -2404,6 +2405,7 @@ local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev)
local b3Ref = EgtSurfTmGetFacetBBoxRef( Proc.Id, nFacInd, GDB_BB.STANDARD, frRef)
if b3Ref then
table.insert( tWidth, b3Ref:getDimY())
table.insert( tExtremPt, { pPt1, pPt2})
end
end
end
@@ -2415,11 +2417,36 @@ local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev)
for i = 1, #tWidth do
dLargeVal = max( dLargeVal, tWidth[i])
end
-- se facce U verifico se le distanze tra i punti sono maggiori delle distanze tra le facce
if bIsU then
local dLargeValU = 999999
for i = 1, #tExtremPt do
local dLenPoint = dist( EgtIf( i == 1, tExtremPt[i][1], tExtremPt[1][2]), EgtIf( i == 1, tExtremPt[2][1], tExtremPt[i][2]))
-- prendo la distanza minore tra le maggiori ma solo se la distanza tra i punti non è minore della distanza tra le facce
if dLenPoint < dLargeVal then
dLargeValU = dLargeVal
break
else
dLargeValU = min( dLargeValU, dLenPoint)
end
-- inverto i punti e ricalcolo le distanze
dLenPoint = dist( EgtIf( i == 1, tExtremPt[i][1], tExtremPt[1][2]), EgtIf( i == 1, tExtremPt[2][2], tExtremPt[i][1]))
-- prendo la distanza minore tra le maggiori ma solo se la distanza tra i punti non è minore della distanza tra le facce
if dLenPoint < dLargeVal then
dLargeValU = dLargeVal
break
else
dLargeValU = min( dLargeValU, dLenPoint)
end
end
dLargeVal = dLargeValU
end
-- per essere accettabile, il diametro massimo deve essere minore della larghezza della faccia
if dMaxDiam < dLargeVal + 20 * GEO.EPS_SMALL then
return dMaxDiam, 'OpenPocket', 1
return dMaxDiam, 'OpenPocket', 1, dMaxDiam
else
return false
return false, '', 0, dMaxDiam
end
end
@@ -3062,10 +3089,11 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSinglePart)
local sMchFind = EgtIf( bSinglePart, 'Pocket', 'OpenPocket')
local nUseRoughTool = EgtIf( bSinglePart, 0, 1)
local dDiam = min( dH, dV)
local dDiamMax
-- verifico dalla forma se non posso prendere utensile grande
if ( Proc.Fct == 3 and bIsU) or ( Proc.Fct == 2 and bIsL) or Proc.Fct == 1 then
--verifico dimensioni con facce adiacenti
dDiam, sMchFind, nUseRoughTool = CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, ( dFacElev + dCollSic))
dDiam, sMchFind, nUseRoughTool, dDiamMax = CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, ( dFacElev + dCollSic))
if not dDiam then
sMchFind = 'Pocket'
nUseRoughTool = 0
@@ -3079,6 +3107,9 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSinglePart)
if nUseRT and nUseRT ~= 0 then
sMchFind = 'OpenPocket'
nUseRoughTool = 1
if dDiamMax and Proc.Fct == 2 and bIsL then
dDiam = dDiamMax
end
end
end
--EgtOutLog( 'Mortise Find Diam =' .. EgtNumToString( dDiam))