示例#1
0
        private bool CheckMemberRestraint(Member MemberToCheck, Beam StartBeam, MEMBERCLASS MemberClass)
        {
            bool output = false;

            // Gather all nodes connected to the beam to check or any beams parallel to it
            var nodes = new HashSet <Node>(BeamHelpers.GatherParallelBeams(StartBeam).SelectMany(b => new List <Node>()
            {
                b.StartNode, b.EndNode
            }));

            // Check if any of the connected members are class above the current member
            var connectedMembers = nodes.SelectMany(n => n.ConnectedMembers).Where(m => m != null && m != MemberToCheck);

            if (MemberClass == MEMBERCLASS.PRIMARY)
            {
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m));
            }
            else if (MemberClass == MEMBERCLASS.SECONDARY)
            {
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m) || this.SecondaryMembers.Contains(m));
            }
            else if (MemberClass == MEMBERCLASS.TERTIARY)
            {
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m) || this.SecondaryMembers.Contains(m) || this.TertiaryMembers.Contains(m));
            }

            return(output);
        }
        private bool CheckMemberRestraint(Member MemberToCheck, Beam StartBeam, MEMBERCLASS MemberClass)
        {
            bool output;
            HashSet<Node> nodes;

            // Gather all nodes connected to the beam to check or any beams parallel to it
            nodes = new HashSet<Node>(BeamHelpers.GatherParallelBeams(StartBeam).SelectMany(b => new List<Node>() { b.StartNode, b.EndNode}));

            // Check if any of the connected members are class above the current member
            IEnumerable<Member> connectedMembers = nodes.SelectMany(n => n.ConnectedMembers).Where(m => m != null && m != MemberToCheck);
            if (MemberClass == MEMBERCLASS.PRIMARY)
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m));
            else if (MemberClass == MEMBERCLASS.SECONDARY)
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m) || this.SecondaryMembers.Contains(m));
            else if (MemberClass == MEMBERCLASS.TERTIARY)
                output = connectedMembers.Any(m => this.PrimaryMembers.Contains(m) || this.SecondaryMembers.Contains(m) || this.TertiaryMembers.Contains(m));
            else
                output = false;

            return output;
        }