Fasteners
bitbybit.occt.parts.mechanical.fasteners builds the bolts, screws, nuts and washers that hold a model together, at the sizes their standards give, and bitbybit.engineering.mechanical.fasteners gives the numbers behind them: the hole a bolt passes through, the counterbore a cap screw sinks into, how thick a washer is. Standard parts explains the standards, units, frames and roles they share.
A bolted plate
Here an M8 bolt passes through a plate, with a washer and a nut underneath. The table gives the clearance hole, so the bolt passes freely, and the washer's thickness, so the nut sits right under it; in Rete and Blockly, bitbybit.json.getValueOnProp reads the thickness out of the table's answer:
- Rete
- Blockly
- TypeScript
{
"id": "rete-v2-json",
"nodes": {
"top": {
"id": "top",
"name": "bitbybit.frame.create",
"customName": "frame",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"origin": [
0,
10,
0
],
"normal": [
0,
1,
0
],
"direction": [
1,
0,
0
]
},
"inputs": {},
"position": [
40,
40
]
},
"topFrames": {
"id": "topFrames",
"name": "bitbybit.lists.createList",
"customName": "create list",
"async": false,
"drawable": false,
"data": {},
"inputs": {
"listElements": {
"connections": [
{
"node": "top",
"output": "result",
"data": {}
}
]
}
},
"position": [
460,
40
]
},
"hole": {
"id": "hole",
"name": "bitbybit.engineering.mechanical.fasteners.iso.clearanceHole",
"customName": "clearance hole",
"async": false,
"drawable": false,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"fit": "normal",
"size": "M8",
"unit": "mm"
},
"inputs": {},
"position": [
40,
460
]
},
"box": {
"id": "box",
"name": "bitbybit.occt.shapes.solid.createBox",
"customName": "box",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"width": 40,
"length": 40,
"height": 10,
"center": [
0,
5,
0
],
"originOnCenter": true
},
"inputs": {},
"position": [
40,
860
]
},
"plate": {
"id": "plate",
"name": "bitbybit.occt.features.holes",
"customName": "holes",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"diameter": 1,
"depth": 0,
"tipAngle": 0
},
"inputs": {
"shape": {
"connections": [
{
"node": "box",
"output": "result",
"data": {}
}
]
},
"frames": {
"connections": [
{
"node": "topFrames",
"output": "list",
"data": {}
}
]
},
"diameter": {
"connections": [
{
"node": "hole",
"output": "result",
"data": {}
}
]
}
},
"position": [
880,
460
]
},
"bolt": {
"id": "bolt",
"name": "bitbybit.occt.parts.mechanical.fasteners.iso.hexBolt",
"customName": "hex bolt",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"fullyThreaded": true,
"length": 30,
"modelledThread": false,
"size": "M8",
"unit": "mm"
},
"inputs": {
"frame": {
"connections": [
{
"node": "top",
"output": "result",
"data": {}
}
]
}
},
"position": [
880,
40
]
},
"underneath": {
"id": "underneath",
"name": "bitbybit.frame.create",
"customName": "frame",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"origin": [
0,
0,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
},
"inputs": {},
"position": [
40,
1300
]
},
"washer": {
"id": "washer",
"name": "bitbybit.occt.parts.mechanical.fasteners.iso.washer",
"customName": "washer",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"chamfered": false,
"size": "M8",
"unit": "mm"
},
"inputs": {
"frame": {
"connections": [
{
"node": "underneath",
"output": "result",
"data": {}
}
]
}
},
"position": [
880,
1300
]
},
"washerSizes": {
"id": "washerSizes",
"name": "bitbybit.engineering.mechanical.fasteners.iso.washerSizes",
"customName": "washer sizes",
"async": false,
"drawable": false,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"size": "M8",
"unit": "mm"
},
"inputs": {},
"position": [
40,
1700
]
},
"thickness": {
"id": "thickness",
"name": "bitbybit.json.getValueOnProp",
"customName": "get value on prop",
"async": false,
"drawable": false,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"property": "thickness"
},
"inputs": {
"json": {
"connections": [
{
"node": "washerSizes",
"output": "result",
"data": {}
}
]
}
},
"position": [
460,
1700
]
},
"below": {
"id": "below",
"name": "bitbybit.math.negate",
"customName": "negate",
"async": false,
"drawable": false,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"number": 1
},
"inputs": {
"number": {
"connections": [
{
"node": "thickness",
"output": "result",
"data": {}
}
]
}
},
"position": [
880,
1700
]
},
"nutOrigin": {
"id": "nutOrigin",
"name": "bitbybit.vector.vectorXYZ",
"customName": "vector xyz",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"x": 0,
"y": 0,
"z": 0
},
"inputs": {
"y": {
"connections": [
{
"node": "below",
"output": "result",
"data": {}
}
]
}
},
"position": [
1300,
1700
]
},
"underWasher": {
"id": "underWasher",
"name": "bitbybit.frame.create",
"customName": "frame",
"async": false,
"drawable": true,
"data": {
"genericNodeData": {
"hide": true,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"origin": [
0,
0,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
},
"inputs": {
"origin": {
"connections": [
{
"node": "nutOrigin",
"output": "result",
"data": {}
}
]
}
},
"position": [
1720,
1700
]
},
"nut": {
"id": "nut",
"name": "bitbybit.occt.parts.mechanical.fasteners.iso.hexNut",
"customName": "hex nut",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"size": "M8",
"unit": "mm"
},
"inputs": {
"frame": {
"connections": [
{
"node": "underWasher",
"output": "result",
"data": {}
}
]
}
},
"position": [
2140,
1700
]
},
"view": {
"id": "view",
"name": "bitbybit.babylon.scene.adjustActiveArcRotateCamera",
"customName": "adjust active arc rotate camera",
"async": false,
"drawable": false,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"position": [
30,
12,
-84
],
"lookAt": [
0,
-3,
0
],
"lowerBetaLimit": 1,
"upperBetaLimit": 179,
"angularSensibilityX": 1000,
"angularSensibilityY": 1000,
"maxZ": 1000,
"panningSensibility": 1000,
"wheelPrecision": 3
},
"inputs": {},
"position": [
1300,
40
]
}
},
"modules": {}
}
<xml xmlns="https://developers.google.com/blockly/xml"><block type="math_number" x="0" y="0"><field name="NUM">1</field></block><block type="bitbybit.point.pointXYZ" x="0" y="0"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block><block type="math_number" x="0" y="0"><field name="NUM">0</field></block><block type="math_number" x="0" y="0"><field name="NUM">1</field></block><block type="bitbybit.draw.drawAnyAsyncNoReturn" x="40" y="40"><value name="Entity"><block type="bitbybit.occt.features.holes"><value name="Shape"><block type="bitbybit.occt.shapes.solid.createBox"><value name="Width"><block type="math_number"><field name="NUM">40</field></block></value><value name="Length"><block type="math_number"><field name="NUM">40</field></block></value><value name="Height"><block type="math_number"><field name="NUM">10</field></block></value><value name="Center"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">5</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="OriginOnCenter"><block type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></value><value name="Frames"><block type="bitbybit.lists.addItem"><value name="List"><block type="bitbybit.lists.createEmptyList"></block></value><value name="Item"><block type="bitbybit.frame.create"><value name="Origin"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">10</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Normal"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">1</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Direction"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">1</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value></block></value><value name="Clone"><block type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></value><value name="Diameter"><block type="bitbybit.engineering.mechanical.fasteners.iso.clearanceHole"><value name="Fit"><block type="bitbybit.engineering.enums.clearanceFitEnum"><field name="bitbybit.engineering.enums.clearanceFitEnum">'normal'</field></block></value><value name="Size"><block type="bitbybit.engineering.enums.isoThreadSizeEnum"><field name="bitbybit.engineering.enums.isoThreadSizeEnum">'M8'</field></block></value><value name="Unit"><block type="bitbybit.base.enums.unitOfLengthEnum"><field name="bitbybit.base.enums.unitOfLengthEnum">'mm'</field></block></value></block></value><value name="Depth"><block type="math_number"><field name="NUM">0</field></block></value><value name="TipAngle"><block type="math_number"><field name="NUM">0</field></block></value></block></value><next><block type="bitbybit.draw.drawAnyAsyncNoReturn"><value name="Entity"><block type="bitbybit.occt.parts.mechanical.fasteners.iso.hexBolt"><value name="FullyThreaded"><block type="logic_boolean"><field name="BOOL">TRUE</field></block></value><value name="Length"><block type="math_number"><field name="NUM">30</field></block></value><value name="ModelledThread"><block type="logic_boolean"><field name="BOOL">FALSE</field></block></value><value name="Size"><block type="bitbybit.engineering.enums.isoThreadSizeEnum"><field name="bitbybit.engineering.enums.isoThreadSizeEnum">'M8'</field></block></value><value name="Unit"><block type="bitbybit.base.enums.unitOfLengthEnum"><field name="bitbybit.base.enums.unitOfLengthEnum">'mm'</field></block></value><value name="Frame"><block type="bitbybit.frame.create"><value name="Origin"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">10</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Normal"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">1</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Direction"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">1</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value></block></value></block></value><next><block type="bitbybit.draw.drawAnyAsyncNoReturn"><value name="Entity"><block type="bitbybit.occt.parts.mechanical.fasteners.iso.washer"><value name="Chamfered"><block type="logic_boolean"><field name="BOOL">FALSE</field></block></value><value name="Size"><block type="bitbybit.engineering.enums.isoThreadSizeEnum"><field name="bitbybit.engineering.enums.isoThreadSizeEnum">'M8'</field></block></value><value name="Unit"><block type="bitbybit.base.enums.unitOfLengthEnum"><field name="bitbybit.base.enums.unitOfLengthEnum">'mm'</field></block></value><value name="Frame"><block type="bitbybit.frame.create"><value name="Origin"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Normal"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">-1</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Direction"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">1</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value></block></value></block></value><next><block type="bitbybit.draw.drawAnyAsyncNoReturn"><value name="Entity"><block type="bitbybit.occt.parts.mechanical.fasteners.iso.hexNut"><value name="Size"><block type="bitbybit.engineering.enums.isoThreadSizeEnum"><field name="bitbybit.engineering.enums.isoThreadSizeEnum">'M8'</field></block></value><value name="Unit"><block type="bitbybit.base.enums.unitOfLengthEnum"><field name="bitbybit.base.enums.unitOfLengthEnum">'mm'</field></block></value><value name="Frame"><block type="bitbybit.frame.create"><value name="Origin"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="bitbybit.math.negate"><value name="Number"><block type="bitbybit.json.getValueOnProp"><value name="Json"><block type="bitbybit.engineering.mechanical.fasteners.iso.washerSizes"><value name="Size"><block type="bitbybit.engineering.enums.isoThreadSizeEnum"><field name="bitbybit.engineering.enums.isoThreadSizeEnum">'M8'</field></block></value><value name="Unit"><block type="bitbybit.base.enums.unitOfLengthEnum"><field name="bitbybit.base.enums.unitOfLengthEnum">'mm'</field></block></value></block></value><value name="Property"><block type="text"><field name="TEXT">thickness</field></block></value></block></value></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Normal"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">-1</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="Direction"><block type="bitbybit.vector.vectorXYZ"><value name="X"><block type="math_number"><field name="NUM">1</field></block></value><value name="Y"><block type="math_number"><field name="NUM">0</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value></block></value></block></value><next><block type="bitbybit.babylon.scene.adjustActiveArcRotateCamera"><value name="Position"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">30</field></block></value><value name="Y"><block type="math_number"><field name="NUM">12</field></block></value><value name="Z"><block type="math_number"><field name="NUM">-84</field></block></value></block></value><value name="LookAt"><block type="bitbybit.point.pointXYZ"><value name="X"><block type="math_number"><field name="NUM">0</field></block></value><value name="Y"><block type="math_number"><field name="NUM">-3</field></block></value><value name="Z"><block type="math_number"><field name="NUM">0</field></block></value></block></value><value name="LowerBetaLimit"><block type="math_number"><field name="NUM">1</field></block></value><value name="UpperBetaLimit"><block type="math_number"><field name="NUM">179</field></block></value><value name="AngularSensibilityX"><block type="math_number"><field name="NUM">1000</field></block></value><value name="AngularSensibilityY"><block type="math_number"><field name="NUM">1000</field></block></value><value name="MaxZ"><block type="math_number"><field name="NUM">1000</field></block></value><value name="PanningSensibility"><block type="math_number"><field name="NUM">1000</field></block></value><value name="WheelPrecision"><block type="math_number"><field name="NUM">3</field></block></value></block></next></block></next></block></next></block></next></block></xml>
const M8 = Bit.Inputs.Engineering.isoThreadSizeEnum.m8;
const top: Bit.Inputs.Base.Frame = { origin: [0, 10, 0], normal: [0, 1, 0], direction: [1, 0, 0] };
const underneath = (y: number): Bit.Inputs.Base.Frame => ({ origin: [0, y, 0], normal: [0, -1, 0], direction: [1, 0, 0] });
const hole = bitbybit.engineering.mechanical.fasteners.iso.clearanceHole({ size: M8, fit: Bit.Inputs.Engineering.clearanceFitEnum.normal });
const box = await bitbybit.occt.shapes.solid.createBox({ width: 40, length: 40, height: 10, center: [0, 5, 0] });
const plate = await bitbybit.occt.features.holes({ shape: box, frames: [top], diameter: hole, depth: 0 });
const bolt = await bitbybit.occt.parts.mechanical.fasteners.iso.hexBolt({ size: M8, length: 30, frame: top });
const washer = await bitbybit.occt.parts.mechanical.fasteners.iso.washer({ size: M8, frame: underneath(0) });
const { thickness } = bitbybit.engineering.mechanical.fasteners.iso.washerSizes({ size: M8 });
const nut = await bitbybit.occt.parts.mechanical.fasteners.iso.hexNut({ size: M8, frame: underneath(-thickness) });
await bitbybit.draw.drawAnyAsync({ entity: [plate, bolt, washer, nut] });
bitbybit.babylon.scene.adjustActiveArcRotateCamera({ position: [30, 12, -84], lookAt: [0, -3, 0] });
- The normal clearance hole for M8 is 9 millimetres, so the 8 millimetre bolt stands clear of the plate.
- The bolt's frame is the plate's top face, its normal pointing up: the head rises above the plate and the shank runs down through it.
- The washer and the nut take frames under the plate with their normals pointing down, so each rises away from the plate. The washer is 1.6 millimetres thick, so the nut's frame sits 1.6 below the plate.
- A nut's hole is the thread's nominal diameter, so the bolt passes through the nut without overlapping it. The parts touch where they bear and overlap nowhere, which
bitbybit.occt.analysis.clashes.betweenShapesconfirms.
What each standard holds
The metric parts are in bitbybit.occt.parts.mechanical.fasteners.iso, sized by M1.6 to M24:
hexBoltis a hexagon head bolt threaded to the head, ISO 4017, or, withfullyThreadedfalse, threaded only for the length ISO 4014 gives, leaving a plain shank.socketHeadCapScrewis an ISO 4762 cap screw: a round head with a hexagon recess for a key.hexNutis an ISO 4032 hexagon nut, chamfered on both sides.setScrewis a set screw with a hexagon recess, threaded its whole length, with apointthat bears on the part: flat (ISO 4026), cone (ISO 4027), dog (ISO 4028) or cup (ISO 4029).washeris an ISO 7089 plain washer, or withchamferedthe ISO 7090 one, chamfered on the outside of the face away from its seat, from M5.
The inch parts are in bitbybit.occt.parts.mechanical.fasteners.ansi, sized by #0 to 1 inch, coarse (UNC) or fine (UNF) by series:
hexBoltis an ASME B18.2.1 hex cap screw, threaded for the length the standard gives, or to the head withfullyThreaded.socketHeadCapScrewis an ASME B18.3 cap screw.hexNutis a B18.6.3 machine screw nut up to #12 and a B18.2.2 hex nut from 1/4 inch.setScrewis an ASME B18.3 set screw with a cup, flat, cone, oval or half dog point.washeris a B18.22.1 type A plain washer, narrow or wide byseries, from #6.
bitbybit.occt.parts.mechanical.fasteners.dowelPin makes a cylindrical pin of any diameter and length, chamfered at each end after ISO 2338; it starts at its frame's origin and runs along the normal.
The thread is a light face unless you ask for it. A bolt or cap screw shows its threaded length as a face of its own, which draws and builds fast. With modelledThread on, the thread is cut as the machining functions cut one, every face of it named thread, which takes longer to build but is true to the part. A set screw sits with its recessed end on the frame's origin and runs against the normal, into the hole it fills.
Roles
Each part has a twin that names its faces, as Standard parts describes:
bitbybit.occt.parts.mechanical.fasteners.iso.hexBoltWithRolesandbitbybit.occt.parts.mechanical.fasteners.ansi.hexBoltWithRolesname a bolt'shead,seat(under the head),shank,threadandend(the tip); a bolt threaded to its head has noshank. Theirseatframe is the frame you gave.socketHeadCapScrewWithRoles, in both standards, names the same roles and therecess.hexNutWithRolesnames a nut'sseat(its bearing face),top,sideandthread(the hole).setScrewWithRolesnames a set screw'stop(the recessed end),recess,threadandend(the point).washerWithRolesnames a washer'sseat,top,boreandrim, an ISO 7090 washer's chamfer included in therim.bitbybit.occt.parts.mechanical.fasteners.dowelPinWithRolesnames a pin'ssideand itsendfaces, chamfers included.
The tables
bitbybit.engineering.mechanical.fasteners.iso and bitbybit.engineering.mechanical.fasteners.ansi give the numbers the parts are built from, in unit:
clearanceHolegives the diameter of the hole a screw passes through,close,normalorloosebyfit: ISO 273 for metric screws, where M6 normal is 6.6 millimetres, and ASME B18.2.8 for inch ones, where 1/4 normal is 0.281 inches, a 9/32 drill.hexBoltSizesgives a bolt's width across flats, head height and threaded length for alength: an M8 bolt 40 long has 13 across flats, a 5.3 high head and 22 threaded.socketHeadCapScrewSizesgives a cap screw's head, its recess, its threaded length and the counterbore that sinks it below the surface: DIN 974-1 for metric screws, half a millimetre deeper than the head, and 0.02 inches deeper for inch ones.hexNutSizesgives a nut's width across flats and height: M8 is 13 across and 6.8 high.setScrewSizesgives a set screw's recess and its point; a short screw, bylength, gets a shallower recess and, at its cone, a blunter angle.washerSizesgives a washer's inner and outer diameters and thickness, andbitbybit.engineering.mechanical.fasteners.iso.chamferedWasherSizesan ISO 7090 washer chamfered on one face, from M5.
| Function | What it does |
|---|---|
ansi.hexBolt | Makes an ASME B18.2.1 hex cap screw with chamfered top corners, threaded for the length the standard gives, or to the head when fullyThreaded is true. |
ansi.hexBoltWithRoles | Makes a hex cap screw as hexBolt does and names the role each face plays. |
ansi.hexNut | Makes an ASME hex nut, a machine screw nut to #12 and a hex nut from 1/4, its corners chamfered on both sides and its hole at the thread's nominal diameter. |
ansi.hexNutWithRoles | Makes a hex nut as hexNut does and names the role each face plays. |
ansi.setScrew | Makes an ASME B18.3 set screw with a hexagon recess, threaded its whole length, its point a cup, flat, cone, oval or half dog, the recess as deep as the standard asks of its length. |
ansi.setScrewWithRoles | Makes a set screw as setScrew does and names the role each face plays. |
ansi.socketHeadCapScrew | Makes an ASME B18.3 cap screw: a round head with a hexagon recess for a key, and a shank threaded from the tip for the length the standard gives, or to the head on a shorter screw. |
ansi.socketHeadCapScrewWithRoles | Makes a cap screw as socketHeadCapScrew does and names the role each face plays. |
ansi.washer | Makes an ASME B18.22.1 type A plain washer, narrow or wide. |
ansi.washerWithRoles | Makes a plain washer as washer does and names the role each face plays. |
dowelPin | Makes a cylindrical dowel pin with a 45 degree chamfer of a tenth of its diameter at each end, after ISO 2338. |
dowelPinWithRoles | Makes a dowel pin as dowelPin does and names the role each face plays. |
iso.hexBolt | Makes a hexagon head bolt with chamfered top corners: threaded to the head after ISO 4017, or after ISO 4014 only for the length the standard gives when fullyThreaded is false. |
iso.hexBoltWithRoles | Makes a hexagon head bolt as hexBolt does and names the role each face plays. |
iso.hexNut | Makes an ISO 4032 hexagon nut, its corners chamfered on both sides and its hole at the thread's nominal diameter, so a screw of its size passes through without overlapping it. |
iso.hexNutWithRoles | Makes a hexagon nut as hexNut does and names the role each face plays. |
iso.setScrew | Makes a set screw with a hexagon recess, threaded its whole length, its point flat, cone, dog or cup as ISO 4026 to 4029 give them, the recess as deep as they ask of its length. |
iso.setScrewWithRoles | Makes a set screw as setScrew does and names the role each face plays. |
iso.socketHeadCapScrew | Makes an ISO 4762 cap screw: a round head with a hexagon recess for a key, and a shank threaded from the tip for the length the standard gives, or to the head on a shorter screw. |
iso.socketHeadCapScrewWithRoles | Makes a cap screw as socketHeadCapScrew does and names the role each face plays. |
iso.washer | Makes a plain washer: flat after ISO 7089, or after ISO 7090 with its outside chamfered on the face away from the seat. |
iso.washerWithRoles | Makes a plain washer as washer does and names the role each face plays. |
| Function | What it does |
|---|---|
ansi.clearanceHole | Gives the diameter of an ASME B18.2.8 clearance hole for a screw: close, normal or loose. |
ansi.hexBoltSizes | Gives an ASME B18.2.1 hex cap screw's width across flats, head height and threaded length. |
ansi.hexNutSizes | Gives an ASME hex nut: a B18.6.3 machine screw nut from #0 to #12, a B18.2.2 hex nut from 1/4 up, as its width across flats and its height. |
ansi.setScrewSizes | Gives an ASME B18.3 set screw by its size and point: its hexagon recess's size and least depth, and the point's diameter, length, angle and, for an oval point, radius. |
ansi.socketHeadCapScrewSizes | Gives the head of an ASME B18.3 cap screw: its diameter and height, its hexagon recess, the threaded length and the counterbore that sinks it. |
ansi.washerSizes | Gives an ASME B18.22.1 type A plain washer, narrow or wide: its inner and outer diameters and its thickness. |
iso.chamferedWasherSizes | Gives an ISO 7090 washer, chamfered on the outside of one face: its inner and outer diameters, its thickness and its chamfer's height and width. |
iso.clearanceHole | Gives the diameter of an ISO 273 clearance hole for a screw: close, normal or loose. |
iso.hexBoltSizes | Gives the head of an ISO 4014 or 4017 hexagon bolt and how much of its length ISO 4014 threads: the width across flats, the head's height and the threaded length. |
iso.hexNutSizes | Gives an ISO 4032 hexagon nut: its width across flats and its height. |
iso.setScrewSizes | Gives a set screw with a hexagon recess by its size and point: the recess's size and least depth, and the point's diameter, length and angle, as ISO 4026 to 4029 give them. |
iso.socketHeadCapScrewSizes | Gives the head of an ISO 4762 cap screw: its diameter and height, its hexagon recess, the threaded length and the DIN 974-1 counterbore that sinks it. |
iso.washerSizes | Gives an ISO 7089 plain washer: its inner and outer diameters and its thickness. |



