В моем быстром исследовании, когда вы привязываете некоторую геометрию к сетке:
Пока все вершины вашего многоугольника (в его конечной позиции) совпадают с вершинами сетки (другими словами, если то, что вы пытаетесь привязать, хорошо вписывается в сетку), то
Вы можете привязать любую из вершин полигона к ближайшей вершине сетки и применить тот же перевод ко всем остальным. Вы всегда будете в конечном итоге с той же позиции в результате.
Это означает, что вы можете просто выбрать вершину и округлить ее координаты, или, если вы используете сетку со стороной, превышающей одну единицу, используйте выражение Остина:
cube.Position.XorYorZ = Math.round(cube.Position.XorYorZ / gridCubeWidth) * gridCubeWidth;