DataBeam :
- in Tenon e DtTenon riportato a 5 il massimo numero di passate - in HouseMortise non si cercano lavorazioni tipo Mortise ma solo tipo Pocket - in LapJoint corretto calcolo max diam. utensile per svuotature - in LapJoint con due facce lunga si usa taglio due facce con lama.
This commit is contained in:
+23
-40
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/05/21
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/05/27
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
-- 2019/10/08 Agg. gestione OpenPocket.
|
||||
|
||||
@@ -2365,10 +2365,9 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev)
|
||||
local dDiam = min( dH, dV)
|
||||
local dMaxLenFace = max( dH, dV)
|
||||
local dMaxDimFace = max( dH, dV)
|
||||
-- verifico che diametro utensile prende con la openpocket con la massima dimensione faccia
|
||||
local bUseMaxTool, dMaxDiam = CheckPocketTool( 'OpenPocket', dMaxLenFace, dElev)
|
||||
local bUseMaxTool, dMaxDiam = CheckPocketTool( 'OpenPocket', dMaxDimFace, dElev)
|
||||
-- se non trovato utensile esco
|
||||
if not bUseMaxTool then
|
||||
return false
|
||||
@@ -2379,53 +2378,37 @@ local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev)
|
||||
if not vAdj or #vAdj == 0 then
|
||||
return false
|
||||
end
|
||||
-- Cerco le facce adiacenti alla principale con angolo >= 90
|
||||
local nFacAdj
|
||||
local tDistAdj = {}
|
||||
-- Cerco le facce adiacenti alla principale con angolo concavo >= 90
|
||||
local tWidth = {}
|
||||
for i = 1, #vAdj do
|
||||
if vAdj[i] >= 0 then
|
||||
local bAdj, ptP1, ptP2, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, vAdj[i], GDB_ID.ROOT)
|
||||
-- se adiacenza e angolo >= 90
|
||||
if bAdj and dAng < 0 and 180 + dAng > 90 - 20 * GEO.EPS_SMALL then
|
||||
table.insert( tDistAdj, dist( ptP1, ptP2))
|
||||
elseif bAdj and dAng < 0 and 180 + dAng < 90 - 20 * GEO.EPS_SMALL then
|
||||
-- se trovato angolo sottosquadra esco subito
|
||||
-- verifico l'angolo tra le facce
|
||||
local bAdj, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, vAdj[i], GDB_ID.ROOT)
|
||||
if bAdj and dAng < -90 - 20 * GEO.EPS_ANG_SMALL then
|
||||
return false
|
||||
end
|
||||
-- larghezza della faccia ortogonalmente alla adiacente
|
||||
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, vAdj[i], GDB_ID.ROOT)
|
||||
_, _, _, _, _, _, dW = EgtSurfTmFacetOppositeSide( Proc.Id, nFacInd, vtN , GDB_ID.ROOT)
|
||||
if dW then
|
||||
table.insert( tWidth, dW)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se le facce di adiacenza non corrispondono con quelle della forma esco
|
||||
if ( bIsU and #tDistAdj ~= 2) or ( bIsL and #tDistAdj ~= 1) then
|
||||
if ( bIsU and #tWidth ~= 2) or ( bIsL and #tWidth ~= 1) then
|
||||
return false
|
||||
end
|
||||
local bUseMaxDist = true
|
||||
local dLargeVal
|
||||
local dDelta = 100000
|
||||
for i = 1, #tDistAdj do
|
||||
local dDeltadH = abs( tDistAdj[i] - dH)
|
||||
local dDeltadV = abs( tDistAdj[i] - dV)
|
||||
if dDeltadH < dDeltadV then
|
||||
if dDeltadH < dDelta + 10 * GEO.EPS_SMALL then
|
||||
dDelta = dDeltadH
|
||||
dLargeVal = dV
|
||||
end
|
||||
else
|
||||
if dDeltadV < dDelta + 10 * GEO.EPS_SMALL then
|
||||
dDelta = dDeltadV
|
||||
dLargeVal = dH
|
||||
end
|
||||
end
|
||||
local dLargeVal = 0
|
||||
for i = 1, #tWidth do
|
||||
dLargeVal = max( dLargeVal, tWidth[i])
|
||||
end
|
||||
-- se diametro massimo inferiore della larghezza faccia
|
||||
-- setto di non utilizzare il diametro massimo
|
||||
if dMaxDiam > dLargeVal + 20 * GEO.EPS_SMALL then
|
||||
bUseMaxDist = false
|
||||
end
|
||||
if bUseMaxDist then
|
||||
-- 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
|
||||
else
|
||||
return false
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -3282,7 +3265,7 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
elseif b3Fac2:getDimX() < 1 then
|
||||
return LongCut.Make( Proc, nPhase, nRawId, nPartId)
|
||||
else
|
||||
return MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId)
|
||||
return Fbs.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, 'HeadSide')
|
||||
end
|
||||
-- tre o più facce
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user