How do i get the cframe of a models primary part?

Presumably you wanted to rotate it 90 degrees, so you should add the following to the multiplication:

CFrame.Angles(0, math.rad(90), 0)

Its still not rotating
char limit

What do you mean by matching the rotation? Like actually matching it, or looking at it? If it’s just matching the CFrame of the v part, all you should have to do is this:

ClonedRoom:PivotTo(v.CFrame)

that worked, Thanks!
char limittttt

Hey, if your still here, i have another question

How would i rotate these rooms in intervals of 90? (randomly ofc)

simple, you can’t. Though there are alternatives, such as doing it manually like this:

Instead of

local PrimaryPart = Model.PrimaryPart.CFrame

you should find the primary parts name and do

local PrimaryPart = Model.Part.CFrame 
-- Part is the Primary Part in this example, but not the property of Model, it's the Child within Model

other than that I’ve no idea how to get it. It’s like trying to get a Models entire CFrame and moving it, you can’t, you’ll have to move every piece one by one manually, if that makes any sense.

local rotation = math.random(-2, 2) * 90 -- Generates random rotation in the range of -180 to 180
local rotationCF = CFrame.Angles(0, math.rad(rotation), 0) -- Convert degrees to radians, and feed it at the Y-axis for horizontal rotation
local position = CFrame.new(v.CFrame.Position) -- Strip v's CFrame of rotation and only leave information about the position
ClonedRoom:PivotTo(position * rotationCF) -- Finally, combine the position and the rotation into single CFrame