aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.AddIn/Tools/ToolFactory.cs
blob: bdc9bf979a242697860173f717dd9390b946f557 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace RhSolutions.Tools;

internal class ToolFactory
{
    static ReaderFactory readerFactory = RhSolutionsAddIn.ServiceProvider.GetService<ReaderFactory>();
    static WriterFactory writerFactory = RhSolutionsAddIn.ServiceProvider.GetService<WriterFactory>();
    static IFittingsCalculator sleevesCaluculator = RhSolutionsAddIn.ServiceProvider.GetService<IFittingsCalculator>();

    public Tool GetTool(string toolName)
    {
        Tool tool = toolName switch
        {
            "export" => new ExportTool(readerFactory, writerFactory),
            "convert" => new ConvertTool(readerFactory, writerFactory),
            "merge" => new MergeTool(readerFactory, writerFactory),
            "dxfexport" => new DxfTool(readerFactory, writerFactory),
            "guess" => new GuessTool(readerFactory, writerFactory),
            "fillsleeves" => new SleevesTool(readerFactory, writerFactory, sleevesCaluculator),
            _ => throw new Exception($"Неизвестный инструмент {toolName}"),
        };
        return tool;
    }
}