I would like to change and improve a building system I have going. right now there are three scripts for it but to save time I will include one of them that is most relevant:

script.Trig.OnServerEvent:Connect(function(plr,pos,rot)
	local copy = game.ServerStorage.ItemModels.WeakBlock:Clone()
	copy.Parent = game.Workspace
	copy:SetPrimaryPartCFrame(CFrame.new(pos))
	local cframe = copy.PrimaryPart.CFrame -- Current CFrame
copy:SetPrimaryPartCFrame(cframe * CFrame.Angles(0, math.rad(rot), 0))
copy.DestructPart.PreLock.Disabled = false
	script.Parent:Destroy()
end)

its a basic system, it places cloned models to specified positions and rotations. but one of the biggest problem is the cloned models wont snap to surfaces. is there a way for me to make this build system better by making dragging more efficient and allowing models to snap to parts?