diff --git a/LuaLibs/AddManData.lua b/LuaLibs/AddManData.lua index 4dc2c9c..52b6e79 100644 --- a/LuaLibs/AddManData.lua +++ b/LuaLibs/AddManData.lua @@ -75,6 +75,7 @@ KEY_MATERIAL = 'Material' KEY_LEAD_IN_TYPE = 'LeadIn' KEY_LEAD_IN_TANG_DIST = 'LeadInTangDist' KEY_LEAD_IN_ORTHO_DIST = 'LeadInOrthoDist' +KEY_SINGLE_LEAD_IN = 'SingleLeadIn' KEY_LEAD_OUT_TYPE = 'LeadOut' KEY_LEAD_OUT_TANG_DIST= 'LeadOutTangDist' KEY_LEAD_OUT_ORTHO_DIST= 'LeadOutOrthoDist' diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index a761c42..0788139 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -37,6 +37,7 @@ local function GetLayerParamsForToolPathCalc() LayerParams.nLinkType = EgtGetInfo( s_nPartId, KEY_LINK_TYPE, 'i') LayerParams.dLinkParam = EgtGetInfo( s_nPartId, KEY_LINK_PARAM, 'd') LayerParams.nLeadInType = EgtGetInfo( s_nPartId, KEY_LEAD_IN_TYPE, 'i') + LayerParams.bSingleLeadIn = EgtGetInfo( s_nPartId, KEY_SINGLE_LEAD_IN, 'b') or true LayerParams.dLeadInTangDist = EgtGetInfo( s_nPartId, KEY_LEAD_IN_TANG_DIST, 'd') LayerParams.dLeadInOrthoDist = EgtGetInfo( s_nPartId, KEY_LEAD_IN_ORTHO_DIST, 'd') LayerParams.nLeadOutType = EgtGetInfo( s_nPartId, KEY_LEAD_OUT_TYPE, 'i') @@ -65,7 +66,7 @@ local function GetLayerParamsForToolPathCalc() -- parametri da file ini del programma local sIniFile = EgtGetIniFile() LayerParams.dSpiralVaseInterpLen = EgtGetNumberFromIni( '3dPrinting', KEY_SPIRAL_VASE_INTERP_LEN, 100.0, sIniFile) - + return LayerParams end @@ -610,7 +611,7 @@ local function AddRetractionOnLastCrv( nCrvId, nTpathGrpId, LayerParams, dCoasti end --------------------------------------------------------------------- -local function CalcShellsToolPath( vEntIds, nTpathGrpId, LayerParams) +local function CalcShellsToolPath( vEntIds, nTpathGrpId, bFirst, LayerParams) if not vEntIds or #vEntIds == 0 then return end @@ -638,7 +639,9 @@ local function CalcShellsToolPath( vEntIds, nTpathGrpId, LayerParams) -- aggiungo leadin/leadout if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then - AddLeadIn( vIds[1], LayerParams, nTpathGrpId) + if bFirst or not LayerParams.bSingleLeadIn then + AddLeadIn( vIds[1], LayerParams, nTpathGrpId) + end end if LayerParams.nLeadOutType ~= LEAD_TYPE.NONE then EgtTrimCurveEndAtLen( vIds[#vIds], EgtCurveLength( vIds[#vIds]) - LayerParams.dOffsetLP) @@ -3013,6 +3016,7 @@ function CalcToolPath.Exec( nPartId) -- recupero i parametri per calcolo dei toolpath local LayerParams = GetLayerParamsForToolPathCalc() local nSlicingType = EgtGetInfo( s_nPartId, KEY_SLICING_TYPE, 'i') + local nFirstSolidLay = EgtGetInfo( s_nPartId, KEY_FIRST_SOLID_LAY, 'i') -- caso spiral vase if LayerParams.bSpiralVase then @@ -3073,7 +3077,7 @@ function CalcToolPath.Exec( nPartId) -- shell if LayerParams.vPrintOrder[j] == PRINT_ELEMENT.SHELL then - CalcShellsToolPath( vShellIds, nTpathGrpId, LayerParams) + CalcShellsToolPath( vShellIds, nTpathGrpId, nIdx == nFirstSolidLay, LayerParams) -- extra shell elseif LayerParams.vPrintOrder[j] == PRINT_ELEMENT.EXTRA_SHELL then