├── 04~连接件设计 ├── 02~键连接.md ├── 04~销连接.md ├── 01~螺纹连接.md ├── 03~花键连接.md └── 05~焊接连接.md ├── 05~轴系设计 ├── 01~轴的设计.md ├── 02~轴承选用.md ├── 04~轴系零件.md └── 03~联轴器设计.md ├── 08~弹簧设计 ├── 02~片弹簧.md ├── 03~特种弹簧.md └── 01~圆柱螺旋弹簧.md ├── 02~机械零件的强度 ├── 01~强度计算基础.md ├── 02~疲劳强度.md ├── 03~接触强度.md └── 04~表面强度.md ├── 03~摩擦、磨损与润滑 ├── 02~磨损分析.md ├── 03~润滑设计.md └── 01~摩擦学基础.md ├── 06~传动系统设计 ├── 01~带传动.md ├── 02~链传动.md ├── 03~齿轮传动.md └── 04~蜗杆传动.md ├── 07~离合器与制动器 ├── 01~离合器设计.md └── 02~制动器设计.md ├── 09~支承结构设计 ├── 01~机架设计.md ├── 02~导轨设计.md └── 03~密封装置.md ├── 10~机械系统设计 ├── 01~总体设计.md ├── 02~可靠性设计.md └── 03~人机工程设计.md ├── 01~机械设计总论 ├── 01~机械设计的任务与内容.md ├── 02~机械产品的质量要求.md └── 03~机械设计的标准化.md ├── 20~计算机辅助设计 ├── CAD │ ├── 01~CAD 基础.md │ ├── 03~参数化设计.md │ ├── OCC │ │ └── README.md │ ├── Truck │ │ └── README.md │ ├── README.md │ ├── 99~参考资料 │ │ ├── 《CAD in 1 Hour》 │ │ │ └── README.md │ │ └── 2024~模型处理软件之几何内核.md │ └── CADmium │ │ └── 99~参考资料 │ │ └── 2024~CADmium: A Local-First CAD Program Built for the Browser.md ├── CAM │ ├── README.md │ ├── 10~CAM 软件应用 │ │ ├── NX CAM │ │ │ └── README.md │ │ ├── MasterCAM │ │ │ └── README.md │ │ └── PowerMill │ │ │ └── README.md │ ├── 03~加工工艺规划 │ │ ├── 01~工艺分析.md │ │ ├── 02~加工参数优化.md │ │ └── 03~质量控制.md │ ├── 02~刀具与加工工艺 │ │ └── README.link │ ├── 01~CAM 基础知识 │ │ ├── 02~数控加工基础 │ │ │ └── README.md │ │ └── 01~CAM 概述 │ │ │ └── README.md │ ├── 04~数控编程 │ │ └── README.md │ └── 05~加工仿真与验证 │ │ └── README.md ├── PLM │ └── README.md ├── 04~CAX │ ├── 数据交换标准 │ │ ├── README.md │ │ ├── OBJ │ │ │ └── OBJ 与 MTL 格式.md │ │ ├── STL │ │ │ ├── 99~参考资料 │ │ │ │ └── 2009-Polyhedral Mass Properties.pdf │ │ │ └── README.md │ │ ├── GKSM │ │ │ └── GKSM.md │ │ ├── glTF │ │ │ └── gITF.md │ │ ├── STP │ │ │ └── STEP.md │ │ └── BRep │ │ │ └── README.md │ └── 3D 建模 │ │ └── Blender │ │ └── README.md ├── CAE │ ├── 01~CAE 理论知识 │ │ ├── 02~有限元分析.md │ │ ├── 01~CAE 概述 │ │ │ └── README.md │ │ └── 02~数值分析基础 │ │ │ └── README.md │ ├── 04~热分析 │ │ ├── 01~传热学基础 │ │ │ └── README.md │ │ └── 02~热分析类型 │ │ │ └── README.md │ ├── 06~优化设计 │ │ ├── 01~优化理论基础.md │ │ └── 02~结构优化方法.md │ ├── 03~流体分析(CFD) │ │ ├── 01~流体力学基础.md │ │ └── 02~流场分析.md │ ├── 05~多物理场耦合分析 │ │ ├── 01~流固耦合(FSI).md │ │ ├── 02~其他耦合分析.md │ │ └── README.md │ ├── 02~结构分析 │ │ ├── 02~动力分析 │ │ │ └── README.md │ │ ├── 03~非线性分析 │ │ │ └── README.md │ │ └── 01~静力分析 │ │ │ └── README.md │ ├── 10~CAE 软件 │ │ └── README.md │ └── README.md ├── 仿真软件 │ └── README.md ├── README.md └── 2025~工业软件概览.md └── README.md /04~连接件设计/02~键连接.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04~连接件设计/04~销连接.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~轴系设计/01~轴的设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~轴系设计/02~轴承选用.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~轴系设计/04~轴系零件.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08~弹簧设计/02~片弹簧.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08~弹簧设计/03~特种弹簧.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~机械零件的强度/01~强度计算基础.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~机械零件的强度/02~疲劳强度.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~机械零件的强度/03~接触强度.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02~机械零件的强度/04~表面强度.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03~摩擦、磨损与润滑/02~磨损分析.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03~摩擦、磨损与润滑/03~润滑设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04~连接件设计/01~螺纹连接.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04~连接件设计/03~花键连接.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04~连接件设计/05~焊接连接.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~轴系设计/03~联轴器设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~传动系统设计/01~带传动.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~传动系统设计/02~链传动.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~传动系统设计/03~齿轮传动.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~传动系统设计/04~蜗杆传动.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07~离合器与制动器/01~离合器设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07~离合器与制动器/02~制动器设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08~弹簧设计/01~圆柱螺旋弹簧.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09~支承结构设计/01~机架设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09~支承结构设计/02~导轨设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09~支承结构设计/03~密封装置.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10~机械系统设计/01~总体设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10~机械系统设计/02~可靠性设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10~机械系统设计/03~人机工程设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01~机械设计总论/01~机械设计的任务与内容.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01~机械设计总论/02~机械产品的质量要求.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01~机械设计总论/03~机械设计的标准化.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/01~CAD 基础.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/03~参数化设计.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/OCC/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/PLM/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/Truck/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/01~CAE 理论知识/02~有限元分析.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/10~CAM 软件应用/NX CAM/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/01~CAE 理论知识/01~CAE 概述/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/10~CAM 软件应用/MasterCAM/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/10~CAM 软件应用/PowerMill/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/OBJ/OBJ 与 MTL 格式.md: -------------------------------------------------------------------------------- 1 | # OBJ 与 MTL 2 | -------------------------------------------------------------------------------- /03~摩擦、磨损与润滑/01~摩擦学基础.md: -------------------------------------------------------------------------------- 1 | - 摩擦机理 2 | - 摩擦类型 3 | - 影响因素 4 | - 控制方法 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/04~热分析/01~传热学基础/README.md: -------------------------------------------------------------------------------- 1 | - 热传导 2 | - 对流换热 3 | - 辐射换热 4 | - 相变传热 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/06~优化设计/01~优化理论基础.md: -------------------------------------------------------------------------------- 1 | - 优化问题描述 2 | - 优化算法 3 | - 灵敏度分析 4 | - 可靠性分析 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/06~优化设计/02~结构优化方法.md: -------------------------------------------------------------------------------- 1 | - 尺寸优化 2 | - 形状优化 3 | - 拓扑优化 4 | - 多目标优化 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/03~流体分析(CFD)/01~流体力学基础.md: -------------------------------------------------------------------------------- 1 | - 流体特性 2 | - 控制方程 3 | - 边界层理论 4 | - 湍流模型 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/05~多物理场耦合分析/01~流固耦合(FSI).md: -------------------------------------------------------------------------------- 1 | - 单向耦合 2 | - 双向耦合 3 | - 耦合算法 4 | - 应用实例 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/03~加工工艺规划/01~工艺分析.md: -------------------------------------------------------------------------------- 1 | - 零件图纸分析 2 | - 加工特征识别 3 | - 工序安排 4 | - 工装夹具设计 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/03~加工工艺规划/02~加工参数优化.md: -------------------------------------------------------------------------------- 1 | - 切削用量选择 2 | - 表面质量控制 3 | - 加工效率优化 4 | - 成本控制 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/03~加工工艺规划/03~质量控制.md: -------------------------------------------------------------------------------- 1 | - 尺寸精度控制 2 | - 表面粗糙度控制 3 | - 加工变形控制 4 | - 检测与测量 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/04~热分析/02~热分析类型/README.md: -------------------------------------------------------------------------------- 1 | - 稳态热分析 2 | - 瞬态热分析 3 | - 热-结构耦合分析 4 | - 热疲劳分析 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/05~多物理场耦合分析/02~其他耦合分析.md: -------------------------------------------------------------------------------- 1 | - 热-结构耦合 2 | - 声-结构耦合 3 | - 电-热耦合 4 | - 电-磁耦合 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/03~流体分析(CFD)/02~流场分析.md: -------------------------------------------------------------------------------- 1 | - 内流分析 2 | - 外流分析 3 | - 压缩性流动 4 | - 多相流分析 5 | - 化学反应流 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/02~结构分析/02~动力分析/README.md: -------------------------------------------------------------------------------- 1 | - 模态分析 2 | - 谐响应分析 3 | - 瞬态动力学 4 | - 随机振动分析 5 | - 冲击响应分析 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/02~结构分析/03~非线性分析/README.md: -------------------------------------------------------------------------------- 1 | - 几何非线性 2 | - 材料非线性 3 | - 接触非线性 4 | - 大变形分析 5 | - 屈曲分析 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/02~刀具与加工工艺/README.link: -------------------------------------------------------------------------------- 1 | https://github.com/wx-chevalier/Mechanical-Manufacturing-Notes -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/02~结构分析/01~静力分析/README.md: -------------------------------------------------------------------------------- 1 | - 线性静力学基础 2 | - 材料本构关系 3 | - 边界条件设置 4 | - 载荷类型与应用 5 | - 结果后处理与评估 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/01~CAM 基础知识/02~数控加工基础/README.md: -------------------------------------------------------------------------------- 1 | - 数控机床类型与结构 2 | - 坐标系统 3 | - 刀具补偿 4 | - G 代码与 M 代码 5 | - 加工参数选择 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/01~CAM 基础知识/01~CAM 概述/README.md: -------------------------------------------------------------------------------- 1 | - CAM 的定义与发展历史 2 | - CAM 在现代制造中的作用 3 | - CAM 与 CAD/CAE 的关系 4 | - CAM 软件分类与选择 5 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/01~CAE 理论知识/02~数值分析基础/README.md: -------------------------------------------------------------------------------- 1 | - 有限元方法(FEM)原理 2 | - 有限体积法(FVM)原理 3 | - 边界元法(BEM)原理 4 | - 网格划分技术 5 | - 误差分析与收敛性 6 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/04~数控编程/README.md: -------------------------------------------------------------------------------- 1 | 1. 手工编程 2 | 3 | - G 代码基础 4 | - 循环指令 5 | - 子程序编程 6 | - 宏程序编程 7 | 8 | 2. 自动编程 9 | - CAM 软件生成 10 | - 参数化编程 11 | - 后处理器开发 12 | - 程序优化 13 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAM/05~加工仿真与验证/README.md: -------------------------------------------------------------------------------- 1 | 1. 仿真技术 2 | 3 | - 运动仿真 4 | - 材料去除仿真 5 | - 碰撞检测 6 | - 刀具路径优化 7 | 8 | 2. 加工验证 9 | - 程序校验 10 | - 干涉检查 11 | - 加工精度预测 12 | - 加工时间估算 13 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/STL/99~参考资料/2009-Polyhedral Mass Properties.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Mechanical-Design-Notes/master/20~计算机辅助设计/04~CAX/数据交换标准/STL/99~参考资料/2009-Polyhedral Mass Properties.pdf -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/10~CAE 软件/README.md: -------------------------------------------------------------------------------- 1 | 1. ANSYS 2 | 3 | - Workbench 环境 4 | - 前处理技术 5 | - 求解设置 6 | - 后处理分析 7 | - 常见问题解决 8 | 9 | 2. ABAQUS 10 | 11 | - CAE 环境 12 | - 建模技术 13 | - 分析步设置 14 | - 结果处理 15 | - 二次开发 16 | 17 | 3. 其他主流软件 18 | - COMSOL 19 | - NASTRAN 20 | - LS-DYNA 21 | - Fluent 22 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/GKSM/GKSM.md: -------------------------------------------------------------------------------- 1 | # GKSM 2 | 3 | GKSM 是图形核心标准 GKS 用于保存信息的一种机制。在 GKS 中,用图段来存储 GKS 运行过程中的信息。在 GKS 关闭以后,图段将不存在,所有存储在图段中的信息连同图段本身也都自动丢失。为了能够保存 GKS 运行中得到的图形信息,最方便的方法是采用文件的形式进行保存。GKS 标准提供了能够顺序读写,用于长期存储(传输)图形信息的机制,称为 GKS 元文件(GKSM)。利用 GKSM 可实现: 4 | 5 | - 图形信息的存档; 6 | - 不同 GKS 应用之间图形信息的传送和使用; 7 | - 不同的图形系统之间图形信息的传送和使用 8 | - 异地之间图形信息的传送(利用磁盘、网络等媒体); 9 | - 与图形信息相伴随的应用程序定义的非图形信息的存储和复用。 10 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/STL/README.md: -------------------------------------------------------------------------------- 1 | # STL 2 | 3 | # Links 4 | 5 | - https://all3dp.com/1/stl-file-format-3d-printing/ 6 | - https://top3dshop.com/blog/the-ultimate-guide-to-stl-format 7 | - https://facfox.com/docs/kb/the-most-common-stl-file-errors-you-will-meet-in-3d-printing-process 8 | - https://www.simplify3d.com/resources/articles/identifying-and-repairing-common-mesh-errors/ 9 | - https://amfg.ai/2018/04/19/top-5-stl-file-errors-you-should-know/#:~:text=Holes%20or%20gaps%20in%20a,to%20correctly%20print%20the%20design. 10 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/glTF/gITF.md: -------------------------------------------------------------------------------- 1 | # gITF 2 | 3 | glTF 称为 3D 界的 JPEG,使用了更优的数据结构,为应用程序实时渲染而生。glTF 有以下几大特点: 4 | 5 | - 由现有 OpenGL 的维护组织 Khronos 推出,目的就是为了统一用于应用程序渲染的 3D 格式,更适用于基于 OpenGL 的引擎; 6 | - 减少了 3D 格式中除了与渲染无关的冗余信息,最小化 3D 文件资源; 7 | - 优化了应用程序读取效率和和减少渲染模型的运行时间; 8 | - 支持 3D 模型几何体、材质、动画及场景、摄影机等信息。 9 | 10 | glTF 导出格式有两种后缀格式可供选择:.gltf 和 .glb: 11 | 12 | - .gltf 文件导出时一般会输出两种文件类型,一是 .bin 文件,以二进制流的方式存储顶点坐标、顶点法线坐标和贴图纹理坐标、贴图信息等模型基本数据信息;二是 .gltf 文件,本质是 json 文件,记录对 bin 文件中模型顶点基本数据的索引、材质索引等信息,方便编辑,可读性较好; 13 | - .glb 文件格式只导出一个 .glb 文件,将所有数据都输出为二进制流,通常来说会更小一点,若不关心模型内的具体数据可直接选择此类型。 14 | 15 | # Links 16 | 17 | - [2019~腾讯硬核干货!如何在页面极速渲染 3D 模型?](https://www.uisdc.com/optimizing-3d-model) 18 | 19 | - [2020~STEP 和 IGES 模型转换为适用 Web 的 glb 格式](https://blog.wj2015.com/2020/03/08/step%e5%92%8ciges%e6%a8%a1%e5%9e%8b%e8%bd%ac%e6%8d%a2%e4%b8%ba%e9%80%82%e7%94%a8web%e7%9a%84glb%e6%a0%bc%e5%bc%8f/) 20 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/3D 建模/Blender/README.md: -------------------------------------------------------------------------------- 1 | # Blender Examples 2 | 3 | # 安装 Pip 4 | 5 | First of all, pip is not part of Python so it doesn't come by default with Blender. It has to be installed for Blender's bundled Python even if you already have pip for some other version of Python on your system. For this get the get-pip.py file from the pip documentation 6 | 7 | You'll find the blender python binary at: 8 | 9 | ```sh 10 | /blender-path/2.xx/python/bin/python 11 | ``` 12 | 13 | Use this binary to run the get-pip.py. If you have it saved in your home directory the command to use should look something like this: 14 | 15 | ```sh 16 | $ /path/to/blender/blender-path/2.xx/python/bin/python3 ~/get-pip.py 17 | ``` 18 | 19 | You should now have pip installed for blender. You use it with blenders python too and you have to point to the pip that was installed for blenders python. Both are in blenders folder tree and you use them like this: 20 | 21 | ```sh 22 | $ /blender-path/2.xx/python/bin/python /blender-version/2.xx/python/local/lib/python3.5/dist-packages/pip install scipy 23 | ``` 24 | 25 | This installs scipy for your blenders python. Of course you have to adjust names according to the version you use, but it worked for me for 2.77. 26 | 27 | I just tried to do this again and with a recent build I did not have to point to he installed pip, calling blenders python was enough, my command looked like: 28 | 29 | ```sh 30 | /path/to/blenderspython/python pip install module 31 | ``` 32 | 33 | blender-2.8: pip is already included so the only step to do this for blender-2.8 is: 34 | 35 | ```sh 36 | $ /path/to/blenderspython/pip install module 37 | ``` 38 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/STP/STEP.md: -------------------------------------------------------------------------------- 1 | # STEP 2 | 3 | 20 世纪 70 年代后期,随着几何造型技术的迅速发展,各种 CAD 系统逐步得到应用 CAD 系统应用的主要领域有汽车制造、航空航天、造船、机械制造、电子、建筑等行业。这些行业的企业一般是大型综合企业,内部分工明确,各部门之间信息交换量较大,特别是所制造产品的定义数据,传统的蓝图虽然能提供足够的信息。但随着 CAD 系统的应用,人们一方面希望各 CAD 系统的数据直接通过计算机进行交换,以提高数据交换的效率和正确性。另一方面则要求 CAD 技术在发展的每一个阶段都能建立在一个稳定的平台的基础上,以便向纵深发展。 4 | 5 | 作为数据交换的国际标准 IGES 发表以后,成为应用最广泛的数据交换标准。但在应用过程中 GES 缺点逐渐暴露出来,不能满足复杂的工业上数据交换的要求。法国航空航天业发现 IGES 由于其文件太过于冗长,有些数据也不能表达,无法传送。因此,在 IGES 的基础上自行开发了数据交换规范 SET( (standard c' exchange et de transfert)。ST 的文件格式与 IGES 完全不同,长度大大小于 IGES 文件长度。SET 的第一个文本发表于 1983 年,成功应用在欧洲航空航天业,在一些汽车制造公司中如雷诺、致等也得到应用。此外,德国的汽车制造业也在 IGES 的基础上开发了产品数据交换的德国国家标准 VDAFS( verband der deutschen automobilindustrie- flachennittstelle)。e 与其他标准不同的是,VDAFS 只集中于自由曲面的数据交换,在 CAD 的特定领域中应用的很好。产品定义数据接口 pdDI( (product definition data interface)计划是美国空军组织实施的,的在于定义完整的基于计算机在设计和制造之间的产品定义数据接口。1982 年麦道飞机公司被选中成为主要研制者。因为 IGES 不能满足几何、边界表示实体、公差、形状特征等这些产品数据的所有要求,PDDI 定义了一些数据结构来满足这些要求,第一次提到了产品数据和产品生命周期数据的概念。 6 | 7 | 1984 年,IGES 组织设置了一个研究计划,称为 PDES( product data exchange specification)。PDES 计划的长期目标是为产品数据交换规范的建立开发一种方法论,并运用这套方法论开发一个新的产品数据交换标准。新标准要求能克服 IGES 中已经意识到的弱点。这些弱点包括文件过长,处理时间长,一些几何定义影响数值精度,交换的是数据而不是信息。PDES 计划与 IGES 相比的一个显著特点是着重于产品模型信息的交换而不是像 IGES 那样仅传递一些几何和图形数据。另外,PDES 支的产品数据交换方式除了文件交换外,还有共享数据库,这在实现方式上又比以前的数据交换标准如 IGES、SET、VDAFS 等前进了一大步。PDES 的开发方法是一个三层的体系结构和参考模型及形式化语言的运用。体系结构中的三层包括应用层、逻辑层和物理层。形式化语言如 EXPRESS 语言的使用提高了计算机可实现的程度,消除了标准定义中的二义性。所以,无论是开发标准的方法论还是标准的结构和内容,PDES 计划都有重大的突破和创新,为 STEP 标准的制定奠定了良好的基础。 8 | 9 | 1983 年 12 月,国际标准化组织 ISO 设立了 184 技术委员会(TC184),而 TC184 名为工业自动化系统。TC184 下设第四分委员会(SC4),SC4 的域是产品数据表达与交换。ISO TC184/SC4 制定的标准常被称为产品模型数据交换标准 STEP(standard for the exchange of product model data)。STEP 的制定主要基于 PDES 计划,欧洲也作了许多重要的工作。 10 | -------------------------------------------------------------------------------- /20~计算机辅助设计/04~CAX/数据交换标准/BRep/README.md: -------------------------------------------------------------------------------- 1 | # BRep 2 | 3 | ![BRep 点线面](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/BREP_basic_pyramid_zhs.jpg) 4 | 5 | 边界表达(B-Rep)是目前工业界 CAD/CAM 领域最常见的实体建模方式之一。其基本理念是任何空间三维物体都可以看作是由一系列曲面包围而形成,而这些边界曲面则刚好可以用来表达三维实体。以上图中棱锥体为例,它由 5 个面(绿色)包围而成;每个面又由一些棱边(蓝色)包围;每条棱边有由两个顶点(红色)定义。因此该棱锥体的边界表达则由这些“面-边-顶点”关系的表格共同定义。 6 | 7 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/BREP_convergent_facet_brep_zhs.jpg) 8 | 9 | 传统意义上的 B-Rep 模型通常指代连续光滑的解析几何模型,即所谓传统 B-Rep 模型。随着 3D 扫描仪普及,面片模型(包含大量三角形的网格)也变得更加普遍。两种模型各有优劣,而因此经常需要进行互相转化;他们各自的优缺点和特性在上图表中列出。 10 | 11 | # BRep 建模的优劣 12 | 13 | BRep 建模,即 **B**oundary **Rep**resentation modeling,边界表示法建模,在 CAD 应用中是最常见的建模方法。BRep 是 3D 对象的数学精确表示,这种表示方法定义了实体和非实体之间的几何边界。 14 | 15 | BRep 对象的形状和轮廓不是由多边形或顶点这样的可简化对象构建的。相反,一个 BRep 对象由其表面(surface)之间的数学关系定义。 16 | 17 | ![img](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/image-41.png) 18 | 19 | 例如,注意看上图中的保险杠,这个保险杠不是用较小的组件(如多边形)定义的。相反,它作为独立离散对象存在。保险杠的形状由其表面在 3D 空间中的位置和曲线(相对于 XYZ 轴)进行定义。 20 | 21 | 创建保险杠这个几何体所需的数学公式如下: 22 | 23 | - 其中一个数学公式描述表面的旋转和它在 Y 轴上的大约呈 S 形的曲线。 24 | - 另一个数学公式描述了 Z 轴保险杠底部的肘状凸起。 25 | 26 | 组合多个精确的数学公式来描述对象在所有轴上的全部表面时,我们就得到了一个 BRep 对象。 27 | 28 | ## BRep 建模的优势 29 | 30 | - BRep 对象是数学精确的,使设计师和工程师能够构建其设计的完美表示 31 | - 与其他建模方法不同,BRep 允许你在不丢失分辨率的情况下放大。BRep 曲线将在放大的每一个级别上保持同样的曲率 32 | - BRep 的数学精度使其非常适合制造应用 33 | 34 | ## BRep 建模的缺点 35 | 36 | - BRep 文件格式是重量级的,它需要存储大量占用磁盘空间的元数据 37 | - 当需要可视化、渲染或动画时 ,BRep 模型需要额外的处理能力 38 | - 有机/自然物体很难用 BRep 的精确数学公式重现 39 | 40 | 总体而言,BRep 的功能使其成为工程师和设计师的理想格式,但在可视化或渲染方面存在严重限制。 41 | 42 | ## 混合建模过程 43 | 44 | 简言之,混合建模(Hybrid Modeling)是将 BRep、多边形、点云和基于体素(Voxel-based)的建模 — 3D 建模的四种主要类型 — 的优点组合成一个工作流。 45 | 46 | 一些软件开发套件(如[Spatial 的 CGM)](https://www.spatial.com/products/cgm?hsLang=en-us)允许 3D 开发人员将混合建模功能本地构建到其工具集中。这允许设计师和工程师在不同的建模类型之间无缝切换,而不会在这个过程中丢失任何数据。它允许工程师对其 BRep 文件进行仿真,并利用得到的洞察自动调整其模型。 47 | 48 | 强大的混合建模软件意味着可以缩短模型准备过程,并填补 3D 模型的典型空白,如在粒子基础上模拟工程模型的行为。 49 | -------------------------------------------------------------------------------- /20~计算机辅助设计/仿真软件/README.md: -------------------------------------------------------------------------------- 1 | ### 常见的仿真软件列举 2 | 3 | 1. **SimuWorks**:它是一个提供通用的、一体化的、全过程支撑的,基于微机环境的开发与运行支撑平台,主要用于大型科学计算、复杂系统动态特性建模研究、过程仿真培训、系统优化设计与调试、故障诊断与专家系统等场景。软件采用了动态内存机器码生成技术、分布式实时数据库技术和面向对象的图形化建模方法,在仿真领域处于国内领先水平。它在能源、电力、化工、航空航天、国防军事、经济等研究领域均有应用,既能服务于科研院所的科学研究,也能应用于实际工程项目。该平台产品主要包括仿真支撑平台 SimuEngine、图形化建模工具 SimuBuilder、模块资源库 SimuLib、嵌入式实时操作系统仿真平台 SimuERT、仿真实时图形系统 SimuMMI 等。 4 | 5 | 1. **VR-Platform**:英文全拼为 Virtual Reality Platform,即虚拟现实仿真平台。该软件适用性强、操作简单、功能强大、高度可视化、所见即所得,所有操作都以美工能够理解的方式进行,无需程序员参与。只要操作者具备良好的 3DMAX 建模和渲染基础,稍加学习研究,就能快速制作出自己的虚拟现实场景。它的产品体系丰富,包含九大产品,如 VRP-BUILDER 虚拟现实编辑器、VRPIE3D 互联网平台、VRP-DIGICITY 数字城市平台等,可广泛应用于城市规划、室内设计、工业仿真、古迹复原、桥梁道路设计、房地产销售、旅游教学、水利电力、地质灾害等众多领域,提供切实可行的解决方案。 6 | 7 | 1. **Infolytica**:由 Infolytica 公司开发,该公司是世界上第一个商业电磁场分析软件公司,一直致力于电磁场有限元分析领域的技术研究和开发,为电磁设计工程师提供完整解决方案。其软件成为全世界设计者进行低频电磁分析的首选,不断为航空、航天、汽车、耐用电器、电力、医疗设备、电子产品等行业以及科研教育等领域,解决复杂的磁场、电场、热场问题。产品系列主要包含 MagNet、ElecNet、ThermNet、OptiNet、MotorSolve 等软件,可在同一界面下轻松进行二维和三维的电场、磁场以及热场的独立及耦合分析。 8 | 9 | 1. **Proteus Pro 单片机仿真软件**:这是一款功能强大的电子设计自动化软件,集电路仿真、PCB 设计和虚拟模型仿真于一体。它拥有丰富的元器件库和智能的器件搜索功能,能快速定位所需器件,还支持总线结构和子电路设计。同时,它具备智能 BOM 管理、高质量图纸输出和设计浏览器等功能,适用于各类电子产品的设计,能助力用户快速完成原理图布图、代码调试以及单片机与外围电路协同仿真等任务。 10 | 11 | 1. **数控模拟精灵 (CNCLathe Elf)**:一款专业的数控车床模拟系统,适用于各种常见的数控系统。它具备通用性强、工件图形清晰、刀具选择多样、运行方式灵活等特点。用户借助该软件能够学习和练习数控编程,检查加工过程和效果,还能编制调试宏程序。软件操作简便,无需安装任何插件即可直接运行,且文件大小小,对于需要研究宏程序编制的人员来说,是很好的辅助工具。 12 | 13 | 1. **Modelsim SE**:业界领先的 HDL 语言仿真软件,支持 VHDL 和 Verilog 混合仿真。它运用直接优化的编译技术、Tcl/Tk 技术和单一内核仿真技术,提供快速且可靠的编译和仿真功能。用户可以借助个性化的图形界面和用户接口来加快调试过程,保护 IP 核。它拥有友好的仿真环境和强大的功能,在 FPGA/ASIC 设计领域应用广泛。 14 | 15 | 1. **中文虚拟仿真制作软件 VEStudio**:这是一款专业的虚拟仿真平台,可用于制作虚拟房产、旅游仿真、产品展示和城市规划等交互系统。采用了高端的图形技术,新增了简易 GUI 模块、智能鹰眼导航图、相机方位指示等功能,还修复了已知 Bug,提升了层的操作支持脚本操作层,增强了材质测试模块和涂鸦场景模块的功能,并对节点距离触发器进行优化,是虚拟仿真行业的主流软件。 16 | 17 | 1. **Machining 数控车床仿真软件**:由格雷西姆公司开发,适用于初学者,能够帮助他们降低实训环节中的危险,如机床损耗等。它具备机床操作全过程仿真功能,包括自动运行模式、手动输入模式、手动操作模式等。用户还能选择毛坯类型和设置系统参数,如坐标系设置和刀具补偿等,支持圆弧插补和直线插补运算,能实时进行刀具和工件的碰撞检测并产生报警,加工过程中会模拟三维工件的实时切削和铁屑,并显示三维刀具轨迹,也支持对 G-Code 进行解析与有效性检验,还能处理其他软件生成的相关文件。 18 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/05~多物理场耦合分析/README.md: -------------------------------------------------------------------------------- 1 | ## 一、定义 2 | 3 | 多物理场耦合分析软件是一种基于计算机数值模拟技术,专门用于处理多个物理场之间相互作用的工具。在实际工程和科学研究中,许多问题涉及多种物理现象的协同作用,如热传递与结构变形的耦合、流体流动与固体结构的相互作用、电磁场与热场的交互影响等。这类软件能够通过建立精确的数学模型,模拟这些复杂的物理过程,为跨学科的产品设计、优化以及科学研究提供有力支持 。 4 | 5 | ## 二、主要功能 6 | 7 | 1. **多物理场建模**:提供丰富的物理场模型库,涵盖结构力学、流体力学、热传导、电磁学等多个领域。用户可以根据实际问题,选择合适的物理场模型,并定义它们之间的耦合关系,构建多物理场耦合分析模型。 8 | 9 | 1. **耦合算法求解**:运用先进的数值算法,求解多物理场耦合方程组。这些算法能够有效处理不同物理场之间的非线性相互作用,确保计算结果的准确性和稳定性。例如,采用迭代法、有限元法、有限体积法等,实现对复杂多物理场问题的高效求解。 10 | 11 | 1. **参数化分析**:允许用户对模型的参数进行灵活设置和调整,如材料属性、边界条件、载荷等。通过参数化分析,研究不同参数对多物理场耦合系统性能的影响,从而优化设计方案,提高产品性能 。 12 | 13 | 1. **结果可视化**:将计算结果以直观的方式呈现出来,如二维或三维云图、矢量图、图表等。用户可以清晰地观察到各个物理场的分布情况以及它们之间的耦合效应,便于深入理解和分析问题。 14 | 15 | ## 三、应用领域 16 | 17 | 1. **能源领域**:在新能源开发和利用中,多物理场耦合分析软件发挥着重要作用。例如,在太阳能电池设计中,模拟光生载流子的产生、传输以及热效应,优化电池结构,提高光电转换效率;在燃料电池研究中,分析电化学反应、物质传输和热管理之间的耦合关系,改进电池性能 。 18 | 19 | 1. **生物医学工程**:用于模拟人体生理过程和医疗器械的性能。在血液流动模拟中,考虑血液的粘性、血管壁的弹性以及血流与组织之间的物质交换,研究心血管疾病的发病机制;在植入式医疗器械设计中,分析力学、热学和生物学等多物理场对器械性能和人体组织响应的影响。 20 | 21 | 1. **航空航天**:在飞机和航天器的设计中,多物理场耦合分析软件可用于模拟飞行器在高速飞行时的气动热、结构热响应以及热防护系统的性能。例如,分析飞机机翼在高温、高压气流作用下的热 - 结构耦合问题,确保机翼的结构完整性和飞行安全。 22 | 23 | 1. **电子设备**:随着电子设备的小型化和高性能化,多物理场耦合问题日益突出。软件可用于模拟电子芯片的散热、电磁干扰以及封装结构的力学性能,优化电子设备的设计,提高其可靠性和稳定性。 24 | 25 | 1. **材料科学**:研究材料在多物理场作用下的性能变化和微观结构演变。例如,模拟金属材料在热加工过程中的热 - 力 - 组织耦合行为,为材料的成型工艺优化和性能调控提供理论依据。 26 | 27 | ## 四、优势 28 | 29 | 1. **全面分析复杂问题**:能够综合考虑多个物理场之间的相互作用,对实际问题进行全面、准确的分析,避免了传统单一物理场分析方法的局限性。 30 | 31 | 1. **降低研发成本和风险**:在产品研发阶段,通过多物理场耦合分析软件进行虚拟仿真,提前发现设计缺陷和潜在问题,减少物理样机的制作和试验次数,降低研发成本和风险。 32 | 33 | 1. **促进创新设计**:为工程师和科研人员提供了一个强大的设计和分析平台,帮助他们探索新的设计理念和方法,推动产品创新和技术进步。 34 | 35 | 1. **提高研究效率**:快速获得多物理场耦合问题的数值解,大大缩短了研究周期,提高了科研工作的效率。 36 | 37 | ## 五、主流软件 38 | 39 | 1. **ANSYS Multiphysics**:ANSYS 旗下的多物理场耦合分析软件,功能强大,涵盖多个物理领域。具备丰富的单元库和材料模型,能够处理复杂的几何模型和边界条件。在航空航天、汽车、能源等行业广泛应用,可进行热 - 结构、流 - 固、电磁 - 热等多种耦合分析 。 40 | 41 | 1. **COMSOL Multiphysics**:以其强大的多物理场耦合功能著称,采用有限元方法求解各种物理场问题。提供了直观的图形化用户界面和丰富的物理场接口,方便用户进行建模和分析。在电子、生物医学、化工等领域有众多成功应用案例。 42 | 43 | 1. **STAR-CCM+**:主要侧重于流体力学和多物理场耦合分析,具备先进的网格生成技术和求解算法。在汽车、船舶、能源等行业用于模拟流体流动、传热以及流 - 固耦合等问题,能够准确预测产品的性能和优化设计 。 44 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/README.md: -------------------------------------------------------------------------------- 1 | # CAD 软件介绍文档 2 | 3 | ## 一、CAD 软件定义 4 | 5 | CAD 即计算机辅助设计(Computer-Aided Design)软件,是一种利用计算机技术辅助设计师进行产品设计、绘图和分析的工具。它将传统的手工绘图和设计流程数字化,极大地提高了设计效率和准确性,是现代工业设计和制造领域不可或缺的技术手段。 6 | 7 | ## 二、主要功能 8 | 9 | 1. **二维绘图**:支持绘制各种基本图形,如直线、圆、矩形等,还能进行图形的编辑、标注尺寸、添加文字说明等操作。设计师可以通过精确的坐标定位和绘图命令,快速创建二维工程图纸,满足产品制造、建筑施工等对图纸的需求。 10 | 11 | 1. **三维建模**:提供参数化建模、曲面建模、实体建模等多种方式,帮助设计师构建复杂的三维模型。通过调整模型的参数和特征,能够方便地修改模型的形状和尺寸,实现快速的设计迭代。例如在机械产品设计中,可以创建零部件的三维模型,直观展示产品的外观和内部结构。 12 | 13 | 1. **装配设计**:能够将多个零部件的模型进行组装,模拟产品的装配过程,检查零部件之间的配合关系和干涉情况。在汽车制造中,工程师可以利用 CAD 软件进行整车的装配设计,提前发现设计缺陷,优化装配工艺。 14 | 15 | 1. **渲染和可视化**:对三维模型进行材质、光照、纹理等设置,生成逼真的渲染效果图,使设计方案更加直观、生动。在建筑设计中,通过渲染可以呈现出建筑的外观效果、室内装修风格等,帮助客户更好地理解设计意图。 16 | 17 | 1. **数据交换和协同设计**:支持多种文件格式的导入和导出,方便与其他软件进行数据交互。同时,一些 CAD 软件还具备协同设计功能,允许多个设计师在不同的地理位置同时对一个项目进行设计和修改,提高团队协作效率。 18 | 19 | ## 三、应用领域 20 | 21 | 1. **机械设计**:用于各类机械产品的设计,如发动机、机床、汽车零部件等。通过 CAD 软件,设计师可以精确设计零件的形状和尺寸,优化产品性能,缩短研发周期。 22 | 23 | 1. **建筑设计**:从建筑的概念设计、方案设计到施工图设计,CAD 软件都发挥着重要作用。可以绘制建筑平面图、立面图、剖面图等,进行建筑结构分析和能耗模拟,为建筑的施工和运营提供依据。 24 | 25 | 1. **电子设计**:在电子产品的设计中,如电路板设计、芯片设计等,CAD 软件能够帮助工程师进行电路原理图绘制、布线设计、信号完整性分析等,确保电子产品的性能和可靠性。 26 | 27 | 1. **航空航天**:用于飞机、航天器等的设计和分析,通过 CAD 软件进行空气动力学分析、结构强度计算等,优化产品的设计,提高航空航天产品的性能和安全性。 28 | 29 | 1. **家具设计**:设计师可以利用 CAD 软件进行家具的外观设计、结构设计和内部布局规划,快速生成设计方案和效果图,满足客户的个性化需求。 30 | 31 | ## 四、优势 32 | 33 | 1. **提高设计效率**:相比于手工绘图,CAD 软件能够快速绘制和修改图形,大大缩短了设计周期。设计师可以通过复制、旋转、镜像等操作,快速生成相似的图形,提高设计效率。 34 | 35 | 1. **精确性高**:能够精确控制图形的尺寸和位置,减少人为误差,保证设计的准确性。在机械制造中,精确的设计数据可以直接用于数控加工,提高产品的加工精度。 36 | 37 | 1. **便于修改和管理**:设计过程中的任何修改都可以在软件中轻松实现,并且可以保存设计的历史版本,方便进行设计回溯和管理。 38 | 39 | 1. **可视化效果好**:通过三维建模和渲染功能,能够将设计方案以直观的方式呈现出来,帮助设计师更好地理解和展示设计意图,也便于与客户和团队成员进行沟通。 40 | 41 | ## 五、主流 CAD 软件 42 | 43 | 1. **AutoCAD**:由 Autodesk 公司开发,是一款应用广泛的 CAD 软件,具有强大的二维绘图功能和一定的三维建模能力。它支持多种文件格式,兼容性好,在建筑、机械、电子等多个领域都有广泛应用。 44 | 45 | 1. **SolidWorks**:专注于三维机械设计,提供了丰富的设计工具和标准件库,操作简单,易于上手。在机械设计、模具设计等领域深受工程师喜爱。 46 | 47 | 1. **Pro/ENGINEER(现 Creo)**:PTC 公司的产品,采用参数化设计理念,在产品设计、模具设计、汽车制造等领域应用广泛,能够实现复杂产品的全生命周期设计。 48 | 49 | 1. **CATIA**:达索系统公司开发的高端 CAD/CAM/CAE 一体化软件,在航空航天、汽车制造等对设计精度和复杂曲面要求较高的领域具有优势,能够进行复杂的曲面设计和多学科分析。 50 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAE/README.md: -------------------------------------------------------------------------------- 1 | # CAE 软件介绍文档 2 | 3 | ## 一、CAE 软件定义 4 | 5 | CAE 即计算机辅助工程(Computer-Aided Engineering)软件,是一种借助计算机数值计算方法,对工程和产品进行性能与安全可靠性分析,模拟其在现实工作环境中的行为,进而对设计方案进行优化的软件工具。它能够在产品研发阶段,无需制造物理样机,就能提前预测产品在各种工况下的性能表现,有效降低研发成本,缩短产品上市周期。 6 | 7 | ## 二、主要功能 8 | 9 | 1. **结构分析**:模拟产品在不同载荷(如拉伸、压缩、弯曲、振动等)作用下的应力、应变和位移分布情况 ,评估产品的结构强度和稳定性。例如在桥梁设计中,分析桥梁在车辆行驶、风力、地震等载荷下的力学响应,确保桥梁的安全性。 10 | 11 | 1. **流体分析**:用于研究流体(液体或气体)的流动特性,包括流速、压力分布、流量等。在汽车空气动力学设计中,通过模拟汽车行驶时周围空气的流动情况,优化车身外形,降低风阻和能耗;在水利工程中,分析水流对堤坝、水闸等结构的作用力。 12 | 13 | 1. **热分析**:计算产品在不同工况下的温度分布和热传递情况,考虑热传导、对流和辐射等传热方式。电子设备的散热设计中,利用热分析确定芯片、电路板等部件的温度分布,优化散热结构,防止设备因过热而损坏。 14 | 15 | 1. **多物理场耦合分析**:处理多个物理场之间的相互作用,如热 - 结构耦合、流 - 固耦合、电磁 - 热耦合等。航空发动机设计中,同时考虑高温燃气的流动(流体场)、热传递(热场)以及结构在高温和压力下的力学响应(结构场),为发动机的优化设计提供依据。 16 | 17 | 1. **优化设计**:基于分析结果,通过改变设计参数,如形状、尺寸、材料等,寻找最优的设计方案,使产品在满足性能要求的前提下,实现重量最轻、成本最低、效率最高等目标。 18 | 19 | ## 三、应用领域 20 | 21 | 1. **机械制造**:对机械零部件和整机进行力学性能分析、疲劳寿命预测等,优化产品设计,提高产品质量和可靠性。例如在发动机设计中,分析发动机零部件在高温、高压、高速运转等复杂工况下的性能,改进设计以延长发动机寿命。 22 | 23 | 1. **汽车行业**:在汽车的设计研发过程中,进行碰撞模拟、空气动力学分析、底盘和车身结构优化等。通过碰撞模拟,改进汽车的安全结构设计,提高车辆的被动安全性能;利用空气动力学分析,优化车身外形,降低风阻,提高燃油经济性。 24 | 25 | 1. **航空航天**:用于飞机、航天器等的设计和分析,包括结构强度计算、空气动力学分析、热防护系统设计等。在飞机机翼设计中,通过 CAE 软件分析机翼在飞行过程中的气动弹性、结构强度和疲劳寿命,确保机翼的安全性和可靠性。 26 | 27 | 1. **能源领域**:在石油开采、发电设备设计等方面发挥重要作用。在石油钻井工程中,分析钻杆在井下复杂环境下的力学性能,优化钻杆结构,防止钻杆断裂;在风力发电机设计中,对叶片进行结构分析和气动性能优化,提高发电效率。 28 | 29 | 1. **生物医学**:模拟人体生理过程和医疗器械的性能,如血液流动模拟、骨骼力学分析、心脏起搏器的性能评估等。通过血液流动模拟,研究心血管疾病的发病机制,为治疗方案的制定提供参考。 30 | 31 | ## 四、优势 32 | 33 | 1. **降低研发成本**:在产品研发早期,通过 CAE 软件模拟分析,发现设计缺陷并及时改进,避免了物理样机制造和试验过程中的大量成本浪费。 34 | 35 | 1. **缩短研发周期**:相比传统的设计 - 试验 - 修改设计的研发流程,CAE 软件能够快速进行多方案的模拟分析,大大缩短了产品从设计到上市的时间。 36 | 37 | 1. **提高产品性能**:通过精确的数值模拟,深入了解产品在各种工况下的性能表现,优化设计方案,提高产品的性能和可靠性。 38 | 39 | 1. **拓展设计思路**:能够模拟一些难以通过物理试验实现的极端工况和复杂环境,为设计师提供更多的设计思路和创新空间。 40 | 41 | ## 五、主流 CAE 软件 42 | 43 | 1. **ANSYS**:功能全面,涵盖结构、流体、热、电磁等多个领域的分析,具有丰富的单元库和材料模型,广泛应用于各种复杂工程问题的求解。它的多物理场耦合分析能力强大,能够处理复杂的工程系统模拟。 44 | 45 | 1. **ABAQUS**:在非线性分析方面表现出色,擅长处理接触、材料非线性、几何非线性等问题。在航空航天、汽车、生物力学等对非线性行为分析要求较高的领域应用广泛。 46 | 47 | 1. **COMSOL Multiphysics**:专业的多物理场耦合分析软件,能够方便地实现不同物理场之间的耦合计算。在电子、能源、生物医学等跨学科领域的产品设计和分析中具有独特优势。 48 | 49 | 1. **NASTRAN**:主要用于结构分析,在航空航天领域应用广泛,具有高效的求解器和强大的动力学分析能力,能够满足航空航天产品对结构强度和动力学性能的严格要求。 50 | -------------------------------------------------------------------------------- /20~计算机辅助设计/README.md: -------------------------------------------------------------------------------- 1 | ### 计算机辅助设计(CAD)软件 2 | 3 | - **功能**:主要用于二维绘图和三维建模,帮助工程师创建、修改和分析产品的几何形状,涵盖从简单零件到复杂装配体的设计。 4 | 5 | - **举例**:PTC 旗下的 Creo,提供了参数化设计、直接建模、曲面设计等多种功能,广泛应用于机械、电子、汽车等行业的产品设计,能让设计师精确构建产品的三维模型,直观展示产品外观和内部结构 。 6 | 7 | ### 计算机辅助工程(CAE)软件 8 | 9 | - **功能**:通过数值模拟技术对产品进行性能分析,如结构力学分析、流体动力学分析、热分析等,帮助工程师在产品研发阶段预测产品性能,优化设计方案,减少物理样机试验次数,降低研发成本。 10 | 11 | - **举例**:ANSYS 是一款综合性的 CAE 软件,拥有强大的结构分析模块,能模拟各种复杂结构在不同载荷和工况下的应力、应变和位移情况;其流体分析模块可用于分析流体的流动特性、传热传质等问题。ABAQUS 在非线性分析方面表现卓越,常用于模拟材料的非线性行为,如金属的塑性变形、橡胶的超弹性等,以及复杂的接触问题,像汽车碰撞、岩土工程中的土体与结构相互作用等场景。 12 | 13 | ### 计算机辅助制造(CAM)软件 14 | 15 | - **功能**:主要用于生成数控加工代码,将 CAD 设计模型转化为实际生产所需的加工指令,控制机床等加工设备完成零件的加工制造,包括刀具路径规划、加工参数设置、加工仿真等功能,确保加工过程的高效性和准确性。 16 | 17 | - **举例**:PTC 的 Creo 软件不仅有 CAD 功能,其 CAM 模块也能根据三维模型生成刀具路径,模拟加工过程,提前发现潜在的加工问题,优化加工工艺,提高生产效率和产品质量。 18 | 19 | ### 产品生命周期管理(PLM)软件 20 | 21 | - **功能**:对产品从概念设计、研发、生产、销售到售后服务的全生命周期进行管理,整合了产品数据管理、项目管理、供应链管理等功能,实现产品信息的共享和协同工作,提高企业的研发效率和管理水平。 22 | 23 | - **举例**:PTC 的 Windchill 是一款知名的 PLM 软件,它可以集中管理产品的各类数据,如设计图纸、技术文档、工艺文件等,使不同部门的人员能够实时获取最新的产品信息,协同开展工作,有效缩短产品上市周期。 24 | 25 | ### 多物理场耦合分析软件 26 | 27 | - **功能**:能够处理多个物理场之间的相互作用,如热 - 结构耦合、流 - 固耦合、电磁 - 热耦合等,模拟复杂的物理现象,为跨学科的产品设计和分析提供支持。在金属 3D 打印中,激光或电子束等能量源作用于金属粉末,使粉末快速熔化和凝固,这一过程伴随着复杂的热传递、材料相变以及应力应变的产生,涉及热场与结构场、材料场等多物理场的耦合。多物理场耦合分析软件能够综合考虑这些物理场之间的相互影响,精确模拟金属 3D 打印过程中的热力学行为,帮助工程师优化打印工艺参数,预测和避免诸如零件变形、开裂等缺陷的产生。 28 | 29 | - **举例**:ANSYS 具备强大的多物理场耦合分析能力,在航空发动机设计中,可同时考虑高温燃气的流动、热传递以及结构在高温和压力下的力学响应,为发动机的优化设计提供依据。在金属 3D 打印热力学仿真中,ANSYS 能通过建立热 - 结构耦合模型,模拟打印过程中温度场的变化以及由此引起的零件热应力和变形情况 。COMSOL Multiphysics 也是一款专业的多物理场耦合分析软件,在新能源电池研究中,能够同时模拟电池内部的电化学反应、离子传输、热传递等过程,帮助研究人员深入理解电池性能,优化电池设计。在金属 3D 打印领域,它可以用于模拟打印过程中的多物理场现象,分析不同工艺参数对打印质量的影响。 30 | 31 | ### 仿真软件 32 | 33 | - **功能**:仿真软件是一个更为宽泛的概念,它基于计算机模拟技术,对真实世界中的系统、过程或现象进行虚拟建模和分析,涵盖工程、科学、医学、经济等众多领域。在工业范畴内,可模拟产品的性能、制造过程和系统运行等,帮助企业在实际实施前预测结果、优化方案,减少风险和成本。与 CAE 软件有重合之处,CAE 软件侧重于工程领域的数值模拟分析,像结构、流体、热等物理性能分析;而仿真软件涵盖范围更广,除了工程物理仿真,还包括系统仿真、流程仿真等,比如生产线的物流仿真、化工工艺的流程仿真等,通过建立系统模型来模拟系统的动态行为和性能。金属 3D 打印过程可以看作是一个复杂的系统工程,涉及到能量输入、材料状态变化、零件成型等多个环节。仿真软件能够从系统层面出发,对整个金属 3D 打印过程进行建模和模拟,不仅可以考虑热力学因素,还能综合考虑设备运行、材料供应、生产流程等方面的因素,为金属 3D 打印的工艺优化和生产管理提供全面的支持。 34 | 35 | - **举例**:在汽车制造领域,使用 Plant Simulation 软件对汽车生产线进行仿真,模拟不同生产策略下生产线的运行效率、设备利用率、物料配送情况等,提前发现生产线布局和调度中的问题,优化生产流程。在化工行业,Aspen Plus 软件用于化工工艺的模拟,能对各种化工过程进行物料衡算、能量衡算,模拟不同工况下的产品质量和能耗,为工艺设计和优化提供依据。在金属 3D 打印中,一些专业的仿真软件可以对打印设备的工作过程进行模拟,分析不同打印参数下设备的运行状态和能量消耗情况,为设备的改进和优化提供参考 。 36 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/99~参考资料/《CAD in 1 Hour》/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/) 2 | 3 | # CAD in 1 Hour 4 | 5 | ### The Lay of the Land 6 | 7 | Computer Aided Design (CAD) tools can be categorized in a variety of different ways. At a high-level you can separate tools based on how they represent geometry, such as whether objects are modeled by their exterior geometry or the interior space the object takes up. In other words is the object defined by its boundary or its volume. Is that geometric representation continuous or discrete (and limited to a particular resolution)? 8 | 9 | Below we depict some CAD tools categorized by these dimensions (boundary/volume, continuous/discrete): 10 | 11 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/cad-landscape.png) 12 | 13 | Note that these categorizations are not formal and some tools may blur the lines between them or support multiple representations. For example standard **solid** modeling tools for mechanical engineer (such as SolidWorks or Fusion360) use boundary representations (B-Reps). These tools are designed to create solid models (as the name suggests) with watertight or manifold geometry. Some CAD tools restrict users to designing objects which are solid even though the underlying representation could describe non-solid geometry. 14 | 15 | Another useful categorization of tools is parametric versus direct modeling (or non-parametric). 16 | 17 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/parametric-vs-direct.png) 18 | 19 | In direct modeling tools users specify geometry manually, whereas in parametric design tools geometry can by derived from other features or abstract operations. 20 | 21 | Parameterization can take many forms. One of the most general and common ways of parameterizing systems is simply coding. 22 | 23 | Of course programs can be used to represent practically anything, including 3D designs. 24 | 25 | This is demonstrated below with a simple OpenSCAD design. 26 | 27 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/openscad.png) 28 | 29 | To designers using Rhino parameterization may come from plug-ins such as Grasshopper (check out [Nodi3D](https://nodi3d.com/) for something similar which is web-based and open source). 30 | 31 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/grasshopper.png) 32 | 33 | A similar dataflow programming environment could be familiar to an artist using Blender's geometry nodes. 34 | 35 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/blender-nodes.png) 36 | 37 | To mechanical engineers parameterization generally comes from geometric constraint solvers and timelines of operations. We'll have a lot to say about constraint solvers later in this write-up. 38 | 39 | ![img](https://fab.cba.mit.edu/classes/865.24/topics/design-tools/assets/onshape.png) 40 | 41 | We're going to introduce you to some of the key concepts needed to create design tools. We will introduce many of these concepts by demonstrating how to implement minimal versions of them in code (JavaScript!). We will cover how to represent solids with distance fields, how to mesh those fields, some history of modern solid modeling CAD tools, constraint solvers, B-Reps through the context of the step format, and survey a few futuristic generative design tools. 42 | 43 | Let's get into it. 44 | -------------------------------------------------------------------------------- /20~计算机辅助设计/2025~工业软件概览.md: -------------------------------------------------------------------------------- 1 | # 工业软件概览 2 | 3 | ## 前言 4 | 5 | 工业软件是现代工业生产中不可或缺的工具,涵盖了从产品设计、研发、生产到管理的全流程。本文档旨在提供主流工业软件的系统性概览,帮助读者了解不同类型工业软件的功能和应用场景。 6 | 7 | ## 一、研发设计类软件 8 | 9 | ### 1. CAD(计算机辅助设计)软件 10 | 11 | #### 1.1 通用型 CAD 软件 12 | 13 | - **AutoCAD** 14 | - 经典通用 CAD 软件 15 | - 强大的二维绘图和三维建模功能 16 | - 应用领域:建筑、机械、电子等 17 | - **Fusion 360** 18 | - 基于云端的 CAD/CAM 软件 19 | - 适合小型团队协作 20 | - 集成了设计、仿真和制造功能 21 | 22 | #### 1.2 专业型 CAD 软件 23 | 24 | - **SolidWorks** 25 | - 专注三维实体建模 26 | - 操作直观,易于上手 27 | - 特长:机械设计、装配体设计 28 | - **CATIA** 29 | 30 | - 高端工业设计软件 31 | - 擅长复杂曲面设计 32 | - 主要应用:航空航天、汽车制造 33 | 34 | - **UG NX** 35 | 36 | - 集成 CAD/CAM/CAE 功能 37 | - 强大的曲面造型能力 38 | - 适用:高端制造业 39 | 40 | - **Pro/E(Creo)** 41 | - 优秀的参数化设计功能 42 | - 适合产品结构设计 43 | - 广泛应用于机械和模具设计 44 | 45 | ### 2. CAE(计算机辅助工程)软件 46 | 47 | #### 2.1 综合分析软件 48 | 49 | - **ANSYS** 50 | 51 | - 功能全面的分析平台 52 | - 覆盖结构、流体、热学等 53 | - 应用:航空航天、汽车、电子等 54 | 55 | - **COMSOL** 56 | - 专注多物理场耦合分析 57 | - 优势领域:电磁、声学 58 | - 提供完整的仿真环境 59 | 60 | #### 2.2 专业分析软件 61 | 62 | - **Nastran** 63 | 64 | - 结构力学分析的标杆 65 | - 高精度和可靠性 66 | - 主要用于航空航天、汽车 67 | 68 | - **ABAQUS** 69 | 70 | - 非线性分析领域的佼佼者 71 | - 应用:机械、土木、生物力学 72 | - 提供丰富的材料模型 73 | 74 | - **LS-DYNA** 75 | - 显式动力学分析专家 76 | - 擅长碰撞仿真 77 | - 广泛应用于安全性分析 78 | 79 | ### 3. 电子设计软件 80 | 81 | #### 3.1 PCB 设计 82 | 83 | - **Altium Designer** 84 | 85 | - 专业 PCB 设计平台 86 | - 完整的电路设计解决方案 87 | - 支持高速信号设计 88 | 89 | - **Cadence Allegro** 90 | - 高端 PCB 设计工具 91 | - 适用于复杂电路板设计 92 | - 提供完整的设计流程 93 | 94 | #### 3.2 电路仿真 95 | 96 | - **Multisim** 97 | - 直观的电路仿真工具 98 | - 适合教育和研发 99 | - 丰富的元件库 100 | 101 | ## 二、生产制造类软件 102 | 103 | ### 1. MES(制造执行系统) 104 | 105 | - **Siemens MES** 106 | 107 | - 与西门子自动化设备无缝集成 108 | - 适用于离散制造业 109 | - 提供完整的生产管理解决方案 110 | 111 | - **Rockwell MES** 112 | - 灵活的定制化方案 113 | - 适用于流程工业 114 | - 强大的数据分析能力 115 | 116 | ### 2. CAM(计算机辅助制造) 117 | 118 | - **Mastercam** 119 | 120 | - 主流数控加工软件 121 | - 丰富的加工策略 122 | - 支持多轴加工 123 | 124 | - **PowerMill** 125 | - 专业模具加工软件 126 | - 高效的刀具路径生成 127 | - 优秀的曲面加工能力 128 | 129 | ### 3. 工业机器人编程 130 | 131 | - **ABB RobotStudio** 132 | - ABB 机器人离线编程平台 133 | - 真实的 3D 仿真环境 134 | - 支持虚拟调试 135 | 136 | ## 三、信息管理类软件 137 | 138 | ### 1. ERP(企业资源计划) 139 | 140 | - **SAP ERP** 141 | 142 | - 全球领先的 ERP 解决方案 143 | - 模块化设计,功能完善 144 | - 适合大型企业 145 | 146 | - **Oracle ERP** 147 | - 强大的数据处理能力 148 | - 完整的企业管理方案 149 | - 高度集成化 150 | 151 | ### 2. PLM(产品生命周期管理) 152 | 153 | - **Teamcenter** 154 | 155 | - 完整的产品数据管理 156 | - 支持协同设计 157 | - 强大的配置管理 158 | 159 | - **Windchill** 160 | - 全面的 PLM 解决方案 161 | - 优秀的项目管理功能 162 | - 支持全球化协作 163 | 164 | ## 四、工业自动化软件 165 | 166 | ### 1. PLC 编程软件 167 | 168 | - **SIMATIC Step 7** 169 | 170 | - 西门子 PLC 标准编程工具 171 | - 支持多种编程语言 172 | - 完善的调试功能 173 | 174 | - **RSLogix 5000** 175 | - 罗克韦尔自动化控制平台 176 | - 直观的编程界面 177 | - 强大的诊断功能 178 | 179 | ### 2. SCADA 系统 180 | 181 | - **Wonderware InTouch** 182 | - 工业自动化监控系统 183 | - 丰富的可视化功能 184 | - 强大的数据采集能力 185 | 186 | ## 五、新兴工业软件 187 | 188 | ### 1. 工业物联网平台 189 | 190 | - **ThingWorx** 191 | 192 | - 领先的 IoT 开发平台 193 | - 快速应用开发 194 | - 支持边缘计算 195 | 196 | - **MindSphere** 197 | - 西门子开放式 IoT 系统 198 | - 云端数据分析 199 | - 支持预测性维护 200 | 201 | ### 2. 工业大数据分析 202 | 203 | - **Tableau** 204 | - 直观的数据可视化 205 | - 强大的分析功能 206 | - 支持多种数据源 207 | 208 | ## 结语 209 | 210 | 工业软件是实现智能制造和工业 4.0 的重要工具。选择合适的工业软件需要考虑企业实际需求、软件功能特点、集成能力等多个因素。随着技术的发展,工业软件将继续演进,为制造业的数字化转型提供更强大的支持。 211 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 机械设计笔记 2 | 3 | ## 第一章 机械设计总论 4 | 5 | 1. 机械设计的任务与内容 6 | 7 | - 设计的目的与要求 8 | - 设计的一般过程 9 | - 设计的基本原则 10 | 11 | 2. 机械产品的质量要求 12 | 13 | - 功能性 14 | - 可靠性 15 | - 经济性 16 | - 工艺性 17 | - 维修性 18 | - 美观性 19 | 20 | 3. 机械设计的标准化 21 | 22 | - 标准化基础 23 | - 系列化设计 24 | - 通用化设计 25 | - 模块化设计 26 | 27 | ## 第二章 机械零件的强度 28 | 29 | 1. 强度计算基础 30 | 31 | - 应力与应变 32 | - 强度理论 33 | - 安全系数 34 | - 许用应力 35 | 36 | 2. 疲劳强度 37 | 38 | - 疲劳破坏特征 39 | - 疲劳极限 40 | - 影响因素 41 | - 疲劳寿命 42 | 43 | 3. 接触强度 44 | 45 | - 赫兹接触应力 46 | - 接触疲劳 47 | - 计算方法 48 | - 设计准则 49 | 50 | 4. 表面强度 51 | - 表面应力 52 | - 表面处理 53 | - 强化方法 54 | - 设计要点 55 | 56 | ## 第三章 摩擦、磨损与润滑 57 | 58 | 1. 摩擦学基础 59 | 60 | - 摩擦机理 61 | - 摩擦类型 62 | - 影响因素 63 | - 控制方法 64 | 65 | 2. 磨损分析 66 | 67 | - 磨损机理 68 | - 磨损类型 69 | - 磨损测量 70 | - 防护措施 71 | 72 | 3. 润滑设计 73 | 74 | - 润滑理论 75 | - 润滑方式 76 | - 润滑剂选择 77 | - 润滑系统 78 | 79 | ## 第四章 连接件设计 80 | 81 | 1. 螺纹连接 82 | 83 | - 螺纹类型 84 | - 强度计算 85 | - 防松设计 86 | - 装配要求 87 | 88 | 2. 键连接 89 | 90 | - 键的类型 91 | - 强度计算 92 | - 设计要点 93 | - 应用场合 94 | 95 | 3. 花键连接 96 | 97 | - 类型选择 98 | - 强度校核 99 | - 设计方法 100 | - 加工要求 101 | 102 | 4. 销连接 103 | 104 | - 销的类型 105 | - 强度计算 106 | - 定位方法 107 | - 装配工艺 108 | 109 | 5. 焊接连接 110 | 111 | - 焊接方法 112 | - 接头类型 113 | - 强度计算 114 | - 工艺要求 115 | 116 | ## 第五章 轴系设计 117 | 118 | 1. 轴的设计 119 | 120 | - 轴的类型 121 | - 结构设计 122 | - 强度计算 123 | - 刚度校核 124 | 125 | 2. 轴承选用 126 | 127 | - 轴承类型 128 | - 寿命计算 129 | - 安装设计 130 | - 润滑维护 131 | 132 | 3. 联轴器设计 133 | 134 | - 类型选择 135 | - 参数计算 136 | - 结构设计 137 | - 安装要求 138 | 139 | 4. 轴系零件 140 | 141 | - 轴肩设计 142 | - 键槽设计 143 | - 螺纹部分 144 | - 定位结构 145 | 146 | ## 第六章 传动系统设计 147 | 148 | 1. 带传动 149 | 150 | - 带的选择 151 | - 传动设计 152 | - 张紧装置 153 | - 防护设计 154 | 155 | 2. 链传动 156 | 157 | - 链条选择 158 | - 链轮设计 159 | - 润滑系统 160 | - 维护要求 161 | 162 | 3. 齿轮传动 163 | 164 | - 齿轮类型 165 | - 参数设计 166 | - 强度计算 167 | - 精度要求 168 | 169 | 4. 蜗杆传动 170 | 171 | - 参数选择 172 | - 强度计算 173 | - 热平衡 174 | - 润滑设计 175 | 176 | ## 第七章 离合器与制动器 177 | 178 | 1. 离合器设计 179 | 180 | - 类型选择 181 | - 参数计算 182 | - 结构设计 183 | - 控制系统 184 | 185 | 2. 制动器设计 186 | 187 | - 类型选择 188 | - 制动力计算 189 | - 结构设计 190 | - 安全要求 191 | 192 | ## 第八章 弹簧设计 193 | 194 | 1. 圆柱螺旋弹簧 195 | 196 | - 参数计算 197 | - 强度校核 198 | - 疲劳分析 199 | - 制造要求 200 | 201 | 2. 片弹簧 202 | 203 | - 结构设计 204 | - 强度计算 205 | - 刚度要求 206 | - 安装方法 207 | 208 | 3. 特种弹簧 209 | 210 | - 碟形弹簧 211 | - 蝶形弹簧 212 | - 橡胶弹簧 213 | - 应用选择 214 | 215 | ## 第九章 支承结构设计 216 | 217 | 1. 机架设计 218 | 219 | - 结构类型 220 | - 强度分析 221 | - 刚度要求 222 | - 减振设计 223 | 224 | 2. 导轨设计 225 | 226 | - 类型选择 227 | - 精度要求 228 | - 润滑设计 229 | - 防护措施 230 | 231 | 3. 密封装置 232 | - 密封类型 233 | - 结构设计 234 | - 材料选择 235 | - 安装要求 236 | 237 | ## 第十章 机械系统设计 238 | 239 | 1. 总体设计 240 | 241 | - 方案论证 242 | - 结构布局 243 | - 参数优化 244 | - 性能评估 245 | 246 | 2. 可靠性设计 247 | 248 | - 失效分析 249 | - 寿命预测 250 | - 维护设计 251 | - 安全设计 252 | 253 | 3. 人机工程设计 254 | 255 | - 操作便利性 256 | - 维护性 257 | - 安全防护 258 | - 外观设计 259 | 260 | ## 第十一章 计算机辅助设计 261 | 262 | 1. CAD 基础 263 | 264 | - 建模方法 265 | - 装配设计 266 | - 工程图生成 267 | - 数据管理 268 | 269 | 2. 有限元分析 270 | 271 | - 建模方法 272 | - 载荷分析 273 | - 结果评估 274 | - 优化设计 275 | 276 | 3. 参数化设计 277 | 278 | - 参数关联 279 | - 特征建模 280 | - 族库设计 281 | - 标准件库 282 | 283 | ## 附录 284 | 285 | 1. 常用机械零件标准 286 | 2. 材料选用手册 287 | 3. 设计计算公式 288 | 4. 标准件参数表 289 | 5. 工程图样规范 290 | 291 | ## 参考资料 292 | 293 | 1. 设计手册 294 | 2. 国家标准 295 | 3. 技术规范 296 | 4. 相关文献 297 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/99~参考资料/2024~模型处理软件之几何内核.md: -------------------------------------------------------------------------------- 1 | # 模型处理软件之几何内核 2 | 3 | 几何内核(也称几何引擎、数学内核、内核),是所有计算机 3D 建模系统的核心,定义了所有的基本几何元素,以及这些元素之间的各种运算。几何引擎是所有 3D 模型底层数据存储与管理的基础,是各类建模运算与表达的基础。几何内核是任何 3D 建模系统的核心和基础,是为在应用程序中使用而创建的。CAD 系统通过图形用户界面向最终用户提供对几何引擎功能的访问。几何引擎决定了 CAD 系统功能的极限。3D 打印系统中模型处理软件同样需要几何内核,同样依赖于内核,内核也是 3D 打印模型处理和各种算法的基础。 4 | 5 | # 1 几何内核总体发展状况 6 | 7 | 当今,全球有几十个几何引擎,其中三个被公认为“重量级”的领导者,分别是来自 EDS 的 Parasolid、来自 Spatial Corp 的 ACIS 和来自 Matra Datavision 的 Open CASCADE。更年轻的几何内核也在成功开发,例如 Thinkdesign 内核(think3, Inc.) , VX Overdrive (Varimetrix Corp), KOMPAS-3D 内核 (AO ASCON),CrownCAD(DGM)。 8 | 9 | 世界主要内核、所属公司及其应用情况如下表。 10 | 11 | | 内核或平台 | 所属公司 | 应用情况 | 12 | | ----------- | -------------- | --------------------------------------------------------------- | 13 | | ACIS | 法国达索系统 | Fusion360,CAXA,以及 Inventor, MSC, Ansys 等众多 CAE 软件 | 14 | | Parasolid | 德国西门子 | UG/NX, SolidWorks, Onshape, Topsolid | 15 | | CGM | 法国达索系统 | CATIA | 16 | | Granite | 美国 PTC | Pro/E Creo | 17 | | OpenCasCade | 法国 CapGemini | FreeCAD,国产 CAE 软件 | 18 | | C3D | 俄罗斯 ASCON | KOMPAS-3D, nanoCAD, Nozzle-FEM, Altium, Eremex | 19 | | DGM | 华云三维 | CrownCAD | 20 | | OverDrive | 中望软件 | ZW3D, ZWMeshWorks | 21 | | CRUX IV | 华天软件 | SINOVATION | 22 | | DCM | 德国西门子 | 几何约束求解器,基本处于市场垄断地位,SolidWorks, Onshape, ZW3D | 23 | | LGS 2D/3D | Ledas | 几何约束求解器,CATIA, BricsCAD | 24 | | C3D Solver | ASCON | 几何约束求解器,KOMPAS-3D, nanoCAD, Altium, Eremex, Reng | 25 | | DCS | 华云三位 | 几何约束求解器,CrownCAD | 26 | 27 | 世界主流 CAD 软件及其内核如下表。 28 | 29 | | CAD 产品 | 所属公司 | 所用内核 | 说明 | 30 | | ---------- | ------------- | -------------- | -------------------------- | 31 | | CATIA | 法国达索系统 | CGM | 自主内核,自主约束求解器 | 32 | | UG/NX | 德国西门子 | Parasolid | 早年收购的内核 | 33 | | Pro/E Creo | 美国 PTC | Granite | 自主内核 | 34 | | SolidWorks | 法国达索系统 | Parasolid, CGM | 逐步转向 CGM | 35 | | SolidEdge | 德国西门子 | Parasolid | 收购的产品 | 36 | | Inventor | 美国 AutoDesk | ACIS | 购买了 ACIS 代码,自行改进 | 37 | 38 | CAD 内核虽然很重要,但市场很小,内核公司单独存在是无法存活的。2000 年 Spatial 被达索系统收购。CATIA 一直在完善自己的几何引擎,从原来的曲面造型到后来的基于 BRep 的实体造型,甚至约束求解器也是自己开发。直到后来,CATIA 决定把底层部分独立出来发展,即为 CGM。因此,购买 ACIS,对 CATIA 而言,主要出于商业需要和数据交换。 39 | 40 | 在这些三维 CAD 的实体几何造型内核中,老将 Parasolid 和 ACIS 是几何建模系统的两棵老根,由于一开始就相对独立发展,比较著名,也成就了一代又一代的 CAD 厂商;加上达索的 CGM,是市面上能买到的三款商业化几何引擎。许多产品使用相同的内核时,它们都具有相同的功能和限制,并且仅在接口上有所不同。内核可以决定一款 CAD 产品的上限能力,却不能决定它的下限能力边界,这与具体开发有关。 41 | 42 | 几何引擎从商业角度看,可分为三种类型:许可的、专有的和以源代码形式提供的。 43 | 44 | # 2 商业几何内核 45 | 46 | 许可的内核,授权几何引擎由一家公司开发和维护,该公司将其授权给其他公司的 CAD 系统。授权引擎可以在授权它们的 CAD 系统之间提供更多的前向兼容性(通过 SAT 和 X_T 等交换格式)。 47 | 48 | ## 2.1 ACIS 49 | 50 | 1982 年,Ian Braid、Charles Lang 和英国剑桥的 Shape Data 团队发布了 Romulus B-rep 实体建模器,这是第一个可以直接集成到 CAD 软件中的实体建模内核。Romulus 合并了 CAM-I AIS(Computer Aided Manufacturers International’s Application Interface Specification),是唯一一个提供第三方标准 API 的实体建模内核(后来的 Parasolid 除外),以便于集成到 CAD 软件中。Romulus 很快获得了西门子、惠普和其他几家 CAD 软件供应商的许可。Romulus 实体建模内核在 1986 年退役之前经历了几次升级,添加了装配管理、实例图、改进融合 B 样条曲面等。 51 | 52 | Charles Lang 和 Ian Braid 于 1985 年在英国剑桥成立了 Three Space Ltd.,并由 Dick Sowar 的 Spatial Technology(该公司由 Sowar 和 John Rowley 于 1986 年创建)持有,以开发 Spatial Technology 的 Strata CAM 软件的 ACIS 实体建模内核。ACIS 的第一个版本于 1989 年发布,并很快获得了惠普的许可,将其集成到其 ME CAD 软件中。 53 | 54 | Dassault Systemes 2000 年底收购了 Spatial Technology 的 ACIS 3D 实体建模内核。Spatial Tech 对 ACIS 与其它 CAD、CAE 厂商进行增值产品开发,开发人员在此内核上发布成品之前无需支付许可费用,并使得在 ACIS 上开发的系统都共享几何模型,从而在业界产生了巨大的影响。 55 | 56 | ACIS 是一个面向对象的 C++ 几何库,包括线框、曲面和实体建模,支持混合建模。ACIS 输出为 SAT 文件格式,任何支持 ACIS 的程序都可以直接读取。 57 | 58 | ACIS 产品使用软件组件技术,用户可使用所需的部件,也可以用自己开发的部件来替代 ACIS 的部件。ACIS 产品包括一系列的 ACIS 3D Toolkit 几何造型和多种可选择的软件包,一个软件包类似于一个或多个部件,提供一些高级专业函数,可以单独出售给需要特定功能的用户。ACIS 产品可向外出售接口源程序,同时鼓励各家软件公司在 ACIS 核心系统基础上发展与 STEP 标准相兼容的集成制造系统。 59 | 60 | ## 2.2 Parasolid 61 | 62 | 1988 年底,为了应对 Pro/E 在 CAD 软件领域的快速竞争,MD M&E/Unigraphics(McDonnell-Douglas Manufacturing &Engineering)从 Evans&Sutherland 手中收购了 Shape Data,而此时 Shape Data 即将发布 Parasolid。并于 1989 年底推出了一种基于 Parasolid 的更具集成性和竞争力的实体建模 CAD 软件 UG/Solids。 63 | 64 | Parasolid 是由 John Owen 和他的团队在 Shape Data 设计的,与之前的 Romulus 实体建模内核向上兼容,并保留了 CAM-I AIS API。Ron Davidson 于 1989 年推出 Parasolid,一个事实标准的实体建模内核,很快,西门子 Nixdorf、通用动力、富士通和其他公司就购买了 Parasolid,以将其集成到各自的 CAD 软件程序中。 65 | 66 | MDM&E/Unigraphics 于 1991 年底被 EDS(Electronic Data Systems Corp.)收购。 67 | 68 | Parasolid 是一个几何建模内核,最初由 Shape Data Limited 开发,现在由 Siemens PLM Software(前身为 UGS Corp.)拥有。 69 | 70 | Parasolid 是 CAD 行业的“先驱”之一。该软件现已成为最广泛使用的 3D 实体建模引擎之一,最终用户数量已超过 100 万。Parasolid 提供用于实体建模、广义网格建模、集成自由曲面和片材建模的技术。该内核用于 230 多种软件产品,包括 Unigraphics 和 Solid Edge 软件包,以及 SolidWorks、CADKEY、ANSYS、Pro/E、DESKTOP 和 Mechanical Dynamics 等。 71 | 72 | ## 3.3 科大九韶 AMCAX 73 | 74 | 2022 年,由中国科协设立的“科创中国”系列榜单发布,其中由中国科学技术大学“科大九韶团队”开发的几何内核 AMCAX 名列其中。据称 “科大九韶团队”围绕“破解我国研发设计类工业软件 CAX 卡脖子难题”的总体目标,构建了“三维设计、分析、制造”一体化的数学理论和高效算法,取得了最前沿理论和原创算法的突破,研发了国产自主可控的下一代工业软件内核,初步构建了国产工业软件生态体系。AMCAX 具有如下原创特色:复杂造型“敏捷化”、设计分析“一体化”、工程设计“智能化”。 75 | 76 | AMCAX 构建“CAD/CAE 一体化软件内核”,实现了产品从“三维设计”到“工程分析”的无缝衔接一体化运算,提高了工业制造的研发设计效率。现有多款基于“科大九韶内核”的国产工业软件,已成功部署应用于智能装备、智慧建筑、智能家装、数字化矿山、芯片量测等行业,未来将在航天航空设计与制造、汽车设计与制造、核电工程、元宇宙等领域推广和应用。 77 | 78 | 2023 年,AMCAX 3.0 已经发布,让我们拭目以待,希望国产内核快速成长,国产工业软件不再被卡脖子。 79 | 80 | # 3 专有(私有)内核 81 | 82 | 专有几何建模引擎由 CAD 开发人员开发和维护,专门用于他们的应用程序。有不少 CAD 开发人员使用他们自己的几何内核。专有内核的优势在于与 CAD 应用程序界面的更深入集成。这样做的结果是用户可以更好地控制系统。 83 | 84 | 他们更愿意完全控制自己的技术,不想依赖其他公司。自己开发的核心更加灵活和易于管理,只要 CAD 开发人员自己需要,就会尽快对其进行更改。当使用您自己的核心时,其成本在成品价格中的份额通常是最小的。它独立于第三方许可政策变更。 85 | 86 | ## 3.1 Thinkdesign 87 | 88 | 专有内核的一个典型例子是 ThinkDesign,它是 Think3 CAD 系统的基础。它提供实体和参数化建模、高级曲面建模、线框和 2D 绘图。 89 | 90 | 源代码中可用的内核。源代码中可用的内核类似于许可内核。它们也由一家公司开发和维护,然后授权给其他公司用于 CAD 应用程序。不同之处在于开发人员提供了内核的源代码。对于有开发团队的公司来说,在有源代码的情况下可以定制系统核心是非常方便的。 91 | 92 | ## 3.2 中望 OverDrive 93 | 94 | 中望 ZW3D 的 OverDrive 是国内为数不多的内核,其前身是已有 25 年历史的美国 VX 公司的 Overdrive 几何引擎。2010 年,中望软件全资收购美国 VX 公司,并获得其全部知识产权和源代码,核心研发团队也全部加入,从而获得了对内核的掌控。 95 | 96 | 支持各种基础的几何算法实现,包括求交、投影、分割、合并、延伸、偏移等。支持各种三维基础建模运算,包括布尔运算、扫掠算法、放样算法、圆角算法、拔模算法、抽壳算法和同步建模技术等,同时各算法均支持容差建模。支持面向数据交互的模型导入导出、模型诊断与修复算法等。 97 | 98 | 强大的混合建模能力,支持“实体-曲面对象”的混合建模,统一环境下可独立使用曲面建模、实体建模,且均可自由在实体、曲面结果之间切换,曲面和实体可自由直接交叉布尔运算。支持“参数化建模和直接建模”的混合建模,参数化建模、直接建模可交叉混合使用,参数化模型可自由转换为无参模型。 99 | 100 | OverDrive 作为独立自有的几何内核,可以让 CAM 软件无缝的读取中望 3D 数据,保证数据的安全性和效率;独立自有内核的 CAD 也可以提供强大、灵活的 API 接口,让应用软件开发商基于此进行二次开发。 101 | 102 | ## 3.3 华天 CRUX IV 103 | 104 | 华天软件 Sinovation 是在日本 UEL 公司源码基础上发展起来的。UEL 是日本最大的 CAD 厂商,已经有多年历史。华天经过努力,开发的内核称为 CRUX IV。 105 | 106 | # 4 开源几何内核 107 | 108 | 两个最著名的开源内核是 Open CASCADE 和 SMLib。两者都是几何建模函数库,以纯文本形式分发,只有一个区别:Open CASCADE 免费使用,但 SMLib 需要付费。 109 | 110 | ## 4.1 Open CASCADE (OCC) 111 | 112 | Open CASCADE (简称 OCC)是一开源的几何引擎。基于该建模引擎发展了若干 CAD/CAE/CAM 软件,如国外的 FreeCAD、HeeksCAD,国内的 AnyCAD。Open CASCADE(简称 OCC)为开源社区比较成熟的基于 BREP 结构的建模引擎,能够满足二维三维实体造型和曲面造型,国内研究和使用它的单位也越来越多。 113 | 114 | CASCADE 核心由 Matra Datavision 开发。这家公司之前有自己著名的 CAD——Euclid (Matra Datavision 曾经是法国最著名的 CAD 厂商,1985 年就已经推出了 Euclid IS),其内核是 CASCADE。在商业竞争下,Dassault Systemes 于 1999 年收购 Matra Datavision,内核成为 CATIA 的基础。Euclid 项目被关闭,内核以 Open CASCADE 的名义发布在互联网上。现在它属于法国公司 Principia Research & Development,该公司开发核心并提供付费服务,以创建基于它的专业应用程序。 115 | 116 | 自 1999 年底以来,CASCADE 系统已提供两个版本:CASCADE 和 Open CASCADE。CASCADE 工具是付费的、更完善的和经过充分调试的。Open CASCADE 可以通过 Internet 下载,并且允许添加由所有人开发并仅由开发人员测试的组件,即未经官方测试。 117 | 118 | 其客户包括宝马(自动啮合系统)和戴姆勒克莱斯勒(零件控制系统),法国公司 BRGM(3D 地质数据建模)和 EADS CCR(产品设计与计算系统之间的接口),日本公司本田和矢崎(摩托车设计),英国公司 Flow Solutions(空气动力学计算)和 ESS(控制测量自动化)。 119 | 120 | 内核本身是在 Visual C++ 中创建的。OCC 可以分为建模、可视化和数据管理(OCAF)三大模块。其中建模为核心组件;可视化组件基于 OpenGL,相对其他的三维可视化 OpenGL 平台(如 Coin3d,OpenInventor,Ogre3d,OSG,VTK 等),功能简单,并且显示效果比较差,不能充分利用 GPU 硬件加速;OCAF 采用树的方式管理数据,使用比较复杂,效率比较低,并且不适合自定义扩展。因此,不推荐使用 OCC 的可视化和数据管理组件。 121 | 122 | 仅在 2000 年,Open CASCADE 就被 11,000 名开发人员从该网站下载,用于全球 64 个国家,主要是北美和欧洲。 123 | 124 | ## 4.2 SMLib 125 | 126 | SMLib 核心归 Solid Modeling Solutions 所有。它是一家由员工所有的私人公司,没有合作伙伴。她的工作人员并不多,但他们在几何建模领域有相当多的经验。 127 | 128 | SMLib 核心被 200 多家西方公司和大学使用。它具有独特的商业模式,产品以 C++ 源代码库的形式分发,软件成本不取决于作业数量。两年后,内核的购买者拥有它的全部权利,不再需要支付许可证费用。但是,与此同时,他将失去新版本和支持。 129 | -------------------------------------------------------------------------------- /20~计算机辅助设计/CAD/CADmium/99~参考资料/2024~CADmium: A Local-First CAD Program Built for the Browser.md: -------------------------------------------------------------------------------- 1 | We're building a new open-source CAD program. We've gotten pretty far, but we need your help. 2 | 3 | If you'd like to join the effort, join the [Discord](https://discord.gg/qJCsKJeyZv)! 4 | 5 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjM0Ni42MTU3MDUzNTA5MzgyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg==) 6 | 7 | ![Screenshot](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fscreenshot.png&w=1920&q=90) 8 | 9 | # What Does It Take? 10 | 11 | To build a 3D parametric CAD program, you need a: 12 | 13 | - 2D Constraint Solver 14 | - B-rep Kernel 15 | - History Tracker 16 | - 3D User Interface 17 | - File Format 18 | 19 | Let's talk about each one! 20 | 21 | # 2D Constraint Solver 22 | 23 | This is the 2D engine that can ensure lines stay parallel or perpendicular, can make two circles have the same radius, etc. 24 | 25 | The go-to approach to solving this problem is to concatenate all the unknowns into a big vector 𝑥⃗*x*, then express every constraint as a linear equation and assemble them all into a big matrix equation: 26 | 27 | 𝑀𝑥⃗=𝑏*M\*\*x*=_b_ 28 | 29 | Notionally, you can invert 𝑀*M* and you're done! 30 | 31 | 𝑥⃗=𝑀−1𝑏*x*=*M*−1*b* 32 | 33 | In practice many optimizations are made. But this approach has downsides. 34 | 35 | You can only invert 𝑀*M* if it is square, which gives rise to the conventional wisdom that all sketches should be perfectly constrained. If you have too many constraints, 𝑀*M* will be too tall and the approach fails, even if the redundant constraints are compatible. 36 | 37 | If you have too few constraints, 𝑀*M* will be too short which means a solution can be found by inserting assumptions. But those assumptions are not always consistent with the modeler's expectations. If you've ever had a sketch feature suddenly fly away to infinity, this is what happened. 38 | 39 | Another downside is that solving this kind of matrix equation gets prohibitively slow when you have a lot of unknowns, which gives rise to the conventional wisdom that individual sketches should be small and simple. 40 | 41 | --- 42 | 43 | There are many alternative approaches for constraint solving. Let's try to formulate the problem as a 2D physics simulator: 44 | 45 | - Each point has mass 𝑚*m* and velocity 𝑣⃗*v* 46 | - Each constraint is a spring that exerts a force 𝐹*F* on the points it is attached to 47 | - There's a friction force proportional to velocity 48 | - Step the simulation forward some small 𝑑𝑡*d\*\*t* until convergence 49 | 50 | Instead of solving the whole problem at once, this formulation makes many small changes, driving the potential energy in the springs to zero. 51 | 52 | 53 | 54 | At each time step, the runtime is linear with the number of springs and linear with the number of unknowns, so it may support dramatically more complex sketches than the textbook approach. This type of simulation lends itself to parallelization, so it may be very fast in practice. Maybe this step could happen in a compute shader? 55 | 56 | In this formulation, overconstrained problems don't complain about being overconstrained: a self-consistent system will solve normally, and in an inconsistent system the springs just fight it out and compromise. 57 | 58 | Underconstrained problems don't fly out to infinity, they find the nearest valid configuration. 59 | 60 | Another advantage is that this formulation can support inequality constraints. You could constrain a length to _larger than 1 cm and less than 2 cm_, and preserve that degree of freedom for later. You could constrain a sketch angle to _between 10 and 30 degrees_. 61 | 62 | More speculatively, you could extend this formulation to other types of forces. If a closed polygon should have a particular surface area, that could be accommodated as a pressure force. 63 | 64 | There are other interesting formulations of the 2D constraint problem and there are certainly disadvantages to the spring-mass-damper approach, but in general we would advocate for solving the problem iteratively rather than in a single monolithic solve step. In the last decade there has been tremendous progress in solving gradient descent problems quickly, and in bringing the power of the GPU to the browser. 65 | 66 | Our primary goal is to make a CAD experience that feels familiar for most CAD users, but we do believe there is room here for fresh ideas. 67 | 68 | # B-rep Kernel 69 | 70 | In Mechanical CAD, users need to interact directly with the edges and faces of their parts. 71 | 72 | Consequently, all parametric CAD programs model parts by directly representing their boundaries in a data structure. A cube is representated as a Solid with six Faces, each with four Edges, each with two Points. This approach is called _Boundary Representation_, or _b-rep_. 73 | 74 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjE3NC45NiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=) 75 | 76 | ![B-rep Illustration](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fb-rep-illustration.png&w=1920&q=90) 77 | 78 | For curved surfaces, it is common to use a generalization of splines called [NURBS](https://www.3ds.com/store/cad/nurbs-modeling) surfaces, which allow the user artistic control over freeform shapes, and the ability to represent conic sections exactly. 79 | 80 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjMwOS42MTA2MTk0NjkwMjY1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg==) 81 | 82 | ![NURBS B-rep Illustration](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fnurbs-illustration.jpg&w=1920&q=90) 83 | 84 | Representing shapes this way is hard, and it gets dramatically harder when you try to implement [boolean operations](https://www.javatpoint.com/autocad-boolean-operations) like Union, Intersection, and Subtraction. A library that handles this kind of data and boolean operations is called a b-rep kernel, and they are extremely difficult to make. 85 | 86 | Each of the big four CAD companies has written their own, and it took them decades. Today's proprietary CAD landscape looks like this: 87 | 88 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjE1My42ODYwOTg2NTQ3MDg1MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=) 89 | 90 | ![CAD Landscape](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2FCAD_landscape.png&w=1920&q=90) 91 | 92 | Where the company is at the top, the b-rep kernel is at the bottom, and in the middle are some of the CAD programs they offer, arranged loosely by cost. 93 | 94 | The most important b-rep kernel is Parasolid which powers a lot of the industry including products like Shapr3D and Plasticity. Parasolid is the Cadillac Escalade of b-rep kernels: It is huge, expensive, and it offers every amenity you could ask for as well as a bunch of amenities you didn't ask for. 95 | 96 | In contrast, the open source CAD landscape looks like this: 97 | 98 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjE0OS4zMzAwMjQ4MTM4OTU4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg==) 99 | 100 | ![Open Source CAD Landscape](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2FOS_CAD_landscape.png&w=1920&q=90) 101 | 102 | The only popular open-source b-rep kernel is OpenCascade, which is the Pontiac Aztek of b-rep kernels: It is ugly, barebones, and it might break down on you, but it is drivable and you can get one for free. 103 | 104 | SolveSpace is a [Tuk-Tuk](https://en.wikipedia.org/wiki/File:Tuk-Tuk_-_Herat,_Afghanistan.jpg) in that it was built by one person in a garage and it gets a lot done with very little, but it only looks like a car if you squint. 105 | 106 | All this to say: The proprietary kernels are good but expensive and the open-source kernels are free but not good. 107 | 108 | All popular b-rep kernels are old and written in C++. If you consult the [official build instructions](https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html) for OpenCascade, you see this screenshot: 109 | 110 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjM5OS4wNzc1MzQ3OTEyNTI1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg==) 111 | 112 | ![Screenshot of How To Build OpenCascade](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fcmake_image004.png&w=1920&q=90) 113 | 114 | Which looks like it was taken on Windows 2000? 115 | 116 | --- 117 | 118 | Thankfully, there is a new [open-source](https://github.com/ricosjp/truck) b-rep kernel being developed right now called [Truck](https://ricos.gitlab.io/truck-tutorial/v0.1/bottle.html)! Unlike every other b-rep kernel, this one is _modern_ and it is written is Rust. 119 | 120 | Rust is not categorically better than C++, but it is better in a lot of ways that matter to an open-source project. Its build tooling is powerful, convenient, and well-documented. It has centralized package management. It provides more guarantees around memory safety which in turn makes parallelization easier and safer. Its compiler errors are friendly and helpful, so Rust code is easier to refactor. Importantly, Rust has excellent support for compiling to webassembly so it can be readily run in a browser. 121 | 122 | It is trivial to include Truck in any Rust project. It runs on any operating system and in a browser. They even provide javascript bindings and [examples](https://github.com/ricosjp/truck/blob/master/truck-js/tests/test.js#L4-L14)! 123 | 124 | Truck is about four years old and it already covers all the basics. It can read and write .step files. It can triangulate surfaces to a fixed tolerance. It has NURBS support. It can compute the Intersection or Union of two Solids[\*](https://github.com/ricosjp/truck/issues/57), as well as the Not of a single Solid. 125 | 126 | It is small and lightweight, it is being developed by a [real company](https://www.ricos.ltd/), and it is young enough and simple enough that a few motivated people could add major pieces of functionality, in a fork if necessary. 127 | 128 | For example, the B in NURBS stands for [B-Splines](https://en.wikipedia.org/wiki/B-spline), but there is an alternative representation called [T-Splines](https://en.wikipedia.org/wiki/T-spline) which is better in some ways. The [patent](https://patents.google.com/patent/US7274364B2/en) on T-Splines is owned by Autodesk, but it just expired a few weeks ago! Support could theoretically be built into Truck! 129 | 130 | I think that Truck is the Rivian R3 of b-rep kernels: It is smaller than its cousins, it's using a lot of modern technology in an exciting but proven way, and it isn't quite finished yet! At the risk of overextending the metaphor, Rust is the electric motor and C++ is the internal combustion engine. 131 | 132 | # History Tracker 133 | 134 | Parametric CAD programs store the Feature History of your design. You sketch, extrude, and revolve until your part is done. What makes it "parametric" is that you can also rewind the clock to an earlier step, change something about it, then replay your features to get a slightly different part. 135 | 136 | Abstracted further, you can inject variables as inputs to the model, then change the values and the part will update. Your model has now been "parameterized". 137 | 138 | This approach has been wildly successful, but it's [often brittle](https://wiki.freecad.org/Topological_naming_problem) and there are [valid criticisms](https://www.3dcadworld.com/the-failed-promise-of-parametric-cad/) of the whole paradigm. 139 | 140 | --- 141 | 142 | One approach that has emerged to help address the brittleness of parametric CAD is called the [Resilient Modeling Strategy](https://www.youtube.com/watch?v=YU_lTS1vIx4&t=255s), wherein: 143 | 144 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjI4Mi44MjE0MDM3NTI2MDYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIi8+) 145 | 146 | ![Resilient Modeling Strategy](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fresilient_modeling_strategy.png&w=1920&q=90) 147 | 148 | RMS is a set of conventions for how parts should be designed. For example, all chamfers and fillets go last because they consume edges. Detail features are allowed to reference Core features, but not each other, and so on. 149 | 150 | Maybe there is value in enforcing these patterns within the CAD program. It may feel limiting at first, but it may pay huge dividends by making designs actually reusable and transferrable. 151 | 152 | --- 153 | 154 | Another avenue to explore could be adding a feature history to sketches. In today's CAD programs it's common to sketch base features likes circles and rectangles, then use tools like mirror, linear pattern, or sketch fillet to duplicate or modify those features. Then you sketch more base features and use more tools, back and forth. The web of dependencies this builds in a sketch is very hard to understand if you weren't the one who made the sketch, so it is often faster to delete the whole sketch and start over. 155 | 156 | But if sketch features were also stored and displayed in a feature tree, then the ideas from RMS could be applied to a single sketch. Reference features like projecting an edge probably should come first, and final details like snipping and filleting should probably come last. 157 | 158 | Again this might feel limiting at first, but putting an operation first in the feature tree doesn't mean you have to start with that feature chronologically as you sit down to model. 159 | 160 | --- 161 | 162 | On the topic of chronological ordering, why not record every user event in an append-only log? If that log were the single source of truth for the file, then any particular Feature History could be reconstructed by moving a time slider. Think: Unlimited Undo/Redo, even after closing and reopening the file: 163 | 164 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjUyNS44NDg2MDU1Nzc2ODkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg==) 165 | 166 | ![Operation Log](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Foperation-log.png&w=1920&q=90) 167 | 168 | You could imagine rewinding back to an earlier version of the Feature History and forking off in a different direction to try the design a different way. You would end up with a branching tree of different attempts, exactly like a git history: 169 | 170 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjIxNS4wMTIzODkzODA1MzA5OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=) 171 | 172 | ![Evolution Log](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fevolution-log.png&w=1920&q=90) 173 | 174 | Our goal is to create a CAD application where every valid document state is trivially recoverable. Every false start, every "final" deliverable, whether you knew you needed it or not. 175 | 176 | With that machinery you could maintain different variants of parts and keep a record of every design as it was when you ran downstream processes like toolpath generation or FEA. 177 | 178 | If building this version control system is akin to building git for Mechanical design, could we also build git**hub** for Mechanical design? 179 | 180 | # 3D User Interface 181 | 182 | We love the idea of doing CAD in a browser. Onshape paved the way here and it's awesome. 183 | 184 | However, Onshape doesn't really run in a browser—it runs on a GPU enabled cloud instance somewhere in AWS and streams the results to your browser. This is why if your internet connection goes down while you're using Onshape, you literally can't do _anything_. You can't even rotate the viewport. 185 | 186 | ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEyIiBoZWlnaHQ9IjM0NS45NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=) 187 | 188 | ![Onshape with no Internet](https://mattferraro.dev/_next/image?url=%2Fimages%2Fcadmium%2Fonshape-no-internet.png&w=1920&q=90) 189 | 190 | But CADmium doesn't have to be like that. Given that Truck can compile to webassembly, CADmium can do everything right there in your browser. A [Local-First](https://www.inkandswitch.com/local-first/) app! 191 | 192 | --- 193 | 194 | We've been using this tech stack: 195 | 196 | - [Three.js](https://threejs.org/) for the 3D viewport 197 | - [Svelte](https://svelte.dev/) for state management/reactivity 198 | - [Threlte](https://threlte.xyz/) to bridge the gap between Svelte and Three.js 199 | - Message passing between the UI and the b-rep kernel, rather than sharing memory 200 | - [Electron](https://www.electronjs.org/) for running locally 201 | - Bog standard everything else: Typescript, TailwindCSS, Vite, etc 202 | 203 | This kind of stack allows the entire app to be written in a reactive, declarative way, plumbing data changes all the way through to mesh updates without you having manage that complexity. That's important because 3D CAD apps are among the most complex UIs that exist. If you want to make a good one and you only have a small team, the framework had better do a lot of heavy lifting! 204 | 205 | With this stack we were able to build a proof of concept that works, so we feel that this won't be the limiting factor for CADmium. 206 | 207 | # File Format 208 | 209 | CADmium will use JSON for everything. 210 | 211 | The Operation Log mentioned above should be [JSON lines](https://jsonlines.org/). And after you've designed a part, CADmium should support exporting to an even simpler exchange format. Notionally something like: 212 | 213 | ```json 214 | { 215 | "steps": [ 216 | { 217 | "type": "sketch", 218 | "id": "Sketch-01", 219 | "data": { ... } 220 | }, 221 | { 222 | "type": "extrude", 223 | "id": "Extrude-01", 224 | "data": { 225 | "distance": "10mm", 226 | "sketch": "Sketch-01", 227 | "faces": [0], 228 | "type": "new" 229 | } 230 | } 231 | ] 232 | } 233 | ``` 234 | 235 | Which could be converted into a .step or .stl using the CADmium command line interface (CLI): 236 | 237 | ```bash 238 | $ CADmium export my_part.cadmium --format stl 239 | ``` 240 | 241 | These two ingredients: 242 | 243 | 1. A simple, easy-to-understand file format 244 | 2. An open-source CLI to work with it 245 | 246 | Are what's required to enable an ecosystem that can create tremendous new value that we would never be able to build ourselves. 247 | 248 | Imagine being able to pop open a text editor to change an extrusion depth or a fillet radius. Imagine writing a script that replaces all the M5 screws with M6 screws, without having to read a [nasty spec](https://en.wikipedia.org/wiki/ISO_10303-21). 249 | 250 | What would a change like that look like using git-diff? 251 | 252 | --- 253 | 254 | I mentioned above the concept of github for Mechanical design. If such a thing really were built and people really did use it, then it would not be hard to imagine building github copilot for mechanical design. 255 | 256 | We don't know what that would look like in practice, but we think it's fair to say that large language models work best on simple, open, text-based formats rather than complex, proprietary, binary formats. 257 | 258 | # Conclusion 259 | 260 | Of the ideas mentioned here, we have no idea which ones are going to work out and which ones will turn out to be duds. But we know that somewhere in this space, there's a huge opportunity for a small group of people to make an outsized impact on the manufacturing industry. 261 | 262 | These are the things we need help with: 263 | 264 | 1. Programming in Rust (general improvements) 265 | 2. Computational Geometry (patches to Truck) 266 | 3. Three.js help (new camera controller, better lighting, post-processing) 267 | 4. Finding grant opportunities or wealthy benefactors 268 | 269 | These are things that we are not touching for now, but would love to revisit later: 270 | 271 | 1. Venture Capital 272 | 2. Toolpath generation (CAM) 273 | 3. Finite Element Analysis (FEA) 274 | 275 | If you find these ideas intriguing, please join the CADmium [discord server](https://discord.gg/qJCsKJeyZv) and chat with us! 276 | --------------------------------------------------------------------------------