- Prima versione strategia Mortasa a coda di rondine STR0007
- Modifiche a librerie per gestione strategia
This commit is contained in:
@@ -221,9 +221,11 @@ local function GetStrategies_Egalware( Proc)
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Dovetail Mortise
|
||||
elseif ID.IsDovetailMortise( Proc) then
|
||||
Strategies = { { sStrategyId = 'STR0007'}}
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Dovetail Mortise Front
|
||||
elseif ID.IsFrontDovetailMortise( Proc) then
|
||||
Strategies = { { sStrategyId = 'STR0007'}}
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Marking
|
||||
elseif ID.IsMarking( Proc) then
|
||||
@@ -481,9 +483,11 @@ local function GetStrategies_Essetre( Proc)
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Dovetail Mortise
|
||||
elseif ID.IsDovetailMortise( Proc) then
|
||||
Strategies = { { sStrategyId = 'STR0007'}}
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Dovetail Mortise Front
|
||||
elseif ID.IsFrontDovetailMortise( Proc) then
|
||||
Strategies = { { sStrategyId = 'STR0007'}}
|
||||
---------------------------------------------------------------------
|
||||
-- Feature : Marking
|
||||
elseif ID.IsMarking( Proc) then
|
||||
|
||||
+53
-4
@@ -233,6 +233,9 @@ function FeatureLib.GetAdditionalInfo( Proc, Part)
|
||||
-- se tenone o tenone a coda di rondine
|
||||
elseif ID.IsTenon( Proc) or ID.IsDovetailTenon( Proc) then
|
||||
Proc.FeatureInfo = FeatureLib.GetTenonData( Proc)
|
||||
-- se mortasa a coda di rondine o mortasa frontale a coda di rondine
|
||||
elseif ID.IsDovetailMortise( Proc) or ID.IsFrontDovetailMortise( Proc) then
|
||||
Proc.FeatureInfo = FeatureLib.GetDTMortiseData( Proc)
|
||||
end
|
||||
|
||||
return Proc
|
||||
@@ -269,14 +272,13 @@ function FeatureLib.GetTenonData( Proc)
|
||||
local idAux = EgtGetInfo( Proc.id, 'AUXID', 'i')
|
||||
if idAux then idAux = idAux + Proc.id end
|
||||
-- recupero i dati della curva
|
||||
local vtExtr = EgtCurveExtrusion( idAux, GDB_RT.GLOB)
|
||||
local vtN = EgtCurveExtrusion( idAux, GDB_RT.GLOB)
|
||||
local ptBC = EgtGP( idAux, GDB_RT.GLOB)
|
||||
-- determino altezza del tenone
|
||||
local frTen = Frame3d( ptBC, vtExtr)
|
||||
local frTen = Frame3d( ptBC, vtN)
|
||||
local b3Ten = EgtGetBBoxRef( Proc.id, GDB_BB.STANDARD, frTen)
|
||||
local dTenH = b3Ten:getDimZ()
|
||||
-- assegno centro e normale della faccia top
|
||||
local vtN = vtExtr
|
||||
local ptC = ptBC + vtN * dTenH
|
||||
-- calcolo distanza massima della curva dal punto più lontano della base tenone (facet 0)
|
||||
local dMaxDist
|
||||
@@ -308,7 +310,7 @@ function FeatureLib.GetTenonData( Proc)
|
||||
|
||||
FeatureExtraInfo.dTenonLength = dTenH
|
||||
FeatureExtraInfo.dTenonMaxDist = dMaxDist
|
||||
FeatureExtraInfo.vtTenonN = vtExtr
|
||||
FeatureExtraInfo.vtTenonN = vtN
|
||||
FeatureExtraInfo.ptTenonCenter = ptC
|
||||
FeatureExtraInfo.idAddAuxGeom = idAux
|
||||
|
||||
@@ -316,6 +318,53 @@ function FeatureLib.GetTenonData( Proc)
|
||||
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- Recupero dati foro e adattamento se speciale
|
||||
function FeatureLib.GetDTMortiseData( Proc)
|
||||
local FeatureExtraInfo = {}
|
||||
|
||||
local idAux = EgtGetInfo( Proc.id, 'AUXID', 'i')
|
||||
if idAux then idAux = idAux + Proc.id end
|
||||
local vtMortiseN = EgtCurveExtrusion( idAux, GDB_RT.GLOB)
|
||||
-- ne determino l'asse
|
||||
local vtAx = EgtEV( idAux, GDB_RT.GLOB) - EgtSV( idAux, GDB_RT.GLOB)
|
||||
vtAx:normalize()
|
||||
-- determino l'altezza della mortasa (0=faccia di fondo)
|
||||
local rFrameDtMortise, dMortiseLength, dMortiseWidth = EgtSurfTmFacetMinAreaRectangle( Proc.id, 0, GDB_RT.GLOB)
|
||||
if abs( rFrameDtMortise:getVersY() * vtAx) > abs( rFrameDtMortise:getVersX() * vtAx) then
|
||||
rFrameDtMortise:rotate( rFrameDtMortise:getOrigin(), rFrameDtMortise:getVersZ(), 90)
|
||||
dMortiseLength, dMortiseWidth = dMortiseWidth, dMortiseLength
|
||||
end
|
||||
local b3DtMortise = EgtGetBBoxRef( Proc.id, GDB_BB.STANDARD, rFrameDtMortise)
|
||||
local dMortiseDepth = b3DtMortise:getDimZ()
|
||||
|
||||
-- recupero il raggio minimo della mortasa
|
||||
local dMortiseMinRadius = 1000
|
||||
local nSt, nEnd = EgtCurveDomain( idAux)
|
||||
for i = nSt, nEnd - 1 do
|
||||
local dRad = EgtCurveCompoRadius( idAux, i)
|
||||
if dRad > 0 and dRad < dMortiseMinRadius then
|
||||
dMortiseMinRadius = dRad
|
||||
end
|
||||
end
|
||||
|
||||
-- distanza massima all'imbocco ortogonale all'asse
|
||||
local vtDiff = EgtEP( idAux, GDB_RT.GLOB) - EgtSP( idAux, GDB_RT.GLOB)
|
||||
local vtOrtDiff = vtDiff - vtDiff * vtAx * vtAx
|
||||
local dMortiseMaxDist = min( vtOrtDiff:len(), dMortiseWidth)
|
||||
|
||||
FeatureExtraInfo.bIsFrontMortise = Proc.nPrc == 56
|
||||
FeatureExtraInfo.dMortiseLength = dMortiseLength
|
||||
FeatureExtraInfo.dMortiseWidth = dMortiseWidth
|
||||
FeatureExtraInfo.dMortiseMaxDist = dMortiseMaxDist
|
||||
FeatureExtraInfo.dMortiseDepth = dMortiseDepth
|
||||
FeatureExtraInfo.dMortiseMinRadius = dMortiseMinRadius
|
||||
FeatureExtraInfo.vtMortiseN = vtMortiseN
|
||||
FeatureExtraInfo.idAddAuxGeom = idAux
|
||||
|
||||
return FeatureExtraInfo
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- funzione che restituisce indice di completamento in base alla percentuale di volume lavorato
|
||||
function FeatureLib.GetFeatureCompletionIndex( dCompletionPercentage)
|
||||
|
||||
Reference in New Issue
Block a user