-------------------------------------------------分--割--线--------------------------------------------------------------------------------
连接lighttools-matlab
matlab连接lighttools有两种方式,一个是.net, 一个是.com
lighttools 建议使用.net 进行连接。两者区别不大,在函数的调用上会存在一些不同。同时在一些老版本的matlab里只能使用.com
.com方式:
clc;clear;
% 连接到lighttools
lt = actxserver('LightTools.LTAPI');
% 连接到扩展API里的lighttools API 函数
ltml = actxserver('ltcom64.LTAPI2');
% 连接到扩展API里的Jumpstart函数
Js=actxserver('ltcom64.jsml');
.net方式:
def=System.Reflection.Missing.Value;
asm = NET.addAssembly('C:\Program Files\Optical Research Associates\LightTools 8.6.0\Utilities.NET\LTCOM64.dll');
lt=LTCOM64.LTAPIx;
lt.UpdateLTPointer
js=LTCOM64.JSNET2;
js.UpdateLTPointer;
好了这就连接上了,可以愉快的调用API函数了
数据寻访
数据寻访有两种方式,一种是建立数据寻访列表,一种是通过数据寻访字符串,数据寻访字符串只能在lighttools命令行里使用,或者通过api里的CMD命令调用。这里需要做一个权衡,当处理大批量数据的时候,使用数据寻访字符串的访问方式会很慢,推荐使用寻访列表。
寻访列表建立
下面的例子都是基于.com的
DbList
[listKey, status] = ltml.LTDbList(lt, dataKey, function)
datakey 是你所要建立列表的对象的上上个层级
function 即你要建立列表的对象
listkey 即得到的 object key ,通过这个 object key 才能调用后面那一堆API 函数
datakey 可以通过在lighttools里你要访问数据的东西上点击右键,复制数据访问名称得到
得到的那一串东西即为 数据访问字符串 ,这串东西并不能直接拿来作为datakey。
把这串字符的最后一小段删掉,作为datakey。
删掉的那部分为 functin
说的有点乱,举个栗子
我想要得到这条光线segment_0部分,的绝对坐标x
在单元格处右键复制数据访问名称可以得到如下的数据访问字符串
LENS_MANAGER[1].NS_RAYS[Rays].NS_RAY[nsRay_1327].NS_SEGMENT[segment_0].Global_X
也就是我想要读取的是这个Global_x
那么首先我们就得为他的上一层级NS_SEGMENT建立列表
% 数据寻访字符串
dataKey = 'LENS_MANAGER[1].NS_RAYS[Rays].NS_RAY[nsRay_1327]';
% 建立对象列表
[listKey, status] = ltm