1,初始化
if (sim_call_type==sim_customizationscriptcall_nonsimulation) then
local selectedObjects=simGetObjectSelection()
if selectedObjects and (#selectedObjects==1) and (selectedObjects[1]==h) then
local p=simGetUIProperty(ui)
p=simBoolOr16(p,sim_ui_property_visible)
simSetUIProperty(ui,p)
buttonID=simGetUIEventButton(ui)
if ((buttonID>=7)and(buttonID<=14)) then
if (buttonID==7) then
local a=tonumber(simGetUIButtonLabel(ui,7))
if (a) then
if (a<0.12) then a=0.12 end//下限
if (a>2) then a=2 end//上限
newConveyorParameters[1]=s
end
simSetUIButtonLabel(ui,7,string.format("%.2f",newConveyorParameters[1]))//赋值
end
sx=0.12+1.88*simGetUISlider(ui,11)/1000//总长1000,按占比乘2-0.12
newConveyorParameters[1]=sx
end
su=simGetUISlider(ui,13)/1000 //1.2-0.41=0.79
sx=0.41+0.79*su //传送带(更改0.79为1)
newConveyorParameters[3]=sx
sx2=0.4+0.79*su //腿(更改0.79为1)
newConveyorParameters[4]=sx2
s=newConveyorParameters[1]/conveyorParameters[1]
simScaleObject(h,s,1,1,0)// 如果可能,以非等距方式缩放指定的对象
simScaleObject(tableTop,s,1,1,0)//传送带表面
simScaleObject(forwarder,s,1,1,0)//?传送带路径?
simSetJointPosition(xJoint,(newConveyorParameters[1]-0.12)/2)//关节位置
simSetUIButtonLabel(ui,7,string.format("%.2f",newConveyorParameters[1]))//修改label
simSetUISlider(ui,11,1000*(newConveyorParameters[1]-0.12)/1.88)//修改滑块
conveyorParameters[1]=newConveyorParameters[1]
end
同样height依旧不同
if (newConveyorParameters[3]~=conveyorParameters[3]) or (newConveyorParameters[4]~=conveyorParameters[4]) then
s=newConveyorParameters[3]/conveyorParameters[3]
s2=newConveyorParameters[4]/conveyorParameters[4]
p=simGetObjectPosition(h,-1)
su=(newConveyorParameters[3]-0.41)/0.79
p[3]=0.36+su*0.79 //如何计算0.36?超过0.45腿低于传送带低于0.35腿超过传送带
simSetObjectPosition(h,-1,p)
for i=1,4,1 do
simScaleObject(feet[i],1,1,s2,0)
p=simGetObjectPosition(feet[i],-1)
p[3]=newConveyorParameters[4]/2
simSetObjectPosition(feet[i],-1,p)
end
0.36时传送带内部有腿 0.45几乎看不到腿
调整传送带速度
if (newConveyorParameters[5]~=conveyorParameters[5]) then
simSetScriptSimulationParameter(sim_handle_self,'conveyorBeltVelocity',newConveyorParameters[5])//在其模拟参数列表中设置主脚本或子脚本的参数。用于与用户的简单交互或与其他脚本的简单参数交换
第一个参数scriptHandle:脚本的句柄,或sim_handle_main_script或sim_handle_all
第二个参数parameterName:要设置的参数的名称
第三个参数parameterValue:参数的值(所有参数都被视为字符串,但可以稍后转换为数字)字符串可能包含任何值(也是嵌入式零)
|
simSetUIButtonLabel(ui,10,string.format("%.2f",newConveyorParameters[5]))
simSetUISlider(ui,14,1000*(newConveyorParameters[5]+1)/2)
conveyorParameters[5]=newConveyorParameters[5]
end
simWriteCustomDataBlock(h,'conveyorBeltParams',simPackFloats(conveyorParameters))// 添加或删除与对象,脚本或场景一起存储和保存的自定义数据
end
5,其他
if (buttonID==2) then //2是×
simRemoveUI(ui)
simRemoveScript(sim_handle_self) //删除一个脚本。并不是所有的脚本类型都可以被删除,它也取决于仿真是否运行
end
else
local p=simGetUIProperty(ui)
p=simBoolOr16(p,sim_ui_property_visible)
simSetUIProperty(ui,p-sim_ui_property_visible)
end
end
if (sim_call_type==sim_customizationscriptcall_lastbeforesimulation) then
local p=simGetUIProperty(ui)
p=simBoolOr16(p,sim_ui_property_visible)
simSetUIProperty(ui,p-sim_ui_property_visible)
end
scriptHandle:脚本的句柄,或sim_handle_main_script或sim_handle_all
parameterName:要设置的参数的名称
parameterValue:参数的值(所有参数都被视为字符串,但可以稍后转换为数字)字符串可能包含任何值(也是嵌入式零)
|