1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using SAGA.GplotRelationComputerManage;
- using SAGA.Models;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SAGA.GplotManage
- {
- public class SpaceRelationUploader: RelationUploader
- {
- public SpaceRelationUploader(string relationType, string relationDisplay) : base(relationType, relationDisplay)
- {
- }
- protected override object GetDefaultUploadData()
- {
- SpaceComputerHandler spaceHandler = new SpaceComputerHandler();
- spaceHandler.ComputerWidthCache();
- //加载数据
- var data = SpaceComputerDataUtil.LoadData();
- return data;
- }
-
- protected override List<GraphRelationItem> CreateGraph(object loadData)
- {
- List<GraphRelationItem> items = new List<GraphRelationItem>();
- SpaceData spaces = loadData as SpaceData;
- if (spaces == null) return items ;
- spaces = GetSpaceData(spaces, GetRelatedEnum());
- foreach (var floorSpaceData in spaces.FloorDatas)
- {
- foreach (var space in floorSpaceData.EndPoints)
- {
- List<AdjacentSpace> relationSpaces = new List<AdjacentSpace>(space.AdjacentSpaces);
- relationSpaces.AddRange(space.UpElements);
- foreach (var adjacentSpace in relationSpaces)
- {
- GraphRelationItem item = new GraphRelationItem();
- item.FromId = space.Id;
- if (string.IsNullOrWhiteSpace(item.FromId))
- {
- continue;
- }
- item.ToId = adjacentSpace.Space.Id;
- if(string.IsNullOrWhiteSpace(item.ToId))
- {
- continue;
- }
- item.RelType = "1";
- items.Add(item);
- }
- }
- }
- return items;
- }
- #region 准备数据
- public SpaceRelatedEnum GetRelatedEnum()
- {
- #region 获取关联信息
- switch (RelationType)
- {
- case "ElementSpNeighborhood":
- {
- return SpaceRelatedEnum.Adjacent;
- }
- case "TrafficNetwork":
- {
- return SpaceRelatedEnum.Crossing;
- }
- case "ConvectionNetwork":
- {
- return SpaceRelatedEnum.Radiation;
- }
- case "RadiationNetwork":
- {
- return SpaceRelatedEnum.Ventilation;
- }
- }
- return SpaceRelatedEnum.Adjacent;
- #endregion
- }
- public SpaceData GetSpaceData(SpaceData spaces,SpaceRelatedEnum spaceRelated)
- {
- foreach (var fd in spaces.FloorDatas)
- {
- foreach (var space in fd.EndPoints)
- {
- space.AdjacentSpaces = space.AdjacentSpaces.Where(s=>s.RelatedEnum.HasFlag(spaceRelated)).ToList();
- space.UpElements = space.UpElements.Where(s => s.RelatedEnum.HasFlag(spaceRelated)).ToList();
- }
- }
- return spaces;
- }
- #endregion
- }
- }
|