上一篇实现了LT和VBA的交互,这次实现用VBA让LT自动光线追迹,并将数据存储至相应的表格列表中。其中以LED准直为例子演示。
一般LED购买后,都可以找厂家咨询光线数据,如果没有则可以通过LightTools去自行建立光源模型,LightTools建立光源的方式有两种:1 直接建立(自带)2 导入TXT文件,文件的头可以查阅相关文档。下面介绍直接从欧司朗官网下载文件进行演示操作:
后续将LED光发射角度改到90°即可。
建立一个5mm直径,厚度2.5mm的透镜,将其置于z=5mm位置(光源发射面位于0点),并修改系统中的单位。
透镜材料不需要修改,就用NBK7就好,建立一个探测器,并添加准直的评价函数,探测器尺寸50*50,位置z=100mm,完成后如下:
代码如下(示例):
'本次主要更改透镜的R值并获取最大位置的发散角度,具体代码如下 :
Sub SETPARM()
'建立接口
Dim lt As LightTools.LTAPI
Set lt = New LightTools.LTAPI
k = 2
For i = 2.7 To 5 Step 0.1
'设置R值,此处的
'LENS_MANAGER[1].COMPONENTS[Components].SOLID[Lens_4].CIRC_LENS_PRIMITIVE[LP_1].SPHERICAL_LENS_SURFACE[LensRearSurface]
'是R值存储的地址,具体找到其位置,一般使用“复制其访问链接”,后面用图演示
LENSR = lt.DbSet("LENS_MANAGER[1].COMPONENTS[Components].SOLID[Lens_4].CIRC_LENS_PRIMITIVE[LP_1].SPHERICAL_LENS_SURFACE[LensRearSurface]", "Radius", i)
'再输入框中输入开始模拟
lt.Cmd "BeginAllSimulation"
' get到具体最大位置的发散角
MAXCOLANGLE = lt.DbGet("LENS_MANAGER[1].OPT_MANAGER[Optimization_Manager].OPT_MERITFUNCTIONS[Merit_Function].OPT_COLLIMATEMERITFUNCTION[COL]", "ValueAt", "1", "11")
' R将结果放至sheet1,B2-B25列
Worksheets("Sheet1").Range(Cells(k, 2), Cells(k, 2)) = MAXCOLANGLE
k = k + 1
Next i
l = 2
For j = 2.7 To 5 Step 0.1
' R值仿真从2.7到5 ,放至sheet1,A2-A25列
Worksheets("Sheet1").Range(Cells(l, 1), Cells(l, 1)) = j
l = l + 1
Next j
End Sub
最终结果如下图所示
至此已完成所有R值变化对应最大角度的数据输出。