- ottimizzazioni
This commit is contained in:
+14
-36
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user