Yeah that title is kinda confusing but its what i'm doing, basically if ya want to watch this video: https://www.youtube.com/watch?v=CsZsaR_gXJw then youll see what im doing, im trying to move a part on rotated parts like i did on the first part, or something. Also when you press r it changed the cut direction

I had to remove my cutting function or else this would be too long to post

Heres my code:

--Define Variables
local CAS = game:GetService("ContextActionService")
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local Tool = script.Parent
local mtarget
local omtarget
local down
local newCut
local Side1,Side2,disx1,disx2,pos1,pos2,disz1,disz2
local targ,CH,Part1,Part2
local siX, siZ
local rot = "X"
local waitimer = 0
local ptarg
local equipped

function Rotation()
	if rot == "X" and waitimer == 0 then
		rot = "Z"
		waitimer = 10
	elseif rot == "Z" and waitimer == 0 then
		rot = "X"
		waitimer = 10
	end
	while waitimer ~= 0 do
		waitimer = waitimer - 1
		wait()
	end
end

function PreCut()
	mtarget = mouse.Target
	if ptarg ~= nil then
		if mtarget ~= ptarg then
			if ptarg:FindFirstChild("PreCut") then
				ptarg.PreCut:Destroy()
			end
		end
	end
	while mtarget:FindFirstChild("CanCut") and equipped do
		if mtarget:FindFirstChild("CutPart") == nil then
			if mtarget.CanCut.Value == true then
				if mtarget:FindFirstChild("PreCut") then
					local sized = mtarget.Size
					local pcut = mtarget.PreCut
					if rot == "X" and pcut.Size ~= Vector3.new(sized.X+0.1,sized.Y+0.1,0.1) then
						if mtarget.Size.Y > mtarget.Size.X and mtarget.Size.Y > mtarget.Size.Z then
							pcut.Position = Vector3.new(ptarg.Position.X,mouse.Hit.p.Y,ptarg.Position.Z)--Change the position
						elseif mtarget.Orientation.Z < 0 and mtarget.Orientation.Z < 180 then
							pcut.Position = Vector3.new(ptarg.Position.X,mouse.Hit.p.Y,ptarg.Position.Z)--Change the position
						else
							pcut.Position = Vector3.new(mouse.Hit.p.X,ptarg.Position.Y,ptarg.Position.Z)--Change the position
						end
					elseif rot == "Z" and pcut.Size ~= Vector3.new(0.1,sized.Y+0.1,sized.Z+0.1) then
						pcut.Position = Vector3.new(ptarg.Position.X,ptarg.Position.Y,mouse.Hit.p.Z)--Change the position
					else
						pcut:Destroy()
					end
				else
					local sized = mtarget.Size
					local newCut = Instance.new("Part", mtarget) --Create Cut Part
					local IAD = workspace:GetChildren()
					for i = 1, #IAD do
					    local DIA = IAD[i]
						if DIA:FindFirstChild("PreCut") then
							DIA.PreCut:Destroy()
						end
					end
					ptarg = newCut.Parent
					newCut.BrickColor = BrickColor.new("Pastel orange") --Change Color of part
					newCut.Anchored = true --Anchor the part
					if rot == "X" then
						newCut.Size = Vector3.new(0.1,sized.Y+0.1,sized.Z+0.1) --Change the size
						if mtarget.Size.Y > mtarget.Size.X and mtarget.Size.Y > mtarget.Size.Z then
							newCut.Position = Vector3.new(ptarg.Position.X,mouse.Hit.p.Y,ptarg.Position.Z)--Change the position
						elseif mtarget.Orientation.Z < 0 and mtarget.Orientation.Z < 180 then
							newCut.Position = Vector3.new(ptarg.Position.X,mouse.Hit.p.Y,ptarg.Position.Z)--Change the position
						else
							newCut.Position = Vector3.new(mouse.Hit.p.X,ptarg.Position.Y,ptarg.Position.Z)--Change the position
							--print(rot)
						end
					elseif rot == "Z" then
						newCut.Size = Vector3.new(sized.X+0.1,sized.Y+0.1,0.1) --Change the size
						newCut.Position = Vector3.new(ptarg.Position.X,ptarg.Position.Y,mouse.Hit.p.Z)--Change the position
						--print(rot)
					end
					newCut.Orientation = ptarg.Orientation
					newCut.Material = "Neon" --Change the material
					newCut.Name = "PreCut" --Name the part
					newCut.CanCollide = false
					mouse.TargetFilter = newCut
				end
			end
		elseif mtarget:FindFirstChild("CutPart") then
			if ptarg:FindFirstChild("PreCut") then
				ptarg.PreCut:Destroy()
			end
		end
		wait()
	end 
end

--Cutting Function, really long thing idk

--Bind actions when equipping tool
function Equip()
	CAS:BindAction("Cutting", Cut, false, Enum.UserInputType.MouseButton1)
	CAS:BindAction("Looking", PreCut, false, Enum.UserInputType.MouseMovement)
	CAS:BindAction("Rotate", Rotation, false, Enum.KeyCode.R)
	equipped = true
end

--Unbind actions when unequipping tool
function Unequip()
	CAS:UnbindAction("Cutting")
	CAS:UnbindAction("Looking")
	CAS:UnbindAction("Rotate")
	equipped = false
	local children = workspace:GetChildren()
	for i = 1, #children do
	    local CHH =  children[i]
		if CHH:FindFirstChild("PreCut") then
			CHH.PreCut:Destroy()
		end
	end
end

--Check is tool is equipped or unequipped
Tool.Equipped:Connect(Equip)
Tool.Unequipped:Connect(Unequip)