コード例 #1
0
        private void PopulateCatalogue(CustomTreeNode treeNode, Document document, string sid)
        {
            if (m_IfcClassificationReferenceCollection == null)
            {
                m_IfcClassificationReferenceCollection = document.IfcXmlDocument.Items.OfType <IfcClassificationReference>().ToList();
            }

            var classificationReferences = m_IfcClassificationReferenceCollection.Where(item => item.ReferencedSource != null && item.ReferencedSource.Item.Ref == sid).Select(item => item);

            foreach (var classificationReference in classificationReferences)
            {
                string         nodeText = String.Format("{0} - {1}", classificationReference.Identification, classificationReference.Name);
                CustomTreeNode classificationReferenceNode = new CustomTreeNode(nodeText, classificationReference);
                // TODO: set node images, colors, ...
                treeNode.Nodes.Add(classificationReferenceNode);
                PopulateCatalogue(classificationReferenceNode, document, classificationReference.Id);
            }

            // gibt es ein propertySetTemplate zu RelatingClassification
            IEnumerable <IfcPropertySetTemplate> newPropertySetTemplates = GetIfcPropertySetTemplateCollectionRelatingClassificationId(document, sid);
            var baseObjects = new BaseObjects <IfcPropertySetTemplate>(null);

            baseObjects.AddRange(newPropertySetTemplates);
            treeNode.CcUISubObject = baseObjects;
            PopulatePropertyTemplates(treeNode, newPropertySetTemplates);
        }
コード例 #2
0
        private void PopulatePropertyTemplates(CustomTreeNode treeNode, IEnumerable <IfcPropertySetTemplate> propertySetTemplates)
        {
            if (propertySetTemplates == null)
            {
                return;
            }

            foreach (var propertySetTemplate in propertySetTemplates)
            {
                if (propertySetTemplate.HasPropertyTemplates == null)
                {
                    continue;
                }

                foreach (var propertyTemplate in propertySetTemplate.HasPropertyTemplates.Items)
                {
                    IfcSimplePropertyTemplate simplePropertyTemplate = propertyTemplate as IfcSimplePropertyTemplate;
                    if (simplePropertyTemplate == null)
                    {
                        continue;
                    }

                    string nodeText = String.Format("{0}", simplePropertyTemplate.Name);
                    if (!String.IsNullOrEmpty(simplePropertyTemplate.PrimaryMeasureType))
                    {
                        nodeText = String.Concat(nodeText, String.Format(" [{0}]", simplePropertyTemplate.PrimaryMeasureType));
                    }

                    CustomTreeNode simplePropertyTemplateNode = new CustomTreeNode(nodeText, simplePropertyTemplate);
                    treeNode.Nodes.Add(simplePropertyTemplateNode);

                    if (simplePropertyTemplate.TemplateType == IfcSimplePropertyTemplateTypeEnum.PSinglevalue)
                    {
                        // TODO: set node images, colors, ...
                    }
                    else if (simplePropertyTemplate.TemplateType == IfcSimplePropertyTemplateTypeEnum.PEnumeratedvalue)
                    {
                        foreach (var enumItem in simplePropertyTemplate.Enumerators.EnumerationValues.Items)
                        {
                            if (enumItem is IfcLabelwrapper)
                            {
                                IfcLabelwrapper labelWrapper = enumItem as IfcLabelwrapper;

                                string         enumNodeText = String.Format("{0}", labelWrapper.Value);
                                CustomTreeNode enumNode     = new CustomTreeNode(enumNodeText, (IfcLabelwrapper)enumItem);
                                // TODO: set node images, colors, ...
                                simplePropertyTemplateNode.Nodes.Add(enumNode);
                            }
                        }
                        // TODO: set node images, colors, ...
                    }
                }
            }
        }
コード例 #3
0
        private void tv_AfterSelect(object sender, TreeViewEventArgs e)
        {
            CustomTreeNode customTreeNode = e.Node as CustomTreeNode;

            if (customTreeNode != null && customTreeNode.CcObject != null)
            {
                pg.SelectedObjects = new object[] { customTreeNode.CcObject }
            }
            ;
            else
            {
                pg.SelectedObjects = new object[] { }
            };
        }
