This commit is contained in:
topicchi
2026-02-04 16:42:48 +00:00
parent 53f05ad542
commit bc914a7fec
11 changed files with 516 additions and 0 deletions

View File

@@ -0,0 +1 @@
This thing was created by Thingiverse user papipapito, and is licensed under Creative Commons - Attribution

View File

@@ -0,0 +1,4 @@
MSX cartridge for FBlabs SD mapper V2 by papipapito on Thingiverse: https://www.thingiverse.com/thing:6056918
Summary:
cartridge for the Fbals SD mapper V2 board, very basic, but it does its job

View File

@@ -0,0 +1,216 @@
$fn = 128;
height = 8.5;
width = 109;
box_height = 71;
wall = 3;
lowered = 6.8; // height of indented wall at bottom of cartridge
fixation1_x = 11.8;
fixation_y = 35.5;
fixation2_x = 97;
abutment_size = 7;
module base()
{
cube([width, box_height, wall]);
}
module wall()
{
difference(){
cube([wall,box_height,height]);
//translate ([-1,51,5])
//cube(15);
}
}
module wall1()
{
cube([wall,box_height,height]);
}
module abutment(height=lowered)
{
cube([abutment_size,wall, height]);
}
module top()
{
difference(){
translate([00,box_height-wall,0])
cube([width, wall, height]);
translate ([18,60,5])
cube (27);
}
}
module bottom()
{
cube([15.5, wall, height]);
translate([width-5.5, 0,0])
cube([5.5, wall, height]);
}
module fixations()
{
translate([fixation1_x,fixation_y,0])
cylinder(h=lowered, r=3.5);
translate([fixation2_x,fixation_y,0])
cylinder(h=lowered, r=3.5);
}
module fixations_holes()
{
translate([fixation1_x,fixation_y,-1])
{
cylinder(h=height-3+1, r=2.5);
cylinder(h=height+1, r=1.2);
}
translate([fixation2_x,fixation_y,-1])
{
cylinder(h=height-3+1, r=2.5);
cylinder(h=height+1, r=1.2);
}
}
module indent_wall()
{
translate([0,18,0])
cube([22,wall,lowered]);
translate([27.1, 13.4, 0])
rotate([0,0,125])
cube([9.3, wall, lowered]);
translate([24.4, 11.8, ])
cube([70.2,wall,lowered]);
translate([width-14.4, 11.8, 0])
rotate([0,0,55])
cube([8.3, wall, lowered]);
translate([width-12,18,0])
cube([12,wall,lowered]);
#fixations();
}
module marker_box()
{
translate([4,0,0])
cube([9,13,5]);
}
module marker_wall()
{
translate([13-wall, 0, 0])
cube([wall, 18, lowered]);
}
module eye_box()
{
translate([8.5,19.25,0])
cylinder(h=height, r=5.1); // larger hole, for mark
}
module eye_hole()
{
translate([8.5,19.25,-1])
cylinder(h=height+2, r=3.1); // larger hole, for mark
}
module reinformcements()
{
translate([0,32,0])
abutment();
translate([0,54,0])
abutment(0);
translate([width-abutment_size,32,0])
abutment();
translate([width-abutment_size,54,0])
abutment();
translate([width-28,box_height-abutment_size, 0])
rotate([0,0,90])
abutment();
translate([width/2+1,box_height-abutment_size, 0])
rotate([0,0,90])
abutment();
translate([40,11.8, 0])
rotate([0,0,90])
abutment();
translate([80,11.8, 0])
rotate([0,0,90])
abutment();
}
module support_pin()
{
difference()
{
cylinder(h=lowered, r=6.5/2);
translate([0,0,wall])
cylinder(h=lowered, r=4.5/2);
}
}
module support_pins()
{
translate([31,19.25+5,0])
support_pin();
translate([31+56,19.25, 0])
support_pin();
}
module block()
{
base();
wall();
reinformcements();
translate([width-wall,0,0])
wall1();
top();
bottom();
indent_wall();
marker_box();
marker_wall();
eye_box();
support_pins();
}
module marker_hole()
{
translate([8.5,13,height])
rotate([90,0,0])
cylinder(h=13+1, r=3.5);
}
module outer_marker_hole()
{
translate([9.0,12/2-1,-1.5])
rotate([0,40,0])
cube([height, 12, height], center=true);
translate([8.0,12/2-1,-1.5])
rotate([0,50,0])
cube([height, 12, height], center=true);
}
module holes()
{
marker_hole();
eye_hole();
#fixations_holes();
outer_marker_hole();
}
difference()
{
block();
holes();
}

Binary file not shown.

View File

