Return to site

Cutlist Optimizer For Mac

broken image
Hey! I've finally built a replacement for this tool that I think is up to par. It includes some of your requests and should work well on mobile devices. Try out Cutlist Workbench and let me know what you think.
Enter to Search. My Profile Logout. CNET News Best Apps. CutList Optimizer. CutList Optimizer is an application targeted for panel cutting optimization.
About this cut length calculator This 1d cutting optimizer is designed to solve problems of cutting linear or length stock material as timber, beams, bars, paper rolls or pipes into pieces of specified lengths with minimal material waste, named as cutting stock problem.
Alternatives to CutList Optimizer for Software as a Service (SaaS), Windows, Web, Mac, Linux and more. Filter by license to discover only free or Open Source alternatives. This list contains a total of apps similar to CutList Optimizer. List updated: 6/2/2019 6:55:00 PM.
Our free online cutlist optimizer can be used to work out the best way to cut your lengths of material to get the most efficient cuts from the material and save wastage. The calculator can be used for any linear material whether it be steel, metal, wood (timber), plastics, etc. How to use the Kurraglen Industries cutting optimiser.
This calculator attempts to generate the most efficient cut list for a given set of pieces. Note my use of the word 'attempts.' There are several ways to solve this problem and several 'correct' answers. This tries one way and gives you a correct answer. It's based on linear board-feet and so works only in the one dimension. I may expand it to handle plywood at some point in the future but don't count on it. Fractional Inch Reference 1/32 0.03125 1/16 0.0625 3/32 0.09375 1/8 0.125 5/32 0.15625 3/16 0.1875 7/32 0.21875 1/4 0.25 9/32 0.28125 5/16 0.3125 11/32 0.34375 3/8 0.375 13/32 0.40625 7/16 0.4375 15/32 0.46875 1/2 0.5 17/32 0.53125 9/16 0.5625 19/32 0.59375 5/8 0.625 21/32 0.65625 11/16 0.6875 23/32 0.71875 3/4 0.75 25/32 0.78125 13/16 0.8125 27/32 0.84375 7/8 0.875 29/32 0.90625 15/16 0.9375 31/32 0.96875
Step 1: Available stock - Select the available lengths: Add a custom stock: inches (decimal numbers only)
Description: Cutlist Optimizer Instructions Cutlist Optimizer For Mac (optional) will store the stock lengths to a cookie so your browser will remember them in the future. Saved stock will automatically be loaded when you visit this site. This is experimental.
Step 2: Method - Select which method you prefer:
Step 3: Cut Width - Enter how much of the board is lost to each cut (width of the blade):
'
Step 4: Piece List - Enter a list of board lengths you need to obtain: Component List ID Quantity Length
(in.) '
Step 5: Output options: Cutlist Optimizer Software Output to new window good for printing but you might have to twiddle your print settings to make it look good Notes:
Step 6: Ready, steady,
Step 7: Once you're happy with your results, you might want to save or print them off. Set the 'Output to new window' option above and the results will go into a popup window. Free Cutlist Software var stock = '48':inches:48, description:'4', '72':inches:72, description:'6', '92_625':inches:92.625,description:'standard 8' stud', '96':inches:96, description:'8', '104_625':inches:104.625,description:'standard 9' stud', '116_625':inches:116.625,description:'standard 10' stud', '120':inches:120, description:'10', '144':inches:144, description:'12', '168':inches:168, description:'14', '192':inches:192, description:'16', '216':inches:216, description:'18', '240':inches:240, description:'20'; function GetStockByLength(l) for(k in stock) if(stock[k].inches l) return stock[k]; return undefined; function GetStockInputHTML(i) if(stock[i] ! undefined) return ' ' + stock[i].description + ' (' + stock[i].inches + ')'; else return '; function UpdateAvailableStock() d = document.getElementById('AvailabileStock'); d.innerHTML = '; for(key in stock) d.innerHTML += GetStockInputHTML(key) + '
'; function AddCustomStock(description,inches) if(description undefined && inches undefined) // Get them from the form fields instead of programatically description = document.getElementById('CustomStockDescription').value; inches = document.getElementById('CustomStockLength').value; if(description.length 0) alert('You must specify a description of the stock to add.'); return false; else if(inches.length 0) alert('You must specify a decimal length of the stock to add.'); return false; else if(stock[inches] ! undefined) alert('A stock of this length already exists.'); return false; else document.getElementById('CustomStockDescription').value = '; document.getElementById('CustomStockLength').value = '; key = inches.replace('.', '_').replace(' ', '_'); stock[key] = description:description, inches:inches, default:true ; UpdateAvailableStock(); function GetSelectedStock() var stockLengths = Array(); for(i in stock) if(document.getElementById('AvailStock' + i).checked) stockLengths[stockLengths.length] = stock[i].inches; return stockLengths; function ResetPieces() var tbl = document.getElementById('PieceTable').tBodies[0]; for(i = tbl.rows.length - 1; i = 0; i--) tbl.deleteRow(i); function print_r(o) m = 'n'; for(k in o) m += ' ' + k + ':' + o[k] + 'n'; m += ''; return m; function RemovePiece(o) o.srcElement.parentNode.parentNode.remove(); var tbl = document.getElementById('PieceTable').tBodies[0]; for(i = 0; i No pieces were set to be produced (step 4) '; else outHTML += ' Generating the following components:
'; // Build an array of each necessary board length // Sort the array from smallest to largest for(i = 1; i 0) outHTML += ' [' + i + '] ' + pLen + ' (x' + pQty + ')
'; for(startIdx = 0; startIdx piecesNeeded.length && piecesNeeded[startIdx][0] = pLen; startIdx++); for(j = 0; j pQty; j++) piecesNeeded.splice(startIdx, 0, Array(pLen, pId)); // Build an array of available stock lengths, sorted in ascending order var stockLengths = GetSelectedStock(); if(stockLengths.length 0) outHTML += '
Cannot continue: no stock was marked as available (step 1).
'; else outHTML += '
The following stock board lengths are available:
'; for(i = 0; i stockLengths.length; i++) outHTML += ' ' + stockLengths[i] + '
'; // Ensure that the longest board is shorter than the longest available stock if(piecesNeeded[piecesNeeded.length - 1][0] stockLengths[stockLengths.length - 1]) outHTML += '
Cannot continue: the longest component required is longer than the longest stock available.
'; else var cutWidth = parseFloat(document.getElementById('CutWidth').value); var boards = Array(); // board[?] = Array(boardLength, usedLength, Array(componentIDs ...)) // Main loop while(piecesNeeded.length 0) // Create a new board of the largest stock size var thisBoard = Array( stockLengths[stockLengths.length - 1], 0, Array() ); // Iterate through the needed components list for(j = piecesNeeded.length - 1; j = 0; j--) // Add component if it will fit, subtracting it from the list if(thisBoard[0] - thisBoard[1] - piecesNeeded[j][0] = 0) thisBoard[1] += piecesNeeded[j][0]; thisBoard[2].splice(-1, 0, piecesNeeded[j]); piecesNeeded.splice(j, 1); // Adjust for cutting losses if(thisBoard[1] + cutWidth = thisBoard[0]) thisBoard[1] = thisBoard[0]; else thisBoard[1] += cutWidth; // Attempt to reduce the length of the board to the shortest stock length that will accommodate for(j = stockLengths.length - 1; j = 0; j--) if(stockLengths[j] = thisBoard[1]) thisBoard[0] = stockLengths[j]; if(thisBoard[2].length 0) alert('Got stuck somehow :-/'); break; boards[boards.length] = thisBoard; // Done when there are no needed components left resultHTML = '
Results: '; boardSummaryList = ; for(i = 0; i '; resultHTML += boards[i][0] + ' board = '; for(j = 0; j ' + boards[i][2][j][1] + ' '; resultHTML += ((boards[i][0] boards[i][1] ? boards[i][2].length - 1 : boards[i][2].length) * cutWidth) + ' cut losses + '; excess = (boards[i][0] - boards[i][1]); resultHTML += excess + ' excess
'; visual += ' '; resultHTML += visual; resultHTML += ' '; outHTML += resultHTML; outHTML += '
Board Count:
'; for(bl in boardSummaryList) outHTML += ' ' + boardSummaryList[bl] + 'x ' + bl + ' (' + GetStockByLength(bl).description + ')
'; var outPane = document.getElementById('CutList'); outPane.innerHTML = outHTML; if(document.getElementById('OutputInNewWindow').checked) w = window.open(); w.document.write(' Cutlist ' +' ' +' + outHTML +' Generated at http://jonathan.overholt.org/projects/cutlist ' +' Notes ' + listNotes +'
broken image