public override void Run(object sender, System.EventArgs e) { DF3DApplication app = (DF3DApplication)this.Hook; if (app == null || app.Current3DMapControl == null) { return; } if (!app.IsInit3DControl) { XtraMessageBox.Show("三维空间初始化失败!", "提示"); return; } try { Layer3DPlanTreePad pad = UCService.GetContent(typeof(Layer3DPlanTreePad)) as Layer3DPlanTreePad; if (pad == null) { return; } app.Workbench.SetStatusInfo("规划数据加载中…"); SplashScreenManager.Default.SendCommand(null, "开始加载三维规划数据......"); string str3DPlanDataConn = Config.GetConfigValue("3DPlanDataConnStr"); if (!string.IsNullOrEmpty(str3DPlanDataConn)) { IConnectionInfo ci = new ConnectionInfo(); ci.FromConnectionString(str3DPlanDataConn); DataUtils.Add3DPlanData(ci, pad, pad.TreeList); } } catch (Exception ex) { } }
public static void Add3DPlanData(IConnectionInfo ci, Layer3DPlanTreePad pad, TreeList parentTree) { try { if (ci == null || parentTree == null) { return; } DF3DApplication app = DF3DApplication.Application; if (app == null || app.Current3DMapControl == null) { return; } //AxRenderControl d3 = app.Current3DMapControl; IDataSourceFactory dsFactory = new DataSourceFactory(); if (!dsFactory.HasDataSource(ci)) { return; } IDataSource ds = dsFactory.OpenDataSource(ci); if (ds == null) { return; } List <Plan> allPlan = SelectPlans(ds, "1=1"); Dictionary <int, int> planIds = new Dictionary <int, int>(); if ((allPlan != null) && (allPlan.Count > 0)) { for (int i = 0; i < allPlan.Count; i++) { planIds.Add(allPlan[i].PlanID, (int)allPlan[i].ConnType); } } //**********加权限 控制可见性 修改********** //**************************************** InitTree(pad, parentTree, ds, allPlan, planIds); } catch (Exception ex) { } }
private static void InitTree(Layer3DPlanTreePad pad, TreeList parentTree, IDataSource ds, List <Plan> allPlans, Dictionary <int, int> ViewPlanIds) { List <Plan> list = new List <Plan>(); List <Plan> list2 = new List <Plan>(); if ((allPlans != null) && (allPlans.Count > 0)) { List <int> list3 = ViewPlanIds.Keys.ToList <int>(); if ((list3 != null) && (list3.Count > 0)) { foreach (Plan plan in allPlans) { if (list3.Contains(plan.PlanID)) { list2.Add(plan); } list.Add(plan); } } else { foreach (Plan plan2 in allPlans) { list.Add(plan2); } } } List <Project> list4 = SelectProjects(ds, "1=1"); List <int> projIds = new List <int>(); foreach (Project project in list4) { projIds.Add(project.ProjectID); } //**********加权限 控制可见性 修改********** //**************************************** List <Project> list6 = new List <Project>();//当前用户 if ((projIds != null) && (projIds.Count > 0)) { foreach (Project project2 in list4) { if (projIds.Contains(project2.ProjectID)) { list6.Add(project2); } } } ProjectManagerLayer pml = new ProjectManagerLayer() { Name = "建设项目" }; TreeListNode nodepml = parentTree.AppendNode(new object[] { pml.Name }, (TreeListNode)null); if (pml != null) { pml.LogicTree = pad; pml.OwnNode = nodepml; pml.Visible = nodepml.Checked = true; } ProjectLayerService.Instance.ProjectsRoot = pml; CompletedProjectManagerLayer cpml = new CompletedProjectManagerLayer() { Name = "竣工项目" }; TreeListNode nodecpml = parentTree.AppendNode(new object[] { cpml.Name }, (TreeListNode)null); if (cpml != null) { cpml.LogicTree = pad; cpml.OwnNode = nodecpml; cpml.Visible = nodecpml.Checked = true; } ProjectLayerService.Instance.CompletedProjectRoot = cpml; FormallyProjectManagerLayer fpml = new FormallyProjectManagerLayer() { Name = "正式项目" }; TreeListNode nodefpml = parentTree.AppendNode(new object[] { fpml.Name }, (TreeListNode)null); if (fpml != null) { fpml.LogicTree = pad; fpml.OwnNode = nodefpml; fpml.Visible = nodefpml.Checked = true; } ProjectLayerService.Instance.FormallyProjectRoot = fpml; if ((list6 != null) && (list6.Count > 0)) { foreach (Project project3 in list6) { ProjectGroupLayer class2 = null; List <Plan> list7 = new List <Plan>(); PlanState formally = PlanState.New; foreach (Plan plan4 in list) { if (plan4.ProjectID == project3.ProjectID) { if (plan4.PlanState == PlanState.Formally) { formally = PlanState.Formally; } else if (plan4.PlanState == PlanState.Completed) { formally = PlanState.Completed; } if (list2.Contains(plan4)) { list7.Add(plan4); } } } foreach (Plan plan6 in list7) { list2.Remove(plan6); } foreach (Plan plan7 in list7) { list.Remove(plan7); } switch (formally) { case PlanState.New: class2 = ProjectLayerService.Instance.ProjectsRoot.CreateProject(project3); break; case PlanState.Formally: class2 = ProjectLayerService.Instance.FormallyProjectRoot.CreateProject(project3); break; case PlanState.Completed: class2 = ProjectLayerService.Instance.CompletedProjectRoot.CreateProject(project3); break; } if (class2 != null) { class2.SetTerrainModifier(project3.ProjectRemark1, project3.ProjectElevation); foreach (Plan plan8 in list7) { Plan plan = plan8.Clone(); UrbanPlan plan10 = new UrbanPlan(ref plan); PlanGroupLayer class3 = class2.CreatePlan(ref plan10); } } } } }