why do you want a seperate class for every model format type with only some methods overriden and no new fields or methods added....makes no sense, like I said I presume you want to work with TModel (or TGlModel, etc.) without caring from which file format it has been loaded....in that case it's perfectly fine to include all loading methods inside TModel itself and not make seperate classes which has just the loading methods overriden....

for example you have
[pascal]type
TMsaModel = class(TLoadSaveModel)
public
procedure LoadFromFile(AFileName: string); reintroduce;
procedure LoadFromStream(stream: Tstream); reintroduce;
procedure SaveToFile(AFileName: string); reintroduce;
procedure SaveToStream(stream: TStream); reintroduce;
end;[/pascal]

if TMsaModel contains no new methods and no new fields, it's a redundant class....you could add that functionality directly to TModel and have it everywhere...that way you wouldn't need typecasts to invoke the overriden methods (which is a very bad practive and rest assured can't be put into production code without your team leader having firing you after a conversation with the boss)....the same is with T3dsModel class - it also only overrides 2 methods and adds internal helper method, but that's where it ends....

with
[pascal]TModel.LoadFromFile(ModelFormat: TModelFormat; const FileName: string);
TModel.SaveToFile(ModelFormat: TModelFormat; const FileName: string);[/pascal]
you could do just
[pascal]Model.LoadFromFile(mf3ds, 'mymodel.3ds');
Model.SaveToFile(mfMsa, 'mymodelout.txt');[/pascal]
to load model in 3DS format and saving it in Msa instead of
[pascal]T3dsModel(Model).LoadFromFile('mymodel.3ds');
TMsaModel(Model).SaveToFile('mymodelout.txt');[/pascal]

the method with typecasts is just wrong (why you reintroduce those methods in the implementation is another question, should be overriden instead)...

so the main question is if you need T3dsModel/TMsaModel/etc. to have Data which is not in TModel.....if no then scrap modelformat-specific classes....if yes, then you must do seperate classes per model-format and instead make the rendering architecture different something like...
[pascal]TModel.Render(Renderer: TRenderer); virtual; abstract; [/pascal]
which is not possibly the best thing due to the fact that most of the rendering code would be duplicated by the different model types...

suffice to say, you must write how you imagine it working and what fearures it should have, then I can help you more....