DataBeam :
- modifiche per PF1250.
This commit is contained in:
+21
-11
@@ -1,4 +1,4 @@
|
||||
-- BeamLib.lua by Egaltech s.r.l. 2021/02/09
|
||||
-- BeamLib.lua by Egaltech s.r.l. 2021/02/26
|
||||
-- Libreria globale per Travi
|
||||
-- 2020/07/28 Corretto calcolo attacchi e uscite di lame per non uscire dalla faccia sotto.
|
||||
-- 2020/08/18 Aggiunto a GetNearestParalOpposite e GetNearestOrthoOpposite parametro opzionale vtNorm.
|
||||
@@ -7,6 +7,7 @@
|
||||
-- 2021/01/06 Cambiato limite per attacco Tg con lama e CalcLeadInOutGeom rinominata in CalcLeadInOutPerpGeom.
|
||||
-- 2021/02/03 In taglio lama si accettano anche due lati con deviazione minore di 20deg.
|
||||
-- 2021/02/09 In taglio lama con PF si preferisce testa in Y- quindi SCC di conseguenza.
|
||||
-- 2021/02/26 In taglio lama consento attacco anche da sotto (grazie a migliorie in MachKernel).
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamLib = {}
|
||||
@@ -36,8 +37,9 @@ function BeamLib.CreateOrEmptyAddGroup( PartId)
|
||||
-- recupero i dati del gruppo aggiuntivo
|
||||
local AddGrpId, sMchGrp = BeamLib.GetAddGroup( PartId)
|
||||
if not sMchGrp then return false end
|
||||
-- se esiste lo svuoto
|
||||
-- se esiste, aggiorno riferimento al gruppo di lavoro e lo svuoto
|
||||
if AddGrpId then
|
||||
EgtSetInfo( AddGrpId, GDB_SI.MGRPONLY, EgtGetCurrMachGroup())
|
||||
return EgtEmptyGroup( AddGrpId)
|
||||
end
|
||||
-- altrimenti lo creo
|
||||
@@ -650,7 +652,8 @@ function BeamLib.CalcLeadInOutPerpGeom( ptP1, ptP2, vtV1, vtV2, vtN, dRad, vtRef
|
||||
ptP1 = ptP1 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra))
|
||||
ptP2 = ptP2 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra))
|
||||
-- Non va considerata l'uscita dalla faccia sotto, pertanto va abbassata
|
||||
local b3MyBox = BBox3d( b3Box) ; b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX())
|
||||
-- 2021/02/26 Abilito anche uscita sotto
|
||||
local b3MyBox = BBox3d( b3Box) ; --b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX())
|
||||
-- Attacco
|
||||
local dLiTang = 10000
|
||||
local dLiPerp = 10000
|
||||
@@ -735,8 +738,9 @@ function BeamLib.CalcLeadInOutTangGeom( ptP1, ptP2, vtN, dRad, vtRef, dCutExtra,
|
||||
-- Spostamento punti per effetto dell'extra o della deficienza di taglio
|
||||
ptP1 = ptP1 - vtX * dCutExtra
|
||||
ptP2 = ptP2 - vtX * dCutExtra
|
||||
-- Non va considerata l'uscita dalla faccia sotto, pertanto va abbassata
|
||||
local b3MyBox = BBox3d( b3Box) ; b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX())
|
||||
-- Non va considerata l'uscita dalla faccia sotto, pertanto va abbassata
|
||||
-- 2021/02/26 Abilito anche uscita sotto
|
||||
local b3MyBox = BBox3d( b3Box) ; --b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX())
|
||||
-- Attacco
|
||||
local dLiTang = 10000
|
||||
local dLiPerp = 0
|
||||
@@ -879,13 +883,19 @@ function BeamLib.MakeOneFaceBySaw( nSurfId, nFacet, sCutting, dSawDiam, Par5, dV
|
||||
-- parametri di attacco/uscita
|
||||
local b3Box = BBox3d( b3Raw)
|
||||
b3Box:expand( dCutSic)
|
||||
local dLiTang, dLiPerp, dLoTang, dLoPerp
|
||||
local ptP1act = ptP1 + vtN * dCutOffset
|
||||
local ptP2act = ptP2 + vtN * dCutOffset
|
||||
if ( vtV1:getZ() > -0.5 or vtV2:getZ() > -0.5) and ( abs( vtV1:getY()) > 0.707 or abs( vtV2:getY()) > 0.707 or vtN:getZ() < 0.707 or abs( vtTg:getZ()) > 0.5) then
|
||||
dLiTang, dLiPerp, dLoTang, dLoPerp = BeamLib.CalcLeadInOutPerpGeom( ptP1act, ptP2act, vtV1, vtV2, vtN, dSawDiam/2, vtRef, dCutExtra, b3Box)
|
||||
else
|
||||
dLiTang, dLiPerp, dLoTang, dLoPerp = BeamLib.CalcLeadInOutTangGeom( ptP1act, ptP2act, vtN, dSawDiam/2, vtRef, dCutExtra, b3Box)
|
||||
-- attacco perpendicolare
|
||||
local dLiTang, dLiPerp, dLoTang, dLoPerp = BeamLib.CalcLeadInOutPerpGeom( ptP1act, ptP2act, vtV1, vtV2, vtN, dSawDiam/2, vtRef, dCutExtra, b3Box)
|
||||
local dLenLi = sqrt( dLiTang * dLiTang + dLiPerp * dLiPerp)
|
||||
local dLenLo = sqrt( dLoTang * dLoTang + dLoPerp * dLoPerp)
|
||||
-- attacco tangente
|
||||
local dLi2Tang, dLi2Perp, dLo2Tang, dLo2Perp = BeamLib.CalcLeadInOutTangGeom( ptP1act, ptP2act, vtN, dSawDiam/2, vtRef, dCutExtra, b3Box)
|
||||
local dLenLi2 = abs( dLi2Tang)
|
||||
local dLenLo2 = abs( dLo2Tang)
|
||||
-- scelgo l'attacco più conveniente
|
||||
if ( abs( vtTg:getZ()) < 0.17 and ( vtV1:getZ() < -0.5 or vtV2:getZ() < -0.5)) or ( dLenLi2 < dLenLi and dLenLo2 < dLenLo) or ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo) then
|
||||
dLiTang, dLiPerp, dLoTang, dLoPerp = dLi2Tang, dLi2Perp, dLo2Tang, dLo2Perp
|
||||
end
|
||||
-- posizione braccio
|
||||
EgtOutLog( 'vtN=' .. tostring( vtN) .. ' vtRef=' .. tostring( vtRef) .. ' vtOut=' .. tostring( vtOut) .. ' vtAux=' .. tostring( vtAux), 3)
|
||||
@@ -947,7 +957,7 @@ end
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
function BeamLib.UpdateHCING( nRawId, dHCI, dDist)
|
||||
local dOldHCI = EgtGetInfo( nRawId, 'HCING', 'd') or 0
|
||||
if dDist and dDist > dOldHCI + 10 then
|
||||
if dDist and dDist > dOldHCI + 0.1 then
|
||||
return
|
||||
end
|
||||
if dHCI > dOldHCI then
|
||||
|
||||
Reference in New Issue
Block a user