Check out EgoMoose’s Furniture Placement System. It really helped me make a grid-based placement system
To do this, you can use a Serialization method like so:
local data = {}
local function serialize(parts) -- part serializer
for _, v in parts do
table.insert(data, {
color = {v.Color.R, v.Color.G, v.Color.B};
position = {v.Position.X, v.Position.Y, v.Position.Z};
orientation = {v.Orientation.X, v.Orientation.Y, v.Orientation.Z}
})
end
end