You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:50:06