DataBeam :

- migliorato calcolo punto inizio lavorazione tenone
- migliorato scelta direzione approccio taglio con lama
- migliorata gestione geometria addizionale in gruppo apposito.
This commit is contained in:
DarioS
2022-06-13 08:08:18 +02:00
parent bde704ec3a
commit 4a2c107761
16 changed files with 170 additions and 229 deletions
+17 -13
View File
@@ -189,7 +189,7 @@ function BeamLib.PutStartOnLonger( nCrvId)
end
-------------------------------------------------------------------------------------------------------------
function BeamLib.PutStartNearestToEdge( nCrvId, b3Raw, bDown)
function BeamLib.PutStartNearestToEdge( nCrvId, b3Raw, dMaxDist, bDown)
-- verifico che la curva sia chiusa
if not EgtCurveIsClosed( nCrvId) then return false end
-- recupero il versore normale al piano di lavoro o estrusione
@@ -217,18 +217,14 @@ function BeamLib.PutStartNearestToEdge( nCrvId, b3Raw, bDown)
dD = min( abs( vtMin:getZ()) * dCoeffZ, dD)
dD = min( abs( vtMax:getZ()) * dCoeffZ, dD)
local dZ = abs( EgtIf( bDown, vtMin:getZ(), vtMax:getZ())) * dCoeffZ
if dD < dDopt + 10 and dZ < dZopt + GEO.EPS_SMALL then
if dD < dMaxDist and dZ < dZopt + GEO.EPS_SMALL then
dUopt = dU
dDopt = min( dD, dDopt)
dZopt = dZ
elseif dD < dDopt - 10 or ( dD < dDopt + GEO.EPS_SMALL and dZ < dZopt + GEO.EPS_SMALL) then
dDopt = dD
dUopt = dU
dZopt = dZ
end
end
end
if abs( dUopt - dUi) > GEO.EPS_ZERO then
if abs( dUopt - dUi) > GEO.EPS_ZERO and abs( dUopt - dUf) > GEO.EPS_ZERO then
EgtChangeClosedCurveStart( nCrvId, dUopt)
end
return true
@@ -274,7 +270,7 @@ function BeamLib.GetNearestParalOpposite( vtRef, vtNorm)
end
-- se prevalente una componente orizzontale (con piccolissimo vantaggio)
if abs( vtMyRef:getX()) > 0.95 * abs( vtMyRef:getZ()) or abs( vtMyRef:getY()) > 0.95 * abs( vtMyRef:getZ()) then
if abs( vtMyRef:getX()) > abs( vtMyRef:getY()) - GEO.EPS_SMALL then
if abs( vtMyRef:getX()) > 0.95 * abs( vtMyRef:getY()) then
if vtMyRef:getX() > -GEO.EPS_SMALL then
return MCH_MILL_FU.PARAL_LEFT
else
@@ -308,8 +304,8 @@ function BeamLib.GetNearestOrthoOpposite( vtRef, vtNorm)
end
-- se prevalente una componente orizzontale (con piccolissimo vantaggio)
if abs( vtMyRef:getX()) > 0.95 * abs( vtMyRef:getZ()) or abs( vtMyRef:getY()) > 0.95 * abs( vtMyRef:getZ()) then
-- se prevale la componente destra/sinistra (con piccolo vantaggio)
if abs( vtMyRef:getX()) > 0.9 * abs( vtMyRef:getY()) then
-- se prevale la componente destra/sinistra
if abs( vtMyRef:getX()) > 0.95 * abs( vtMyRef:getY()) then
if vtMyRef:getX() > -GEO.EPS_SMALL then
return MCH_MILL_FU.ORTHO_LEFT
else
@@ -693,8 +689,10 @@ function BeamLib.GetNzLimDownUp( b3Raw, vtN, vtOrtho)
return -0.484
else
if vtOrtho and vtOrtho:getZ() > 0.5 then
if vtN and ( abs( vtN:getY()) < 0.1 or abs( vtN:getY()) > 0.49) then
if vtN and ( abs( vtN:getY()) < 0.259 or abs( vtN:getY()) > 0.819) then
return -0.708
elseif vtN and abs( vtN:getY()) > 0.766 then
return -0.383
else
return EgtIf( b3Raw:getDimZ() < BD.MIN_DIM_HBEAM, -0.609, -0.383)
end
@@ -702,8 +700,14 @@ function BeamLib.GetNzLimDownUp( b3Raw, vtN, vtOrtho)
if vtN and ( abs( vtN:getY()) > 0.866) then
return -0.708
else
if b3Raw:getDimZ() < 200 then
return -0.5
if b3Raw:getDimZ() < 120 then
return -0.708
elseif b3Raw:getDimZ() < 200 then
if vtN and ( abs( vtN:getY()) < 0.259 or abs( vtN:getY()) > 0.819) then
return -0.5
else
return -0.383
end
elseif b3Raw:getDimZ() < BD.MIN_DIM_HBEAM then
return -0.240
else