I hereby claim:
- I am haliphax on github.
- I am haliphax (https://keybase.io/haliphax) on keybase.
- I have a public key ASC0LFekXGTz3OedyiQZMCgD_CiApPRAvykdZJCJsqv5wgo
To claim this, I am signing this object:
| include <BOSL2/std.scad>; | |
| module support_fin(raft_diameter, raft_thickness, fin_thickness) { | |
| other = raft_diameter / sqrt(2); | |
| translate([0, 0, other - raft_thickness]) | |
| union() { | |
| // raft | |
| translate([0, 0, -other + raft_thickness]) | |
| linear_extrude(raft_thickness) |
| module slot() { | |
| inside_pts = [ | |
| [0, 8.5], [7.5, 8.5], [9, 8.5], [16, 8.5], [17.5, 8.5], [28.5, 8.5], | |
| [33.5, 3.5], [33.5, -3.5], [28.5, -8.5], [17.5, -8.5], [16, -8.5], | |
| [9, -8.5], [7.5, -8.5], [0, -8.5] | |
| ]; | |
| outside_pts = [ | |
| [0, 7], [7.5, 7], [9, 8.5], [16, 8.5], [17.5, 7], [28, 7], | |
| [32, 3], [32, -3], [28, -7], [17.5, -7], [16, -8.5], [9, -8.5], |
| // Generates a grid of body meshes with pad meshes between them. | |
| // "Fence-post" pattern: N bodies get N-1 pads between them. | |
| // | |
| // STL files must be in the same directory as this script, | |
| // or provide absolute paths. | |
| // | |
| // Pad STLs should have their geometry positioned in object-local | |
| // coordinates so that when placed at the same grid points as the | |
| // bodies, they naturally align into the gaps: | |
| // - h_pad.stl: offset to bridge the horizontal gap |
| """ | |
| BodyExport.FCMacro | |
| Export each selected solid as both STEP and STL into the project file's directory. | |
| Files are named: <project name> - <body name>.<extension> | |
| If no solid objects are selected, top-level results are exported: | |
| - PartDesign::Body objects (unless they are operands of a standalone | |
| boolean result) | |
| - Standalone boolean results (Part::Cut, Part::Fuse, Part::Common) |
| #!/usr/bin/env -S uv run --script | |
| # /// script | |
| # dependencies = ["numpy-stl"] | |
| # /// | |
| """ | |
| This script is for creating stacks of more-or-less flat meshes that have | |
| symmetrical top and bottom faces (e.g. Multiboard). The gap (default 0.2mm) | |
| should be set to your slicer's layer height. The resulting file should be | |
| printed with 3 walls, 15% infill, with ironing of all top surfaces enabled. |
| """ | |
| Parse Guild Wars Reforged skill template codes | |
| See https://wiki.guildwars.com/wiki/Skill_template_format for reference and | |
| profession/attribute/skill indexes. | |
| """ | |
| # stdlib | |
| from dataclasses import dataclass | |
| from typing import Any, Generator |
| /** printable ASCII characters */ | |
| const ascii = []; | |
| for (let i = 33; i <= 126; ascii.push(String.fromCharCode(i++))); | |
| /** generate random string */ | |
| const randomString = limit => { | |
| const result = []; | |
| for (let i = 0; i < limit; i++) { | |
| const index = Math.floor(Math.random() * (126 - 33) + 33); |
| import { UserConfig } from "@11ty/eleventy"; | |
| import { DOMParser } from "@xmldom/xmldom"; | |
| import { transform } from "esbuild"; | |
| import { minify } from "html-minifier"; | |
| /** cache for content of script tags with an ID */ | |
| const scriptCache = new Map<string, string>(); | |
| /** DOM parser for navigating the rendered document; warnings are ignored */ | |
| const parser = new DOMParser({ errorHandler: { warning: () => {} } }); |
| #!/usr/bin/env bash | |
| # install gitmoji as a commit hook | |
| # | |
| # - uses https://www.npmjs.com/package/gitmoji-cli | |
| # - does not require global module installation | |
| # - skips hook if message already starts with gitmoji | |
| root="$(git rev-parse --show-toplevel)" | |
| hook="$root/.git/hooks/prepare-commit-msg" |
I hereby claim:
To claim this, I am signing this object: