I just got done doing my Catalina 28. I made a fitted carpet that isn't attached to the floor. I had it bound at a local carpet shop. Looks like it came from the factory.
I created the template by using packing tape and a roll of brown package wrapping paper. First, I cut pieces of the paper to fit all around the perimeter and taped them (sparingly) down. Then I cut larger pieces and filled in the rest of the floor, until I had one large, perfect fitting template.
When I rolled up the template and took it home, it was sort of unwieldy and tattered because of all the small pieces taped together, so I transferred the whole thing to fresh paper (had to be double wide to fit). I taped the original (sparingly again) to the fresh paper and traced it with a pencil. Then I cut out the template.
I measured the greatest width and greatest length of the template and bought some nice commercial carpet. The carpet I bought was available in a 15' roll, so I didn't need any seems. Depending on the size of your cabin sole and the carpet you want, you may have to have the carpet store do a seam for you.
I put my carpet on the floor, bottom side up, and put my template on it. MAKE SURE that you orient it the right way so you don't create a mirror image of your sole.
I taped the template (you know) to the backside of the carpet and then used some black spray paint to quickly transfer the shape to the carpet. Just a light dusting of paint gives a very crisp outline.
Then I used a razor knife to cut out the shape. I took it to the boat with my fingers crossed. It fit perfectly.
Note that my mast support sits out in the middle of the cabin. That required making a nice straight slit across the beam from the mast to the base of a settee. Allowed the carpet to be one piece. Alternatively, you could do your boat in two or more pieces, depending on the size and layout of the cabin.
I took the carpet to my local carpet store and had them bind the edges. They did a great job, and it looks fantastic.
Carpet's not for everyone. Or every climate, but this particular method worked well for me.