commit 9ff44d761ce10d2aa8cb0c58cdb39828bb88e287 Author: Chao Guo Date: Sun May 4 21:42:39 2025 +0800 机器人缓坡 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..903e4f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.stl +*.3mf \ No newline at end of file diff --git a/机器人缓坡1.scad b/机器人缓坡1.scad new file mode 100644 index 0000000..3b60b7d --- /dev/null +++ b/机器人缓坡1.scad @@ -0,0 +1,60 @@ +union() { + linear_extrude(height=20) + polygon([ + [12, 30], + [11, 29], + [11, 28], + [22, 12], + [22, 11], + [21, 10], + [2, 10], + [1, 9.7], + [0, 8 ], + [0, 0 ], + [64, 0 ], + [64, 8 ], + [63.7, 9.7], + [63, 10], + [44, 10], + [42.3, 10.3], + [42, 12], + [53.7, 28.3], + [54, 29.7], + [53, 30], + ]); + + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } +} + diff --git a/机器人缓坡2-3+2+2.scad b/机器人缓坡2-3+2+2.scad new file mode 100644 index 0000000..ae651c2 --- /dev/null +++ b/机器人缓坡2-3+2+2.scad @@ -0,0 +1,393 @@ +translate([0,0,0]) { + union() { + translate([0,0,0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + translate([64, 0, 0]) { + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + translate([128, 0, 0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + } +} +translate([200,0,0]) { + union() { + translate([0,0,0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + translate([64, 0, 0]) { + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + translate([128, 0, 0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + } +} +translate([400,0,0]) { + union() { + translate([0,0,0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + translate([64, 0, 0]) { + linear_extrude(height=20) + polygon([ + [12, 20], + [11, 19], + [11, 18], + [22, 2], + [22, 1], + [21, 0], + [2, 0], + [44, 0], + [42.3, 0.3], + [42, 2], + [53.7, 18.3], + [54, 19.7], + [53, 20], + ]); + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } + } + } +} + + diff --git a/机器人缓坡2.scad b/机器人缓坡2.scad new file mode 100644 index 0000000..3b60b7d --- /dev/null +++ b/机器人缓坡2.scad @@ -0,0 +1,60 @@ +union() { + linear_extrude(height=20) + polygon([ + [12, 30], + [11, 29], + [11, 28], + [22, 12], + [22, 11], + [21, 10], + [2, 10], + [1, 9.7], + [0, 8 ], + [0, 0 ], + [64, 0 ], + [64, 8 ], + [63.7, 9.7], + [63, 10], + [44, 10], + [42.3, 10.3], + [42, 12], + [53.7, 28.3], + [54, 29.7], + [53, 30], + ]); + + difference() { + polyhedron( + points = [ + [0,0,0], // 索引 0: V0 + [0,0,20], // 索引 1: V1 + [64,0,20], // 索引 2: V2 + [64,0, 0], // 索引 3: V3 + [64,-60,0],// 索引 4: V4 + [0, -60,0] // 索引 5: V5 + ], + faces = [ + // 修正后的 faces 列表: + [0, 5, 4, 3], // Bottom (Z=0) - 确认顺序,从外部看顺时针 + [1, 0, 3, 2], // Face at Y=0 (Vertical Front) - 确认顺序,从外部看顺时针 + [1, 2, 4, 5], // Top (Sloped) - 确认顺序,从外部看顺时针 + [1, 5, 0], // Left Side (X=0, Triangle) - 确认顺序,从外部看顺时针 + [2, 3, 4] // Right Side (X=64, Triangle) - 确认顺序,从外部看顺时针 + ] + ); + translate([0, -60, 0]) + difference() { + cube(4); + translate([4,4,0]) + cylinder(h=4, r=4); + } + + translate([60, -60, 0]) + difference() { + cube(4); + translate([0,4,0]) + cylinder(h=4, r=4); + } + } +} +