指令碼迴圈
專案流程
一、初始化
- 選擇
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並將其作為迴圈終止跳轉點。
