/
spruttechnology
/
cam-api-examples
Обзор
Документация
Войти
/
spruttechnology
/
cam-api-examples
Код
Запросы
3
Задачи
Пакеты
0
Релизы
1
Аналитика
v19/develop
UI/FeatureFinderViewerNet/project/main/Controller/FeatureFinderController.cs
73 строки
2 KB
renal
Новые примеры CAMAPI
22 июн 2026, 15:53
22 июн 2026, 15:53
a5f6d2b
Код
Авторство
О чём код?
using CAMAPI.FeatureFinder; namespace FeatureFinderViewerNet.Controller; class FeatureFinderController { private readonly IFeatureFinderFacade _facade; private readonly IFeatureFinderView _view; private Dictionary<TCamApiFeatureType, List<FeatureNodeItem>> _data = new(); private bool _isScanning; public FeatureFinderController(IFeatureFinderFacade facade, IFeatureFinderView view) { _facade = facade; _view = view; } public async Task StartScanAsync() { _isScanning = true; _view.SetBusy(true); try { var items = await _facade.ScanFeaturesAsync(); _data = items .GroupBy(i => i.FeatureType) .ToDictionary(g => g.Key, g => g.ToList()); _view.ShowFeatureTypes( _data.OrderBy(kv => kv.Key.ToString()) .Select(kv => (kv.Key, kv.Value.Count))); } catch (Exception ex) { _view.ShowError(ex.Message); } finally { _isScanning = false; _view.SetBusy(false); } } public void OnFeatureTypeSelected(TCamApiFeatureType? type) { if (type is null || !_data.TryGetValue(type.Value, out var items)) { _view.ShowFeatureItems([]); return; } _view.ShowFeatureItems(items); } public void OnFeatureItemSelected(FeatureNodeItem? item) { if (item is null) { _view.ShowEntityPaths([]); _view.ShowProperties([]); return; } _view.ShowEntityPaths(item.EntityPaths); _view.ShowProperties(item.Properties); _view.SelectAllEntities(); _facade.SelectEntities(item.EntityPaths); } public void OnEntitiesSelected(IEnumerable<string> entityPaths) { if (_isScanning) return; _facade.SelectEntities(entityPaths); } }