传送带参数


1,初始化


if(sim_call_type==sim_customizationscriptcall_initialization) then
   simSetScriptAttribute(sim_handle_self,sim_customizationscriptattribute_activeduringsimulation,false)//脚本属性,非仿真时
    h=simGetObjectAssociatedWithScript(sim_handle_self)///获取与脚本相关对象
    xJoint=simGetObjectHandle(‘customizableConveyor_xJoint1’)//根据名称检索对象句柄
    yJoint=simGetObjectHandle(‘customizableConveyor_yJoint1’)//关节处理
    forwarder=simGetObjectHandle(‘customizableConveyor_forwarder’)//?传送线路?
    tableTop=simGetObjectHandle(‘customizableConveyor_tableTop’)//传送带面
    feet={-1,-1,-1,-1}//传送带腿
    for i=1,4,1do//for(int i=I;i<4;i++)
        feet[i]=simGetObjectHandle('customizableConveyor_foot'..i)
    end
    ui=simGetUIHandle('customizableConveyor')
--    conveyorParameters={0.12,0.12,0.41,0.4,0.2}//传送带最小参数,其中两个height
--    simWriteCustomDataBlock(h,'conveyorBeltParams',simPackFloats(conveyorParameters))// 添加或删除与对象,脚本或场景一起存储和保存的自定义数据
    conveyorParameters=simUnpackFloats(simReadCustomDataBlock(h,'conveyorBeltParams')) 读取存储在对象,脚本或场景内的自定义数据
    local p=simGetUIProperty(ui)
    p=simBoolOr16(p,sim_ui_property_visible)
    simSetUIProperty(ui,p-sim_ui_property_visible)   
end



2,对于label更改
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
  newConveyorParameters={conveyorParameters[1],conveyorParameters[2],conveyorParameters[3],conveyorParameters[4],conveyorParameters[5]}
            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//上限
                    s=tonumber(string.format("%.2f",a))//保留两位小数
                    newConveyorParameters[1]=s
                end
                simSetUIButtonLabel(ui,7,string.format("%.2f",newConveyorParameters[1]))//赋值
            end


3,对于滑条的更改

if (buttonID==11) then
                sx=0.12+1.88*simGetUISlider(ui,11)/1000//总长1000,按占比乘2-0.12
                newConveyorParameters[1]=sx
            end
其中height与length,width稍有不同
            if (buttonID==13) then
                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


4,针对数据的更改修正传送带以及label或slider显示

 if (newConveyorParameters[1]~=conveyorParameters[1]) then
                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:参数的值(所有参数都被视为字符串,但可以稍后转换为数字)字符串可能包含任何值(也是嵌入式零)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值