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

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

    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 FittingsTool(readerFactory, writerFactory, fittingsCalculatorFactory, "Sleeves"),
            "fillcouplings" => new FittingsTool(readerFactory, writerFactory, fittingsCalculatorFactory, "Couplings"),
            _ => throw new Exception($"Неизвестный инструмент {toolName}"),
        };
        return tool;
    }
}