Piccole modifiche per demo
This commit is contained in:
@@ -32,6 +32,8 @@ function FeatureLib.GetProcFromTrimesh( idTrimesh, Part, ProcToCopyFrom)
|
||||
Proc.AffectedFaces = BeamLib.GetAffectedFaces( Proc, Part)
|
||||
Proc.AdjacencyMatrix = FaceData.GetAdjacencyMatrix( Proc)
|
||||
Proc.Faces = FaceData.GetFacesInfo( Proc, Part)
|
||||
Proc.NotClampableLength = FeatureLib.CalculateFeatureNotClampableLengths( Proc, Part)
|
||||
Proc.bHindersLaserMeasure = FeatureLib.CalculateFeatureHindersLaserMeasure( Proc, Part)
|
||||
-- TODO servono anche altri dati raccolti nel collect??
|
||||
|
||||
return Proc
|
||||
@@ -85,9 +87,9 @@ function FeatureLib.NeedTopologyFeature( Proc, Part)
|
||||
elseif ID.IsStepJointNotch( Proc) then -- (0-80)
|
||||
return true
|
||||
-- feature con calcolo topologia da geometria SOLO se rispettano certe condizioni, altrimenti riconoscimento specifico
|
||||
elseif ID.IsSawCut( Proc) and Proc.nFct == 1
|
||||
and ( IsFeatureCuttingEntireSection( Proc.b3Box, Part)
|
||||
or IsFeatureCuttingEntireLength( Proc.b3Box, Part)) then -- (0-13)
|
||||
elseif ID.IsSawCut( Proc) and Proc.nFct == 1 then
|
||||
--and ( IsFeatureCuttingEntireSection( Proc.b3Box, Part)
|
||||
--or IsFeatureCuttingEntireLength( Proc.b3Box, Part)) then -- (0-13)
|
||||
return true
|
||||
elseif ID.IsHipValleyRafterNotch( Proc) and Proc.nFct < 4 then -- (0-25)
|
||||
return true
|
||||
|
||||
+17
-17
@@ -865,41 +865,41 @@ end
|
||||
-- TODO funziona solo con attacco perpendicolare - da aggiungere gestione in caso di attacco tangenziale
|
||||
function MachiningLib.AddMachinings( Proc, Machining, AuxiliaryData)
|
||||
local bMachiningAdded = false
|
||||
local NewAuxiliaryData = {}
|
||||
|
||||
-- se esistono i dati ausiliari li copio in locale perchè il parametro è una tabella per riferimento
|
||||
if AuxiliaryData then
|
||||
NewAuxiliaryData = BeamLib.TableCopyDeep( AuxiliaryData)
|
||||
end
|
||||
|
||||
if Machining.CloneStepsRadial and Machining.CloneStepsRadial.nCount > 1 then
|
||||
if not AuxiliaryData then
|
||||
AuxiliaryData = {}
|
||||
end
|
||||
AuxiliaryData.Clones = {}
|
||||
NewAuxiliaryData.Clones = {}
|
||||
|
||||
local dOriginalRadialOffset = Machining.dRadialOffset
|
||||
local dOriginalLeadInPerpDistance = Machining.LeadIn.dPerpDistance
|
||||
local dOriginalLeadOutPerpDistance = Machining.LeadOut.dPerpDistance
|
||||
for i = 1, Machining.CloneStepsRadial.nCount do
|
||||
AuxiliaryData.Clones[i] = {}
|
||||
AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Machining.CloneStepsRadial.dStep * ( Machining.CloneStepsRadial.nCount - i)
|
||||
NewAuxiliaryData.Clones[i] = {}
|
||||
NewAuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Machining.CloneStepsRadial.dStep * ( Machining.CloneStepsRadial.nCount - i)
|
||||
-- update distanza perpendicolare attacco per contemplare l'offset applicato
|
||||
if abs( dOriginalLeadInPerpDistance) > 10 * GEO.EPS_SMALL and abs( dOriginalLeadOutPerpDistance) > 10 * GEO.EPS_SMALL then
|
||||
AuxiliaryData.Clones[i].LeadIn = {}
|
||||
AuxiliaryData.Clones[i].LeadOut = {}
|
||||
AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset
|
||||
AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset
|
||||
NewAuxiliaryData.Clones[i].LeadIn = {}
|
||||
NewAuxiliaryData.Clones[i].LeadOut = {}
|
||||
NewAuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - NewAuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset
|
||||
NewAuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - NewAuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset
|
||||
end
|
||||
end
|
||||
elseif Machining.CloneStepsLongitudinal and Machining.CloneStepsLongitudinal.nCount > 1 then
|
||||
if not AuxiliaryData then
|
||||
AuxiliaryData = {}
|
||||
end
|
||||
AuxiliaryData.Clones = {}
|
||||
NewAuxiliaryData.Clones = {}
|
||||
|
||||
local dOriginalRadialOffset = Machining.dRadialOffset
|
||||
for i = Machining.CloneStepsLongitudinal.nCount, 1, -1 do
|
||||
AuxiliaryData.Clones[i] = {}
|
||||
AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Machining.CloneStepsLongitudinal.dStep * ( i - 1)
|
||||
NewAuxiliaryData.Clones[i] = {}
|
||||
NewAuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Machining.CloneStepsLongitudinal.dStep * ( i - 1)
|
||||
end
|
||||
end
|
||||
|
||||
bMachiningAdded = AddNewMachining( Proc, Machining, AuxiliaryData)
|
||||
bMachiningAdded = AddNewMachining( Proc, Machining, NewAuxiliaryData)
|
||||
|
||||
return bMachiningAdded
|
||||
end
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
"nGroup": "MACHINING STRATEGY",
|
||||
"sName": "GEN_bReduceBladePath",
|
||||
"sNameNge": "REDUCE_BLADE_PATH",
|
||||
"sValue": "false",
|
||||
"sValue": "true",
|
||||
"sDescriptionShort": "Use entire blade diameter to shorten path",
|
||||
"sDescriptionLong": "",
|
||||
"sType": "b",
|
||||
|
||||
@@ -10,6 +10,7 @@ local MachiningLib = require( 'MachiningLib')
|
||||
local FeatureLib = require( 'FeatureLib')
|
||||
-- strategie di base
|
||||
local BladeToWaste = require( 'BLADETOWASTE')
|
||||
local BladeKeepWaste =require ( 'BLADEKEEPWASTE')
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local STR0012 = {}
|
||||
@@ -42,6 +43,7 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
|
||||
local dMRRBladeAddedFace = 0
|
||||
local dCompletionPercentageAddedFace = 0
|
||||
local dQualityAddedFace = 0
|
||||
local AuxiliaryData = { bIgnoreNotClampableLength = false}
|
||||
|
||||
-- gestito solo RidgeLap 3 facce
|
||||
if Proc.nFct ~= 3 then
|
||||
@@ -78,39 +80,57 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
|
||||
-- rimozione della terza faccia dalla Proc
|
||||
local idNewProc = EgtCopyGlob( Proc.id, nAddGrpId)
|
||||
EgtSurfTmRemoveFacet( idNewProc, nAddedFace)
|
||||
Proc = FeatureLib.GetProcFromTrimesh( idNewProc, Part, Proc)
|
||||
local NewProc = FeatureLib.GetProcFromTrimesh( idNewProc, Part, Proc)
|
||||
NewProc.Topology = FeatureLib.ClassifyTopology( NewProc, Part)
|
||||
|
||||
-- TODO rimuovere??? codolo da implementare o no??
|
||||
-- considerazioni necessarie a determinare se lavorare con codolo oppure no
|
||||
local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED')
|
||||
local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE')
|
||||
local dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail = FeatureLib.GetFeatureMaxNotClampableLengths( Proc, Part)
|
||||
local dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail = FeatureLib.GetFeatureMaxNotClampableLengths( NewProc, Part)
|
||||
local bFeatureHindersClamping = FeatureLib.IsMachiningLong( max( dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN})
|
||||
local bIsFeatureLong = FeatureLib.IsMachiningLong( Proc.b3Box:getDimX(), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN})
|
||||
local bIsFeatureLong = FeatureLib.IsMachiningLong( NewProc.b3Box:getDimX(), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN})
|
||||
|
||||
-- lavorazione con codolo
|
||||
if ( bIsFeatureLong)
|
||||
or ( bFeatureHindersClamping and not bDropWaste)
|
||||
or bKeepWasteAttached then
|
||||
|
||||
local BladeKeepWasteResult
|
||||
local OptionalParameters = { dExtendAfterTail = dExtendAfterTail, dStripWidth = 5, bFinishWithMill = false}
|
||||
AuxiliaryData.bIgnoreNotClampableLength = true
|
||||
TwoFaces.Result, BladeKeepWasteResult = BladeKeepWaste.Make( NewProc, Part, OptionalParameters)
|
||||
dTimeToMachine = BladeKeepWasteResult.dTimeToMachine
|
||||
dMRRBlade = BladeKeepWasteResult.dMRR
|
||||
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
||||
dQuality = BladeKeepWasteResult.dQuality
|
||||
|
||||
-- lavorazione a cubetti facce concave
|
||||
local dMinZTopBlade
|
||||
local dMaxNyTopBlade
|
||||
local BladeToWasteResult
|
||||
if Strategy.Parameters.dMinZAngleTopBlade then
|
||||
dMinZTopBlade = sin( Strategy.Parameters.dMinZAngleTopBlade)
|
||||
else
|
||||
local dMinZTopBlade
|
||||
local dMaxNyTopBlade
|
||||
local BladeToWasteResult
|
||||
if Strategy.Parameters.dMinZAngleTopBlade then
|
||||
dMinZTopBlade = sin( Strategy.Parameters.dMinZAngleTopBlade)
|
||||
end
|
||||
if Strategy.Parameters.dMaxYAngleTopBlade then
|
||||
dMaxNyTopBlade = sin( Strategy.Parameters.dMaxYAngleTopBlade)
|
||||
end
|
||||
local OptionalParameters = { dMaxWasteVolume = Strategy.Parameters.dMaxWasteVolume,
|
||||
dMaxWasteLength = Strategy.Parameters.dMaxWasteLength,
|
||||
dMinNzTopBlade = dMinZTopBlade,
|
||||
dMaxNyTopBlade = dMaxNyTopBlade,
|
||||
bSaveAddedGeometries = bAddMachining,
|
||||
dExtendAfterTail = dExtendAfterTail,
|
||||
bReduceBladePath = Strategy.Parameters.bReduceBladePath
|
||||
}
|
||||
AuxiliaryData.bIgnoreNotClampableLength = false
|
||||
TwoFaces.Result, BladeToWasteResult = BladeToWaste.Make( NewProc, Part, OptionalParameters)
|
||||
dTimeToMachine = BladeToWasteResult.dTimeToMachine
|
||||
dMRRBlade = BladeToWasteResult.dMRR
|
||||
dCompletionPercentage = BladeToWasteResult.dCompletionPercentage
|
||||
dQuality = BladeToWasteResult.dQuality
|
||||
end
|
||||
if Strategy.Parameters.dMaxYAngleTopBlade then
|
||||
dMaxNyTopBlade = sin( Strategy.Parameters.dMaxYAngleTopBlade)
|
||||
end
|
||||
local OptionalParameters = { dMaxWasteVolume = Strategy.Parameters.dMaxWasteVolume,
|
||||
dMaxWasteLength = Strategy.Parameters.dMaxWasteLength,
|
||||
dMinNzTopBlade = dMinZTopBlade,
|
||||
dMaxNyTopBlade = dMaxNyTopBlade,
|
||||
bSaveAddedGeometries = bAddMachining,
|
||||
dExtendAfterTail = dExtendAfterTail,
|
||||
bReduceBladePath = Strategy.Parameters.bReduceBladePath
|
||||
}
|
||||
TwoFaces.Result, BladeToWasteResult = BladeToWaste.Make( Proc, Part, OptionalParameters)
|
||||
dTimeToMachine = BladeToWasteResult.dTimeToMachine
|
||||
dMRRBlade = BladeToWasteResult.dMRR
|
||||
dCompletionPercentage = BladeToWasteResult.dCompletionPercentage
|
||||
dQuality = BladeToWasteResult.dQuality
|
||||
|
||||
-- lavorazione terza faccia
|
||||
-- TODO da completare
|
||||
@@ -162,7 +182,7 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
|
||||
if RidgeLap.Result[i].bIsApplicable then
|
||||
nIsApplicableCount = nIsApplicableCount + 1
|
||||
if bAddMachining then
|
||||
local bIsMachiningAdded = MachiningLib.AddMachinings( OriginalProc, RidgeLap.Result[i])
|
||||
local bIsMachiningAdded = MachiningLib.AddMachinings( OriginalProc, RidgeLap.Result[i], AuxiliaryData)
|
||||
if not bIsMachiningAdded then
|
||||
bAreAllMachiningsAdded = false
|
||||
end
|
||||
|
||||
@@ -209,7 +209,7 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters)
|
||||
-- taglio eventuali facce di chiusura
|
||||
for i = 1, #LongFaces do
|
||||
local Cutting = {}
|
||||
local OptionalParametersFaceByBlade = { bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = dExtendAfterTail, nToolIndex = nToolIndex}
|
||||
local OptionalParametersFaceByBlade = { bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = 9999, nToolIndex = nToolIndex}
|
||||
Cutting = FaceByBlade.Make( Proc, Part, LongFaces[i], LongFaces[i].MainEdges.BottomEdge, OptionalParametersFaceByBlade)
|
||||
Cutting.nInternalSortingPriority = 1
|
||||
Cutting.dResultWeight = 0.15
|
||||
|
||||
Reference in New Issue
Block a user