Sounds like a jagged array ... is this the kind of info you need to host?
| Drawing1 | | Layout1 | | Layout2 | |
| Drawing2 | | Layout1 | | Layout2 | | Layout3 | |
| Drawing3 | | Layout1 | | Layout2 | |
| Drawing4 | | Layout1 | |
| Drawing5 | | Layout1 | | Layout2 | | Layout3 | | Layout4 | | Layout5 | |
If so there are a number of ways you can do this without rolling your own class, though rolling your own class will hide the messy details from client applications, exposing only what is needed to make it appear elegant. I did say appear didn't I?
One way is to use a collection as the primary container and dynamic arrays as the items. To be clear: Each item within the collection is a dynamic 2D array, with the first dimension always 1 (hosting the drawing name), 2nd dimension growing as needed to host the multiple (and varying) layout names. I like this way at face value because your data is still typed.
A variation of the above is to have each item in the collection as a dynamic single dimensioned string array. The first array element is the drawing name, subsequent elements the layout names. Simpler than the preceding and your data is still typed.
Another way is to use a collection of collections. Each child collection grows as required, the first item in each child collection is the Drawing name, subsequent items the layouts. Geometrically speaking think of the primary collection as vertical, each child collection as horizontal. Do-able but I'm not fussy about it.
Another is a dynamic array of collections; many ways to skin the cat. Not all of them good | efficient.
Of course all of this is messy, and why .net gives you jagged arrays (and yet a no brainer in lisp).
If none of this makes sense worry not, it's me, not you. Another crappy night of nominal sleep, up way too early, and without the benefit of coffee.
Ackkk.