Skip to content

Instantly share code, notes, and snippets.

@100ideas
Last active August 29, 2015 13:58
Show Gist options
  • Save 100ideas/10206598 to your computer and use it in GitHub Desktop.
Save 100ideas/10206598 to your computer and use it in GitHub Desktop.
lasersaur.com smart BOM via flat csv and inline javascript parser
<!DOCTYPE html>
<html>
<!-- source: http://labs.nortd.com/lasersaur/bom-1403-suppliers-usd -->
<head>
<title>Lasersaur</title>
<link rel="stylesheet" type="text/css" media="screen" href="/lasersaur/css/style.css">
<script type="text/javascript" language="javascript" src="/scripts/jquery.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19608069-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<style>
table.data {width:870px;}
table.data tr td {padding-left:6px; padding-right:6px;}
table.data tr td.odd {padding-left:6px; padding-right:6px;}
table.data tr td.even {background-color:#f3f3f3;}
table.data tr th {border-bottom:solid 1px #000000;}
table.data tr td.last {padding-top:10px; border-top:solid 1px #000000;}
div.toggle {display:none; position:absolute; max-width:400px; left:0px; top:20px; background-color:#ffffff; border: 1px solid #000000; padding:10px;}
div.csv {margin-top:10px; margin-bottom:60px;}
.frame-gantry {color:#83bbff}
.frame-table {color:#443858}
.frame-bottom {color:#546883}
.frame-top {color:#546883}
.frame-door {color:#828ca3}
.door-panels {color:#5c484c}
.frame-panels {color:#431424}
.optics-laser {color:#b9d551}
.electronics {color:#ccb17f}
.air-assist {color:#a3b693}
.extraction {color:#a8968b}
.x-cart {color:#9e4301}
.x-drive {color:#bc652e}
.y-cart {color:#650b01}
.y-drive {color:#b72e22}
div.frame-gantry {width:10px; height:10px; background-color:#83bbff; color:#ffffff;}
div.frame-table {width:10px; height:10px; background-color:#443858; color:#ffffff;}
div.frame-bottom {width:10px; height:10px; background-color:#546883; color:#ffffff;}
div.frame-top {width:10px; height:10px; background-color:#546883; color:#ffffff;}
div.frame-door {width:10px; height:10px; background-color:#828ca3; color:#ffffff;}
div.door-panels {width:10px; height:10px; background-color:#5c484c; color:#ffffff;}
div.frame-panels {width:10px; height:10px; background-color:#431424; color:#ffffff;}
div.optics-laser {width:10px; height:10px; background-color:#b9d551; color:#ffffff;}
div.electronics {width:10px; height:10px; background-color:#ccb17f; color:#ffffff;}
div.air-assist {width:10px; height:10px; background-color:#a3b693; color:#ffffff;}
div.extraction {width:10px; height:10px; background-color:#a8968b; color:#ffffff;}
div.x-cart {width:10px; height:10px; background-color:#9e4301; color:#ffffff;}
div.x-drive {width:10px; height:10px; background-color:#bc652e; color:#ffffff;}
div.y-cart {width:10px; height:10px; background-color:#650b01; color:#ffffff;}
div.y-drive {width:10px; height:10px; background-color:#b72e22; color:#ffffff;}
span.frame-gantry {width:10px; height:10px; background-color:#83bbff; color:#ffffff;}
span.frame-table {width:10px; height:10px; background-color:#443858; color:#ffffff;}
span.frame-bottom {width:10px; height:10px; background-color:#546883; color:#ffffff;}
span.frame-top {width:10px; height:10px; background-color:#546883; color:#ffffff;}
span.frame-door {width:10px; height:10px; background-color:#828ca3; color:#ffffff;}
span.door-panels {width:10px; height:10px; background-color:#5c484c; color:#ffffff;}
span.frame-panels {width:10px; height:10px; background-color:#431424; color:#ffffff;}
span.optics-laser {width:10px; height:10px; background-color:#b9d551; color:#ffffff;}
span.electronics {width:10px; height:10px; background-color:#ccb17f; color:#ffffff;}
span.air-assist {width:10px; height:10px; background-color:#a3b693; color:#ffffff;}
span.extraction {width:10px; height:10px; background-color:#a8968b; color:#ffffff;}
span.x-cart {width:10px; height:10px; background-color:#9e4301; color:#ffffff;}
span.x-drive {width:10px; height:10px; background-color:#bc652e; color:#ffffff;}
span.y-cart {width:10px; height:10px; background-color:#650b01; color:#ffffff;}
span.y-drive {width:10px; height:10px; background-color:#b72e22; color:#ffffff;}
</style>
</head>
<body>
<div class="container">
<table class="nav"><tr>
<td><ul>
<li><a class="menu" href="/lasersaur/">About Lasersaur</a></li>
<li><a class="menu" href="/lasersaur/#feed">Feed this project</a></li>
<li><a class="menu" href="http://www.flickr.com/photos/stfnix/sets/72157624491114826/">Development Photos</a></li>
<li><a class="menu menuhighlight" href="/lasersaur/manual/">Lasersaur Manual</a></li>
<li><a class="menu" href="/lasersaur/store">Store</a></li>
</ul></td>
<td style="width:auto"></td></tr></table>
<div class="content" style="width:auto;">
<div id="debugcontent"></div>
<div id="gencontent"></div>
<div id="fillincontent">
<strong style="font-size:20px">
If you see this text you are not getting the right content. Reload and if that does not help
make sure you are using a modern browser with Javascript enabled.
</strong>
<div id="supplier">
<div id="supplier-main">
</div>
<div id="NortdLabs">
For convenience NortdLabs sells many parts and assemblies needed to build a Lasersaur.
In addition we also publish our suppliers and you may order directly from them and build
from scratch. Some parts are custom and can also be made with the help of our published CAD and
job files. As a result your lasersaur will stay very maintainable in the future. Hint:
we also offer <a href="http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=51">fully assembled DriveBoards</a>. Also, alternative suppliers for consumables (mirrors, lenses, etc) are listed on the <a href="/lasersaur/manual/operation">Operation Page</a>.
</div>
<div id="Misumi">
<a href="http://www.misumi-ec.com/">Misumi</a> is an international supplier of
automation components. Hint: You can copy&paste the CSVs from the bottom of this
list directly into the Misumi order page. Hint2: In some countries they require a company account.
</div>
<div id="ColeTech">
<a href="http://www.cncoletech.com/">ColeTech</a> is an affordable and reliable supplier of laser tubes and
accessories from China. Apart from requesting a quote
by email they also have an <a href="http://stores.ebay.com/CNCOLETECH">ebay store</a>. Most of the time
they also offer laser + power supply packages. Make sure you specify the correct AC voltage (220V or 110V) when ordering. CHILLER OPTION: If you plan on operating the Lasersaur above room temperature 74F (23C) we recommend getting a more performant water chiller. ColeTech will happily quote you for the "CW-5000 chiller". NOTE: Laser tubes are very fragile and do arrive broken occasionally.
Before signing the package check for noises of broken parts, reject, and let Coletech know if this is the case.
</div>
</div>
<div id="subsystem">
<div id="subsystem-main">
</div>
<div id="frame-gantry">
<img src="http://farm8.staticflickr.com/7449/12510951925_da5a7e0114_z.jpg">
</div>
<div id="frame-bottom">
<img src="http://farm6.staticflickr.com/5509/12510953105_7974e69685_z.jpg">
</div>
<div id="frame-top">
<img src="http://farm4.staticflickr.com/3745/12510953845_80b0ac22e1_z.jpg">
</div>
<div id="frame-door">
<img src="http://farm6.staticflickr.com/5479/12511426104_63aa80f50d_z.jpg">
</div>
<div id="y-cart">
<img src="http://farm8.staticflickr.com/7427/12510955605_f4df208b33_z.jpg">
</div>
<div id="y-drive">
<img src="http://farm6.staticflickr.com/5484/12511083733_c25fbcdc19_z.jpg">
</div>
<div id="x-cart">
<img src="http://farm4.staticflickr.com/3712/12511429104_1e1414dd50_z.jpg">
</div>
<div id="x-drive">
<img src="http://farm4.staticflickr.com/3795/12511430114_4063fded9e_z.jpg">
</div>
<div id="electronics">
<img src="http://farm8.staticflickr.com/7349/12511086283_5cfaf01215_z.jpg">
</div>
<div id="air-assist">
<img src="http://farm3.staticflickr.com/2811/12510960545_2b3accd566_z.jpg">
</div>
<div id="optics-laser">
<img src="http://farm3.staticflickr.com/2892/12511088853_ea66e0e7b9_z.jpg">
</div>
<div id="frame-table">
<img src="http://farm8.staticflickr.com/7436/12511435184_905934ac6a_z.jpg">
</div>
<div id="door-panels">
<img src="http://farm6.staticflickr.com/5491/12511091823_2e66595dda_z.jpg">
</div>
<div id="frame-panels">
<img src="http://farm4.staticflickr.com/3707/12511092863_f3aee03a5c_z.jpg">
</div>
<div id="extra">
</div>
</div>
</div>
</div>
<div class="push"></div>
</div>
<div class="footer">
<table>
<tr>
<td style="width:50px">
<a class="menu" href="/"><img src="/images/nortd-cupid-hearts-darkgray.png" width="40"></a>
</td>
<td>
<div><a class="menu" href="/">Nortd Labs</a> is a research and development studio.</div>
<div>We generate work in the area of art, architecture, and system design.</div>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
// enum for table column names
tITEM = 0;
tSUPPLIER = 1;
tORDERNUM = 2;
tLOCATIONS = 3;
tSUBSYSTEMUSE = 4;
$.get('/lasersaur/static/bom-lasersaur-v14.03.csv', function(data) {
var by = document.location.pathname.split('/').slice(-1)[0].slice(9,-4);
var location = document.location.pathname.slice(-3);
if (location == 'eur') {
location = 'EUR';
} else if (location == 'usd') {
location = 'USD';
} else {
return;
}
var suppliers = [];
if (location == 'EUR') {
suppliers = ['NortdLabs','Misumi','ColeTech'];
// suppliers = ['NortdLabs','Misumi','ThorLabs','Mouser','ColeTech','GeckoDrive','Nanotec', 'ebay'];
} else if (location == 'USD') {
suppliers = ['NortdLabs','Misumi','ColeTech'];
// suppliers = ['NortdLabs','Misumi','ThorLabs','Mouser','ColeTech','GeckoDrive','LinEngineering', 'ebay'];
}
var subsystems = ['frame-gantry','frame-bottom','frame-top','frame-door','y-cart','y-drive', 'x-cart','x-drive','electronics','air-assist','optics-laser','frame-table','door-panels','frame-panels','extra'];
var partsParsed = parseParts(data);
// $('#debugcontent').html('<pre>'+ JSON.stringify(partsParsed) +'</pre>');
if (by == 'suppliers') {
var by_supplier_link = '<a href="/lasersaur/bom-1403-suppliers-eur" class="menu menuhighlight">by suppliers</a>';
var by_subsystem_link = '<a href="/lasersaur/bom-1403-subsystems-eur" class="menu">by subsystems</a>';
if (location == 'USD') {
var by_supplier_link = '<a href="/lasersaur/bom-1403-suppliers-usd" class="menu menuhighlight">by suppliers</a>';
var by_subsystem_link = '<a href="/lasersaur/bom-1403-subsystems-usd" class="menu">by subsystems</a>';
}
var contentHtml = '<h1>Bill of Materials v14.03-rc2</h1><p>' + by_supplier_link + ' | ' + by_subsystem_link + '</p>';
for (var i in suppliers) {
contentHtml += '<h2>'+ suppliers[i] +'</h2>';
var nameid = '#'+suppliers[i];
if ( $(nameid).length ) {
contentHtml += '<div style="margin-bottom:20px">' + $(nameid).html() + '</div>';
}
contentHtml += genSupplierHtml(partsParsed, suppliers[i], location);
}
contentHtml = $('#supplier-main').html() + contentHtml;
} else {
var by_supplier_link = '<a href="/lasersaur/bom-1403-suppliers-eur" class="menu">by suppliers</a>';
var by_subsystem_link = '<a href="/lasersaur/bom-1403-subsystems-eur" class="menu menuhighlight">by subsystems</a>';
if (location == 'USD') {
var by_supplier_link = '<a href="/lasersaur/bom-1403-suppliers-usd" class="menu">by suppliers</a>';
var by_subsystem_link = '<a href="/lasersaur/bom-1403-subsystems-usd" class="menu menuhighlight">by subsystems</a>';
}
var contentHtml = '<h1>Bill of Materials v14.03-rc2</h1><p>' + by_supplier_link + ' | ' + by_subsystem_link + '</p>';
for (var i in subsystems) {
contentHtml += '<h2 class="'+ subsystems[i] +'">'+ subsystems[i] +'</h2>';
var nameid = '#'+subsystems[i];
if ( $(nameid).length ) {
contentHtml += '<div style="margin-bottom:20px">' + $(nameid).html() + '</div>';
}
contentHtml += genSubsystemHtml(partsParsed, subsystems[i], location);
}
contentHtml = $('#subsystem-main').html() + contentHtml;
}
$('#gencontent').html(contentHtml);
$('#fillincontent').remove();
$('pre').hide();
$('button.toggler').toggle(function() {
$(this).parent().find('pre').show("slow");
$(this).html('hide csv');
}, function() {
$(this).parent().find('pre').hide("slow");
$(this).html('show csv');
});
$('td.toggler').hover(function() {
var pos = $(this).offset();
$(this).find('div.toggle').show().css('left', pos.left+100).css('top', pos.top+10);
$(this).css('border', 'solid 1px #aaaaaa')
}, function() {
$(this).find('div.toggle').hide();
$(this).css('border', 'solid 0px #aaaaaa')
});
});
function parseParts(data) {
var lines = data.split("\n");
// first parse supplierdefs
// supplierdef supplier currency url_pattern [currency url_pattern] ...
var supplierdefs = {}; // {supplier: {currency:url, ...}, ...}
for (var i=0; i<lines.length; i++) {
if (lines[i].substring(0,12) == '!supplierdef') {
var def_parts = lines[i].split(" ");
supplierdefs[def_parts[1]] = {};
for (var l=2; l<def_parts.length; l++) {
var loc_pair = def_parts[l].split(" ");
supplierdefs[def_parts[1]][loc_pair[0]] = loc_pair[1];
}
}
}
// then parse parts lines
// which consist out of a master line and one or more auxilliary lines
var parts = []; // list of [item, supplier, order#, {'EUR':[price,url]}, [[num,subsystem,use],[num,subsystem,use],...]]
for (var i=0; i<lines.length; i++) {
if (lines[i][0] != '#' && lines[i][0] != '!' && lines[i].length > 12) {
var masterLine = [];
if (lines[i].substring(0,3) == ' ') {
// we are dealing with an auxilliary line
// "num subsystem use"
var masterLine = parts[parts.length-1]; // get latest entry
if (masterLine.length == tSUBSYSTEMUSE+1) {
var usage_parts = lines[i].substring(3).split(" ");
masterLine[tSUBSYSTEMUSE].push(usage_parts);
} else {
alert('ERROR: aux line without proper preceding master line');
}
} else {
// new item line
// "item supplier order# currency price [url] [currency price [url]] ..."
parts.push([]);
var masterLine = parts[parts.length-1]; // get latest entry
var masterLineParts = lines[i].split(" ");
if (masterLineParts.length >= 4) {
// a master line has at leas 4 parts and can have multiple locations
masterLine[tITEM] = masterLineParts[tITEM];
masterLine[tSUPPLIER] = masterLineParts[tSUPPLIER];
masterLine[tORDERNUM] = masterLineParts[tORDERNUM];
var locs = {}
for (var k=3; k<masterLineParts.length; k++) {
// for each location component extract
// "currency price [url]"
var location_parts = masterLineParts[k].split(" ");
if (location_parts.length >= 2) {
var url;
if (location_parts.length >= 3) {
url = location_parts[2]
} else {
// use url pattern from supplierdef
if (masterLine[tSUPPLIER] in supplierdefs) {
if ( location_parts[0] in supplierdefs[masterLine[tSUPPLIER]]) {
var url_pattern = supplierdefs[masterLine[tSUPPLIER]][location_parts[0]];
url = url_pattern.replace('%%', masterLineParts[tORDERNUM]);
} else {
alert("ERROR: currency not defined in supplierdef");
}
} else {
alert("ERROR: supplier not defined in supplierdefs: " + masterLine[tSUPPLIER]);
}
}
locs[location_parts[0]] = [location_parts[1], url];
} else {
alert("ERROR: too few master line location parts, line: " + i);
}
}
masterLine[tLOCATIONS] = locs;
masterLine[tSUBSYSTEMUSE] = [];
} else {
alert("ERROR: too few master line parts, line: " + i)
}
}
}
}
return parts;
}
function genSupplierHtml(parts, supplier, currency) {
// parts
// list of [item, supplier, order#, {'EUR':[price,url]}, [[num,subsystem,use],[num,subsystem,use],...]]
var total = 0.0;
var num_items = 0;
var htmltext = '<table class="data" cellpadding="0" cellspacing="0">';
var csvtext = '<div class="csv"><button class="toggler">show csv</button><pre>'; // build csv table simultaneously
htmltext += '<th style="width:10px">#</th>';
htmltext += '<th style="width:250px">item</th>';
htmltext += '<th style="width:120px">subsystem</th>';
htmltext += '<th style="width:250px">order#</th>';
htmltext += '<th style="width:40px">price</th>';
htmltext += '<th style="width:40px">total</th>';
var even_or_odd = ['odd','even'];
for (var i=0; i<parts.length; i++) {
if (parts[i][tSUPPLIER] == supplier && currency in parts[i][tLOCATIONS]) {
num_items += 1;
var num_computed = 0;
var subsystemuse = parts[i][tSUBSYSTEMUSE];
for (var j=0; j<subsystemuse.length; j++) {
var _quantity = subsystemuse[j][0]
var slashIndex = _quantity.indexOf('/')
if (slashIndex !== -1) {
// dealing with fractions
var numerator = parseInt(_quantity.slice(0,slashIndex))
var denominator = parseInt(_quantity.slice(slashIndex+1))
num_computed += numerator/denominator;
} else {
num_computed += parseInt(_quantity);
}
}
num_computed = Math.round(num_computed)
htmltext += '<tr class="toggle" style="border:solid 1px">'
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ num_computed +"</td>"
htmltext += '<td class="'+even_or_odd[num_items%2]+'">'+ parts[i][tITEM] +"</td>"
htmltext += '<td class="toggler '+even_or_odd[num_items%2]+'">'
var detaildiv = '<div class="toggle '+even_or_odd[num_items%2]+'">';
for (var k=0; k<subsystemuse.length; k++) {
htmltext += '<div class="'+ subsystemuse[k][1] +'" style="float:left"></div>'
detaildiv += '<span class="'+ subsystemuse[k][1] +'">'+ subsystemuse[k][1] +'</span> '+subsystemuse[k][0]+'x - '+ subsystemuse[k][2] +'<br>'
}
detaildiv += '</div>'
htmltext += detaildiv + '</td>'
var price = parts[i][tLOCATIONS][currency][0];
var url = parts[i][tLOCATIONS][currency][1];
htmltext += '<td class="'+even_or_odd[num_items%2]+'"><a href="'+ url +'">'+ parts[i][tORDERNUM] +'</a></td>'
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ price +"</td>"
var price_computed = num_computed*parseFloat(price);
total += price_computed;
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ price_computed.toFixed(2) +'</td>';
htmltext += "</tr>";
// csv table
var itemtext = parts[i][tITEM];
if (supplier == 'Misumi') {
itemtext = itemtext.slice(0,20);
}
csvtext += num_computed+'\t'+itemtext+'\t'+parts[i][tORDERNUM]+'\n'
}
}
htmltext += '<tr><td class="last" style="text-align:right">'+ num_items +'</td><td class="last">items</td><td class="last"></td><td class="last"></td><td class="last" style="text-align:right">'+ currency +'</td><td class="last" style="text-align:right">'+total.toFixed(2)+'</td></tr>';
htmltext += "</table>";
//csv
csvtext += '</pre></div>';
htmltext += csvtext;
return htmltext;
}
function genSubsystemHtml(parts, subsystem, currency) {
// parts
// list of [item, supplier, order#, {'EUR':[price,url]}, [[num,subsystem,use],[num,subsystem,use],...]]
var total = 0.0;
var num_items = 0;
var htmltext = '<table class="data" cellpadding="0" cellspacing="0">';
var csvtext = '<div class="csv"><button class="toggler">show csv</button><pre>'; // build csv table simultaneously
htmltext += '<th style="width:10px">#</th>';
htmltext += '<th style="width:250px">item</th>';
htmltext += '<th style="width:250px">specific use</th>';
htmltext += '<th style="width:100px">supplier#</th>';
htmltext += '<th style="width:180px">order#</th>';
htmltext += '<th style="width:40px">price</th>';
htmltext += '<th style="width:40px">total</th>';
var even_or_odd = ['odd','even'];
for (var i=0; i<parts.length; i++) {
if (currency in parts[i][tLOCATIONS]) {
var subsystemuse = parts[i][tSUBSYSTEMUSE];
for (var j=0; j<subsystemuse.length; j++) {
if (subsystemuse[j][1] == subsystem) {
// this part entry is used for the current subsystem -> list it
num_items += 1;
var price = parts[i][tLOCATIONS][currency][0];
var url = parts[i][tLOCATIONS][currency][1];
var quantity = subsystemuse[j][0];
htmltext += '<tr class="toggle" style="border:solid 1px">'
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ quantity +"</td>"
htmltext += '<td class="'+even_or_odd[num_items%2]+'">'+ parts[i][tITEM] +"</td>"
htmltext += '<td class="'+even_or_odd[num_items%2]+'">'+ subsystemuse[j][2] +"</td>"
htmltext += '<td class="'+even_or_odd[num_items%2]+'">'+ parts[i][tSUPPLIER] +'</td>'
htmltext += '<td class="'+even_or_odd[num_items%2]+'"><a href="'+ url +'">'+ parts[i][tORDERNUM] +'</a></td>'
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ price +"</td>"
var slashIndex = quantity.indexOf('/')
if (slashIndex !== -1) {
// dealing with fractions
var numerator = parseInt(quantity.slice(0,slashIndex))
var denominator = parseInt(quantity.slice(slashIndex+1))
quantity = numerator/denominator;
} else {
quantity = parseInt(quantity);
}
var price_computed = quantity*parseFloat(price);
total += price_computed;
htmltext += '<td class="'+even_or_odd[num_items%2]+'" style="text-align:right">'+ price_computed.toFixed(2) +'</td>'
htmltext += "</tr>"
// csv table
csvtext += subsystemuse[j][0]+'\t'+parts[i][tITEM]+'\t'+parts[i][tSUPPLIER]+'\t'+parts[i][tORDERNUM]+'\n'
break;
}
}
}
}
htmltext += '<tr><td class="last" style="text-align:right">'+ num_items +'</td><td class="last">items</td><td class="last"></td><td class="last"></td><td class="last"></td><td class="last" style="text-align:right">'+currency+'</td><td class="last" style="text-align:right">'+total.toFixed(2)+'</td></tr>'
htmltext += "</table>"
// csv
csvtext += '</pre></div>';
htmltext += csvtext;
return htmltext;
}
function getParams() {
// var $_GET = getParams();
// var location = 'EUR';
// if ('loc' in $_GET) {
// if ($_GET['loc'] == 'USD') {
// location = 'USD';
// }
// }
var qs = document.location.search.split("+").join(" ");
var params = {};
var tokens;
var re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
</script>
</body>
</html>
We can make this file beautiful and searchable if this error is corrected: It looks like row 12 should actually have 1 column, instead of 2 in line 11.
# item supplier order# currency price [url] [currency price [url]] ...
# num subsystem use
!supplierdef Misumi EUR http://uk.misumi-ec.com/eu/EcSearchView.html?kw=%% USD http://us.misumi-ec.com/us/EcSearchView.html?kw=%%
!supplierdef ThorLabs EUR http://www.thorlabs.com/search/thorsearch.cfm?search=%% USD http://www.thorlabs.com/search/thorsearch.cfm?search=%%
!supplierdef Mouser EUR http://eu.mouser.com/Search/Refine.aspx?Keyword=%% USD http://mouser.com/Search/Refine.aspx?Keyword=%%
### NortdLabs
Cable Ties NortdLabs la-zip USD 7 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=71&currency=USD EUR 6 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=71&currency=EUR
4/24 y-drive 4x belt to cart
4/24 x-drive 4x belt to cart
16/24 optics-laser 16x cable and hose to laser tube
Door Sensor Pack NortdLabs la-dsp USD 58 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=66&currency=USD EUR 50 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=66&currency=EUR
1 frame-door 2x door sensors, 2x door sensor magnets
DriveBoard DIY Pack NortdLabs la-dbdy USD 237 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=63&currency=USD EUR 206 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=63&currency=EUR
1 electronics controller board
DriveBoard Wiring Pack NortdLabs la-dwp USD 94 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=70&currency=USD EUR 82 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=70&currency=EUR
1 electronics DriveBoard wiring, laser, chiller, power, data
E-Valve Assembly NortdLabs la-evas USD 58 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=73&currency=USD EUR 50 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=73&currency=EUR
1 air-assist air assist flow control
E-Stop Assembly NortdLabs la-estp USD 39 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=68&currency=USD EUR 34 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=68&currency=EUR
1 electronics DriveBoard emergency stop button
GT Timing Belt Pack NortdLabs la-gtb USD 131 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=58&currency=USD EUR 95 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=58&currency=EUR
1/3 x-drive 1x 3060mm drive belt
2/3 y-drive 2x 1840mm drive belt
LasersaurBBB (BeagleBoneBlack, Wifi, configured) NortdLabs la-bbb USD 109.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=53&currency=USD EUR 95.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=53&currency=EUR
1 electronics controller board
Limit Sensor Pack NortdLabs la-lsp USD 94 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=67&currency=USD EUR 82 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=67&currency=EUR
2/8 y-cart 2x limit sensor magnets
2/8 y-drive 2x limit sensors
2/8 x-cart 2x limit sensor magnets
2/8 x-drive 2x limit sensors
MechParts NortdLabs la-mpk USD 261 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=50&currency=USD EUR 227.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=50&currency=EUR
2/21 frame-door 2x door sensor mounts
7/21 y-drive 5x shaft mounts, 1x limit sensor mount, 1x motor mount
3/21 x-cart 2x roller/optics mounts, 1x cable carrier mount
5/21 x-drive 3x motor/gear mount, 2x limit sensor mounts
4/21 optics-laser 4x laser tube mounts
Mirror Mount Pack NortdLabs la-mmp USD 182 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=64&currency=USD EUR 158 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=64&currency=EUR
1 optics-laser 3x flying optics, 1, 2, 3
Panel Pack NortdLabs la-mpan USD 102 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=74&currency=USD EUR 89 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=74&currency=EUR
3/7 frame-bottom outer separation panels, entry panel
2/7 frame-top outer separation panels
2/7 electronics DriveBoard and 24V/5V PSU mount, C14 power socket mount
Nozzle Assembly NortdLabs la-nozb USD 135.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=59&currency=USD EUR 118.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=59&currency=EUR
1 optics-laser laser head
Optics Accessory Pack NortdLabs la-oacc USD 218 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=65&currency=USD EUR 189 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=65&currency=EUR
1 optics-laser extra
Optics Pack NortdLabs la-lmp USD 315.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=56&currency=USD EUR 274.0 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=56&currency=EUR
1 optics-laser laser beam delivery
Power Supply Pack NortdLabs la-psu USD 66 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=69&currency=USD EUR 58 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=69&currency=EUR
1 electronics DriveBoard power, 5V and 24V
Rubber Tape NortdLabs la-rubt USD 8 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=72&currency=USD EUR 8 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=72&currency=EUR
1 optics-laser between laser tube and mounts
Stepper Driver Pack NortdLabs la-stpd USD 350 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=60&currency=USD EUR 300 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=60&currency=EUR
2 electronics x/y-drive
Stepper X-Drive NortdLabs la-stpx USD 70 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=61&currency=USD EUR 60 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=61&currency=EUR
1 x-drive x-drive
Stepper Y-Drive NortdLabs la-stpy USD 98 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=62&currency=USD EUR 84 http://store.lasersaur.com/index.php?route=product/product&path=59&product_id=62&currency=EUR
1 y-drive y-drive
### Misumi
aluminum bracket extrusion Misumi HFLBS5-1410 USD 6.0 EUR 6.0
1 x-drive cable carrier base
angle bracket, single Misumi HBLFSN5 USD 0.75 EUR 0.63
27 frame-bottom 11x base frame, 16x columns
4 frame-top frame
8 frame-door door connections
1 optics-laser mirror2
10 extra extra
angle bracket, single, black Misumi HBLFSNB5 USD 1.98 EUR 1.32
6 frame-bottom 6x bottom cross
12 frame-table table frame
2 extra extra
angle bracket, double Misumi HBLFSD5 USD 2.3 EUR 1.95
17 frame-bottom frame
10 frame-top frame
4 frame-door door connections
1 optics-laser mirror1
6 extra extra
angle bracket, double, light Misumi HBLSD5 USD 1.32 EUR 0.88
6 y-drive 5x shaft mount, 1x limit sensor mount
2 extra extra
angle bracket, double, heavy Misumi HBLFSDW5 USD 3.15 EUR 2.1
4 frame-gantry gantry frame corners
1 y-drive motor mount
2 optics-laser laser mounts
ball bearing 5x19x6mm Misumi B635ZZ USD 5.18 EUR 1.4
4 y-drive idler
2 x-drive idler
ball bearing 6x19x6mm Misumi B626ZZ USD 2.53 EUR 1.7
6 y-drive 2x gear assembly, 4x pulley assembly
2 x-drive 2x gear assembly
1 extra extra
ball bearing 5x14x5mm Misumi B605ZZ USD 2.53 EUR 1.7
8 y-cart roller
6 x-cart roller
8 y-drive spanner idler
4 x-drive 4x spanner idler
2 extra extra
cable carrier, 20 links Misumi MHPKS101-19-20-S USD 19.88 EUR 19.30
2 x-drive gas assist
cable carrier, 23 links Misumi MHPUS102-19-23-S USD 29.57 EUR 29.0
1 y-drive life line
gas spring Misumi FGSS22150B USD 23.88 EUR 19
2 frame-door door
hinges Misumi HHPSN5 USD 3.8 EUR 3.6
3 frame-door door
metal sheet 1166x356x0.8mm Misumi PDSPHC4H-1166-356-0.8-F1110-G340-N5-UN10-XC8-YC8 USD 44 EUR 41
1 frame-panels left side
metal sheet 1166x847x0.8mm Misumi PDSPHC4H-1166-847-0.8-F1150-G790-N5-UN10-XC8-YC9 USD 58 EUR 54
2 frame-panels bottom
metal sheet 247x216x0.8mm Misumi PDSPHC4H-247-216-0.8-F190-G200-N5-UN10-XC9-YC8 USD 25 EUR 24
1 frame-panels rear right
metal sheet 847x213x0.8mm Misumi PDSPHC4H-847-213-0.8-F790-G180-N5-UN10-XC48-YC8 USD 35 EUR 33
2 frame-panels front
metal sheet 847x268x0.8mm Misumi PDSPHC4H-847-268-0.8-F790-G250-N5-UN10-XC48-YC8 USD 35 EUR 33
2 frame-panels rear top
metal sheet 847x356x0.8mm Misumi PDSPHC4H-847-356-0.8-F790-G340-N5-UN10-XC48-YC8 USD 38 EUR 36
2 frame-panels rear
metal sheet 917x356x0.8mm Misumi PDSPHC4H-917-356-0.8-F900-G340-N5-UN10-XC8-YC8 USD 40 EUR 38
1 frame-panels right side
nut DIN934-like, M3 Misumi LBNR3 USD 0.08 EUR 0.28
4 frame-door 4x door switch
2 x-drive 2x cable carrier
4 y-drive 4x limit sensor
6 electronics 2x power entry module, 4x driveboard
8 extra extra
nut DIN985-like, lock, M4 Misumi UNUTZ4 USD 0.9 EUR 0.8
4 y-drive 4x bearing clamps
4 optics-laser 4x laser tube mount
2 extra extra
nut DIN985-like, lock, M5, 100 pack Misumi PACK-UNUT5 USD 15 EUR 15
8/100 y-cart 8x roller shaft
24/100 y-drive 4x motor mount, 14x shaft mount, 2x limit sensor, 4x belt spanner
6/100 x-cart 6x roller shaft
4/100 x-drive 2x motor mount, 2x spanner idler
10/100 optics-laser 8x laser mount, 2x lens tube clamp to mount plate
48/100 extra extra
panel rubber seal 12m Misumi HSCP3H-B-12 USD 22 EUR 17
6/12 frame-bottom seal for separation panels
6/12 frame-top seal for entry panel
planar bracket, double Misumi SHPTSD5 USD 1.75 EUR 1.2
4 frame-gantry gantry frame y-rails
6 frame-top middle column, separation
plastic handles Misumi UPCN19-B-36 USD 5.8 EUR 4.8
2 door-panels door
polycarbonate sheet 600x130x3mm Misumi PCTBA-600-130-3 USD 21 EUR 18
2 frame-bottom compartment separation, bottom
polycarbonate sheet 600x110x3mm Misumi PCTBA-600-110-3 USD 27 EUR 22
2 frame-top compartment separation, top
polycarbonate sheet 807x60x3mm Misumi PCTBA-807-60-3 USD 14 EUR 11
2 frame-door door slit cover
polycarbonate sheet 847x143x3mm Misumi PCTBA-847-143-3 USD 29 EUR 24
2 door-panels door cover front
polycarbonate sheet 892x847x3mm Misumi PCTBA-892-847-3 USD 135 EUR 100
2 door-panels door cover top
drive shaft, stepped Misumi SFAJ12-26-F24-P6-T6 USD 12 EUR 9
1 x-drive gear assembly
drive shaft, stepped Misumi SFAJ12-40-F16-P6-T16 USD 12 EUR 9
1 y-drive gear assembly
drive shaft, stepped Misumi SFAJ12-620-F18-P6-T8 USD 55 EUR 47
2 y-drive gear to final pulley
drive shaft, stepped Misumi SFAJ12-40-F16-P6-T24 USD 12 EUR 9
2 y-drive final pulley assembly
screw DIN912-like, M3x10 Misumi CB3-10 USD 0.13 EUR 0.13
4 frame-door 4x door switch
4 y-cart 4x limit sensor magnets
4 x-cart 4x limit sensor magnets
10 x-drive 4x motor mount, 2x cable carrier, 4x limit sensor
4 electronics 4x power entry module
6 extra extra
screw DIN912-like, M3x16 Misumi CB3-16 USD 0.13 EUR 0.13
4 frame-door door sensor
4 y-drive limit sensors
2 electronics 2x power entry module
6 extra extra
screw DIN912-like, M3x25 Misumi CB3-25 USD 0.13 EUR 0.13
1 air-assist e-valve mount
4 extra extra
screw ISO7380-like, button, M3x06 Misumi BCB3-6 USD 0.11 EUR 0.11
2 x-drive 2x gear assembly top bearing
4 electronics 4x psu mount
12 extra extra
screw DIN912-like, M4x16 Misumi CB4-16 USD 0.13 EUR 0.10
4 y-drive 4x bearing clamps
4 optics-laser 4x laser tube mount
4 extra extra
screw DIN912-like, M5x08 Misumi CB5-8 USD 0.13 EUR 0.10
16 frame-gantry 16x planar bracket
24 frame-top 24x planar bracket
8 frame-door 8x door slit cover
12 y-drive 10x shaft mount, 2x limit sensor
4 optics-laser 4x laser psu mount
4 electronics panel mount
38 door-panels 22x door top, 16x door front
40 extra extra
screw DIN912-like, M5x10 Misumi CB5-10 USD 0.10 EUR 0.08
32 frame-gantry 32x angle brackets
134 frame-bottom 66x bracket single, 66x bracket double
48 frame-top frame connections
32 frame-door 32x angel brackets
24 frame-table angle brackets
4 y-drive 4x motor mount
14 optics-laser 4x mirror1, 2x mirror2, 8x laser mount
80 extra extra
screw DIN912-like, M5x12 Misumi CB5-12 USD 0.12 EUR 0.12
4 frame-door 4x door switch
2 x-cart 2x cable carrier mount plate
8 x-drive 4x limit sensor mount, 4x gear assembly
4 door-panels 4x door handle
12 extra extra
screw DIN912-like, M5x16 Misumi CB5-16 USD 0.13 EUR 0.13
5 x-cart 4x mount plates to extrusion end, 1x bottom roller shaft
12 y-drive 10x shaft mount, 2x limit sensor mount
1 x-drive motor mount
10 extra extra
screw DIN912-like, M5x20 Misumi CB5-20 USD 0.13 EUR 0.13
4 frame-door gas spring mount
4 y-cart 4x cart-bar
8 y-drive motor mount
2 x-drive motor mount
12 optics-laser 8x laser mount, 2x mirror1, 2x lens tube clamp to mount plate
8 extra extra
screw DIN912-like, adhesive, M5x25 Misumi SUSLB5-25 USD 0.5 EUR 0.4
4 y-cart 4x cart bar
2 y-drive 2x idler shaft
2 x-cart 2x cart bar
1 x-drive 1x idler shaft
2 extra extra
screw ISO7380-like, button, M5x06 Misumi BCB5-6 USD 0.11 EUR 0.11
100 frame-panels 100x metal sheets
2 y-drive cable carrier
60 extra extra
screw DIN7991-like, sunk, M5x08 Misumi SFB5-8 USD 0.66 EUR 1.1
12 frame-door door hinges
screw DIN7991-like, sunk, M5x12 Misumi SFB5-12 USD 1.3 EUR 1.3
5 x-drive cable carrier base
screw DIN7984-like, low, M5x16 Misumi CBSS5-16 USD 0.5 EUR 0.5
4 y-cart belt attachment
2 x-cart belt attachment
screw DIN7984-like, low, M5x30 Misumi CBSST5-30 USD 0.6 EUR 0.54
5 x-cart 5x roller shaft
8 y-cart 8x roller shaft
4 y-drive spanner idler
2 x-drive spanner idler
6 extra extra
shaft coupling, 6 to 6mm Misumi MCKSC20-6-6 USD 29 EUR 23.4
4 y-drive drive shaft
slide washer Misumi SWSPT25-10-1.0 USD 3.72 EUR 4.60
2 y-drive idler
1 x-drive idler
timing belt GT 3M, 9mm, 109 teeth Misumi GBN3273GT-90 USD 8 EUR 7
1 y-drive gear assembly
timing belt GT 3M, 9mm, 65 teeth Misumi GBN1953GT-90 USD 8 EUR 7
1 x-drive gear assembly
timing pulley GT 3M, 18 teeth, bore 5mm Misumi GPA18GT3090-A-P5 USD 18 EUR 16
1 x-drive motor pulley
timing pulley GT 3M, 48 teeth, bore 12mm Misumi GPA48GT3090-A-P12 USD 30 EUR 25
1 x-drive middle gear pulley
timing pulley GT 3M, 22 teeth, bore 6.35mm Misumi GPA22GT3090-A-P6.35 USD 18 EUR 16
1 y-drive motor pulley
timing pulley GT 3M, 60 teeth, bore 12mm Misumi GPA60GT3090-A-P12-FC59 USD 40 EUR 35
1 y-drive middle gear pulley
timing pulley GT 3M, 20 teeth, bore 6mm Misumi GPA20GT3090-A-P6 USD 18 EUR 16
1 x-drive final gear pulley
2 y-drive final gear pulley
extrusion 2020, 1564mm Misumi HFS5-2020-1564 USD 8.91 EUR 7.4
1 frame-door door front bottom
extrusion 2020, 57mm, 45deg Misumi HFS5-2020-57-LAT45 USD 6.9 EUR 6.5
1 optics-laser mirror2
extrusion 2020, 80mm Misumi HFS5-2020-80 USD 3 EUR 2.5
2 frame-door door front
extrusion 2040, 100mm Misumi HFS5-2040-100 USD 4.6 EUR 4
3 frame-top separation column
extrusion 2040, 1130mm Misumi HFS5-2040-1130 USD 12 EUR 15
2 frame-bottom sides
extrusion 2040, 120mm Misumi HFS5-2040-120 USD 5 EUR 4.6
2 frame-bottom columns
extrusion 2040, 142mm, mount holes, 45deg Misumi HFS5-2040-142-Z5-YA66-RTP-LCT45 USD 19.00 EUR 15.0
1 x-cart cart-bar
extrusion 2040, 1260mm, black Misumi HFSB5-2040-1260 USD 21 EUR 17.66
4 frame-table table wide
extrusion 2040, 148mm, mount holes Misumi HFS5-2040-148-Z5-YA20-YB102 USD 12.5 EUR 8.0
1 y-cart cart-bar
extrusion 2040, 1564mm Misumi HFS5-2040-1564 USD 17 EUR 14
1 frame-door door front
extrusion 2040, 1620mm Misumi HFS5-2040-1620 USD 16.5 EUR 17
3 frame-bottom frame front, middle, back
1 frame-top back
extrusion 2040, 190mm Misumi HFS5-2040-190 USD 3 EUR 3
3 frame-bottom 1x rear bottom, 2x laser psu mount
1 frame-top 1x rear top
extrusion 2040, 320mm Misumi HFS5-2040-320 USD 3.5 EUR 3
1 frame-bottom rear middle
extrusion 2040, 63mm, mount holes Misumi HFS5-2040-63-Z5-YA10 USD 7.66 EUR 5.0
1 optics-laser mirror1
extrusion 2040, 750mm, black Misumi HFSB5-2040-750 USD 12.5 EUR 8
2 frame-bottom bottom cross
extrusion 2040, 55mm Misumi HFS5-2040-55-TPW USD 6.5 EUR 7.0
1 x-cart cart-bar
extrusion 2040, 80mm Misumi HFS5-2040-80 USD 2.6 EUR 2.9
1 frame-door door front
extrusion 2040, 69mm, 45deg Misumi HFS5-2040-69-LAT45 USD 6.7 EUR 3.8
1 optics-laser mirror1
extrusion 2040, 830mm Misumi HFS5-2040-830 USD 9 EUR 8
3 frame-door door top
extrusion 2040, 858mm, black Misumi HFSB5-2040-858 USD 14.4 EUR 12.08
2 frame-table table short
extrusion 2040, 860mm Misumi HFS5-2040-860 USD 9.3 EUR 8
2 frame-bottom cable carrier base extusion
1 extra extra
extrusion 2040, 860mm, black Misumi HFSB5-2040-860 USD 14.36 EUR 8
1 frame-bottom bottom cross middle
extrusion 2040, 96mm, mount holes Misumi HFS5-2040-96-Z5-YA46-YB76 USD 12.5 EUR 8.0
1 y-cart cart-bar
extrusion 2080, 70mm Misumi HFS5-2080-70-LTP USD 13.0 EUR 16.0
2 y-cart cart-bar
extrusion 4040, 100mm Misumi HFS5-4040-100 USD 4.6 EUR 4
2 frame-top corner top column
extrusion 4040, 1130mm Misumi HFS5-4040-1130 USD 17.4 EUR 15
2 frame-top frame side top
extrusion 4040, 120mm Misumi HFS5-4040-120 USD 4.6 EUR 4
8 frame-bottom columns
extrusion 4040, 120mm Misumi HFS5-4040-120 USD 8 EUR 8.6
2 frame-bottom table columns
extrusion 4040, 1418mm Misumi HFS5-4040-1418 USD 22.0 EUR 18.0
1 y-cart cart-bar
extrusion 4040, 1564mm Misumi HFS5-4040-1564 USD 24 EUR 20
1 frame-door door rear
extrusion 4040, 1620mm Misumi HFS5-4040-1620 USD 25 EUR 21
1 frame-top frame middle sep
extrusion 4040, 190mm Misumi HFS5-4040-190 USD 4.6 EUR 5
1 frame-top rear side
extrusion 4040, 360mm Misumi HFS5-4040-360 USD 5.6 EUR 7
2 frame-bottom rear corners
extrusion 4040, 860mm Misumi HFS5-4040-860 USD 13.3 EUR 10.92
2 frame-gantry y-rails, left and right
1 extra extra
extrusion 4080, 100mm Misumi HFS5-4080-100 USD 9.4 EUR 9
2 frame-top side
extrusion 4080, 1620mm Misumi HFS5-4080-1620 USD 56 EUR 47
2 frame-gantry gantry frame, rear and front
extrusion 4080, 940mm Misumi HFS5-4080-940 USD 32.5 EUR 27
2 frame-gantry gantry frame, left and right
air tube, ODxID 6x4mm, 10m Misumi PUT6-10-CB USD 12 EUR 10
1 air-assist entry panel to laser head
one-touch coupling, 6mm, M5 Misumi MSELL6-M5 USD 3 EUR 3
3 air-assist 1x nozzle coupling, 2x e-valve coupling
one-touch panel-mount, 6mm Misumi MSBUL6 USD 3 EUR 3
1 air-assist entry panel
nut T-slot, pre, M3 Misumi HNTE5-3 USD 0.56 EUR 0.50
4 frame-door 4x limit sensor magnet
4 x-cart 4x limit sensor magnet
4 y-cart 4x limit sensor magnet
1 air-assist e-valve mount
2 extra extra
nut T-slot, pre, M4 Misumi HNTE5-4 USD 0.46 EUR 0.45
3 optics-laser 3x mirrors
10 extra extra
nut T-slot, pre, M5 Misumi HNTE5-5 USD 0.46 EUR 0.45
12 y-cart 8x roller shaft, 4x belt attachment
4 x-cart 2x roller shaft, 2x belt attachment
10 extra extra
nut T-slot, post, M5, lock Misumi HNTPZ5-5 USD 0.69 EUR 0.60
48 frame-gantry 16x planar brackets, 32x angle brackets
134 frame-bottom angle brackets
72 frame-top frame connections
60 frame-door frame
4 electronics 4x panel mount
24 frame-table angle brackets
4 y-cart 4x cart joints
2 x-cart 2x cable carrier mount plate
20 y-drive 2x idler, 2x limit sensor, 14x shaft mount, 2x cable carrier
14 x-drive 1x idler, 4x gear assembly, 5x cable carrier base, 4x limit sensor
20 optics-laser 6x mirror1, 2x mirror2, 8x laser mount, 4x laser PSU
42 door-panels 26x door top, 16x door front
100 frame-panels 100x metal sheets
60 extra extra
water hose ID 9mm, 10m Misumi AHOS9-10 USD 29.6 EUR 21.5
1 optics-laser chiller to laser to chiller
washer DIN125-like, form A, M3 Misumi PWF3 USD 0.13 EUR 0.13
8 frame-door 8x door sensor magnet
8 y-cart 8x limit sensor magnet
8 x-cart 8x limit sensor magnet
washer DIN125-like, form A, M4 Misumi PWF4 USD 0.13 EUR 0.13
10 extra extra
washer DIN125-like, form A, M5 Misumi PWF5 USD 0.13 EUR 0.13
16 frame-gantry planar brackets
24 frame-top 24x planar bracket
24 frame-door 4x door switch, 20gas spring mount
22 y-cart 22x roller shaft
52 x-cart 2x cable carrier mount plate, 50x roller shaft
48 y-drive 12x idler, 36x spanner idler
42 x-drive 4x gear assembly, 4x idler, 4x limit sensor, 20x cable carrier base, 10x spanner idler
20 extra extra
washer DIN9021-like, form G, M4, 50 pack Misumi PACK-SPWFN4 USD 9.7 EUR 9.7
8/50 y-drive 8x bearing
42/50 extra extra
washer DIN9021-like, form G, M5, 20 pack Misumi PACK-SPWFN5 USD 7.6 EUR 9.6
20/20 frame-door 20x gas spring mount
2/20 y-drive 2x idler
2/20 x-drive 2x idler
4/20 optics-laser 4x laser psu mount
12/20 extra 16x extra
washer precision, ID 6mm Misumi WASSH12-6-2 USD 2.5 EUR 2
4 y-drive coupling to bearing spacer
washer precision, OD 19mm Misumi FWS-D19-V15.0-T1.0 USD 3.5 EUR 3
1 x-drive shaft bearing spacer
washer Schnorr-like, lock, M3 Misumi GTS3 USD 0.12 EUR 0.12
20 frame-door 8x limit sensor, 12x limit sensor magnet
12 y-cart 12x limit sensor magnet
12 x-cart 12x limit sensor magnet
8 y-drive 8x limit sensor
20 x-drive 4x motor, 12x limit sensor, 4x cable carrier
8 electronics 4x power entry module, 4x psu mount
1 air-assist e-valve mount
12 extra extra
washer Schnorr-like, lock, M5 Misumi GTS5 USD 0.13 EUR 0.13
4 x-cart mount plates to extrusion end
20 extra extra
### ColeTech
laser power supply (Reci DY13, specify 220V or 110V) ColeTech 100WPowerSupply USD 600 http://www.cncoletech.com/Laser%20power%20supply.html EUR 500 http://www.cncoletech.com/Laser%20power%20supply.html
1 optics-laser main laser
100W CO2 Laser Tube Long Life (Reci W4) ColeTech 100WLongLifeLaserTube USD 1200 http://www.cncoletech.com/Laser%20tuber%20long%20life.html EUR 1000 http://www.cncoletech.com/Laser%20tuber%20long%20life.html
1 optics-laser main laser
water chiller (specify 220V or 110V) ColeTech WaterChiller USD 400 http://www.cncoletech.com/Laser%20Water%20Chiller.html EUR 400 http://www.cncoletech.com/Laser%20Water%20Chiller.html
1 optics-laser main laser
@100ideas
Copy link
Author

100ideas commented Apr 8, 2014

Perhaps their bomfu repo is the next generation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment