3dPrinting :

- aggiunto numero massimo di slice per setti.
This commit is contained in:
SaraP
2026-07-07 14:40:37 +02:00
parent 39ac206cee
commit ac2297fcb3
2 changed files with 24 additions and 7 deletions
+3 -2
View File
@@ -86,6 +86,8 @@ KEY_WIPE_LEN = 'WipeLen'
KEY_WIPE_DIR = 'WipeDir'
KEY_WIPE_FEEDPU = 'WipeFeedPu'
KEY_TOOL_DIAM = 'ToolDiam'
KEY_MAX_H = 'SlicingHeight'
KEY_MAX_SLICES_NBR = 'MaxSlicesNumber'
KEY_MAX_STRANDH_FACTOR = 'MaxStrandHFactor'
KEY_MIN_STRANDH_FACTOR = 'MinStrandHFactor'
KEY_JOIN_SHELLS = 'JoinShells'
@@ -150,6 +152,7 @@ KEY_RIBS_MERGE_WITH_SHELLS = 'RibsMergeWithShell'
KEY_INVERT_RIBS_MERGED_SHELL_LINK = 'InvertRibsMergedShellMainLink'
KEY_RIBS_LEAD_FILLET = 'RibsLeadFillet'
KEY_RIBS_LINK_FILLET = 'RibsLinkFillet'
KEY_RIBS_MAX_SLICES_NBR = 'RibsMaxSlicesNumber'
-- Regioni con diverso numero di passate
KEY_SHELL_NBR_DIFF = 'ShellNbrDifference'
@@ -193,8 +196,6 @@ KEY_LINEAR_APPROX = 'LinearApprox'
KEY_LINEAR_TOL = 'LinearTol'
-- Altre chiavi
KEY_MAX_H = 'SlicingHeight'
KEY_MAX_SLICES_NBR = 'MaxSlicesNumber'
KEY_SLICE_NBR = 'SliceNbr'
KEY_SLICE_DIR = 'SliceDir'
KEY_SLICE_POS = 'SlicePos'
+21 -5
View File
@@ -315,6 +315,7 @@ local function GetRibParams( nId)
ReadParam( nId, KEY_RIBS_MERGE_WITH_SHELLS, 'b', false, RibParam)
ReadParam( nId, KEY_RIBS_LEAD_FILLET, 'd', 0, RibParam)
ReadParam( nId, KEY_RIBS_LINK_FILLET, 'd', 0, RibParam)
ReadParam( nId, KEY_RIBS_MAX_SLICES_NBR, 'i', 0, RibParam)
return RibParam
end
@@ -419,14 +420,29 @@ local function SlicingExtraObjects( nLay, vSlicingDir, vSlicingVal, nSlicingType
local vLayIds = EgtGetNameInGroup( s_nPartId, SLICE_LAYER .. '*')
for i = 1, #vSliceIds do
-- ricavo i parametri per lo slicing
local vCurrSlicingDir = {}
local vCurrSlicingVal = {}
if nType == TYPE.RIB and tabParams[i][KEY_RIBS_MAX_SLICES_NBR] > 0 and tabParams[i][KEY_RIBS_MAX_SLICES_NBR] < #vSlicingVal then
for j = 1, min( tabParams[i][KEY_RIBS_MAX_SLICES_NBR], #vSlicingDir) do
vCurrSlicingDir[j] = vSlicingDir[j]
end
for j = 1, tabParams[i][KEY_RIBS_MAX_SLICES_NBR] do
vCurrSlicingVal[j] = vSlicingVal[j]
end
else
vCurrSlicingDir = vSlicingDir
vCurrSlicingVal = vSlicingVal
end
-- effettuo lo slicing in layer separati ( analogamente a quanto avviene con il solido)
local nResId
if nSlicingType ~= SLICING_TYPE.MULTIPLANAR and nSlicingType ~= SLICING_TYPE.MULTIPLANAR_DEG45 and nSlicingType ~= SLICING_TYPE.MULTIPLANAR_HOR then
nResId = EgtParPlanesSurfTmInters( ORIG(), vSlicingDir[1], vSlicingVal, vSliceIds[i], s_nPartId, GDB_RT.GLOB, TOLER)
nResId = EgtParPlanesSurfTmInters( ORIG(), vCurrSlicingDir[1], vCurrSlicingVal, vSliceIds[i], s_nPartId, GDB_RT.GLOB, TOLER)
else
for j = 1, #vSlicingVal do
local vtN = vSlicingDir[j]
local ptOn = vSlicingVal[j]
for j = 1, #vCurrSlicingVal do
local vtN = vCurrSlicingDir[j]
local ptOn = vCurrSlicingVal[j]
if j == 1 then
ptOn = ptOn + DELTAZ * vtN
end
@@ -442,7 +458,7 @@ local function SlicingExtraObjects( nLay, vSlicingDir, vSlicingVal, nSlicingType
-- recupero i risultati e li sposto nei layers opportuni
local j = 1
while nResId do
local vtSlicing = vSlicingDir[j] or vSlicingDir[1]
local vtSlicing = vCurrSlicingDir[j] or vCurrSlicingDir[1]
-- recupero il gruppo nel layer dove salvare lo slicing degli oggetti o lo creo se non esiste
local nGrp = EgtGetFirstNameInGroup( vLayIds[j], sNameGrp)