コード例 #4
0
        private void PopulateSpatialStructure(Document document)
        {
            CustomTreeNode sitesNode = new CustomTreeNode("Liegenschaften", document.Project.Sites);

            tv.Nodes.Add(sitesNode);

            string name     = "";
            string longName = "";

            foreach (IfcSite site in document.Project.Sites)
            {
                CustomTreeNode siteNode = new CustomTreeNode("Liegenschaft", site);
                name          = String.IsNullOrEmpty(site.Name) ? "<Name>" : site.Name;
                longName      = String.IsNullOrEmpty(site.LongName) ? "" : site.LongName;
                siteNode.Text = String.Format("{0} {1}", name, longName);
                sitesNode.Nodes.Add(siteNode);
                siteNode.Expand();

                foreach (IfcBuilding building in site.Buildings)
                {
                    CustomTreeNode buildingNode = new CustomTreeNode("Gebäude", building);
                    name              = String.IsNullOrEmpty(building.Name) ? "<Name>" : building.Name;
                    longName          = String.IsNullOrEmpty(building.LongName) ? "" : building.LongName;
                    buildingNode.Text = String.Format("{0} {1}", name, longName);
                    siteNode.Nodes.Add(buildingNode);
                    buildingNode.Expand();

                    foreach (IfcBuildingStorey buildingStorey in building.BuildingStoreys)
                    {
                        CustomTreeNode buildingStoreyNode = new CustomTreeNode("Etage", buildingStorey);
                        name     = String.IsNullOrEmpty(buildingStorey.Name) ? "<Name>" : buildingStorey.Name;
                        longName = String.IsNullOrEmpty(buildingStorey.LongName) ? "" : buildingStorey.LongName;
                        buildingStoreyNode.Text = String.Format("{0} {1}", name, longName);
                        buildingNode.Nodes.Add(buildingStoreyNode);

                        foreach (IfcSpace space in buildingStorey.Spaces)
                        {
                            CustomTreeNode spaceNode = new CustomTreeNode("Raum", space);
                            name           = String.IsNullOrEmpty(space.Name) ? "<Name>" : space.Name;
                            longName       = String.IsNullOrEmpty(space.LongName) ? "" : space.LongName;
                            spaceNode.Text = String.Format("{0} {1}", name, longName);
                            buildingStoreyNode.Nodes.Add(spaceNode);
                        }
                    }
                }
            }
        }
コード例 #5
0
        private void PopulateSystems(Document document)
        {
            CustomTreeNode systemsNode = new CustomTreeNode("Systeme" /*RESX.DW_STRUCTURE_NODERESOURCES*/, document.Project.Facilities);

            tv.Nodes.Add(systemsNode);

            foreach (CcFacility faci in document.Project.Facilities)
            {
                Ifc4.IfcSystem sys    = faci.IfcSystem;
                CustomTreeNode system = new CustomTreeNode(sys.Name + "-" + sys.Description, faci);
                systemsNode.Nodes.Add(system);

                var relassignGroups = document.IfcXmlDocument.Items.OfType <IfcRelAssignsToGroup>()
                                      .Where(root => root.RelatingGroup.Ref == sys.Id);       //.RelatedObjects.Items.Exists(item => item.Ref == document.Project.Id))
                //.Select(item => item.RelatingClassification.Item.Ref);
                List <IfcRelAssignsToGroup> grp = relassignGroups.ToList();
                if (grp != null)
                {
                    foreach (IfcRelAssignsToGroup relgrp in grp)
                    {
                        foreach (var item in relgrp.RelatedObjects.Items)
                        {
                            if (item is IfcSpaceHeater)
                            {
                                IfcSpaceHeater heat       = item as IfcSpaceHeater;
                                var            relDefProp = document.IfcXmlDocument.Items.OfType <IfcRelDefinesByProperties>()
                                                            .Where(root => root.RelatedObjects.Ref == heat.Ref); //.RelatedObjects.Items.Exists(item => item.Ref == document.Project.Id))
                            }
                        }
                    }
                }
            }

            systemsNode.Expand();
            //

            //foreach (IfcClassification classification in classifications)
            //{
            //    CustomTreeNode classificationNode = new CustomTreeNode(classification.Name, classification);
            //    // TODO: set node images, colors, ...
            //    systemsNode.Nodes.Add(classificationNode);

            //    string sid = classification.Id;
            //    PopulateCatalogue(classificationNode, document, sid);
            //}
        }
コード例 #6
0
        private void PopulateCatalogues(Document document)
        {
            CustomTreeNode cataloguesNode = new CustomTreeNode("Kataloge" /*RESX.DW_STRUCTURE_NODERESOURCES*/, null);

            cataloguesNode.Expand();
            tv.Nodes.Add(cataloguesNode);

            var relatingClassificationRefs = document.IfcXmlDocument.Items.OfType <IfcRelAssociatesClassification>()
                                             .Where(root => root.RelatedObjects.Items.Exists(item => item.Ref == document.Project.Id))
                                             .Select(item => item.RelatingClassification.Item.Ref);

            var classifications = document.Classifications.Where(item => relatingClassificationRefs.Contains(item.Id));

            foreach (IfcClassification classification in classifications)
            {
                CustomTreeNode classificationNode = new CustomTreeNode(classification.Name, classification);
                // TODO: set node images, colors, ...
                cataloguesNode.Nodes.Add(classificationNode);

                string sid = classification.Id;
                PopulateCatalogue(classificationNode, document, sid);
            }
        }