aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.AddIn/Tools/ToolFactory.cs
blob: a7f7afcee32353db75c29b603f5c8e867ecd0a08 (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
26
using OcrClient.Services;

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;
	}
}