- in BeamExec correzione a CalcMinUnloadableRaw

-in FaceData aggiunta IsFaceRhomboid per verificare se una faccia è un parallelogramma
- in BLADETOWASTE refactoring
- in BLADETOWASTE aggiunta gestione tagli da due lati, al momento solo caso con suddivisione orizzontale
- in FACEBYBLADE si permette OppositeToolDirection ottimizzata anche per parallelogrammi (prima era solo per rettangoli)
- in FACEBYBLADE correzione a tagli ridotti e ghigliottina in caso in cui non si lavori l'intera elevazione del lato
This commit is contained in:
luca.mazzoleni
2025-07-16 12:22:07 +02:00
parent a4c20cee6c
commit 719d3b61af
4 changed files with 294 additions and 112 deletions
+26
View File
@@ -219,6 +219,32 @@ function FaceData.IsFaceRectangular( Proc, idFace)
return bIsRectangular
end
-------------------------------------------------------------------------------------------------------------
function FaceData.IsFaceRhomboid( Proc, idFace)
local nAddGrpId = BeamLib.GetAddGroup( Proc.idPart)
local nContourId, nContourCnt = EgtExtractSurfTmFacetLoops( Proc.id, idFace, nAddGrpId)
if nContourCnt > 1 then
error( 'IsFaceRectangular : too many loops')
end
local bIsTrapezoid = EgtCurveIsATrapezoid( nContourId)
local bIsRhomboid = false
-- un parallelogramma è un trapezoide con i lati paralleli a due a due
if bIsTrapezoid
and AreOppositeVectorApprox( Proc.Faces[idFace + 1].Edges[1].vtN, Proc.Faces[idFace + 1].Edges[3].vtN)
and AreOppositeVectorApprox( Proc.Faces[idFace + 1].Edges[2].vtN, Proc.Faces[idFace + 1].Edges[4].vtN) then
bIsRhomboid = true
end
-- elimino curve create
for i = 1, nContourCnt do
EgtErase( nContourId + i - 1)
end
return bIsRhomboid
end
-------------------------------------------------------------------------------------------------------------
local function CompareEdgesBottomFace( EdgeA, EdgeB)
-- prima i lati con facce adiacenti