@@ -0,0 +1,295 @@
$fn = 128;
height = 8.5;
width = 109;
box_height = 71;
wall = 3;
lowered = 7; // height of indented wall at bottom of cartridge
fixation1_x = 11.8;
fixation_y = 35.5;
fixation2_x = 97;
abutment_size = 8;
module base()
{
difference(){
cube([width, box_height, wall]);
translate([46,57,-1])
cube([5,10,15]);
}
}
module wall()
{
cube([wall,box_height,height]);
}
module abutment(height=lowered)
{
cube([abutment_size,wall, height]);
}
module top()
{
difference(){
translate([0,box_height-wall,0])
cube([width, wall, height]);
translate ([18,60,5])
cube(27);
translate ([73,60,5])
cube(20);
}
}
module close_top()
{
difference(){
translate([2*wall,box_height-2*wall,0])
cube([width-4*wall, wall, height+1]);
translate ([18,60,5])
cube(27);
translate ([73,60,5])
cube(20);
}
}
module bottom()
{
cube([15.5, wall, height]);
translate([width-5.5, 0,0])
cube([5.5, wall, height]);
}
module close_bottom()
{
translate([2*wall,wall,0])
cube([13.5-wall, wall, height+1]);
translate([width-wall-3.5, wall,0])
cube([3.5-wall, wall, height+1]);
}
module close_corners()
{
translate([wall,wall,0])
{
intersection()
{
translate([wall,wall,0])
cylinder(h=height+1, r=wall);
cube([wall,wall,height+1]);
}
cube([wall,wall,height]);
}
translate([wall,box_height-2*wall,0])
{
intersection()
{
translate([wall,0,0])
cylinder(h=height+1, r=wall);
cube([wall,wall,height+1]);
}
cube([wall,wall,height]);
}
translate([width-2*wall,box_height-2*wall,0])
{
intersection()
{
cylinder(h=height+1, r=wall);
cube([wall,wall,height+1]);
}
cube([wall,wall,height]);
}
translate([width-2*wall,wall,0])
{
intersection()
{
translate([0,wall,0])
cylinder(h=height+1, r=wall);
cube([wall,wall,height+1]);
}
cube([wall,wall,height]);
}
}
module fixations()
{
translate([fixation1_x,fixation_y,0])
{
cylinder(h=height, r=3.5);
//cylinder(h=12.4, r=2.25);
}
translate([fixation2_x,fixation_y,0])
{
cylinder(h=height, r=2.5);
//cylinder(h=12.4, r=2.25);
}
}
module fixations_holes()
{
translate([fixation1_x,fixation_y,wall])
{
cylinder(h=height+1, r=1);
}
translate([fixation2_x,fixation_y,wall])
{
cylinder(h=height+1, r=1);
}
}
module indent_wall()
{
translate([0,18,0])
cube([22,1,height]);
#translate([25.1, 12.3, 0])
rotate([0,0,125])
cube([8.3, 1, height]);
translate([24.4, 11.8, ])
cube([70.2,1,height]);
#translate([width-14.4, 11.8, 0])
rotate([0,0,55])
cube([7.3, 1, height]);
translate([width-12,18,0])
cube([12,1,height]);
#fixations();
}
module marker_box()
{
translate([4,0,0])
cube([9,13,5]);
}
module marker_wall()
{
translate([13-wall, 0, 0])
cube([wall, 18, lowered]);
}
module eye_box()
{
translate([8.5,19.25,0])
cylinder(h=height, r=5.1); // larger hole, for mark
}
module eye_hole()
{
translate([8.5,19.25,-1])
cylinder(h=height+2, r=3.1); // larger hole, for mark
}
module reinformcements()
{
translate([0,32,0])
abutment();
translate([0,54,0])
abutment();
translate([width-abutment_size,32,0])
abutment();
translate([width-abutment_size,54,0])
abutment();
translate([width/2+1,box_height-abutment_size, 0])
rotate([0,0,90])
abutment();
translate([40,11.8, 0])
rotate([0,0,90])
abutment();
translate([80,11.8, 0])
rotate([0,0,90])
abutment();
}
module support_pin()
{
cylinder(h=height/2, r=6.5/2);
cylinder(h=height+height-wall, r=3.8/2);
}
module support_pins()
{
translate([31,19.25+5,0])
support_pin();
translate([31+56,19.25, 0])
support_pin();
}
module close_wall()
{
translate([0,wall,0])
cube([wall,box_height-4*wall,height+1]);
}
module block()
{
base();
wall();
//translate([wall,wall,0])
//close_wall();
//translate([width-2*wall,wall,0])
//close_wall();
reinformcements();
translate([width-wall,0,0])
wall();
top();
//close_top();
bottom();
//close_bottom();
//close_corners();
indent_wall();
marker_box();
marker_wall();
eye_box();
support_pins();
}
module marker_hole()
{
translate([8.5,13,height])
rotate([90,0,0])
cylinder(h=13+1, r=3.5);
}
module outer_marker_hole()
{
translate([9.0,12/2-1,-1.5])
rotate([0,40,0])
cube([height, 12, height], center=true);
translate([8.0,12/2-1,-1.5])
rotate([0,50,0])
cube([height, 12, height], center=true);
}
module close_wall_eye_hole_cutout()
{
translate([8.5,19.25,height])
cylinder(h=2, r=5.3); // larger hole, for mark, cutout in close_wall
// Make it a tiny bit larger for better fit.
}
module holes()
{
marker_hole();
eye_hole();
fixations_holes();
close_wall_eye_hole_cutout();
//outer_marker_hole();
}
mirror([1,0,0])
{
difference()
{
block();
holes();
}
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB