protected void AddRelContained() { foreach (IfcRelContainedInSpatialStructure scRel in _model.Instances.OfType <IfcRelContainedInSpatialStructure>()) { if (scRel.RelatingStructure != null) { CompositionNode treeItem; if (!NodeMap.TryGetValue(scRel.RelatingStructure, out treeItem)) //already written { treeItem = new CompositionNode(scRel.RelatingStructure); NodeMap.Add(scRel.RelatingStructure, treeItem); } AddRelatedElements(scRel, treeItem); } } }
protected void AddRelatedObjects(IfcRelDecomposes rel, CompositionNode treeItem) { foreach (IfcObjectDefinition child in rel.RelatedObjects) { if (child.EntityLabel == treeItem.EntityId) { continue; } //prevent any infinite looping CompositionNode childItem; if (!NodeMap.TryGetValue(child, out childItem)) //already written { childItem = new CompositionNode(child); NodeMap.Add(child, childItem); } treeItem.Children.Add(childItem); } }
protected void AddRelatedElements(IfcRelContainedInSpatialStructure scRel, CompositionNode treeItem) { var applicableTypes = scRel.RelatedElements .Where(t => !t.GetType().IsSubclassOf(typeof(IfcFeatureElementSubtraction))); foreach (IfcObjectDefinition child in applicableTypes) { CompositionNode childItem; if (!NodeMap.TryGetValue(child, out childItem)) //already written { childItem = new CompositionNode(child); NodeMap.Add(child, childItem); } //Node family = GetFamily(treeItem, child); // TODO: Add child to family, not treeItem treeItem.Children.Add(childItem); } }
protected CompositionNode LocateProjectNode() { CompositionNode root = null; IfcProject project = _model.Instances.OfType <IfcProject>().FirstOrDefault(); if (project != null) { CompositionNode projectNode; if (NodeMap.TryGetValue(project, out projectNode)) { projectNode.IsRoot = true; root = projectNode; } } //if (root == null) //{ // Trace.TraceWarning("No IfcProject located in Model"); //} return(root); }
protected void AddRelComposes() { foreach (IfcRelDecomposes rel in _model.Instances.OfType <IfcRelDecomposes>()) { if (rel.RelatingObject != null) { // Get the subject of the decomposition from the relationship var parentRel = rel.RelatingObject; if (parentRel == null) { continue; } //var parent = parentRel.RelatingObject; CompositionNode treeItem; if (!NodeMap.TryGetValue(parentRel, out treeItem)) { treeItem = new CompositionNode(parentRel); NodeMap.Add(parentRel, treeItem); } AddRelatedObjects(rel, treeItem); } } }
protected void AddRelComposes() { foreach (IfcRelDecomposes rel in _model.Instances.OfType<IfcRelDecomposes>()) { if (rel.RelatingObject != null) { // Get the subject of the decomposition from the relationship var parentRel = rel.RelatingObject; if (parentRel == null) { continue; } //var parent = parentRel.RelatingObject; CompositionNode treeItem; if (!NodeMap.TryGetValue(parentRel, out treeItem)) { treeItem = new CompositionNode(parentRel); NodeMap.Add(parentRel, treeItem); } AddRelatedObjects(rel, treeItem); } } }
protected void AddRelContained() { foreach (IfcRelContainedInSpatialStructure scRel in _model.Instances.OfType<IfcRelContainedInSpatialStructure>()) { if (scRel.RelatingStructure != null) { CompositionNode treeItem; if (!NodeMap.TryGetValue(scRel.RelatingStructure, out treeItem)) //already written { treeItem = new CompositionNode(scRel.RelatingStructure); NodeMap.Add(scRel.RelatingStructure, treeItem); } AddRelatedElements(scRel, treeItem); } } }
protected void AddRelatedObjects(IfcRelDecomposes rel, CompositionNode treeItem) { foreach (IfcObjectDefinition child in rel.RelatedObjects) { if (child.EntityLabel == treeItem.EntityId) { continue; }//prevent any infinite looping CompositionNode childItem; if (!NodeMap.TryGetValue(child, out childItem)) //already written { childItem = new CompositionNode(child); NodeMap.Add(child, childItem); } treeItem.Children.Add(childItem); } }