OpenSCAD技术问询:如何在八边形侧边中部制作凹陷圆形
在OpenSCAD八边形侧边添加凹陷圆形的实现方法
要给八边形每条侧边中部做直径11mm、深度6mm的凹陷,核心是在magnetic_lip的difference模块中,添加挖去8个对应位置圆柱的逻辑,具体实现如下:
关键参数计算
先确定八边形侧边中点的坐标:
- 原八边形由
circle(d=inner_diameter, $fn=8)偏移lip_width得到,八边形外接圆半径为(inner_diameter/2) + lip_width - 八边形侧边中点到中心的距离 = 外接圆半径 ×
cos(π/8)(八边形边心距公式) - 每个侧边中点的角度间隔为45°(八边形8条边,一周360°均分)
修改后的完整代码
$fn = 150; // 圆形部分平滑度 outer_diameter = 103; // 软管连接部外径 inner_diameter = 100; // 内径(适配软管) adapter_height = 50; // 适配器高度 lip_height = 25; // 磁吸连接唇的高度 lip_width = 40; // 磁吸唇的厚度 // 八边形磁吸唇 module magnetic_lip() { // 计算八边形侧边中点的关键参数 octagon_outer_radius = (inner_diameter / 2) + lip_width; edge_mid_radius = octagon_outer_radius * cos(pi / 8); // 边中点到中心的距离 recess_d = 11; // 凹陷圆直径 recess_depth = 6; // 凹陷深度 difference() { // 外层八边形唇 linear_extrude(height=lip_height) offset(delta=lip_width, chamfer=false) circle(d=inner_diameter, $fn=8); // 八边形 // 内层圆孔 translate([0, 0, -1]) cylinder(h=lip_height + 2, d=outer_diameter); // 挖去8个侧边凹陷圆 for (angle = [0 : 45 : 315]) { // 计算当前侧边中点的坐标 x = edge_mid_radius * cos(angle * pi / 180); y = edge_mid_radius * sin(angle * pi / 180); // 生成凹陷圆柱(z轴负方向偏移1,确保完全挖透) translate([x, y, -1]) cylinder(h=recess_depth + 2, d=recess_d); } } } // 完整装配 module hose_adapter() { union() { magnetic_lip(); } } // 渲染模型 hose_adapter();
代码说明
- 用
for循环遍历8个侧边的角度(0°、45°、90°…315°),计算每个侧边中点的坐标 - 将圆柱移动到对应位置,圆柱高度设为
recess_depth + 2并向下偏移1mm,确保完全挖透凹陷部分,避免残留 - 把凹陷的直径和深度单独定义为变量,后续调整尺寸更便捷
内容的提问来源于stack exchange,提问作者M Becker
相关产品推荐
相关产品推荐

