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)
            {
            }
        }
示例#2
0
        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)
            {
            }
        }
示例#3
0
        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);
                        }
                    }
                }
            }
        }