- in BeamExec funzione IsFeatureCuttingEntireSection spostata in BeamLib; in ClassifyTopology aggiunto passaggio del parametro nRawId
- in BeamLib -> GetFaceWithMostAdj gestito primo parametro anche come Proc; gestito caso strip con facce tutte in sottosquadro; spostata qui funzione IsFeatureCuttingEntireSection da BeamExec - In FeatureTopology aggiunte topologie Strip e Cut - In ProcessDoveTail, ProcessLapJoint, ProcessLongCut, ProcessTyroleanDovetail modificata chiamata a GetFaceWithMostAdj
This commit is contained in:
+10
-13
@@ -47,6 +47,8 @@
|
||||
-- 2023/03/31 Corretto ordinamento per fori di coda da lasciare in coda.
|
||||
-- 2023/07/31 Corretto errore nelle mortase in doppio.
|
||||
-- 2023/09/13 Aggiunta ClassifyTopology per la classificazione topologica delle feature. In CollectFeatures aggiunta la raccolta preliminare di alcune informazioni.
|
||||
-- 2022/09/26 Funzione IsFeatureCuttingEntireSection spostata in BeamLib
|
||||
-- 2022/09/26 In ClassifyTopology aggiunto passaggio del parametro nRawId
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamExec = {}
|
||||
@@ -249,12 +251,6 @@ local function IsTailFeature( Proc, b3Raw, dCurrOvmH, dCurrOvmT)
|
||||
return false
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- restituisce vero se la feature con box b3Proc taglia l'intera sezione della barra, rappresentata dalle sue dimensioni W e H
|
||||
local function IsFeatureCuttingEntireSection( b3Proc, dRawW, dRawH)
|
||||
return ((abs(b3Proc:getDimY() - dRawW) < 10 * GEO.EPS_SMALL or b3Proc:getDimY() > dRawW) and (abs(b3Proc:getDimZ() - dRawH) < 10 * GEO.EPS_SMALL or b3Proc:getDimZ() > dRawH))
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT)
|
||||
local dRawW = b3Raw:getDimY()
|
||||
@@ -312,7 +308,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT)
|
||||
if Proc.Box and not Proc.Box:isEmpty() then
|
||||
Proc.Head = IsHeadFeature( Proc, b3Raw, dCurrOvmH)
|
||||
Proc.Tail, Proc.AdvTail = IsTailFeature( Proc, b3Raw, dCurrOvmH, dCurrOvmT)
|
||||
if Proc.Fct == 1 and IsFeatureCuttingEntireSection( Proc.Box , dRawW, dRawH) and ( Proc.Head or Proc.Tail) and Proc.Prc ~= 340 and Proc.Prc ~= 350 then
|
||||
if Proc.Fct == 1 and BL.IsFeatureCuttingEntireSection( Proc.Box, dRawW, dRawH) and ( Proc.Head or Proc.Tail) and Proc.Prc ~= 340 and Proc.Prc ~= 350 then
|
||||
if Proc.Head and Proc.Box:getCenter():getX() < dMachineBeforeIntersectingDrillingsXHead then
|
||||
dMachineBeforeIntersectingDrillingsXHead = Proc.Box:getCenter():getX()
|
||||
nMachineBeforeIntersectingDrillingsIdHead = Proc.Id
|
||||
@@ -356,7 +352,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT)
|
||||
end
|
||||
-- se BlockHaus HalfLap
|
||||
elseif Proc.Prc == 37 then
|
||||
local nFacInd = BL.GetFaceWithMostAdj( Proc.Id, PartId)
|
||||
local nFacInd = BL.GetFaceWithMostAdj( Proc, PartId)
|
||||
if nFacInd then
|
||||
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
if vtN then
|
||||
@@ -400,7 +396,7 @@ local function AnalyzeHeadFeatures( b3Solid, vProc, dRawW, dRawH)
|
||||
end
|
||||
if Proc.Head and Proc.Id ~= nReplacedFeatureId and Proc.Prc ~= 340 then
|
||||
-- controllo se la feature taglia l'intera sezione; in caso positivo la finitura non è necessaria
|
||||
bHeadFinishingNeeded = not IsFeatureCuttingEntireSection( Proc.Box, dRawW, dRawH)
|
||||
bHeadFinishingNeeded = not BL.IsFeatureCuttingEntireSection( Proc.Box, dRawW, dRawH)
|
||||
end
|
||||
end
|
||||
return bHeadFinishingNeeded, nReplacedFeatureId
|
||||
@@ -423,7 +419,7 @@ local function AnalyzeTailFeatures( b3Solid, vProc, dRawW, dRawH)
|
||||
end
|
||||
if Proc.Tail and Proc.Id ~= nReplacedFeatureId and Proc.Prc ~= 350 then
|
||||
-- controllo se la feature taglia l'intera sezione; in caso positivo la finitura non è necessaria
|
||||
bTailFinishingNeeded = not IsFeatureCuttingEntireSection( Proc.Box, dRawW, dRawH)
|
||||
bTailFinishingNeeded = not BL.IsFeatureCuttingEntireSection( Proc.Box, dRawW, dRawH)
|
||||
end
|
||||
end
|
||||
return bTailFinishingNeeded, nReplacedFeatureId
|
||||
@@ -1151,11 +1147,12 @@ local function ClassifyFeatures( vProc, b3Raw, Stats)
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function ClassifyTopology( vProc)
|
||||
local function ClassifyTopology( vProc, nRawId)
|
||||
local b3Raw = EgtGetRawPartBBox( nRawId)
|
||||
local nRecognized = 0
|
||||
for i = 1, #vProc do
|
||||
local Proc = vProc[i]
|
||||
if Topology.Classify( Proc) then
|
||||
if Topology.Classify( Proc, b3Raw) then
|
||||
nRecognized = nRecognized + 1
|
||||
end
|
||||
end
|
||||
@@ -1843,7 +1840,7 @@ function BeamExec.ProcessFeatures()
|
||||
SetMirroredFeatures( vProc, b3Raw)
|
||||
end
|
||||
-- classifico topologicamente le feature
|
||||
ClassifyTopology( vProc)
|
||||
ClassifyTopology( vProc, nRawId)
|
||||
-- le ordino lungo X
|
||||
OrderFeatures( vProc, b3Raw)
|
||||
-- le classifico
|
||||
|
||||
Reference in New Issue
Block a user