public static TopoInfo GetOneFloorOpt(string floorLayer) { //InitInfo initInfo = new InitInfo(); //TopoInfo root = new TopoInfo("根节点", AreaTypes.区域); //initInfo.TopoInfo = root; string floorBoundLayer = floorLayer + "-边界"; TopoInfo floor = new TopoInfo(floorLayer, AreaTypes.楼层);//todo:可以扩展成园区、大楼手动设置 try { //"园区" ShapesDefine parkpoint = GetParkLayerByName(floorBoundLayer, false); if (parkpoint.shapelist.Count > 0) { List <PointInfo> point = new List <PointInfo>(); foreach (CADShape vl in parkpoint.shapelist) { Dictionary <string, int> repoint = new Dictionary <string, int>(); //去除重复的点 foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); string key = p.X.ToString() + "_" + p.Y.ToString(); if (!repoint.ContainsKey(key)) { repoint[key] = 1; point.Add(sub); } } break; } BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); //boundInfo.Points.AddRange(point); List <PointInfo> newpoint = new List <PointInfo>(); ToPointFromClockwise(point, ref newpoint); boundInfo.Points.AddRange(newpoint); boundInfo.IsRelative = true; floor.BoundInfo = boundInfo; floor.Name = floorLayer; floor.Type = AreaTypes.楼层; } //root.AddChild(floor); // TopoInfo building = new TopoInfo("大楼", AreaTypes.大楼); // park.AddChild(building); ShapesDefine floorpoint = GetParkLayerByName(floorLayer, true);//房间都在楼层的Layer里面 if (parkpoint.shapelist.Count > 0) { foreach (CADShape vl in floorpoint.shapelist) { if (vl.Layer == floorBoundLayer) { // continue; } List <PointInfo> point = new List <PointInfo>(); Dictionary <string, int> repoint = new Dictionary <string, int>(); //去除重复的点 foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); string key = p.X.ToString() + "_" + p.Y.ToString(); if (!repoint.ContainsKey(key)) { repoint[key] = 1; point.Add(sub); } } //break; if (point.Count > 0) { BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); // boundInfo.Points.AddRange(point); boundInfo.IsRelative = false;//这里是true的话,楼层有偏移会导致房间整体偏移。 List <PointInfo> newpoint = new List <PointInfo>(); ToPointFromClockwise(point, ref newpoint); boundInfo.Points.AddRange(newpoint); TopoInfo topoInfo = new TopoInfo(); topoInfo.BoundInfo = boundInfo; topoInfo.Name = vl.Name; if (vl.Name == "floorLayer") { topoInfo.Name = "机房_NoName"; } topoInfo.Type = AreaTypes.机房; floor.AddChild(topoInfo); } } } } catch { } return(floor); }
private static InitInfo CreateInitInfo(string parkName, int maxFloorCount) { InitInfo initInfo = new InitInfo(); TopoInfo root = new TopoInfo("根节点", AreaTypes.区域); initInfo.TopoInfo = root; try { //"园区" ShapesDefine parkpoint = GetParkLayerByName("园区", false); TopoInfo park = new TopoInfo(parkName, AreaTypes.园区);//todo:可以扩展成园区、大楼手动设置 if (parkpoint.shapelist.Count > 0) { List <PointInfo> point = new List <PointInfo>(); foreach (CADShape vl in parkpoint.shapelist) { Dictionary <string, int> repoint = new Dictionary <string, int>(); //去除重复的点 foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); string key = p.X.ToString() + "_" + p.Y.ToString(); if (!repoint.ContainsKey(key)) { repoint[key] = 1; point.Add(sub); } } break; } BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); List <PointInfo> newpoint = new List <PointInfo>(); ToPointFromClockwise(point, ref newpoint); boundInfo.Points.AddRange(newpoint); //boundInfo.Points.AddRange(point); park.BoundInfo = boundInfo; park.Name = parkName; park.Type = AreaTypes.园区; } root.AddChild(park); // TopoInfo building = new TopoInfo("大楼", AreaTypes.大楼); // park.AddChild(building); ShapesDefine floorpoint = GetParkLayerByName("大楼", true); TopoInfo group = new TopoInfo(); group.Type = AreaTypes.分组; group.Name = "生产区域"; park.AddChild(group); if (parkpoint.shapelist.Count > 0) { foreach (CADShape vl in floorpoint.shapelist) { List <PointInfo> point = new List <PointInfo>(); Dictionary <string, int> repoint = new Dictionary <string, int>(); //去除重复的点 foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); string key = p.X.ToString() + "_" + p.Y.ToString(); if (!repoint.ContainsKey(key)) { repoint[key] = 1; point.Add(sub); } } //break; if (point.Count > 0) { List <PointInfo> newpoint = new List <PointInfo>(); ToPointFromClockwise(point, ref newpoint); BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); //boundInfo.Points.AddRange(point); boundInfo.Points.AddRange(newpoint); TopoInfo topoInfo = new TopoInfo(); topoInfo.BoundInfo = boundInfo; topoInfo.Name = vl.Name; topoInfo.Type = AreaTypes.大楼; group.AddChild(topoInfo); List <TopoInfo> floors = GetFloorList(vl.Name, maxFloorCount);//cww,合并 全厂_大楼_楼层_房间 foreach (var floor in floors) { topoInfo.AddChild(floor); } } } } } catch { } root.SetAbsolute(); return(initInfo); }
private static InitInfo CreateInitInfo() { InitInfo initInfo = new InitInfo(); TopoInfo root = new TopoInfo("根节点", AreaTypes.区域); initInfo.TopoInfo = root; try { //"园区" ShapesDefine parkpoint = GetParkLayerByName("园区", false); TopoInfo park = new TopoInfo("园区", AreaTypes.园区);//todo:可以扩展成园区、大楼手动设置 if (parkpoint.shapelist.Count > 0) { List <PointInfo> point = new List <PointInfo>(); foreach (CADShape vl in parkpoint.shapelist) { foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); point.Add(sub); } break; } BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); boundInfo.Points.AddRange(point); park.BoundInfo = boundInfo; park.Name = "园区"; park.Type = AreaTypes.园区; } root.AddChild(park); // TopoInfo building = new TopoInfo("大楼", AreaTypes.大楼); // park.AddChild(building); ShapesDefine floorpoint = GetParkLayerByName("大楼", true); if (parkpoint.shapelist.Count > 0) { foreach (CADShape vl in floorpoint.shapelist) { List <PointInfo> point = new List <PointInfo>(); foreach (CADPoint p in vl.Points) { PointInfo sub = new PointInfo((float)p.X, (float)p.Y); point.Add(sub); } //break; if (point.Count > 0) { BoundInfo boundInfo = GetRoomsCommand.NewBoundInfo(); boundInfo.Points.AddRange(point); TopoInfo topoInfo = new TopoInfo(); topoInfo.BoundInfo = boundInfo; topoInfo.Name = vl.Name; topoInfo.Type = AreaTypes.大楼; park.AddChild(topoInfo); } } } } catch { } return(initInfo); }