394 lines
15 KiB
OpenSCAD
394 lines
15 KiB
OpenSCAD
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|