aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.AddIn/Tools/ToolFactory.cs
blob: e65ab0cfe04e70724172ea6238694648710095f2 (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
25
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"),
			"ocr" => new OcrTool(readerFactory, writerFactory),
			_ => throw new Exception($"Неизвестный инструмент {toolName}"),
		};
		return tool;
	}
}