Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| df47691da1 |
@@ -196,27 +196,33 @@ local function ApplyDiceCut( vFaceOrd, nGoodFace1, nGoodFace4, nAddGrpId, b3Soli
|
||||
end
|
||||
end
|
||||
|
||||
-- controllo per eseguire solo un taglio ottimizzato
|
||||
local bExecJustOneCut = false
|
||||
local dDiceFaceDim = GEO.INFINITO
|
||||
if ( i % 2) == 0 then
|
||||
for cont = 1, #vCuts[i] do
|
||||
local _, dDiceFaceH, dDiceFaceV = BL.GetFaceHvRefDim( vCuts[i][cont], 0)
|
||||
-- se feature verso Z, si ammette anche lavorazione in doppio
|
||||
if AreSameVectorApprox( vtRef, Z_AX()) then
|
||||
if dMaxDepth * 2 > dDiceFaceH + BD.CUT_EXTRA then
|
||||
bExecJustOneCut = true
|
||||
dDiceFaceDim = dDiceFaceH
|
||||
break
|
||||
end
|
||||
elseif AreSameVectorApprox( vtRef, Y_AX()) or AreSameVectorApprox( vtRef, -Y_AX()) then
|
||||
if dMaxDepth > dDiceFaceV + BD.CUT_EXTRA then
|
||||
bExecJustOneCut = true
|
||||
dDiceFaceDim = dDiceFaceV
|
||||
break
|
||||
-- se non ho intersezione con la faccia tappo posso fare il taglio sul fianco
|
||||
if not nGoodFace1 or nGoodFace1 == 0 then
|
||||
-- controllo per eseguire solo un taglio ottimizzato
|
||||
local bExecJustOneCut = false
|
||||
local dDiceFaceDim = GEO.INFINITO
|
||||
if ( i % 2) == 0 then
|
||||
for cont = 1, #vCuts[i] do
|
||||
local _, dDiceFaceH, dDiceFaceV = BL.GetFaceHvRefDim( vCuts[i][cont], 0)
|
||||
-- se feature verso Z, si ammette anche lavorazione in doppio
|
||||
if AreSameVectorApprox( vtRef, Z_AX()) then
|
||||
if dMaxDepth * 2 > dDiceFaceH + BD.CUT_EXTRA then
|
||||
bExecJustOneCut = true
|
||||
dDiceFaceDim = dDiceFaceH
|
||||
break
|
||||
end
|
||||
elseif AreSameVectorApprox( vtRef, Y_AX()) or AreSameVectorApprox( vtRef, -Y_AX()) then
|
||||
if dMaxDepth > dDiceFaceV + BD.CUT_EXTRA then
|
||||
bExecJustOneCut = true
|
||||
dDiceFaceDim = dDiceFaceV
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se c'è intersezione non ci deve essere ExtraCut
|
||||
else
|
||||
dExtraCut = 0
|
||||
end
|
||||
-- se si può fare, faccio unico taglio parallelo
|
||||
if bExecJustOneCut then
|
||||
@@ -522,10 +528,20 @@ function ProcessScarfJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, dOvmTa
|
||||
else
|
||||
dDiamMax = EgtIf( abs( frMor:getVersX():getY()) < abs( frMor:getVersY():getY()), dL, dW)
|
||||
end
|
||||
-- determino la distanza tra le due facce inclinate
|
||||
-- determino la distanza tra le due facce inclinate per determinare elevazione
|
||||
local dDistFaces
|
||||
if vFaceOrd[4] ~= 0 then
|
||||
dDistFaces = abs((ptC[vFaceOrd[2]]-ptC[vFaceOrd[4]])*vtN[vFaceOrd[2]])
|
||||
local nElevationFace1 = 0
|
||||
-- controllo estensione faccia 1
|
||||
if vFaceOrd[1] ~= 0 then
|
||||
frMor, dL, dW = EgtSurfTmFacetMinAreaRectangle( Proc.Id, vFaceOrd[1]-1, GDB_ID.ROOT)
|
||||
if abs(vtRef:getY()) > 0.866 then
|
||||
nElevationFace1 = EgtIf( abs( frMor:getVersX():getZ()) < abs( frMor:getVersY():getY()), dL, dW)
|
||||
else
|
||||
nElevationFace1 = EgtIf( abs( frMor:getVersX():getY()) < abs( frMor:getVersY():getY()), dL, dW)
|
||||
end
|
||||
end
|
||||
dDistFaces = max( abs((ptC[vFaceOrd[2]]-ptC[vFaceOrd[4]])*vtN[vFaceOrd[2]]), nElevationFace1)
|
||||
end
|
||||
-- recupero la lavorazione. considerando l dimensione del lato e l'affondamento
|
||||
local sPocketing
|
||||
|
||||
Reference in New Issue
Block a user