3dPrinting :

- aggiunto offset lead point sul primo layer di spiral vase.
This commit is contained in:
SaraP
2026-06-19 11:36:40 +02:00
parent 8df46956af
commit 191fed7b7b
+63 -18
View File
@@ -2210,17 +2210,27 @@ local function SpiralVaseFullMultiPlanar( vLayIds, LayerParams)
-- mi sposto dell'altezza layer
EgtMove( nNewEntId, LayerParams.dLayHeight * vtSlicing, GDB_RT.GLOB)
-- eventuale lead in
-- offset lead point
if LayerParams.dOffsetLP > GEO.EPS_SMALL then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
elseif LayerParams.dOffsetLP < - GEO.EPS_SMALL then
local _, dE = EgtCurveDomain( nNewEntId)
local dS = EgtCurveParamAtLength( nNewEntId, EgtCurveLength( nNewEntId) + LayerParams.dOffsetLP)
local nNewPart = EgtCopyParamRange( nNewEntId, dS, dE, nTpathGrpId)
if not EgtAddCurveCompoCurve( nNewEntId, nNewPart, true, false) then
EgtErase( nNewPart)
end
end
-- lead in
if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then
if not LayerParams.bSingleLeadIn or LayerParams.nFloorNbr == 0 then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
local nLeadInCrv = AddLeadIn( nNewEntId, LayerParams, nTpathGrpId)
if nLeadInCrv and LayerParams.bLinearApprox then
EgtApproxCurve( nLeadInCrv, GDB_CA.LINES, LayerParams.dLinearApproxTol)
end
end
end
else
-- recupero il piano precedente
local vtSlicingPrev = EgtGetInfo( vLayIds[nIdx-1], KEY_SLICE_DIR, 'v')
@@ -2489,6 +2499,29 @@ local function SpiralVaseFull( vLayIds, LayerParams)
if nRealLayer == 1 then
-- mi sposto dell'altezza layer
EgtMove( nNewEntId, LayerParams.dLayHeight * LayerParams.vtSlicing, GDB_RT.GLOB)
-- offset lead point
if LayerParams.dOffsetLP > GEO.EPS_SMALL then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
elseif LayerParams.dOffsetLP < - GEO.EPS_SMALL then
local _, dE = EgtCurveDomain( nNewEntId)
local dS = EgtCurveParamAtLength( nNewEntId, EgtCurveLength( nNewEntId) + LayerParams.dOffsetLP)
local nNewPart = EgtCopyParamRange( nNewEntId, dS, dE, nTpathGrpId)
if not EgtAddCurveCompoCurve( nNewEntId, nNewPart, true, false) then
EgtErase( nNewPart)
end
end
-- lead in
if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then
if not LayerParams.bSingleLeadIn or LayerParams.nFloorNbr == 0 then
local nLeadInCrv = AddLeadIn( nNewEntId, LayerParams, nTpathGrpId)
if nLeadInCrv and LayerParams.bLinearApprox then
EgtApproxCurve( nLeadInCrv, GDB_CA.LINES, LayerParams.dLinearApproxTol)
end
end
end
-- modifico altezza ultimo tratto
local dTrimPar = EgtCurveParamAtLength( nNewEntId, EgtCurveLength( nNewEntId) - s_dSpralVaseFirstDelta)
local nNewPart = EgtSplitCurveAtParam( nNewEntId, dTrimPar)
@@ -2498,17 +2531,7 @@ local function SpiralVaseFull( vLayIds, LayerParams)
EgtApproxCurve( nNewEntId, GDB_CA.LINES, LayerParams.dLinearApproxTol)
EgtApproxCurve( nNewPart, GDB_CA.LINES, LayerParams.dLinearApproxTol)
end
-- eventuale lead in
if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then
if not LayerParams.bSingleLeadIn or LayerParams.nFloorNbr == 0 then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
local nLeadInCrv = AddLeadIn( nNewEntId, LayerParams, nTpathGrpId)
if nLeadInCrv and LayerParams.bLinearApprox then
EgtApproxCurve( nLeadInCrv, GDB_CA.LINES, LayerParams.dLinearApproxTol)
end
end
end
else
-- a) garantisco continuità con layer precedente
local ptOld = EgtEP( nOldId, GDB_ID.ROOT)
@@ -2788,12 +2811,23 @@ local function SpiralVasePartialMultiPlanar( vLayIds, LayerParams)
end
end
-- eventuale lead in
-- eventuale offset lead point e lead in
if bFirst then
bFirst = false
if LayerParams.dOffsetLP > GEO.EPS_SMALL then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
elseif LayerParams.dOffsetLP < - GEO.EPS_SMALL then
local _, dE = EgtCurveDomain( nNewEntId)
local dS = EgtCurveParamAtLength( nNewEntId, EgtCurveLength( nNewEntId) + LayerParams.dOffsetLP)
local nNewPart = EgtCopyParamRange( nNewEntId, dS, dE, nTpathGrpId)
if not EgtAddCurveCompoCurve( nNewEntId, nNewPart, true, false) then
EgtErase( nNewPart)
end
end
if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then
if not LayerParams.bSingleLeadIn or LayerParams.nFloorNbr == 0 then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
local nLeadInCrv = AddLeadIn( nNewEntId, LayerParams, nTpathGrpId)
if nLeadInCrv and LayerParams.bLinearApprox then
EgtApproxCurve( nLeadInCrv, GDB_CA.LINES, LayerParams.dLinearApproxTol)
@@ -2952,12 +2986,23 @@ local function SpiralVasePartial( vLayIds, LayerParams)
end
end
-- eventuale lead in
-- eventuale offset lead point e lead in
if bFirst then
bFirst = false
if LayerParams.dOffsetLP > GEO.EPS_SMALL then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
elseif LayerParams.dOffsetLP < - GEO.EPS_SMALL then
local _, dE = EgtCurveDomain( nNewEntId)
local dS = EgtCurveParamAtLength( nNewEntId, EgtCurveLength( nNewEntId) + LayerParams.dOffsetLP)
local nNewPart = EgtCopyParamRange( nNewEntId, dS, dE, nTpathGrpId)
if not EgtAddCurveCompoCurve( nNewEntId, nNewPart, true, false) then
EgtErase( nNewPart)
end
end
if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then
if not LayerParams.bSingleLeadIn or LayerParams.nFloorNbr == 0 then
EgtTrimCurveStartAtLen( nNewEntId, LayerParams.dOffsetLP)
local nLeadInCrv = AddLeadIn( nNewEntId, LayerParams, nTpathGrpId)
if nLeadInCrv and LayerParams.bLinearApprox then
EgtApproxCurve( nLeadInCrv, GDB_CA.LINES, LayerParams.dLinearApproxTol)