当前位置: 首页 > news >正文

螺丝工厂vtk ThreadFactory(1)

螺丝工厂vtkThreadFactory (1)

缘起

几年前的探索在Python里应用Openscad实现3D建模之3D螺纹建模初探3

新的参考:

  • generating nice threads in openscad
  • vtkRotationalExtrusionFilter

辅助AI: coze

笔记📒:

openscad 代码分析

// 半径缩放函数,用于生成起始和结束段的锥度过度效果
function lilo_taper(x, N, tapered_fraction) = // 计算最小值,确保缩放值在适当范围内,用于生成平滑过渡的Higbee 倒角效果 min(min(1, (1.0 / tapered_fraction) * (x / N)), (1 / tapered_fraction) * (1 - x / N));
// 模块定义: 生成一个具有 Higbee 倒角的螺旋螺纹,可以附着到一个圆柱表面
module straight_thread(section_profile, pitch = 4, turns = 3, r = 10, higbee_arc = 45, fn = 120)
{// 设置细分精度$fn = fn;// 计算步数:总圈数 * 每圈细分数steps = turns * $fn;// 生成螺旋造型的主逻辑thing = [ for (i = [0:steps])transform(// 每步的旋转角度,减90度使之始终与X方向对齐rotation([0, 0, 360 * i / $fn - 90]) *// 逐步上升,在半径r处具体位置,模型随i上升translation([0, r, pitch * i / $fn]) *// 将截面旋转90度使其竖直rotation([90, 0, 0]) *// 沿Z轴方向解旋转rotation([0, 90, 0]) *// 使用缩放以实现Higbee 倒角效应,初始化缩放是0.01~1之间scaling([0.01 + 0.99 * lilo_taper(i / turns, steps / turns, (higbee_arc / 360) / turns), 1, 1]),// 使用定义的截面轮廓section_profile)];// 将转换后的点集皮肤成一个连续的形状skin(thing);
}

function lilo_taper 详细说明:

  • 输入参数:
    x: 当前点的标识(通常是步进值)。
    N: 总标识数量(通常是总步数)。
    tapered_fraction: 反映锥度部分的比例,即起始和结束段的锥度部分占整个长度的比例。
  • 内部表达式:
    min(min(1, (1.0 / tapered_fraction) * (x / N)), (1 / tapered_fraction) * (1 - x / N)):
    (1.0 / tapered_fraction) * (x / N):
    这里的 (x / N) 表示当前点在整个长度中的位置占比。
    将占比乘以 (1.0 / tapered_fraction),计算缩放比。
    (1 / tapered_fraction) * (1 - x / N):
    这里的 (1 - x / N) 表示当前点距离结束的比例(从结束点向起始点反向计算)。
    同样,将这个比例乘以 (1.0 / tapered_fraction),计算缩放比。
    min(1, (1.0 / tapered_fraction) * (x / N)):
    取1和计算出的缩放比中的最小值,确保缩放比不会超过1。
    min( ..., (1 / tapered_fraction) * (1 - x / N)):
    最后通过再取一次最小值,确保当前点的缩放系数位于合理范围内,平滑生成锥度效果。
  • 应用场景
    用于螺纹的起始和结束锥形设计:
    确保螺纹的起始和结束部分平滑变化,避免突然的截断或锐边。
    即形成 Higbee 倒角,这种倒角的目的是消除螺纹齿的尖端,以便更平稳地开始和终止螺纹的啮合。
  • 关键点
    缩放过程:
    x: 当前步进的计数。
    N: 总步数。
    tapered_fraction: 锥度比例,影响螺纹的起始和结束部分的平滑度。
    min 函数用来确保缩放系数合适,不会出现过大或过小的情况,导致意外的几何形变。
    通过这段代码,可以实现对螺纹起始和结束部分的锥度缩放,保证这部分的几何形状平滑过渡,提高螺纹啮合的效果和质量。

在这里插入图片描述
在这里插入图片描述

vtk + python 代码分析:

应用vtkRotationalExtrusionFilter, 可以实现类似的螺旋堆叠:
如:

在这里插入图片描述
代码参见

未完待续…

http://www.lryc.cn/news/372976.html

相关文章:

  • Android13 蓝牙协议属性配置详解
  • 南通国际高中有哪些?南通惠立学校高中部校长见面日重磅来袭
  • Al智能图像处理APP,安卓手机专用一键优化工具资源合集下载
  • Kettle根据分类实现Excel文件拆分——kettle开发31
  • merkle tree中文
  • 制作自己的 @OnClick、@OnLongClick(告别 setOnClickListener,使用注解、反射和动态代理)
  • Android基础-RecyclerView的优点
  • C# Winform 用户控件,扩展控件,自定义控件综合实例
  • 经济学和金融学有什么区别?
  • Java课程设计:基于swing的学生信息管理系统
  • 【代码】3d->video
  • 算法01 递推算法及相关问题详解【C++实现】
  • 自动化测试火狐下载文件
  • 基于JSP技术的定西扶贫惠农推介系统
  • Linux 终端窗口设置为透明
  • MySQL 中 Varchar(50) 和 varchar(500) 区别是什么?
  • 强化RAG:微调Embedding还是LLM?
  • 提取 Excel单元格文本下的超链接
  • 一键安全体检!亚信安全携手鼎捷软件推出企业安全体检活动 正式上线
  • numpy - array(1)
  • 师彼长技以助己(6)递归思维
  • Kali Linux 2024.2
  • 【Spine学习08】之短飘,人物头发动效制作思路
  • chatgpt的命令词
  • 用python把docx批量转为pdf
  • 项目采购管理
  • Elasticsearch 认证模拟题 - 18
  • Python基础-速记笔记
  • 青少年编程与数学 01-001开始使用计算机 02课题、计算机操作系统3_3
  • 填表统计预约打卡表单系统(FastAdmin+ThinkPHP+UniApp)