- in FeatureLib -> GetFeatureSplittingPoints correzioni e migliorie

- in MachiningLib -> GetSplitMachinings correzione all'assegnazione del segmento per gli edge non lavorati completamente
- in STR0003 gestito ordinamento lavorazioni lama + sega a catena
- altre piccole migliorie
This commit is contained in:
luca.mazzoleni
2024-12-06 16:29:34 +01:00
parent eccfb96c22
commit 9fcd805ed5
6 changed files with 63 additions and 27 deletions
+11 -7
View File
@@ -114,9 +114,9 @@ function MachiningLib.GetSplitMachinings( Machinings, vSplittingPoints, Part )
dEdgeMaxX = Machinings[i].ptEdge2:getX()
dEdgeMinX = Machinings[i].ptEdge1:getX()
end
local dOriginalStartAddLength = Machinings[i].LeadIn.dStartAddLength
local dOriginalEndAddLength = Machinings[i].LeadOut.dEndAddLength
if FeatureLib.MachiningNeedsSplitting( Machinings[i].dLengthOnX, Part) then
local dOriginalStartAddLength = Machinings[i].LeadIn.dStartAddLength
local dOriginalEndAddLength = Machinings[i].LeadOut.dEndAddLength
local nCurrentMachiningIndex = i
-- lo spezzone attivo è quello precedente al punto di spezzatura corrente
for j = 1, nParts do
@@ -131,10 +131,9 @@ function MachiningLib.GetSplitMachinings( Machinings, vSplittingPoints, Part )
nCurrentMachiningIndex = nCurrentMachiningIndex + 1
table.insert( Machinings, nCurrentMachiningIndex, BeamLib.TableCopyDeep( Machinings[i]))
end
local dStartAddLength = dOriginalStartAddLength
local dEndAddLength = dOriginalEndAddLength
if MachiningLib.StartsLeftSide( Machinings[nCurrentMachiningIndex]) then
if MachiningLib.StartsLeftSide( Machinings[i]) then
dStartAddLength, dEndAddLength = dEndAddLength, dStartAddLength
end
if j == 1 then
@@ -159,15 +158,20 @@ function MachiningLib.GetSplitMachinings( Machinings, vSplittingPoints, Part )
end
-- anche le lavorazioni non splittate necessitano del segmento assegnato
else
local dRightAddLength = dOriginalStartAddLength
local dLeftAddLength = dOriginalEndAddLength
if MachiningLib.StartsLeftSide( Machinings[i]) then
dRightAddLength, dLeftAddLength = dLeftAddLength, dRightAddLength
end
for j = 1, nParts do
local dNextSplitX = dEdgeMaxX
local dPreviousSplitX = dEdgeMinX
local dNextSplitX = dEdgeMinX
local dPreviousSplitX = dEdgeMaxX
if j ~= 1 then
dPreviousSplitX = vSplittingPoints[j - 1]:getX()
elseif j ~= nParts then
dNextSplitX = vSplittingPoints[j]:getX()
end
if dEdgeMinX > dNextSplitX - 10 * GEO.EPS_SMALL and dEdgeMaxX < dPreviousSplitX + 10 * GEO.EPS_SMALL then
if ( dEdgeMinX - dLeftAddLength) > dNextSplitX - 10 * GEO.EPS_SMALL and ( dEdgeMaxX + dRightAddLength) < dPreviousSplitX + 10 * GEO.EPS_SMALL then
Machinings[i].nSegment = j
end
end