- ottimizzazioni

This commit is contained in:
luca.bacis
2021-12-22 15:29:25 +01:00
parent 065c3b499a
commit 7647cd3a45
+14 -36
View File
@@ -4391,49 +4391,29 @@ local function AreFacesOrthogonal( nSurfId, nFacInd, nFacInd2, dCosSideAng)
return dOrtho
end
---------------------------------------------------------------------
local function AreAllFacesOrthogonal( nSurfId, dCosSideAng)
-- recupero il numero di facce
local nFacCnt = EgtSurfTmFacetCount( nSurfId)
if not dCosSideAng then
dCosSideAng = -0.09
end
-- recupero le normali delle facce
local vvtN = {}
for i = 1, nFacCnt do
local vtN = EgtSurfTmFacetNormVersor( nSurfId, i - 1, GDB_ID.ROOT)
vvtN[i] = vtN
end
local dOrtho = 0 -- orthogonal
for i = 1, nFacCnt do
-- recupero le adiacenze del loop esterno
local vFacAdj = EgtSurfTmFacetAdjacencies( nSurfId, i - 1)[1]
-- le conto
local nCount = 0
for j = 1, #vFacAdj do
if vFacAdj[j] >= 0 then
nCount = nCount + 1
end
end
-- ne determino eventuale sottosquadra ( dal valore passato o - 5deg) e ortogonalità
for j = 1, #vFacAdj do
if vFacAdj[j] >= 0 then
local vtN = vvtN[i]
local vtN2 = vvtN[vFacAdj[j] + 1]
local dResV = vtN * vtN2
if dResV < dCosSideAng - GEO.EPS_SMALL then
dOrtho = -1 -- undercut
end
-- se non ho già registrato un undercut
if dOrtho >= 0 and abs( dResV) > 2 * GEO.EPS_SMALL then
dOrtho = 1 -- overcut
end
end
local dOrtho = 0
for i = 0, nFacCnt - 1 do
local fc1 = i
local fc2 = EgtIf( i < nFacCnt - 1, i + 1, 0)
if dOrtho == 0 then
dOrtho = AreFacesOrthogonal( nSurfId, fc1, fc2, dCosSideAng)
end
if dOrtho ~= 0 then break end
end
return dOrtho
end
---------------------------------------------------------------------
local function MakeObliquePoket( Proc, nPartId, tvtN, nSideFace, ptPs, tDimAndRef, nUseRoughTool, dAng, sPocketing, dPrevFaceElev)
local sMchFind = 'Pocket'
@@ -4489,14 +4469,12 @@ local function MakeSpecialThreeFaces( Proc, nPhase, bIsL, nRawId, nPartId, dOvmH
if abs( vtN2:getX()) > 0.7 or abs( vtN2:getY()) > 0.7 or abs( vtN2:getZ()) > 0.7 then dCollSic2 = 0 end
local sPocketing
local nPockFace
-- <LB> controllo se le facce sono ortogonali
--local dOrtho = AreFacesOrthogonal( Proc.Id, nFacInd, nFacInd2)
-- <LB> controllo se tutte le facce sono ortogonali
local dOrtho = AreAllFacesOrthogonal( Proc.Id)
if (dOrtho == 0) then -- ortogonali
if (dOrtho == 0) then -- tutte ortogonali
sPocketing = ML.FindPocketing( sMchFind, dDiam2, dFacElev2 + dCollSic2)
nPockFace = nFacInd2
-- se non trova una svuotatura adatta provo ad assegnarla all'altra faccia
if not sPocketing then
if (dOrtho == 0) then
@@ -4532,6 +4510,7 @@ local function MakeSpecialThreeFaces( Proc, nPhase, bIsL, nRawId, nPartId, dOvmH
EgtOutLog( sErr)
return false, sErr
end
-- <LB> tentativo di lavorazione per tacca non aperta (almeno una faccia è overcut)
elseif (dOrtho > 0) then -- overcut (angolo aperto)
-- <LB> inizio con la prima faccia per la svuotatura
@@ -4543,7 +4522,6 @@ local function MakeSpecialThreeFaces( Proc, nPhase, bIsL, nRawId, nPartId, dOvmH
EgtOutLog( sErr)
return false, sErr
end
-- Recupero le facce adiacenti alla principale
local vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacInd)[1]
if not vAdj or #vAdj == 0 then