From a8711e92e74e2cde14a027e7df0db736b9b2a42a Mon Sep 17 00:00:00 2001 From: SaraP Date: Tue, 12 Apr 2022 17:42:27 +0200 Subject: [PATCH 1/3] - Aggiunta gestione lead in/lead out - Aggiunto offset per raccordi --- LuaLibs/AddManData.lua | 13 ++++++ LuaLibs/CalcToolPath.lua | 88 ++++++++++++++++++++++++++++++++++++++-- LuaLibs/RunSlicing.lua | 21 +++++++++- 3 files changed, 118 insertions(+), 4 deletions(-) diff --git a/LuaLibs/AddManData.lua b/LuaLibs/AddManData.lua index 8c57b40..b8619fa 100644 --- a/LuaLibs/AddManData.lua +++ b/LuaLibs/AddManData.lua @@ -40,6 +40,7 @@ KEY_PRINT_DIRECTION = "Direction" KEY_TYPE = "Type" KEY_LINK_TYPE = "LinkType" KEY_LINK_PARAM = "LinkParam" +KEY_LINK_DIST="LinkDist" KEY_FLOOR_NBR = "FloorCount" KEY_SPEED = "Speed" KEY_FEED = "Feed" @@ -53,6 +54,13 @@ KEY_G0_FEED = "G0Feed" KEY_MATERIAL = "Material" KEY_COEFF_X = "CoeffX" KEY_COEFF_Y = "CoeffY" +KEY_LEAD_IN_TYPE = "LeadIn" +KEY_LEAD_IN_TANG_DIST = "LeadInTangDist" +KEY_LEAD_IN_ORTHO_DIST = "LeadInOrthoDist" +KEY_LEAD_OUT_TYPE = "LeadOut" +KEY_LEAD_OUT_TANG_DIST= "LeadOutTangDist" +KEY_LEAD_OUT_ORTHO_DIST= "LeadOutOrthoDist" +KEY_OFFSET_LEAD_POINT = "OffsetLeadPoint" TYPE = { OUTER_SHELL = 0, @@ -78,6 +86,11 @@ LINK_TYPE = { BIARC = 1, } +LEAD_TYPE = { + LINEAR = 0, + ARC = 1, +} + --------------------------------------------------------------------- diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index 45072f4..7722dfb 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -21,9 +21,78 @@ local function GetLayerParamsForToolPathCalc() LayerParams.nOrder = EgtGetInfo( nParamsGrp, KEY_PRINT_ORDER, 'i') LayerParams.LinkType = EgtGetInfo( nParamsGrp, KEY_LINK_TYPE, 'i') LayerParams.LinkParam = EgtGetInfo( nParamsGrp, KEY_LINK_PARAM, 'd') + LayerParams.LinkDist = EgtGetInfo( nParamsGrp, KEY_LINK_DIST, 'd') + LayerParams.LeadInType = EgtGetInfo( nParamsGrp, KEY_LEAD_IN_TYPE, 'i') + LayerParams.LeadInTangDist = EgtGetInfo( nParamsGrp, KEY_LEAD_IN_TANG_DIST, 'd') + LayerParams.LeadInOrthoDist = EgtGetInfo( nParamsGrp, KEY_LEAD_IN_ORTHO_DIST, 'd') + LayerParams.LeadOutType = EgtGetInfo( nParamsGrp, KEY_LEAD_OUT_TYPE, 'i') + LayerParams.LeadOutTangDist = EgtGetInfo( nParamsGrp, KEY_LEAD_OUT_TANG_DIST, 'd') + LayerParams.LeadOutOrthoDist = EgtGetInfo( nParamsGrp, KEY_LEAD_OUT_ORTHO_DIST, 'd') + LayerParams.dOffsetLP = EgtGetInfo( nParamsGrp, KEY_OFFSET_LEAD_POINT, 'd') + return LayerParams end +-------------------------------------------------------------------- +local function AddLeadIn( nCrvId, LayerParams, nGrpId) + + local ptE = EgtSP( nCrvId) + local vtTang = EgtSV( nCrvId) + local vtOrtho = Vector3d( vtTang) + local dAng = 90 + if ( LayerParams.bInvert and LayerParams.nOrder == PRINT_ORDER.INT_EXT_INF) or + ( not LayerParams.bInvert and LayerParams.nOrder == PRINT_ORDER.EXT_INT_INF) then + dAng = - 90 + end + + vtOrtho:rotate( Z_AX(), dAng) + local ptS = ptE - LayerParams.LeadInTangDist * vtTang + LayerParams.LeadInOrthoDist * vtOrtho + + local nLeadInCrv = GDB_ID.NULL + if LayerParams.LeadInType == LEAD_TYPE.LINEAR then + nLeadInCrv = EgtLine( nGrpId, ptS, ptE) + elseif LayerParams.LeadInType == LEAD_TYPE.ARC then + local _, _, dAngIni = SphericalFromVector( vtTang) + nLeadInCrv = EgtArc2PD( nGrpId, ptE, ptS, 180 + dAngIni) + EgtInvertCurve( nLeadInCrv) + + end + EgtRelocate( nLeadInCrv, nGrpId, GDB_IN.FIRST_SON) + EgtSetInfo( nLeadInCrv, KEY_TYPE, TYPE.LINK) + + +end + +-------------------------------------------------------------------- +local function AddLeadOut( nCrvId, LayerParams, nGrpId) + + local ptS = EgtEP( nCrvId) + local vtTang = EgtEV( nCrvId) + local vtOrtho = Vector3d( vtTang) + local dAng = - 90 + if ( LayerParams.bInvert and LayerParams.nOrder == PRINT_ORDER.INT_EXT_INF) or + ( not LayerParams.bInvert and LayerParams.nOrder == PRINT_ORDER.EXT_INT_INF) then + dAng = 90 + end + + vtOrtho:rotate( Z_AX(), dAng) + local ptE = ptS + LayerParams.LeadOutTangDist * vtTang + LayerParams.LeadOutOrthoDist * vtOrtho + + local nLeadOutCrv = GDB_ID.NULL + if LayerParams.LeadOutType == LEAD_TYPE.LINEAR then + nLeadOutCrv = EgtLine( nGrpId, ptS, ptE) + elseif LayerParams.LeadOutType == LEAD_TYPE.ARC then + local _, _, dAngIni = SphericalFromVector( vtTang) + nLeadOutCrv = EgtArc2PD( nGrpId, ptS, ptE, dAngIni) + + end + EgtRelocate( nLeadOutCrv, nGrpId, GDB_IN.LAST_SON) + EgtSetInfo( nLeadOutCrv, KEY_TYPE, TYPE.LINK) + + +end + + --------------------------------------------------------------------- function CalcToolPath.Exec( nPartId) @@ -71,17 +140,23 @@ function CalcToolPath.Exec( nPartId) EgtMove( nNewEntId, Vector3d( 0, 0, LayerParams.dLayHeight), GDB_RT.GLOB) if LayerParams.bInvert then EgtInvertCurve( nNewEntId) - end + end nEntId = EgtGetNext( nEntId) end + -- aggiungo gli opportuni raccordi local nPrevId = EgtGetFirstInGroup( nTpathGrpId) local nCurrId = EgtGetNext( nPrevId or GDB_ID.NULL) + local k = 0 while nCurrId do local nLinkId + EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - k * LayerParams.LinkDist) + k = k + 1 + EgtChangeClosedCurveStartPoint( nCurrId, EgtEP( nPrevId)) + if LayerParams.LinkType == LINK_TYPE.LINEAR then - nLinkId = EgtLine( nTpathGrpId, EgtEP( nPrevId), EgtSP( nCurrId)) - else + nLinkId = EgtLine( nTpathGrpId, EgtEP( nPrevId), EgtEP( nCurrId)) + else EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - LayerParams.LinkParam / 2) EgtTrimCurveStartAtLen( nCurrId, LayerParams.LinkParam / 2) local _, _, dAngIni = SphericalFromVector( EgtEV( nPrevId)) @@ -95,6 +170,13 @@ function CalcToolPath.Exec( nPartId) nCurrId = EgtGetNext( nCurrId) end + -- aggiungo leadin/leadout + local nFirstCurve = EgtGetFirstInGroup( nTpathGrpId) + EgtTrimCurveStartAtLen( nFirstCurve, LayerParams.dOffsetLP) + AddLeadIn( nFirstCurve, LayerParams, nTpathGrpId) + local nLastCurve = EgtGetLastInGroup( nTpathGrpId) + EgtTrimCurveEndAtLen( nLastCurve, EgtCurveLength( nLastCurve) - LayerParams.dOffsetLP) + AddLeadOut( nLastCurve, LayerParams, nTpathGrpId) --passo al gruppo di contorni successivo nCrvGrpId = EgtGetNextName( nCrvGrpId, CONTOUR_GRP.."*") end diff --git a/LuaLibs/RunSlicing.lua b/LuaLibs/RunSlicing.lua index b69a280..b3308fc 100644 --- a/LuaLibs/RunSlicing.lua +++ b/LuaLibs/RunSlicing.lua @@ -73,6 +73,7 @@ local function LoadParams( sFile, nPartId) end SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LINK_PARAM, '0') + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LINK_DIST, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_FLOOR_NBR, '0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SPEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_FEED, '0.0') @@ -83,7 +84,25 @@ local function LoadParams( sFile, nPartId) SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_OUT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SUPPORT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_G0_FEED, '0.0') - SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_MATERIAL, '') + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_MATERIAL, '') + + local sLeadInType = EgtGetStringFromIni( DEFAULT_SECTION, KEY_LEAD_IN_TYPE, 'arc', sFile) + if sLeadInType == 'linear' then + EgtSetInfo( nParamsGrp, KEY_LEAD_IN_TYPE, LEAD_TYPE.LINEAR) + else + EgtSetInfo( nParamsGrp, KEY_LEAD_IN_TYPE, LEAD_TYPE.ARC) + end + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_IN_TANG_DIST, '0.0') + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_IN_ORTHO_DIST, '0.0') + local sLeadOutType = EgtGetStringFromIni( DEFAULT_SECTION, KEY_LEAD_OUT_TYPE, 'arc', sFile) + if sLeadOutType == 'linear' then + EgtSetInfo( nParamsGrp, KEY_LEAD_OUT_TYPE, LEAD_TYPE.LINEAR) + else + EgtSetInfo( nParamsGrp, KEY_LEAD_OUT_TYPE, LEAD_TYPE.ARC) + end + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_OUT_TANG_DIST, '0.0') + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_OUT_ORTHO_DIST, '0.0') + SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_OFFSET_LEAD_POINT, '0.0') end From 0a16002e3dba2a531b8dcb5fafd4cc604808848e Mon Sep 17 00:00:00 2001 From: SaraP Date: Tue, 12 Apr 2022 17:49:21 +0200 Subject: [PATCH 2/3] - Modifiche al file dei parametri. --- Machinings/Params.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Machinings/Params.ini b/Machinings/Params.ini index 905dee4..fb30ecc 100644 --- a/Machinings/Params.ini +++ b/Machinings/Params.ini @@ -8,6 +8,14 @@ StrandOrder=in Direction=CCW LinkType=sPath LinkParam=10.0 +LinkDist=0 +OffsetLeadPoint=10 +LeadIn=arc +LeadInTangDist=20 +LeadInOrthoDist=20 +LeadOut=linear +LeadOutTangDist=20 +LeadOutOrthoDist=20 FloorCount=2 Speed= Feed=4500 From 44db5395b64a630b052a214a9728860a8450a4bd Mon Sep 17 00:00:00 2001 From: DarioS Date: Tue, 12 Apr 2022 18:25:53 +0200 Subject: [PATCH 3/3] 3dPrinting : - riordino. --- Esempi/ExSetti.nge | Bin 966 -> 0 bytes Esempi/Params_setti.ini | 41 ---------------------------------------- README.md | 7 ------- README.pdf | Bin 29920 -> 0 bytes 4 files changed, 48 deletions(-) delete mode 100644 Esempi/ExSetti.nge delete mode 100644 Esempi/Params_setti.ini delete mode 100644 README.md delete mode 100644 README.pdf diff --git a/Esempi/ExSetti.nge b/Esempi/ExSetti.nge deleted file mode 100644 index 26107668186310dd0cb2fdb2b01ba9d13b9396c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 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