LightTools中VBA宏的编写入门 杂散光分析 3

杂散光分析中不同路径光线的图片显示


前言

上一篇中完成了杂散光的能量和光线数获取,本次实验进行各个路径图像的获取,因为对于光线能量和光线数目反应是不够直接,本次依旧以LightTools中的三片式为例子进行介绍。

一、具体过程

打开LightTools示例库,straylight例子,如下图所示
在这里插入图片描述
因为本次粘贴的是图片,因此依旧将正向照度作为选取页面,并提前打开光线路径(提前仿真一次)
在这里插入图片描述
第三步,填写代码将上述路径的图片一一粘贴至excel。

二、代码实现

库的部分

在这里插入图片描述

代码如下(示例):

Sub GETPARM()
'定义接口
Dim lt As LightTools.LTAPI
Set lt = New LightTools.LTAPI
Dim Tempstr As String
Tempstr = "LENS_MANAGER[1].ILLUM_MANAGER[Illumination_Manager].RECEIVERS[Receiver_List].SURFACE_RECEIVER[receiver_9].FORWARD_SIM_FUNCTION[Forward_Simulation] "
'先追迹一次光线
lt.Cmd "BeginAllSimulation"
'取消所有选择,此时mesh上没有数据
NumPaths = lt.DbGet(Tempstr, "NumberOfRayPaths")
Debug.Print NumPaths

For k = 1 To NumPaths Step 1
sta1 = lt.DbSet(Tempstr, "RayPathVisibleAt", "No", k, 1)
Next k

'选择一个路径并粘贴出对应的图像,以前5个路径为例
p = 1

For i = 1 To 35 Step 7
sta2 = lt.DbSet(Tempstr, "RayPathVisibleAt", "Yes", p, 1)
lt.Cmd "\VChart_Receiver_7_正向_照度 "
'粘贴至剪切板
lt.Cmd "CopyToClipboard "
' with 语句 VBA特有?不再需要写前面的worksheets对象
With Worksheets("Sheet1")
' range(D1,D1)开始,excel需要xy两个方向定位到一个单元格和matlab类似,并执行选择性粘贴
.Range(Cells(i, 4), Cells(i, 4)).PasteSpecial _
Operation:=xlPasteAll
End With
'选中图片并更改图片的 高度和宽度
Selection.ShapeRange.Height = 180
Selection.ShapeRange.Width = 150
'这一句主要防止错误对话框弹出
Application.DisplayAlerts = False
'取消掉选择,每次只选择一个路径
sta3 = lt.DbSet(Tempstr, "RayPathVisibleAt", "No", p, 1)
p = p + 1
Next i
End Sub

结果展示

路径示意,本次实验只做了前五个展示,后续添加可以将5,改为NumPaths 即可。
在这里插入图片描述
最后路劲部分全部被取消。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值