Issue with ToObjectSpace and Orientation

Working on this part placement Script;

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

local Mouse = LocalPlayer:GetMouse()
local ClientPart = workspace.ClientMouseIgnore:WaitForChild("ClientPart")
local ClientPart2 = workspace.ClientMouseIgnore:WaitForChild("ClientPart2")
local ClientPart3 = workspace.ClientMouseIgnore:WaitForChild("ClientPart3")

local MouseRaycastParams = RaycastParams.new()
MouseRaycastParams.FilterType = Enum.RaycastFilterType.Exclude
local ClientMouseIgnoreFolder = workspace.ClientMouseIgnore
local MathUsed = math.round --function(num) return num end

local TweenService = game:GetService("TweenService")
local BlockTweenInfo = TweenInfo.new(0.030, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut,0,false,0)

local function UpdatePosition(NewCF)
	local BlockMoveTween = TweenService:Create(ClientPart, BlockTweenInfo, {CFrame = NewCF})
	BlockMoveTween:Play()
end

local function OrientationToCFrameOrientation(Orientation : Vector3)
	return CFrame.fromOrientation(math.rad(Orientation.X),math.rad(Orientation.Y),math.rad(Orientation.Z))
end

local function ReworkPosition(c1 : CFrame, v2 : Vector3)
	return CFrame.new(
		Vector3.new(
			if math.floor(math.abs(v2.X)) ~= 0 then v2.X else math.round(c1.Position.X),
			if math.floor(math.abs(v2.Y)) ~= 0 then v2.Y else math.round(c1.Position.Y),
			if math.floor(math.abs(v2.Z)) ~= 0 then v2.Z else math.round(c1.Position.Z)
		)
	)
end


while task.wait() do
	local Origin = Mouse.UnitRay.Origin
	local Direction = Mouse.UnitRay.Direction
	MouseRaycastParams.FilterDescendantsInstances = {ClientMouseIgnoreFolder:GetChildren(), LocalPlayer.Character}

	local V1 = workspace:Raycast(Origin, Direction*1000, MouseRaycastParams)
	
	if V1 and V1.Position and V1.Instance then
		local V1Pos : Vector3 = V1.Position
		local V1HitPart : Part = V1.Instance
		local v1o = V1HitPart.Orientation
		
		local objectspacecf = V1HitPart.CFrame:ToObjectSpace(CFrame.new(V1Pos))
		print(V1HitPart.CFrame:ToObjectSpace(CFrame.new(V1Pos)).Position, V1HitPart, V1Pos)
		local NewIdea = (V1HitPart.Size/2) * V1.Normal
		local NewObjectCF = ReworkPosition(objectspacecf, NewIdea)
		--print("----------")
		--print(NewIdea)
	--	print(objectspacecf.Position)
		--print(NewObjectCF.Position)
		--print("----------")
		ClientPart.CFrame = V1HitPart.CFrame * objectspacecf
		ClientPart2.CFrame = V1HitPart.CFrame * NewObjectCF
	end
end

and for some reason it only works if the object is basically unrotated
it working (Focus on the blue part):

and this part is rotated 90 degrees (focus on the blue part again):

it just kinda doesnt work for some reason and im not sure why but it has to deal with the orientation and ToObjectSpace from my testing im pretty sure