Exemplo n.º 1
0
        public void ApplyEmbedding()
        {
            foreach (var embeddedElement in EmbeddedGroup)
            {
                var elType = (IEmbeddedElement)embeddedElement.ElementType;
                foreach (var node in embeddedElement.Nodes)
                {
                    var embeddedNodes = HostGroup
                                        .Select(e => ((IEmbeddedHostElement)e.ElementType).BuildHostElementEmbeddedNode(e, node, transformer))
                                        .Where(e => e != null);
                    foreach (var embeddedNode in embeddedNodes)
                    {
                        if (elType.EmbeddedNodes.Count(x => x.Node == embeddedNode.Node) == 0)
                        {
                            elType.EmbeddedNodes.Add(embeddedNode);
                        }

                        // Update embedded node information for elements that are not inside the embedded group but contain an embedded node.
                        foreach (var element in model.Elements.Except(EmbeddedGroup))
                        {
                            if (element.ElementType is IEmbeddedElement && element.Nodes.Contains(embeddedNode.Node))
                            {
                                var currentElementType = (IEmbeddedElement)element.ElementType;
                                if (!currentElementType.EmbeddedNodes.Contains(embeddedNode))
                                {
                                    currentElementType.EmbeddedNodes.Add(embeddedNode);
                                    element.ElementType.DofEnumerator = new ElementEmbedder(model, element, transformer);
                                }
                            }
                        }
                    }
                }

                embeddedElement.ElementType.DofEnumerator = new ElementEmbedder(model, embeddedElement, transformer);
            }
        }