自动化设计入门3——LightTools API

本帖最后由 小聪哥 于 2016-11-28 21:33 编辑


LightTools 自动化设计指的是通过编写程序使软件能自动地完成我们所需要操作,这使得我们的设计过程更加有效率。在这里,我将由浅入深地介绍一些基本的概念和知识,如LightTools命令、宏、API等,但对于真正实现LightTools的自动化还是不夠的,需要更多地实践与操作。 若发现有不懂的问题或文档中有不妥之处,欢迎大家一起共同交流、学习。第三讲 LightTools API3.1 什么是 API? API:Application Programming Interface,应用程序编程接口 LightTools API 是一个为了增强和简化宏程序的编写而设计的应用程序编程接口,它是基于Windows 系统下的标准组件对象模型 (COM, Component Object Model) 接口而设计的。这使得我们能够使用外部应用来编写宏程序,这些应用分别有:Visual Basic(VB)、Microsoft Office Applications(VBA)、C++、MATLAB等。 COM 使 Windows 程序能够使用“客户端/服务器”的概念互相沟通。如,启动通信进程的程序称为客户端,响应客户端请求的应用程序称为服务器。在LightTools的自动化设计过程中,LightTools是作为一个服务器的,因为它被用来响应客户端程序。 为进一步理解 API,我们接下来了解一下 COM 到底是什么。

3.2 COM 技术概述 一个应用程序,通常是由单个的二进制文件组成的。当编译器生成此应用程序之后,在对下一版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化,但操作系统、硬件及客户需求一直处于动态的改变的过程中,要修改应用程序的话,必须等到整个应用程序被重新编译之后才能得以认可。 因此软件不应保持那种静止的状态,开发人员应该找出一种方法,能够给已经发行的软件不断地注入新的活力。这种解决方案就是将单个的应用程序分隔成多个独立的部分,也就是组件。

一个组件同微型应用程序类似,即都是已经编译、链接好并可以使用的了,应用程序就是由多个这样的组件打包得到的。各定制的组件可以在运行时同其他组件连接起来,以构成某个应用程序,在需要对应用程序进行修改或改进时,只需将构成此应用程序的组件中的某个新的版本替换掉即可。

而将应用程序拆分成组件需要一个工具,微软则称这个工具为COM。COM,即组件对象模型,它是关于如何建立组件以及如何通过组件构建应用程序的一个规范。 为了使组件能够动态地插入或卸出应用程序,它必须满足两个条件:
[*]第一,组件必须动态链接
[*]第二,他们必须隐藏(或封装)其内部实现细节

在Windows平台上,一个COM组件可以是一个动态链接库(DLL,也有可能是一个可执行程序(EXE。基于COM标准,可以开发不同的COM对象,而对象以接口的形式提供服务。 COM对象是组件对象类的实例,COM要求对象具有完全的封装特性,避免对象的数据或方法被直接使用。COM接口是提供访问对象的方法、属性的手段,它通常聚合了一组相关的方法(函数)。 在COM组件中,接口是最关键的,对客户端来说,一个组件就相当于一个接口集。客户端只能通过接口才能够跟组件打交道。我们不必知道,组件的所有接口。对于LightTools来说,API 就是这样的接口,而我们正是用这些接口来进行交互设计。3.3 API 函数 前面说过,API 是指一组函数,我们把 LightTools 中的 API 函数进行分类,主要有以下几类:
[*]通用函数(General Utility Functions)
[*]数据访问函数(Data Access Functions)
[*]特殊过程函数( Special Processing Functions)
[*]视图访问函数 (View Access Functions)
对于其详细的说明、语法及示例请参考相应的帮助文档,在这里就不细细罗列了。需要提醒的是,对于数据访问函数同样需要前面介绍宏语言时讲到的层次结构Filter 的概念。3.4 LightTools JumpStart 函数库 LightTools JumpStart 函数库,是使用Visual Basic 6.0 语言编写且已被编译过的一个动态链接库(LTCOM64.dll),用于进行照明设计、构建几何图形和仿真分析等操作。基于它们各自的功能将 JumpStart 函数分类。这些类是︰
[*]Geometry(几何体) 建立立体几何体,非球面透镜
[*]Math(数学) 常见的数学函数库
[*]Mesh(网格) 读取、存储和分析仿真数据的函数
[*]Properties(属性) 设置物体光学属性和材料属性的函数
[*]Receiver(接收器) 设置照明分析的接收器
[*]Sources(光源) 设置简单光源和复杂形状光源的函数
[*]Transform(变换) 阵列,移动,旋转和转换实体的函数
[*]Texture(结构) 用来创建2D 和 3D 纹理图案(如点、鼓包等)
[*]Utility(实用) 常见的LightTools 实用函数;被大多数JumpStart函数调用

3.5 参考 LightTools API 的帮助文档

  • 4.png
  • 2.png
  • 3.png
  • 1.png
  • 5.png

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

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

为什么注册要审核

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

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