Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 07ea8c7ef3 |
Vendored
+5
-1
@@ -150,6 +150,10 @@
|
||||
"EgtExplodeCurveCompo",
|
||||
"EgtCurveCompo",
|
||||
"EgtAddCurveCompoCurve",
|
||||
"AreSameColor"
|
||||
"AreSameColor",
|
||||
"EgtPointCurveDistSide",
|
||||
"X_AX",
|
||||
"max",
|
||||
"EgtSurfFrRectangle"
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -151,7 +151,7 @@ Config.TabParams = {{MatId = 1, MatExtCode = 6120, Length = 10.0, Height =
|
||||
Config.Kerf = {{MatId = 1, MatExtCode = 6120, Kerf = 8},
|
||||
{MatId = 2, MatExtCode = 6110, Kerf = 20},
|
||||
{MatId = 3, MatExtCode = 6049, Kerf = 20},
|
||||
{MatId = 4, MatExtCode = 6118, Kerf = 20},
|
||||
{MatId = 4, MatExtCode = 6118, Kerf = 10},
|
||||
{MatId = 5, MatExtCode = 6479, Kerf = 20},
|
||||
{MatId = 6, MatExtCode = 6408, Kerf = 20},
|
||||
{MatId = 7, MatExtCode = 6406, Kerf = 20},
|
||||
|
||||
@@ -19,7 +19,7 @@ package.cpath = package.cpath .. ";/EgtDevTest/LUAREST/32/?.lua"
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
EgtEnableDebug( true)
|
||||
|
||||
-- Imposto direttorio libreria specializzata per Nesting
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
@@ -400,7 +400,9 @@ function Nesting(readBatch)
|
||||
EgtOutText("End sheets nest")
|
||||
|
||||
-- se debug
|
||||
if DebugCode then
|
||||
--if DebugCode then
|
||||
-- verifico se ci sono tutti i pezzi dopo il nesting perche' i pezzi grandi quasi come il foglio potrebbero non essere nestati
|
||||
if Config.bDoubleMach then
|
||||
-- verifico di aver messo tutti i part su un grezzo
|
||||
local PartList = {}
|
||||
-- raccolgo tutti i part dai materiali in una lista
|
||||
@@ -948,8 +950,48 @@ function Estimate(readBatch)
|
||||
end
|
||||
end
|
||||
|
||||
EgtOutText("End sheets estimate")
|
||||
-- verifico se ci sono tutti i pezzi dopo il nesting perche' i pezzi grandi quasi come il foglio potrebbero non essere nestati
|
||||
if Config.bDoubleMach then
|
||||
-- verifico di aver messo tutti i part su un grezzo
|
||||
local PartList = {}
|
||||
-- raccolgo tutti i part dai materiali in una lista
|
||||
for MaterialIndex = 1, #materials do
|
||||
if materials[MaterialIndex].SheetList then
|
||||
for SheetIndex = 1, #materials[MaterialIndex].SheetList do
|
||||
for PartIndex = 1, #materials[MaterialIndex].SheetList[SheetIndex].PartList do
|
||||
table.insert(PartList, tonumber(materials[MaterialIndex].SheetList[SheetIndex].PartList[PartIndex].PartId))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- passo i part del readbatch
|
||||
for OrderIndex = CurrOrderIndex, CurrOrderCount do
|
||||
for KitIndex = 1, #readBatch.OrderList[OrderIndex].KitList do
|
||||
for BPartIndex = 1, #readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList do
|
||||
local bFound = false
|
||||
for VPartIndex = #PartList, 1, -1 do
|
||||
if readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId == PartList[VPartIndex] then
|
||||
if not bFound then
|
||||
bFound = true
|
||||
table.remove(PartList, VPartIndex)
|
||||
else
|
||||
table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId, Description = "Part duplicated after nesting!"})
|
||||
end
|
||||
end
|
||||
end
|
||||
if not bFound then
|
||||
table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId, Description = "Part lost after nesting!"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- verifico se sono rimasti elementi nella tabella kit
|
||||
if #PartList > 0 then
|
||||
table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. PartList[1], Description = #PartList .. " part more than in batch request after nesting!"})
|
||||
end
|
||||
end
|
||||
|
||||
EgtOutText("End sheets estimate")
|
||||
|
||||
-- creo batch di risposta
|
||||
local answ = {}
|
||||
@@ -1069,6 +1111,47 @@ function ExtendedEstimate(readBatch)
|
||||
table.insert(answ.EstOrderList, readBatch.OrderList[Order])
|
||||
end
|
||||
|
||||
-- -- verifico se ci sono tutti i pezzi dopo il nesting perche' i pezzi grandi quasi come il foglio potrebbero non essere nestati
|
||||
-- if true then
|
||||
-- -- verifico di aver messo tutti i part su un grezzo
|
||||
-- local PartList = {}
|
||||
-- -- raccolgo tutti i part dai materiali in una lista
|
||||
-- for MaterialIndex = 1, #materials do
|
||||
-- if materials[MaterialIndex].SheetList then
|
||||
-- for SheetIndex = 1, #materials[MaterialIndex].SheetList do
|
||||
-- for PartIndex = 1, #materials[MaterialIndex].SheetList[SheetIndex].PartList do
|
||||
-- table.insert(PartList, tonumber(materials[MaterialIndex].SheetList[SheetIndex].PartList[PartIndex].PartId))
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- -- passo i part del readbatch
|
||||
-- for OrderIndex = 1, #readBatch.OrderList do
|
||||
-- for KitIndex = 1, #readBatch.OrderList[OrderIndex].KitList do
|
||||
-- for BPartIndex = 1, #readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList do
|
||||
-- local bFound = false
|
||||
-- for VPartIndex = #PartList, 1, -1 do
|
||||
-- if readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId == PartList[VPartIndex] then
|
||||
-- if not bFound then
|
||||
-- bFound = true
|
||||
-- table.remove(PartList, VPartIndex)
|
||||
-- else
|
||||
-- table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId, Description = "Part duplicated after nesting!"})
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- if not bFound then
|
||||
-- table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. readBatch.OrderList[OrderIndex].KitList[KitIndex].PartList[BPartIndex].PartId, Description = "Part lost after nesting!"})
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- -- verifico se sono rimasti elementi nella tabella kit
|
||||
-- if #PartList > 0 then
|
||||
-- table.insert(ErrorList, {ErrType = "E.12", Uid = "PartId = " .. PartList[1], Description = #PartList .. " part more than in batch request after nesting!"})
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- correggo e riporto tempo totale di lavorazione
|
||||
answ.EstimatedWorktime = TotTime
|
||||
|
||||
@@ -1090,12 +1173,6 @@ 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()
|
||||
@@ -1121,5 +1198,5 @@ while true do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
EgtReleaseMutex()
|
||||
|
||||
+86
-7
@@ -536,9 +536,13 @@ local SKELETONTRACK = "SKELETONTRACK"
|
||||
local SKELETONPART = "SKELETON"
|
||||
local CUTOPT = "CUTOPT"
|
||||
-- funzione legge il dxf ed aggiunge il pezzo al nesting
|
||||
local function AddPartListToNesting(PartList, ErrorList, Material)
|
||||
local function AddPartListToNesting(PartList, ErrorList, Material, IsEstimate)
|
||||
local BigPartsQty = 0
|
||||
local LastId = GDB_ID.ROOT
|
||||
for Part = 1, #PartList do
|
||||
--if PartList[Part].PartExtCode == '14162182' or PartList[Part].PartExtCode == '14162184' then
|
||||
-- x = 5
|
||||
--end
|
||||
-- tipo di rotazione del pezzo consentita : 0 -> rotazione libera, 1 -> rotazione solo di 180°, 2 -> nessuna rotazione
|
||||
local RotationType = 0
|
||||
-- verifico se gia' presente per importazione precedente
|
||||
@@ -577,6 +581,7 @@ local function AddPartListToNesting(PartList, ErrorList, Material)
|
||||
local LayerId = EgtGetFirstLayer(PartId1)
|
||||
local nMaxId = GDB_ID.NULL
|
||||
local bFound = false
|
||||
local bBigPart = false
|
||||
while LayerId do
|
||||
local layerName = EgtGetName(LayerId)
|
||||
local bOutline = false
|
||||
@@ -710,6 +715,50 @@ local function AddPartListToNesting(PartList, ErrorList, Material)
|
||||
RotationType = 1
|
||||
end
|
||||
EgtSetName(nMaxId, OUTLINE)
|
||||
-- verifico se e' grande quasi come il foglio
|
||||
local dTempX = OutlineBox:getDimX()
|
||||
local dTempY = OutlineBox:getDimY()
|
||||
local bRotated = false
|
||||
if dTempY > dTempX then
|
||||
bRotated = true
|
||||
dTempX = OutlineBox:getDimY()
|
||||
dTempY = OutlineBox:getDimX()
|
||||
end
|
||||
-- ricavo Kerf del materiale
|
||||
local dKerf = 9
|
||||
for Index = 1, #Config.Kerf do
|
||||
if Config.Kerf[Index].MatId == Material.MatId then
|
||||
dKerf = Config.Kerf[Index].Kerf
|
||||
end
|
||||
end
|
||||
if dTempX > Material.L_mm - max( 51, dKerf) - dKerf and dTempY > Material.W_mm - max( 26, dKerf) - dKerf then
|
||||
-- verifico se occupa l'angolo
|
||||
local nInside1 = 0
|
||||
local nInside2 = 0
|
||||
if not bRotated then
|
||||
local LabelRegId = EgtSurfFrRectangle( EgtGetParent( nMaxId), OutlineBox:getMin() + ( OutlineBox:getDimY() - 26) * Y_AX() - 10 * X_AX(), OutlineBox:getMin() + ( OutlineBox:getDimY() + 10) * Y_AX() + 51 * X_AX(), GDB_RT.GLOB)
|
||||
nInside1 = EgtCurveWithRegionClassify( nMaxId, LabelRegId)
|
||||
EgtErase( LabelRegId)
|
||||
LabelRegId = EgtSurfFrRectangle( EgtGetParent( nMaxId), OutlineBox:getMax() - ( OutlineBox:getDimY() - 10) * Y_AX() - 51 * X_AX(), OutlineBox:getMax() + 10 * X_AX() - ( OutlineBox:getDimY() - 26) * Y_AX(), GDB_RT.GLOB)
|
||||
nInside2 = EgtCurveWithRegionClassify( nMaxId, LabelRegId)
|
||||
EgtErase( LabelRegId)
|
||||
--_, _, nInside1 = EgtPointCurveDistSide( OutlineBox:getMin() + ( OutlineBox:getDimY() - 26) * Y_AX() + 51 * X_AX(), nMaxId, Z_AX())
|
||||
--_, _, nInside2 = EgtPointCurveDistSide( OutlineBox:getMax() - ( OutlineBox:getDimY() - 26) * Y_AX() - 51 * X_AX(), nMaxId, Z_AX())
|
||||
else
|
||||
local LabelRegId = EgtSurfFrRectangle( EgtGetParent( nMaxId), OutlineBox:getMin() - 10 * X_AX() - 10 * Y_AX(), OutlineBox:getMin() + 51 * Y_AX() + 26 * X_AX(), GDB_RT.GLOB)
|
||||
nInside1 = EgtCurveWithRegionClassify( nMaxId, LabelRegId)
|
||||
EgtErase( LabelRegId)
|
||||
LabelRegId = EgtSurfFrRectangle( EgtGetParent( nMaxId), OutlineBox:getMax() - 51 * Y_AX() - 26 * X_AX(), OutlineBox:getMax() + 10 * X_AX() + 10 * Y_AX(), GDB_RT.GLOB)
|
||||
nInside2 = EgtCurveWithRegionClassify( nMaxId, LabelRegId)
|
||||
EgtErase( LabelRegId)
|
||||
--_, _, nInside1 = EgtPointCurveDistSide( OutlineBox:getMin() + 51 * Y_AX() + 26 * X_AX(), nMaxId, Z_AX())
|
||||
--_, _, nInside2 = EgtPointCurveDistSide( OutlineBox:getMax() - 51 * Y_AX() - 26 * X_AX(), nMaxId, Z_AX())
|
||||
end
|
||||
if nInside1 ~= GDB_CRC.OUT and nInside2 ~= GDB_CRC.OUT then
|
||||
bBigPart = true
|
||||
BigPartsQty = BigPartsQty + 1
|
||||
end
|
||||
end
|
||||
-- copio outline in un layer dedicato
|
||||
local OutlineLayer = EgtGroup(PartId1)
|
||||
EgtSetName(OutlineLayer, OUTLINE)
|
||||
@@ -862,7 +911,9 @@ local function AddPartListToNesting(PartList, ErrorList, Material)
|
||||
end
|
||||
-- preparo pezzo per il nesting
|
||||
local Priority = 0
|
||||
if PartList[Part].Priority then
|
||||
if bBigPart and not IsEstimate then
|
||||
Priority = 1
|
||||
elseif PartList[Part].Priority then
|
||||
Priority = PartList[Part].Priority
|
||||
end
|
||||
local bCanRotate, dRotStep = true, 0
|
||||
@@ -886,6 +937,8 @@ local function AddPartListToNesting(PartList, ErrorList, Material)
|
||||
end
|
||||
EgtAutoNestAddToolOutlineToPart( PartId1, nSkeletonRegionId)
|
||||
end
|
||||
--EgtSaveFile("c:\\Temp\\TestSauderBig.nge")
|
||||
return BigPartsQty
|
||||
end
|
||||
--
|
||||
|
||||
@@ -1050,7 +1103,8 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
|
||||
EgtResetCurrMachGroup()
|
||||
|
||||
-- aggiungo tutti i pezzi al nesting
|
||||
AddPartListToNesting(PartList, ErrorList, Material)
|
||||
local BigPartsQty = 0
|
||||
BigPartsQty = AddPartListToNesting(PartList, ErrorList, Material, IsEstimate) or 0
|
||||
|
||||
-- ripristino MachGroup
|
||||
EgtSetCurrMachGroup(nOldMachGroup)
|
||||
@@ -1071,7 +1125,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
|
||||
@@ -1101,6 +1155,30 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
|
||||
-- la aggiungo come difetto
|
||||
EgtAutoNestAddDefectToSheet(SheetPartId, nSheetLabel) -- EgtAutoNestAddDefectToSheet( SheetId, DefectId)
|
||||
else
|
||||
-- se ci sono pezzi grandi
|
||||
if BigPartsQty > 0 then
|
||||
-- creo un ugual numero di fogli senza etichetta
|
||||
local BigSheetPartId = EgtGroup(GDB_ID.ROOT)
|
||||
EgtSetName(BigSheetPartId, "Sheet")
|
||||
local BigSheetLayerId = EgtGroup(BigSheetPartId)
|
||||
EgtSetName(BigSheetLayerId, OUTLINE)
|
||||
local BigSheetOutlineId = EgtRectangle2P(BigSheetLayerId, Point3d(0,0,0), Point3d(Material.L_mm, Material.W_mm, 0), GDB_RT.GLOB)
|
||||
EgtModifyCurveThickness(BigSheetOutlineId, -Material.T_mm)
|
||||
EgtSetName(BigSheetOutlineId, OUTLINE)
|
||||
EgtAutoNestAddSheet( BigSheetPartId, BigSheetOutlineId, dKerf, 0, BigPartsQty) -- EgtAutoNestAddSheet( SheetId, OutlineId, dKerf, nPriority, nCount)
|
||||
end
|
||||
-- se ci sono pezzi grandi
|
||||
-- if BigPartsQty > 0 then
|
||||
-- -- creo un ugual numero di fogli senza etichetta
|
||||
-- local BigSheetPartId = EgtGroup(GDB_ID.ROOT)
|
||||
-- EgtSetName(BigSheetPartId, "Sheet")
|
||||
-- local BigSheetLayerId = EgtGroup(BigSheetPartId)
|
||||
-- EgtSetName(BigSheetLayerId, OUTLINE)
|
||||
-- local BigSheetOutlineId = EgtRectangle2P(BigSheetLayerId, Point3d(0,0,0), Point3d(Material.L_mm, Material.W_mm, 0), GDB_RT.GLOB)
|
||||
-- EgtModifyCurveThickness(BigSheetOutlineId, -Material.T_mm)
|
||||
-- EgtSetName(BigSheetOutlineId, OUTLINE)
|
||||
-- EgtAutoNestAddSheet( SheetPartId, SheetOutlineId, dKerf, 0, BigPartsQty) -- EgtAutoNestAddSheet( SheetId, OutlineId, dKerf, nPriority, nCount)
|
||||
-- end
|
||||
-- creo etichetta dello sheet
|
||||
local dLabelW = 50
|
||||
local dLabelH = 25
|
||||
@@ -1111,7 +1189,7 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
|
||||
local nSheetLabel = EgtRectangle2P(SheetLayerId, Point3d(0, dYPos - dLabelH,0), Point3d(dLabelW, dYPos, 0), GDB_RT.GLOB)
|
||||
EgtSetName(nSheetLabel, SHEETLABEL)
|
||||
-- creo foglio per nesting
|
||||
EgtAutoNestAddSheet( SheetPartId, SheetOutlineId, dKerf, 0, 50) -- EgtAutoNestAddSheet( SheetId, OutlineId, dKerf, nPriority, nCount)
|
||||
EgtAutoNestAddSheet( SheetPartId, SheetOutlineId, dKerf, 0, 1000) -- EgtAutoNestAddSheet( SheetId, OutlineId, dKerf, nPriority, nCount)
|
||||
-- aggiungo etichetta come difetto
|
||||
EgtAutoNestAddDefectToSheet(SheetPartId, nSheetLabel) -- EgtAutoNestAddDefectToSheet( SheetId, DefectId)
|
||||
end
|
||||
@@ -1181,6 +1259,7 @@ function NestingLib.NestPartInRawPart(LastRaw, PartList, Material, ErrorList, Is
|
||||
else
|
||||
table.insert(ErrorList, {ErrType = "E.10", Uid = "Generic", Description = "Error in nesting function!"})
|
||||
end
|
||||
--EgtSaveFile("c://Temp//TestSauderBigParts.nge")
|
||||
-- ritorno l'ultimo grezzo utilizzato
|
||||
return LastRaw
|
||||
end
|
||||
@@ -2703,8 +2782,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[1])
|
||||
table.insert(OutsideChamferMachining, 2, Config.MXOutsideChamferMachTools[1])
|
||||
table.insert(CountersinkMachining, 2, Config.NWCountersinkMachTools)
|
||||
table.insert(OutsideChamferMachining, 2, Config.MXOutsideChamferMachTools)
|
||||
table.insert(InsideChamferMachining, 2, Config.NWInsideChamferMachTools[1])
|
||||
Pocketing = Config.NWPocketingTools
|
||||
IsOffline = true
|
||||
|
||||
Reference in New Issue
Block a user