5
« on: December 12, 2022, 03:59:43 AM »
function SaveMachinePosition()
local inst = mc.mcGetInstance()
mc.mcProfileWriteDouble(inst, "MyConfig", "MachinePosX", mc.mcAxisGetMachinePos(inst, mc.X_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "MachinePosY", mc.mcAxisGetMachinePos(inst, mc.Y_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "MachinePosZ", mc.mcAxisGetMachinePos(inst, mc.Z_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "MachinePosA", mc.mcAxisGetMachinePos(inst, mc.A_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "PosX", mc.mcAxisGetPos(inst, mc.X_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "PosY", mc.mcAxisGetPos(inst, mc.Y_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "PosZ", mc.mcAxisGetPos(inst, mc.Z_AXIS))
mc.mcProfileWriteDouble(inst, "MyConfig", "PosA", mc.mcAxisGetPos(inst, mc.A_AXIS))
mc.mcProfileSave(inst)
mc.mcProfileFlush(inst)
end
function LoadMachinePosition()
local inst = mc.mcGetInstance()
local MachinePosX = mc.mcProfileGetDouble(inst , "MyConfig", "MachinePosX", 0)
local MachinePosY = mc.mcProfileGetDouble(inst , "MyConfig", "MachinePosY", 0)
local MachinePosZ = mc.mcProfileGetDouble(inst , "MyConfig", "MachinePosZ", 0)
local MachinePosA = mc.mcProfileGetDouble(inst , "MyConfig", "MachinePosA", 0)
local PosX = mc.mcProfileGetDouble(inst , "MyConfig", "PosX", 0)
local PosY = mc.mcProfileGetDouble(inst , "MyConfig", "PosY", 0)
local PosZ = mc.mcProfileGetDouble(inst , "MyConfig", "PosZ", 0)
local PosA = mc.mcProfileGetDouble(inst , "MyConfig", "PosA", 0)
local HomeOffsetX_Saved, rc = mc.mcAxisGetHomeOffset(inst, mc.X_AXIS)
local HomeOffsetY_Saved, rc = mc.mcAxisGetHomeOffset(inst, mc.Y_AXIS)
local HomeOffsetZ_Saved, rc = mc.mcAxisGetHomeOffset(inst, mc.Z_AXIS)
local HomeOffsetA_Saved, rc = mc.mcAxisGetHomeOffset(inst, mc.A_AXIS)
local HomeInPlaceX_Saved, rc = mc.mcAxisGetHomeInPlace(inst, mc.X_AXIS)
local HomeInPlaceY_Saved, rc = mc.mcAxisGetHomeInPlace(inst, mc.Y_AXIS)
local HomeInPlaceZ_Saved, rc = mc.mcAxisGetHomeInPlace(inst, mc.Z_AXIS)
local HomeInPlaceA_Saved, rc = mc.mcAxisGetHomeInPlace(inst, mc.A_AXIS)
local SoftlimitEnableX_Saved, rc = mc.mcAxisGetSoftlimitEnable(inst, mc.X_AXIS)
local SoftlimitEnableY_Saved, rc = mc.mcAxisGetSoftlimitEnable(inst, mc.Y_AXIS)
local SoftlimitEnableZ_Saved, rc = mc.mcAxisGetSoftlimitEnable(inst, mc.Z_AXIS)
local SoftlimitEnableA_Saved, rc = mc.mcAxisGetSoftlimitEnable(inst, mc.A_AXIS)
-- local MachinePosX=math.random()*100
mc.mcAxisSetHomeInPlace(inst, mc.X_AXIS,1)
mc.mcAxisSetHomeInPlace(inst, mc.Y_AXIS,1)
mc.mcAxisSetHomeInPlace(inst, mc.Z_AXIS,1)
mc.mcAxisSetHomeInPlace(inst, mc.A_AXIS,1)
mc.mcAxisSetSoftlimitEnable(inst, mc.X_AXIS,1)
mc.mcAxisSetSoftlimitEnable(inst, mc.Y_AXIS,1)
mc.mcAxisSetSoftlimitEnable(inst, mc.Z_AXIS,1)
mc.mcAxisSetSoftlimitEnable(inst, mc.A_AXIS,1)
mc.mcAxisSetHomeOffset(inst,mc.X_AXIS, MachinePosX)
mc.mcAxisSetHomeOffset(inst,mc.Y_AXIS, MachinePosY)
mc.mcAxisSetHomeOffset(inst,mc.Z_AXIS, MachinePosZ)
mc.mcAxisSetHomeOffset(inst,mc.A_AXIS, MachinePosA)
rc=mc.mcProfileSave(0)
-- rc=mc.mcProfileFlush(0) --Flush changes to the INI file.
-- rc = mc.mcAxisDeref(inst, mc.X_AXIS);
-- rc = mc.mcAxisDeref(inst, mc.Y_AXIS);
-- rc = mc.mcAxisDeref(inst, mc.Z_AXIS);
-- rc = mc.mcAxisDeref(inst, mc.A_AXIS);
rc = mc.mcAxisDerefAll(inst);
-- Message(HomeOffsetX_Saved.. " -X> ".. MachinePosX .. " mc.mcAxisGetHomeInPlace(inst, mc.X_AXIS)="..mc.mcAxisGetHomeInPlace(inst, mc.X_AXIS))
-- Message(HomeOffsetY_Saved.. " -Y> ".. MachinePosY)
-- Message(HomeOffsetZ_Saved.. " -Z> ".. MachinePosZ)
-- Message(HomeOffsetA_Saved.. " -A> ".. MachinePosA)
local OSIG_MACHINE_ENABLED_saved = GetSignal(mc.OSIG_MACHINE_ENABLED)
if (OSIG_MACHINE_ENABLED_saved==0) then
mc.mcCntlEnable(inst,1)
-- Sleep(100)
end
mc.mcCntlReset(inst)
rc = mc.mcAxisHome( inst, mc.X_AXIS)
mc.mcCntlReset(inst)
rc = mc.mcAxisHome( inst, mc.Y_AXIS)
mc.mcCntlReset(inst)
rc = mc.mcAxisHome( inst, mc.Z_AXIS)
mc.mcCntlReset(inst)
rc = mc.mcAxisHome( inst, mc.A_AXIS)
mc.mcCntlReset(inst)
mc.mcAxisSetHomeOffset(inst, mc.X_AXIS,HomeOffsetX_Saved)
mc.mcAxisSetHomeOffset(inst, mc.Y_AXIS,HomeOffsetY_Saved)
mc.mcAxisSetHomeOffset(inst, mc.Z_AXIS,HomeOffsetZ_Saved)
mc.mcAxisSetHomeOffset(inst, mc.A_AXIS,HomeOffsetA_Saved)
mc.mcAxisSetSoftlimitEnable(inst, mc.X_AXIS,SoftlimitEnableX_Saved)
mc.mcAxisSetSoftlimitEnable(inst, mc.Y_AXIS,SoftlimitEnableY_Saved)
mc.mcAxisSetSoftlimitEnable(inst, mc.Z_AXIS,SoftlimitEnableZ_Saved)
mc.mcAxisSetSoftlimitEnable(inst, mc.A_AXIS,SoftlimitEnableA_Saved)
mc.mcAxisSetHomeInPlace(inst, mc.X_AXIS,0)
mc.mcAxisSetHomeInPlace(inst, mc.Y_AXIS,0)
mc.mcAxisSetHomeInPlace(inst, mc.Z_AXIS,0)
mc.mcAxisSetHomeInPlace(inst, mc.A_AXIS,0)
rc=mc.mcProfileSave(0)
rc=mc.mcProfileFlush(0) --Flush changes to the INI file.
mc.mcAxisSetPos(inst, mc.X_AXIS,PosX)
mc.mcAxisSetPos(inst, mc.Y_AXIS,PosY)
mc.mcAxisSetPos(inst, mc.Z_AXIS,PosZ)
mc.mcAxisSetPos(inst, mc.A_AXIS,PosA)
mc.mcCntlEnable(inst,OSIG_MACHINE_ENABLED_saved)
end