LightTools中VBA宏的编程入门

本文介绍了如何通过VBA脚本在LightTools中自动进行LED准直,调整透镜的R值,获取最大发散角度,并将结果存储在Excel表格中,展示了数据获取和镜片控制的自动化过程。
摘要由CSDN通过智能技术生成

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


前言

上一篇实现了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值变化对应最大角度的数据输出。

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值