SCAD中如何将矩形框架侧边插槽移至侧边中心?
矩形框架侧边插槽居中问题排查与解决

如上图所示,矩形框架的某一侧边上有一个偏位的小插槽,需要将其移至该侧边中心位置,但当前SCAD代码未达到预期效果。
问题代码片段
// 创建头带顶部切口(位于短边中间) translate([outer_length / 2 - slot_width / 2, -outer_width / 2, -border_height]) { cube([slot_width, border_height + 1, slot_depth]); }
原本通过除以2的计算尝试实现居中,但效果不符;已尝试交换outer_length与outer_width、在坐标前加0,均未解决问题。
完整框架代码
// 矩形框架参数 outer_length = 85; // 框架外部长度(单位:毫米) outer_width = 65; // 框架外部宽度(单位:毫米) border_thickness = 2; // 凸起边框厚度(单位:毫米) border_height = 10; // 凸起边框高度(单位:毫米) inner_length = outer_length - 2 * border_thickness; // 框架内部长度(单位:毫米) inner_width = outer_width - 2 * border_thickness; // 框架内部宽度(单位:毫米) bottom_thickness = 1; // 底部薄不透明层厚度(单位:毫米) corner_radius = 5; // 圆角半径(单位:毫米) slot_width = 10; // 头带插槽宽度(单位:毫米) slot_depth = 5; // 头带插槽深度(单位:毫米) // 创建带圆角、中空内部及底部薄不透明层的矩形框架模块 module rec_frame() { difference() { // 创建带圆角的凸起边框外壳 translate([0, 0, -border_height]) linear_extrude(height = border_height + bottom_thickness) { offset(r = corner_radius) { square([outer_length, outer_width], center = true); } } // 创建带圆角的内部中空部分 translate([0, 0, -border_height]) linear_extrude(height = border_height + bottom_thickness) { offset(r = corner_radius - 1) { square([inner_length, inner_width], center = true); } } // 创建底部薄不透明层 translate([0, 0, -bottom_thickness]) square([outer_length, outer_width], center = true); // 创建头带顶部切口(位于短边中间) translate([outer_length / 2 - slot_width / 2, -outer_width / 2, -border_height]) { cube([slot_width, border_height + 1, slot_depth]); } } // 创建底部薄不透明层 translate([0, 0, -bottom_thickness - border_height]) linear_extrude(height = bottom_thickness) { offset(r = corner_radius) { square([outer_length, outer_width], center = true); } } } // 调用模块创建框架 rec_frame();
第二个缩进插槽代码
// 创建框架中心的头带凹槽 translate([outer_length / 2 - slot_width / 2, 0, -border_height - indent_depth]) { cube([slot_width, outer_width, indent_depth]); } // 创建凹槽内的头带顶部插槽 translate([outer_length / 2 - slot_width / 2, 0, -border_height - indent_depth]) { cube([slot_width, outer_width, slot_depth]); } // 创建凹槽内的头带底部插槽 translate([outer_length / 2 - slot_width / 2, 0, -border_height - indent_depth - slot_depth]) { cube([slot_width, outer_width, slot_depth]); }
问题原因与修正方案
核心问题
- 坐标计算逻辑错误:当前代码中
outer_length / 2 - slot_width / 2是将插槽定位到长边的右侧区域,而非短边的中心位置;Y轴的-outer_width/2是短边的最外侧边缘,而非中心对齐的参考点。 - 立方体尺寸方向未匹配侧边:插槽的延伸方向需要与侧边长度方向对齐,否则会出现偏移视觉效果。
修正后的插槽代码(短边居中)
如果要在Y=-outer_width/2的短边(左侧短边)实现X方向居中,可采用两种方式:
- 方式1:启用立方体的中心对齐参数
// 创建头带顶部切口(位于短边中间) translate([0, -outer_width / 2, -border_height]) { cube([slot_width, border_height + 1, slot_depth], center=true); }
- 方式2:手动计算X轴偏移
// 创建头带顶部切口(位于短边中间) translate([-slot_width/2, -outer_width / 2, -border_height]) { cube([slot_width, border_height + 1, slot_depth]); }
第二个缩进插槽的修正逻辑
同理,要实现X方向居中,将平移坐标的X值改为-slot_width/2,或给cube添加center=true参数,即可让插槽在目标侧边居中。
内容的提问来源于stack exchange,提问作者Jackie Chiljian
相关产品推荐
相关产品推荐

