Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Rocinante.scad
- //
- // Version 1, May 1, 2025
- // By: Stone Age Sculptor
- // License: CC0 (only this script, not the fonts)
- //
- // Find the fonts yourself!
- // I could not find the right fonts
- // with a free/open license.
- //
- // OpenSCAD can finetune the shapes of a font.
- // A text can be made heavier or lighter
- // with the offset() function, it
- // can be scaled in one direction,
- // and the intercharacter spacing
- // can be adjusted, the corners can
- // be made round, and so on.
- // Overall accuracy, 10 is very low, 500 is very high.
- $fn = 200;
- // ----------------------------------------
- // Use the fonts that you found here.
- // ----------------------------------------
- use <BankGothicLH Heavy.ttf>
- font1 = "BankGothicLH:style=Heavy";
- // use <FF-DIN-Black.ttf>
- // font2 = "DIN Black:style=Regular";
- use <645-font.otf>
- font2 = "DIN Pro:style=Condensed Black";
- // ----------------------------------------
- // The size of the base plate in millimeters (14" x 10.5").
- xsize = 14 * 25.4;
- ysize = 10.5 * 25.4;
- // The distance between the outer edge and the rectangle.
- edge_outer = 9;
- // The width of the rectangle.
- edge_linewidth = 4;
- // The thickness of the base plate.
- thickness_plate = 10;
- // The thickness of the text.
- thickness_print = 2;
- // The width of the bar below the Rocinante text.
- bar_width = 4;
- // The diameter of the circles in the text.
- circle_diameter = 4;
- // The distance between the edge and the center of a hole.
- hole_offset = 23;
- // The diameter of the hole that goes through and through.
- hole_diameter = 3;
- // The diameter of the wider part of the hole.
- hole_wider = 10;
- // The depth of the wider part of the hole.
- depth_wider = 3;
- // Helper value to avoid rounding errors.
- epsilon = 0.001;
- color("Gray")
- {
- difference()
- {
- // The base plate.
- cube([xsize,ysize,thickness_plate],center=true);
- // Remove the holes.
- for(xm=[-1,1],ym=[-1,1])
- {
- x = xm*(xsize/2-hole_offset);
- y = ym*(ysize/2-hole_offset);
- ztop = thickness_plate/2;
- translate([x,y,0])
- {
- cylinder(h=100,d=hole_diameter,center=true);
- translate([0,0,ztop-depth_wider])
- cylinder(h=100,d=hole_wider);
- }
- }
- }
- }
- color("Silver")
- {
- // The print is sunk into the base plate,
- // to be sure that they connect.
- translate([0,0,thickness_plate/2+thickness_print-epsilon])
- {
- linear_extrude(thickness_print+epsilon)
- {
- // The rectangle.
- difference()
- {
- x1 = xsize-2*edge_outer;
- y1 = ysize-2*edge_outer;
- x2 = x1 - 2*edge_linewidth;
- y2 = y1 - 2*edge_linewidth;
- square([x1,y1],center=true);
- square([x2,y2],center=true);
- }
- // The parameter "spacing" is the intercharacter spacing.
- // It is default 1.
- translate([0,58])
- text("ROCINANTE",font=font1,size=32,spacing=0.98,halign="center");
- // This position and the length of the bar
- // could be calculated with the new textmetrics()
- // function.
- // For now, the numbers are visually finetuned.
- translate([1.70,47])
- square([280.6,bar_width],center=true);
- translate([0,15])
- text("AN INDEPENDENT SHIP",font=font2,size=12,spacing=1.1,halign="center");
- translate([0,-2])
- text("OWNED & OPERATED BY",font=font2,size=12,spacing=1.1,halign="center");
- translate([0,-34])
- text("JAMES NOLDEN NAOMI NAGATA",font=font2,size=15,spacing=1.05,halign="center");
- translate([0,-54])
- text("ALEX KAMAL AMOS BUNTON",font=font2,size=15,spacing=1.05,halign="center");
- translate([0,-86])
- text("A LEGITIMATE SAVAGE",font=font2,size=14,spacing=1.05,halign="center");
- // Not every font might have the definition
- // for the circle, therefor they are
- // just circles and visually positioned.
- translate([0.7,-26.7])
- circle(d=circle_diameter);
- translate([-7,-46])
- circle(d=circle_diameter);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment