4. 机械结构建模:基本几何体、布尔运算与CAD导入
做杂散光分析,第一步就是把光学系统的机械结构建出来。说白了,你得告诉FRED光在哪儿会被挡住、在哪儿会乱反射。我见过不少新手,光学设计做得漂漂亮亮,一到机械结构就随便画个方块凑合——结果杂散光分析全白做。
这一章,咱们就把机械建模这块儿彻底讲透。从最基础的几何体,到布尔运算,再到导入外部CAD模型,每一步我都会把项目里踩过的坑告诉你。
4.1 基本几何体:立方体、圆柱、球体
FRED里创建基本几何体,路径在菜单栏 Create → Geometry → Primitive。你想想看,再复杂的机械结构,拆开来看无非就是这些基本形状的组合。
| 几何体 | 创建入口 | 关键参数 | 典型用途 |
|---|---|---|---|
| 立方体 (Box) | Create → Geometry → Box | 长、宽、高、位置、旋转 | 镜筒、基座、遮光罩外壳 |
| 圆柱 (Cylinder) | Create → Geometry → Cylinder | 半径、高度、轴向 | 镜筒内壁、光阑孔、支撑柱 |
| 球体 (Sphere) | Create → Geometry → Sphere | 半径、球心位置 | 积分球、光源模型、探测器封装 |
创建完几何体,默认是实心的。但在杂散光分析里,我们更关心的是表面属性。右键点击几何体,选择 Properties → Surface,你可以给每个面单独指定光学属性——比如反射率、散射模型、吸收率。
举个例子,镜筒内壁我通常会设成 Lambertian散射 加 98%吸收,这样能模拟真实黑漆的效果。外壁则设成镜面反射,代表金属外壳。
4.2 布尔运算:把简单形状组合成复杂结构
基本几何体太单调了,对吧?真正的机械结构,比如带台阶的镜筒、有通风孔的遮光罩,都得靠布尔运算来搞定。
FRED的布尔运算在 Create → Geometry → Boolean 里,支持三种操作:
- Union(并集):把两个几何体合并成一个。比如镜筒主体和法兰盘,合并后就是一个整体。
- Subtraction(差集):从一个几何体里挖掉另一个。比如在遮光罩上开个矩形窗口。
- Intersection(交集):只保留两个几何体重叠的部分。这个用得少,但做特殊形状时会用到。
操作步骤很简单:
- 选中两个几何体(按住Ctrl多选)。
- 点击 Create → Geometry → Boolean,选择运算类型。
- 在弹窗里确认 Base Object(被操作对象)和 Tool Object(工具对象)。
- 点击OK,新生成的布尔体出现在模型树里。
布尔运算生成的是 参数化模型,你随时可以双击它,修改参与运算的原始几何体尺寸。这一点非常方便——设计迭代时不用重新建模。
4.3 导入CAD模型:打通与机械设计的桥梁
实际项目中,机械结构很少在FRED里从头画。一般都是机械工程师用SolidWorks、Creo、CATIA画好,然后导给我们做光学分析。FRED支持多种CAD格式:
| 格式 | 扩展名 | 导入方式 | 注意事项 |
|---|---|---|---|
| STEP | .step, .stp | File → Import → STEP | 最推荐,面片质量好,支持装配体 |
| IGES | .iges, .igs | File → Import → IGES | 老格式,有时会丢面 |
| SAT (ACIS) | .sat | File → Import → SAT | 与FRED内核兼容性好 |
| STL | .stl | File → Import → STL | 三角网格,精度低,慎用 |
导入时有个关键选项:Import as Single Object 还是 Import as Assembly。我个人习惯选Assembly,这样每个零件独立,方便后续给不同零件赋不同的光学属性。比如镜片设成透射+增透膜,镜筒内壁设成吸收+散射。
导入后,记得检查一下模型。有时候CAD软件和FRED的单位不一致,导致模型缩放到离谱的大小。在导入弹窗里可以设置 Unit Conversion,确保毫米对毫米、英寸对英寸。
4.4 知识结构图:机械建模全流程
下面这张图,把机械建模的三种路径和它们之间的关系画清楚了。你可以把它当作操作指南:
4.5 模型检查与优化
不管是用哪种方式建的模,导入或创建完成后,我建议你做三件事:
- 检查法线方向:在 View → Display → Face Normals 里打开法线显示。所有朝外的面应该是绿色箭头,朝内的面是红色。如果某个面法线反了,杂散光追迹结果会完全错误——光会从不该透的地方透过去。
- 检查重叠面:用 Tools → Geometry → Find Overlapping Faces。重叠面会导致光线重复计算,追迹效率下降,结果也可能出错。
- 简化模型:对于不影响杂散光分析的细节(比如螺丝孔、倒角、铭牌),我通常会删除或抑制掉。模型越简单,追迹越快。你想想看,一个M3螺丝孔在杂散光分析里根本不会影响结果,但会让追迹时间多出30%。
4.6 实战案例:一个简单的镜筒模型
咱们来走一遍完整流程。假设你要建一个镜筒,外径50mm,内径40mm,长度80mm,前端带一个法兰盘。
步骤1:创建外筒
Create → Geometry → Cylinder,半径25mm,高度80mm,轴向Z。命名为 "Barrel_Outer"。
步骤2:创建内孔
Create → Geometry → Cylinder,半径20mm,高度80mm,轴向Z。命名为 "Barrel_Inner"。
步骤3:布尔运算挖孔
选中 Barrel_Outer 和 Barrel_Inner,Create → Geometry → Boolean → Subtraction。Base选Barrel_Outer,Tool选Barrel_Inner。生成 "Barrel_Hollow"。
步骤4:创建法兰盘
Create → Geometry → Cylinder,半径35mm,高度5mm,轴向Z。位置设在Z=80mm处(镜筒前端)。命名为 "Flange"。
步骤5:合并法兰和镜筒
选中 Barrel_Hollow 和 Flange,Boolean → Union。生成 "LensBarrel_Complete"。
步骤6:赋表面属性
右键 → Properties → Surface。内壁选吸收+散射,外壁选镜面反射,法兰前端选吸收(用于安装遮光罩)。
你看,一个完整的镜筒模型,几分钟就搞定了。而且全是参数化的,后期改尺寸直接双击修改原始圆柱的半径就行。