"use strict"
const craftStd = require('./std-crafts')
const lumberStd = require('./std-lumber')
const masonryStd = require('./std-masonry')
const paperStd = require('./std-paper')
const tileStd = require('./std-tiles')
const inchesToMm = (numIn) => numIn * 25.4
/**
* ...
* @memberof data
* @namespace standards
*/
const standards = ({ jscad }) => {
/**
* Pegboard standards
* @namespace pegboard
* @memberof data.standards
*/
const pegboard = {
/**
* Pegboard_Spacing
* @memberof data.standards.pegboard
*/
PEGBOARD_SPACING: inchesToMm(1),
/**
* Pegboard_Hole_Diam
* @memberof data.standards.pegboard
*/
PEGBOARD_HOLE_DIAM: inchesToMm(7 / 32),
/**
* Micro_Pegboard_Spacing
* @memberof data.standards.pegboard
*/
MICRO_PEGBOARD_SPACING: inchesToMm(1 / 2),
/**
* Micro_Pegboard_Hole_Diam
* @memberof data.standards.pegboard
*/
MICRO_PEGBOARD_HOLE_DIAM: inchesToMm(1 / 8),
}
/**
* Gridfinity standards
* @namespace gridfinity
* @memberof data.standards
*/
const gridfinity = {
/**
* Gridfinity_Spacing
* @memberof data.standards.gridfinity
*/
GRIDFINITY_SPACING: 42,
/**
* Gridfinity_Rail_Width
* @memberof data.standards.gridfinity
*/
GRIDFINITY_RAIL_WIDTH: 7,
}
/**
* Type standards
* @namespace types
* @memberof data.standards
*/
const types = {
/**
* Type_Default
* @memberof data.standards.types
*/
TYPE_DEFAULT: { id: 'default', desc: 'Default' },
/**
* Type_Alt
* @memberof data.standards.types
*/
TYPE_ALT: { id: 'alt', desc: 'Alternate' },
}
const interfaceThickness = 1.333333
const fitGap = inchesToMm(1 / 128)
const panelThicknessXs = interfaceThickness * 0.5
const panelThicknessSm = interfaceThickness * 0.75
const panelThicknessMd = interfaceThickness
const panelThicknessLg = interfaceThickness * 1.25
const panelThicknessXl = interfaceThickness * 1.5
const smProfileBeadWidth = interfaceThickness * 1.125
const mdProfileBeadWidth = interfaceThickness * 1.5
const lgProfileBeadWidth = interfaceThickness * 1.75
const xsReinforcementWidth = 2
const smReinforcementWidth = 3
const mdReinforcementWidth = 4
const lgReinforcementWidth = 5
const swDefaults = {
/**
* Interface thickness
* @memberof data.standards
*/
INTERFACE_THICKNESS: interfaceThickness,
/**
* Fit_Gap
* @memberof data.standards
*/
FIT_GAP: fitGap,
/**
* Panel_Thickness_Xs
* @memberof data.standards
*/
PANEL_THICKNESS_XS: panelThicknessXs,
/**
* Panel_Thickness_Sm
* @memberof data.standards
*/
PANEL_THICKNESS_SM: panelThicknessSm,
/**
* Panel_Thickness_Md
* @memberof data.standards
*/
PANEL_THICKNESS_MD: panelThicknessMd,
/**
* Panel_Thickness_Lg
* @memberof data.standards
*/
PANEL_THICKNESS_LG: panelThicknessLg,
/**
* Panel_Thickness_Xl
* @memberof data.standards
*/
PANEL_THICKNESS_XL: panelThicknessXl,
/**
* Sm_Profile_Bead_Width
* @memberof data.standards
*/
SM_PROFILE_BEAD_WIDTH: smProfileBeadWidth,
/**
* Md_Profile_Bead_Width
* @memberof data.standards
*/
MD_PROFILE_BEAD_WIDTH: mdProfileBeadWidth,
/**
* Lg_Profile_Bead_Width
* @memberof data.standards
*/
LG_PROFILE_BEAD_WIDTH: lgProfileBeadWidth,
/**
* Xs_Reinforcement_Width
* @memberof data.standards
*/
XS_REINFORCEMENT_WIDTH: xsReinforcementWidth,
/**
* Sm_Reinforcement_Width
* @memberof data.standards
*/
SM_REINFORCEMENT_WIDTH: smReinforcementWidth,
/**
* Md_Reinforcement_Width
* @memberof data.standards
*/
MD_REINFORCEMENT_WIDTH: mdReinforcementWidth,
/**
* Lg_Reinforcement_Width
* @memberof data.standards
*/
LG_REINFORCEMENT_WIDTH: lgReinforcementWidth,
}
/**
* Param standards
* @namespace params
* @memberof data.standards
*/
const params = {
/**
* Obj_2d_Size
* @memberof data.standards.params
*/
OBJ_2D_SIZE: [
inchesToMm(2),
inchesToMm(4),
],
/**
* Obj_3d_Size
* @memberof data.standards.params
*/
OBJ_3D_SIZE: [
inchesToMm(2),
inchesToMm(4),
inchesToMm(1),
],
}
return {
...swDefaults,
pegboard,
gridfinity,
types,
params,
crafts: craftStd.init({ jscad }),
lumber: lumberStd.init({ jscad }),
masonry: masonryStd.init({ jscad }),
paper: paperStd.init({ jscad }),
tiles: tileStd.init({ jscad }),
}
}
module.exports = { init: standards };