LightTools中VBA宏的编程入门

发布时间:2024年01月24日

镜片的控制和关键数据的获取


前言

上一篇实现了LT和VBA的交互,这次实现用VBA让LT自动光线追迹,并将数据存储至相应的表格列表中。其中以LED准直为例子演示。

一、LED准直和数据获取

1 LED库的下载及说明

一般LED购买后,都可以找厂家咨询光线数据,如果没有则可以通过LightTools去自行建立光源模型,LightTools建立光源的方式有两种:1 直接建立(自带)2 导入TXT文件,文件的头可以查阅相关文档。下面介绍直接从欧司朗官网下载文件进行演示操作:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后续将LED光发射角度改到90°即可。

2 镜片的输入

建立一个5mm直径,厚度2.5mm的透镜,将其置于z=5mm位置(光源发射面位于0点),并修改系统中的单位。
在这里插入图片描述
在这里插入图片描述

3 建立评价函数

透镜材料不需要修改,就用NBK7就好,建立一个探测器,并添加准直的评价函数,探测器尺寸50*50,位置z=100mm,完成后如下:
在这里插入图片描述
在这里插入图片描述

二、VBA代码部分

1 主要代码

代码如下(示例):

'本次主要更改透镜的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.75 ,放至sheet1,A2-A25列
Worksheets("Sheet1").Range(Cells(l, 1), Cells(l, 1)) = j
l = l + 1
Next j


End Sub

2 链接数据的方法

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


结果

最终结果如下图所示
在这里插入图片描述
在这里插入图片描述
至此已完成所有R值变化对应最大角度的数据输出。

文章来源:https://blog.csdn.net/bestgamer/article/details/135763393
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。