OK. Buckle your seatbelts because this ride might get a little bumpy...
You could create the sorting method you need using the following steps. I have built into the families that I am creating a set of condition parameters which change the integer value of a parameter based on the selection made in a totally different yes/no parameter. You could do something similar in which you assign numeric values to each of the selection categories and then have a final parameter which creates a sum of the control integers which you then use for sorting in the schedule. It sounds convoluted, but once you get it working, it does so like a charm. You could set your control values like:
Type Mark = 1000.0 (thousands digit) --> A=1000, B=2000, C=3000, and etc.
SwingDirection = 00100.0 (hundreds digit) --> Outswing = 100, Inswing = 200, and etc.
FireClass = 00010.0 (tens digit) --> Rating 1 = 10, Rating 2 = 20, Rating 3 = 30, and etc.
SoundClass = 0001.0 (ones digit) --> SC1 = 1, SC2=2, Sc3=3, and etc.
Summation of categories would be totally unique based on the window configurations
(ex: 1122.3 would be a Type A Outswing window of fire rating 2, with a sound class of 2, and a security class of 3)
Then this summation parameter can be used to sort the schedule. This/these parameters will need to be shared parameters for scheduling...
I have attached an image of a similar situation in which I am populating a custom type mark with text based on check boxes selected. I got the idea for this from a blog post. Follow the link here for the post and look to the "Pick One and Only One' section in the middle of the post.
Maybe this can accomplish what you need (after a bit of elbow grease is applied thoroughly).