diff --git a/Esempi/ExSetti.nge b/Esempi/ExSetti.nge deleted file mode 100644 index 2610766..0000000 Binary files a/Esempi/ExSetti.nge and /dev/null differ diff --git a/Esempi/Params_setti.ini b/Esempi/Params_setti.ini deleted file mode 100644 index 941fdcc..0000000 --- a/Esempi/Params_setti.ini +++ /dev/null @@ -1,41 +0,0 @@ -[Default] -StrandH=10 -StrandW=5 -StrandCount=1 -Offset=3 -StartingPoint=-300,-200 -StrandOrder=in -Direction=CCW -LinkType=straight -LinkParam=5 -FloorCount=0 -Speed= -Feed= -ExtFeed= -IntFeed= -InfillFeed= -LeadInFeed= -LeadOutFeed= -SupportFeed= -G0Feed=10 -Material=material1 - -[LayerX] -StrandH=1 -StrandW=8 -StrandCount=3 -Offset=2 -StartingPoint=(x,y) -StrandOrder=in/out -Direction=CW/CCW -LinkType=straight/sPath -LinkParam=5 -FloorCount=2 -Speed= -ExtFeed= -IntFeed= -InfillFeed= -LeadInFeed= -LeadOutFeed= -SupportFeed= -G0Feed= diff --git a/LuaLibs/AddManData.lua b/LuaLibs/AddManData.lua index 320ca23..2ce0ac0 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 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 diff --git a/README.md b/README.md deleted file mode 100644 index 7cab802..0000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 3dPrinting - -Script LUA x progetto 3DPrinting (CMS Kreator) - -# Automazioni - -Come per i progetti EgtBeamWall, alla pubblicazione di ogni push nel ramo principale (MAIN), gli script LUA verranno compilati e resi disponibili in area R:\ e Artifacts per essere impiegati ad esempio negli installers. \ No newline at end of file diff --git a/README.pdf b/README.pdf deleted file mode 100644 index b6c692e..0000000 Binary files a/README.pdf and /dev/null differ