自动化设计入门2——LightTools宏

本帖最后由 小聪哥 于 2016-11-25 11:11 编辑


LightTools 自动化设计指的是通过编写程序使软件能自动地完成我们所需要操作,这使得我们的设计过程更加有效率。在这里,我将由浅入深地介绍一些基本的概念和知识,如LightTools命令、宏、API等,但对于真正实现LightTools的自动化还是不夠的,需要更多地实践与操作。若发现有不懂的问题或文档中有不妥之处,欢迎大家一起共同交流、学习。
这一讲内容有点多,所以另起一个帖子了,大家慢慢看(^-^)V
第二讲:LightTools Macro
2.1 Macro简介
Macro,中文中叫“宏”,是指软件能够执行的程序。它允许用户编写程序,然后在软件(如:LightTools)中运行。其实很多软件都会有这个东西,可以称它为软件的“遥控器”,它可以完成一些复杂、重复的操作,使一些常用的操作自动化,还可以创建自定义的解决方案。
[*]LightTools 的宏
LightTools 具有其自带的宏语言,该语言基于早期版本的 Visual Basic 语言(VB 6.0)编写的。它集成了一个BASIC编译器和一个LightTools命令编译器。宏程序包含LightTools中的命令,这使得任何通过鼠标和键盘输入到LightTools中的操作都可以通过宏来完成

2.2 LightTools 中宏的作用
编写宏程序可以增强 LightTools 中现有的分析能力和模型的构建能力。例如,用户可以通过编写宏程序来完成下面的功能:
[*]创建涉及到重复任务的对象,如构建有小平面的反射器,多边形面,螺旋线等;
[*]计算一些 LightTools 不直接输出的参数,例如透镜的焦距误差,二次曲面的主次轴等;
[*]现有分析的后处理,如计算两次照明运算结果的差;
[*]自动的设计过程,例如一次仿真分析的结果用来决定下一次的仿真是否需要改变;
[*]文档的设计,用户可以选择输出 LightTools 中一些重要的参数或者格式。
2.3 编写一个简单的宏
宏程序文件的扩展名为“.ltb”,具体格式如下,其中的 n 表示该程序的版本号,有无都可以。
filename.n.ltb 在 LightTools 中新建一个模型,然后进行保存,保存的文件名可为宏的名称,文件名最好以宏程序的功能进行命名,LightTools 文件的扩展名为“.lts”,这并不是宏文件,因此我们需要将保存的 LTs 文件的后缀修改为“.ltb”,再用记事本打开。
这时会看到很多代码,全选删掉就行了,这样我们就创建了一个空白的宏文件,通过运用宏语言我们即可编写宏程序了。
以下创建了一个方块作为实例演示,其代码为:LTCMD "New3DDesign"
LTCMD "\V3D_untitled"
LTCMD "Block3Pt XYZ 0,0,0 XYZ 0,1,0 XYZ 0,0,2“ 这段代码中,主要用到了宏语言中的“LTCMD”命令,作用是将双引号里面的内容输入到LightTools的命令输入框中。
将创建方块的代码复制到当面创建的空白宏文件中,并保存宏文件的文件名命名为:
MakeABlock.ltb 打开 LightTools,在菜单选项栏中,依次选择 工具 → 运行宏,选择打开上面创建的文件,我们即可通过宏程序来简单的创建一个方块了。

2.4 LightTools 中的宏语言介绍
命名规则
[*]变量名区分大小写
[*]函数名和命令名不区分大小写
[*]以字符“$”结尾的变量名表示符号变量
[*]不能使用中文及全角字符,只允许使用英文字母、下划线和数字
一些限制
[*]最大的输入参数为100
[*]最大的嵌套深度为64(如循环、子函数调用等)
[*]一行最多输入255个字符
[*]不支持使用 字符“&”作为续行符(区别于VB 6.0)
运算符和表达式
一个或多个运算符和一个或多个操作数构造了表达式。可以使用括号来控制表达式中运算符的优先级。
表2.3 列出了所有的运算符,并指示其优先级别。级别为 1 比 2优先级高。需要注意的是,除了负号(Unary minus)的所有运算符都要求两个操作数。
Basic 编译器中的命令及函数
前面提到,宏语言中集成了Basic编译器,与其相关的命令和函数可以分成以下几类:
[*]交互 Input/Output 命令
[*]文件 Input/Output 命令
[*]程序控制命令
[*]混合命令
[*]数学函数
[*]字符串函数
[*]文件 Input/Output 函数
[*]混合函数



访问 LightTools 中的数据
为能够使我们对 LightTools中的数据库进行访问,即能够输入或输出我们想要的数据,并且使我们能够构建和执行 LightTools 命令,我们需要了解LightTools中BASIC编译器的扩展接口,也可以说是宏语言中的 LightTools命令编译器。
其中,LightTools 中数据库的类型可按“系统浏览器”窗口来分,主要有九类。每一类中又包含不同的类,我们称之为“层次结构”。

层次结构和对象
编写宏程序访问 LightTools 数据库需要理解 LightTools 对象和它们的层次结构。每个层次结构的级别,可以使用不同的 Filter(筛选器)来概括,以具体地确定各种对象。
在下图中,LENS_MANAGER包含所有的对象(除了Model和View),ENTITY包含了所有的实体,SOLID 包含了所有的 SUEFACEs,SURFSCE 包含了所有的 ZONEs。

用不同的 Filter 表示数据的访问名称
在 LightTools 的系统浏览器窗口中,我们可以选取对象后单击鼠标左键,然后在弹出的菜单栏中点击“复制数据的访问名称”。
在上图中,插入了一个透镜元件后,通过点击“复制数据访问名称”,可得到:
LENS_MANAGER.COMPONENTS.SOLID 在这个示例中, LENS_MANAGER、 COMPONENTS、 SOLID 则为不同的 Filter ,并且层次结构的次序是由高到低。方括号中的数值和字符串表示索引值(index),用来指定数据库列表中的位置。
2.5 LightTools 中 Macro 的帮助文件
为更详细地了解LightTools中宏(如宏的命令和函数、访问数据库的函数和命令、数据库和 Filter 的层次结构和分类)可在帮助菜单中找到相应的帮助文档。


  • 1.png
  • 2.png
  • 3.png
  • 4.png
  • 5.png
  • 6.png
  • 7.png
  • 8.png

回复数 311 切换时间排序
需登录后查阅, 加载中......

目前注册实行审核/邀请制,欢迎灯友邀请好友注册,下载币奖励
邀请注册

为什么注册要审核

目前新版公测中,有任何BUG问题都可以联系我们
提交问题

或如无法回复,请访问此地址
提交问题