Merge branch 'feature/ThirdMachineNoBigParts'

This commit is contained in:
Emmanuele Sassi
2025-06-30 10:36:15 +02:00
3 changed files with 55 additions and 24 deletions
+2 -2
View File
@@ -161,7 +161,7 @@ Config.Kerf = {{MatId = 1, MatExtCode = 6120, Kerf = 8},
{MatId = 11, MatExtCode = 6423, Kerf = 20},
{MatId = 12, MatExtCode = 112268, Kerf = 20},
{MatId = 13, MatExtCode = 119169, Kerf = 20},
{MatId = 14, MatExtCode = 121214, Kerf = 20},
{MatId = 14, MatExtCode = 121214, Kerf = 10},
{MatId = 15, MatExtCode = 111625, Kerf = 20},
{MatId = 16, MatExtCode = 6127, Kerf = 20},
{MatId = 17, MatExtCode = 6044, Kerf = 20},
@@ -174,7 +174,7 @@ Config.Kerf = {{MatId = 1, MatExtCode = 6120, Kerf = 8},
{MatId = 26, MatExtCode = 127662, Kerf = 20},
{MatId = 27, MatExtCode = 127663, Kerf = 20},
{MatId = 28, MatExtCode = 127664, Kerf = 20},
{MatId = 29, MatExtCode = 127665, Kerf = 20},
{MatId = 29, MatExtCode = 127665, Kerf = 10},
}
Config.KitXModel = {{Model = '65w981', KitQty = 6},
+9 -2
View File
@@ -279,7 +279,7 @@ function Nesting(readBatch)
local MatSheetList = {}
--for Material = 1, #materials do
for Material = MatIndex, MatCount do
--for Material = 2, 2 do
-- for Material = 15, 15 do
--for Material = 4, 4 do
-- se è il materiale nullo salto al prossimo
if materials[Material].MatId ~= 0 and #materials[Material].PriorityList > 0 then
@@ -388,6 +388,7 @@ function Nesting(readBatch)
-- calcolo lavorazioni, stime, ecc
NestingLib.PostNestOp(materials[Material], ErrorList, false, readBatch.BatchId, 1)
NestingLib.PostNestOp(materials[Material], ErrorList, false, readBatch.BatchId, 2)
NestingLib.PostNestOp(materials[Material], ErrorList, false, readBatch.BatchId, 3)
if ManageError(ErrorList, readBatch) then return end
-- salvo il progetto di nesting
@@ -1089,6 +1090,12 @@ function ExtendedEstimate(readBatch)
end
--
-- verifico che non ci siano istanze gia' in corso
if not EgtCreateMutex('Global\\MainNKCLuaScript') then
EgtOutLog( 'Impossible starting script! Script already in execution!')
EgtOutBox( 'Script already running! Impossible running another instance at the same time!!', 'Error' , 'ERROR', 'OK')
EgtCloseExe()
end
-- ciclo principale
while true do
EgtNewFile()
@@ -1114,5 +1121,5 @@ while true do
end
end
end
end
EgtReleaseMutex()
+44 -20
View File
@@ -131,7 +131,7 @@ function NestingLib.FilterPaintedParts(OrderList, materials, ErrorList)
end
-- ordino per modelli kit
function compareOrderExtCode(a,b)
local function compareOrderExtCode(a,b)
return a.OrderCod < b.OrderCod
end
table.sort(OrderList, compareOrderExtCode)
@@ -602,7 +602,7 @@ local function AddPartListToNesting(PartList, ErrorList, Material)
end
-- se entro la tolleranza
if -OutlineDepth >= (Material.T_mm - Config.ThicknessTolerance) and -OutlineDepth <= (Material.T_mm + Config.ThicknessTolerance) then
EgtModifyCurveThickness(OutlineId, -Material.T_mm)
EgtModifyCurveThickness(OutlineId, - Material.T_mm)
end
-- se il percorso non è chiuso
if not EgtCurveIsClosed(OutlineId) then
@@ -897,6 +897,9 @@ local function SetMachineByIndex(MachId)
elseif MachId == 2 then
sCurrMachName = "Multiax-NE_Nest02"
EgtSetCurrMachine(sCurrMachName)
elseif MachId == 3 then
sCurrMachName = "Multiax-NE_Nest03"
EgtSetCurrMachine(sCurrMachName)
end
end
--
@@ -915,6 +918,7 @@ local function CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList
local Sheet = {PartList = {}}
local bFirstSheet = true
local nMach2SheetId = FirstMachIndex
local nMach3SheetId = FirstMachIndex
for i = 0, 999 do
local nType, nId, nFlag, dX, dY, dAngRot = EgtAutoNestGetOneResult( i)
if not nType then break end
@@ -932,6 +936,9 @@ local function CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList
if MachId == 2 then
nRawId = EgtGetInfo(nRawId, 'LastRaw2')
EgtSetCurrMachGroup(EgtGetParent(EgtGetParent(nRawId)))
elseif MachId == 3 then
nRawId = EgtGetInfo(nRawId, 'LastRaw3')
EgtSetCurrMachGroup(EgtGetParent(EgtGetParent(nRawId)))
end
-- imposto foglio
Sheet = Material.SheetList[#Material.SheetList]
@@ -947,6 +954,10 @@ local function CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList
--MachGroupName = "Sheet" .. nRaw1Id
MachGroupName = EgtGetMachGroupNewName("M2_Sheet")
MachGroupName = "M2Sheet" .. nMach2SheetId
elseif MachId == 3 then
nMach3SheetId = nMach3SheetId + 1
MachGroupName = EgtGetMachGroupNewName("M3_Sheet")
MachGroupName = "M3Sheet" .. nMach3SheetId
else
MachGroupName = "Sheet" .. #Material.SheetList + 1 --SheetCounter
end
@@ -956,10 +967,14 @@ local function CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList
-- end
local bOk = EgtAddMachGroup(MachGroupName, sCurrMachName)
-- se macchina 2 aggiungo info e riferimento a foglio della macchina 1
if MachId ==2 then
if MachId == 2 then
EgtSetInfo(EgtGetCurrMachGroup(), 'MachId', MachId)
local nOrigSheetId = EgtGetMachGroupId("Sheet" .. nMach2SheetId)
EgtSetInfo(EgtGetCurrMachGroup(), 'OrigSheetId', nOrigSheetId)
elseif MachId == 3 then
EgtSetInfo(EgtGetCurrMachGroup(), 'MachId', MachId)
local nOrigSheetId = EgtGetMachGroupId("Sheet" .. nMach3SheetId)
EgtSetInfo(EgtGetCurrMachGroup(), 'OrigSheetId', nOrigSheetId)
end
-- imposto tavola
local vtOffs = UtilityLib.SetupMachineTable(IsOffline)
@@ -983,7 +998,7 @@ local function CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList
--EgtOutLog( string.format( ' Part %d pos=%f,%f rot=%f flip=%d', nId, dX, dY, dAngRot, nFlag))
-- se ho un grezzo valido metto i pezzi
local PartId = nId
if MachId ~= 2 then
if MachId ~= 2 and MachId ~= 3 then
if nFlag ~= 0 then
EgtMirror( PartId, ORIG(), Y_AX(), GDB_RT.GLOB)
end
@@ -1056,7 +1071,7 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
dKerf = Config.Kerf[Index].Kerf
end
end
-- verifico se ultimo grezzo non nullo
local LastMachGroupId = nil
if LastRaw and LastRaw ~= GDB_ID.NULL then
@@ -1155,10 +1170,12 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
if not IsOffline and not IsEstimate and not IsValidation then
LastRaw2 = CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList, 2, LastRaw, FirstMachIndex)
EgtSetInfo(LastRaw, 'LastRaw2', LastRaw2)
LastRaw3 = CreateMachSheets(LastMachGroupId, SheetPartId, Material, PartList, 3, LastRaw, FirstMachIndex)
EgtSetInfo(LastRaw, 'LastRaw3', LastRaw3)
end
-- se impostata seconda macchina, reimposto la prima
local sMachName = EgtGetCurrMachineName()
if sMachName == 'Multiax-NE_Nest02' then
if sMachName == 'Multiax-NE_Nest02' or sMachName == 'Multiax-NE_Nest03' then
SetMachineByIndex(1)
end
else
@@ -1318,7 +1335,7 @@ function NestingLib.VerifyPath(Folder, BatchId, Material, MachId)
end
end
-- scelgo nome cartella macchina
if MachId == 0 or MachId == 1 or MachId == 2 then
if MachId == 0 or MachId == 1 or MachId == 2 or MachId == 3 then
local MachDirName = ''
if MachId == 0 then
MachDirName = '##REPLACEME##'
@@ -1326,6 +1343,8 @@ function NestingLib.VerifyPath(Folder, BatchId, Material, MachId)
MachDirName = 'NE01'
elseif MachId == 2 then
MachDirName = 'NE02'
elseif MachId == 3 then
MachDirName = 'NE03'
end
CurrPath = CurrPath .. "/".. MachDirName
if not UtilityLib.FolderExists(CurrPath) then
@@ -1348,13 +1367,13 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
local PartsPriority = {}
local CurrMachGroupId = EgtGetMachGroupId(Material.SheetList[Sheet].MachGroupName)
-- se seconda macchina, imposto gruppo di lavorazione copia
if MachId == 2 then
if MachId == 2 or MachId == 3 then
-- recupero id grezzo originale
local nRawPartId = EgtGetFirstRawPart()
-- cerco gruppo copia con id grezzo originale
local nMachGroupId = EgtGetFirstMachGroup()
while nMachGroupId do
if EgtGetInfo(nMachGroupId, 'OrigSheetId', 'i') == CurrMachGroupId and EgtGetInfo(nMachGroupId, 'MachId', 'i') == 2 then
if EgtGetInfo(nMachGroupId, 'OrigSheetId', 'i') == CurrMachGroupId and EgtGetInfo(nMachGroupId, 'MachId', 'i') == MachId then
EgtSetCurrMachGroup(nMachGroupId)
end
nMachGroupId = EgtGetNextMachGroup(nMachGroupId)
@@ -1388,7 +1407,7 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
else
PartsArea = CreateMachByOrderedType(Material, CurrRawPart, PartsBBox, nSkeletonLayerId, PartsPriority, ErrorList)
end
if MachId ~= 2 then
if MachId ~= 2 and MachId ~= 3 then
-- imposto area totale dei pezzi
Material.SheetList[Sheet].SurfaceWork = PartsArea
-- calcolo area esterna
@@ -1599,7 +1618,7 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
EgtApplyAllMachinings()
-- aggiorno lavorazione un'altra volta per migliorare posizioni eventuali tab
EgtApplyAllMachinings()
if MachId ~= 2 then
if MachId ~= 2 and MachId ~= 3 then
-- ricavo stime
local CurrEstimatePath = NestingLib.VerifyPath("Estimate", BatchId, Material)
if not UtilityLib.FolderExists(CurrEstimatePath) then
@@ -1632,7 +1651,7 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
else
CurrCNCPath = CurrCNCPath .. "/" .. Material.SheetList[Sheet].MachGroupName .. ".cnc"
end
if MachId == 2 then
if MachId == 2 or MachId == 3 then
Material.SheetList[Sheet].MachiningProgram = DBCurrCNCPath .. "/" .. Material.SheetList[Sheet].MachGroupName .. ".cnc"
else
Material.SheetList[Sheet].MachiningProgram = CurrCNCPath
@@ -1651,7 +1670,7 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
EgtCreateDirectory(CurrPrintPath)
end
CurrPrintPath = CurrPrintPath .. "/" .. Material.SheetList[Sheet].MachGroupName .. ".cnc"
if MachId == 2 then
if MachId == 2 or MachId == 3 then
Material.SheetList[Sheet].PrintProgram = DBCurrPrintPath .. "/" .. Material.SheetList[Sheet].MachGroupName .. ".cnc"
else
Material.SheetList[Sheet].PrintProgram = CurrPrintPath
@@ -1659,7 +1678,7 @@ function NestingLib.PostNestOp(Material, ErrorList, IsEstimate, BatchId, MachId)
bOk = EgtCopyFile(CurrPrintCNCPath, CurrPrintPath)
bOk = EgtEraseFile(CurrPrintCNCPath)
end
if MachId ~= 2 then
if MachId ~= 2 and MachId ~= 3 then
-- salvo svg del grezzo
local CurrSVGPath = NestingLib.VerifyPath("SVG", BatchId, Material)
if not UtilityLib.FolderExists(CurrSVGPath) then
@@ -1747,10 +1766,12 @@ end
end
-- scrittura delle linee modificate
local fh2 = io.open( LabelSVGPath, 'w')
for i = 1, #Lines do
fh2:write( Lines[i] .. '\n')
if fh2 then
for i = 1, #Lines do
fh2:write( Lines[i] .. '\n')
end
fh2:close()
end
fh2:close()
-- fine
end
@@ -1841,7 +1862,7 @@ function CreateMachByType(Material, CurrRawPart, PartsBBox, nSkeletonLayerId, Pa
EgtSetName(CutPartsArea, PARTCUTSUM)
else
if not nPartSurfId then
x = 2
local x = 2
end
EgtSurfFrAdd(CutPartsArea, nPartSurfId)
end
@@ -2433,6 +2454,7 @@ function CalcPartMachinings(Material, CurrPart, bInternalPart, LastMch, nMachTyp
EgtSetMachiningParam(MCH_MP.OFFSR, dRadial)
EgtSetMachiningParam(MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
-- applico la lavorazione
local bValidOutlineMach = false
if EgtApplyMachining() then
bValidOutlineMach = true
InitInTSP(NewMachId, InternalOutlineList, 0)
@@ -2479,6 +2501,7 @@ function CalcPartMachinings(Material, CurrPart, bInternalPart, LastMch, nMachTyp
EgtSetMachiningParam(MCH_MP.OFFSR, dRadial)
EgtSetMachiningParam(MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
-- applico la lavorazione
local bValidOutlineMach = false
if EgtApplyMachining() then
bValidOutlineMach = true
InitInTSP(NewMachId, InternalOutlineList, 0)
@@ -2526,6 +2549,7 @@ function CalcPartMachinings(Material, CurrPart, bInternalPart, LastMch, nMachTyp
EgtSetMachiningParam(MCH_MP.OFFSR, dRadial)
EgtSetMachiningParam(MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
-- applico la lavorazione
local bValidOutlineMach = false
if EgtApplyMachining() then
bValidOutlineMach = true
InitInTSP(NewMachId, InternalOutlineList, 0)
@@ -2679,8 +2703,8 @@ function NestingLib.ManageMachine(CurrIsOffline)
table.insert(OutlineMachining, 2, Config.NWOutlineMachTools)
table.insert(HoleMachining, 2, Config.NWHoleMachTools)
table.insert(RampMachining, 2, Config.NWRampMachTools[1])
table.insert(CountersinkMachining, 2, Config.NWCountersinkMachTools)
table.insert(OutsideChamferMachining, 2, Config.MXOutsideChamferMachTools)
table.insert(CountersinkMachining, 2, Config.NWCountersinkMachTools[1])
table.insert(OutsideChamferMachining, 2, Config.MXOutsideChamferMachTools[1])
table.insert(InsideChamferMachining, 2, Config.NWInsideChamferMachTools[1])
Pocketing = Config.NWPocketingTools
IsOffline = true