Appearance
脚本循环
项目流程
一、初始化
- 选择
lua语言脚本
根据,初始化两个全局变量用于保存当前循环所在行列。
lua
--设置用来保存当前所在行列的全局变量
SetVariable("Column",0)
SetVariable("Loop",0)
- 使用
加载点云工具
,加载需要处理的点云图。
二、预处理
拟合平面
使用
3D区域工具
,选择拟合平面的区域。使用
3D平面工具
,绑定上一步算子输出的变量区域作为输入区域,拟合平面并将其设置为零平面。
三、脚本循环测量Pin针高度
使用
3D裁切
工具,裁切出待测量的Pin针区域。使用
3D变换
工具,旋转Pin针区域。使用
3D斑点
工具,框选需要的Pin针获取每个Pin针的位置信息。
选择
标记
工具,设置名字为loopColumn
并将其作为行循环跳转点。选择
lua语言脚本
工具,绑定3D斑点
工具输出的Pin针中心位置信息命名为bolb。将当前列数设为Loop=0,获得当前行数,得到该行起始点坐标并将其保存到StartColumn
中。
lua
--将列号设为零,从新的一行的第一个开始。
SetIntVariable("Loop",0)
--得到当前的行号
Column = GetVariable("Column")
--得到当前行起始点的坐标
x = blob[Column+1].X
y = blob[Column+1].Y
z = blob[Column+1].Z
--将起始点坐标赋值给"StartColumn"
SetPoint3D("StartColumn",x,y,z)
选择
标记
工具,设置名字为loopPin
并将其作为列循环跳转点。选择
lua语言脚本
工具,box起始坐标终点坐标为0,绑定第五步lua脚本
工具输出的行起始点坐标赋值给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
Loop = GetVariable("Loop")
-- 2.5,0.5 可根据现场器件图纸自由切换,此处数据无实际参考意义
pcb_pinsx1 = cs_x + Loop * 2.5 - 0.5
pcb_pinex1 = cs_x + Loop * 2.5 + 0.5
pcb_pinsy1 = cs_y - 0.8
pcb_piney1 = cs_y + 0.8
pcb_pinsz1 = cs_z - 0.1
pcb_pinez1 = cs_z + 0.6
--将盒子的位置信息推送到寄存器中,用来进行高度测量
SetBox("box1",pcb_pinsx1, pcb_pinsy1, pcb_pinsz1, pcb_pinex1, pcb_piney1, pcb_pinez1)
DrawBox(0, "green", pcb_pinsx1, pcb_pinsy1, pcb_pinsz1, pcb_pinex1, pcb_piney1, pcb_pinez1)
选择
3D高度
工具,绑定上一步lua脚本
工具的输出变量(box)作为待测区域,测量高度。选择
lua语言脚本
工具,进行行列数判断,当列数小于3时,跳转到loopPin
标记处,当列数等于3时,跳转到loopColumn
标记处,当行数等于5时,跳转到End
标记处。
lua
-- 循环判断
Loop = GetVariable("Loop") + 1
if Loop == 3 then
Column = GetVariable("Column") + 1
SetIntVariable("Column", Column)
if Column < 5 then
-- 循环五行
Jump("loopColumn")
else
Jump("End")
end
elseif Loop < 3 then
-- 行内循环
Jump("loopPin")
end
SetIntVariable('Loop',Loop)
- 选择
标记
工具,设置名字为End
并将其作为循环终止跳转点。