Appearance
脚本循环
一、初始化
[00] 选择lua语言脚本
根据,初始化两个全局变量。
lua
--设置用来保存当前所在行列的全局变量
SetVariable("Column",0)
SetVariable("Loop",0)
[01] 选择加载点云
工具,加载需要操作的点云图至指定IM上。
二、预处理
[02-03] 选择3D方形探针
工具和3D位置调整
工具,选择连接器上边一点作为原点,进行X轴与Y轴的位置调整。
[04-05] 选择3D区域
工具和3D平面
工具,选择需要拟合的区域,并将区域拟合成一个平面。
[06] 选择3D裁切
工具,将Pin针部分裁切输出到IM1中。
[07] 选择3D变换
工具,将Pin针绕Z轴旋转90度。
三、循环
[08] 选择3D斑点
工具,获得5个起始点的位置坐标。
[09] 选择lua语言脚本
工具,将5个起始点坐标保存到5个点中便于后续使用。
lua
--将点的坐标保存在'start i'中
SetPoint("start1",GetPoint(4))
SetPoint("start2",GetPoint(3))
SetPoint("start3",GetPoint(2))
SetPoint("start4",GetPoint(1))
SetPoint("start5",GetPoint(0))
[10] 选择标记
工具,设置名字为loopColumn
并将其作为行循环跳转点。
[11] 选择lua语言脚本
工具,将当前列数设为0,获得当前行数,得到该行起始点坐标并将其保存到StartColumn
中。
lua
--将列号设为零,从新的一行的第一个开始。
SetVariable("Loop",0)
--得到当前的行号
Column = GetVariable("Column")
--得到当前行起始点的坐标
x,y,z = GetPoint("start" .. tointeger(Column+1))
--将起始点坐标赋值给"StartColumn"
SetPoint("StartColumn",x,y,z)
[12] 选择标记
工具,设置名字为loopPin
并将其作为列循环跳转点。
[13] 选择lua语言脚本
工具,box起始坐标终点坐标为0,行起始点坐标赋值给cs_x,cs_y,cs_z,得到当前列数,通过两个Pin之间的间距进行阵列,再将盒子的数据存入寄存器中。
lua
pcb_pinsx1 = 0
pcb_pinsy1 = 0
pcb_pinsz1 = 0
pcb_pinex1 = 0
pcb_piney1 = 0
pcb_pinez1 = 0
pcb_pinsx2 = 0
pcb_pinsy2 = 0
pcb_pinsz2 = 0
pcb_pinex2 = 0
pcb_piney2 = 0
pcb_pinez2 = 0
cs_x,cs_y,cs_z = GetPoint("StartColumn")
Loop = GetVariable("Loop")
-- 2.5,0.5 可根据现场器件图纸自由切换,此处数据无实际参考意义
pcb_pinsx = cs_x + Loop * 2.5 - 0.5
pcb_pinex = cs_x + Loop * 2.5 + 0.5
pcb_pinsx1 = pcb_pinsx
pcb_pinex1 = pcb_pinex
pcb_pinsx2 = cs_x + (Loop + 1) * 2.5 - 0.5
pcb_pinex2 = cs_x + (Loop + 1) * 2.5 + 0.5
pcb_pinsy = cs_y - 0.8
pcb_piney = cs_y + 0.8
pcb_pinsz = cs_z - 0.1
pcb_pinez = cs_z + 0.6
pcb_pinsy1 = cs_y - 0.8
pcb_piney1 = cs_y + 0.8
pcb_pinsz1 = cs_z - 0.1
pcb_pinez1 = cs_z + 0.6
pcb_pinsy2 = cs_y - 0.9
pcb_piney2 = cs_y + 0.9
pcb_pinsz2 = cs_z - 0.1
pcb_pinez2 = cs_z + 0.6
--将盒子的位置信息推送到寄存器中,用来进行高度测量
PushBox(pcb_pinsx1, pcb_pinsy1, pcb_pinsz1, pcb_pinex1, pcb_piney1, pcb_pinez1)
PushBox(pcb_pinsx2, pcb_pinsy2, pcb_pinsz2, pcb_pinex2, pcb_piney2, pcb_pinez2)
DrawBox(0, pcb_pinsx1, pcb_pinsy1, pcb_pinsz1, pcb_pinex1, pcb_piney1, pcb_pinez1)
[14] 选择3D高度
工具,通过读取寄存器中盒子的数据来计算高度。
[15] 选择lua语言脚本
工具,进行行列数判断,当列数小于3时,跳转到loopPin
标记处,当列数等于3时,跳转到loopColumn
标记处,当行数等于5时,跳转到End
标记处。
lua
Loop = GetVariable("Loop") + 1
--判断满足哪一种循环条件
if Loop == 3 then
Column = GetVariable("Column") + 1
SetVariable("Column", Column)
if Column < 5 then
Jump("loopColumn")
else
Jump("End")
end
elseif Loop < 3 then
Jump("loopPin")
end
--将下一列列号赋值给全局变量
SetVariable('Loop',Loop)
[16] 选择标记
工具,设置名字为End
并将其作为循环终止跳转点。