// Token: 0x06000239 RID: 569 RVA: 0x0000F7FC File Offset: 0x0000D9FC
        public static List <SteelGroupElementMeshSFS> GroupSheets(IEnumerable <SteelGroupElementMeshSFS> sheets)
        {
            List <SteelGroupElementMeshSFS>        list       = new List <SteelGroupElementMeshSFS>();
            IEnumerable <SteelGroupElementMeshSFS> collection = SteelGroupElementMeshSFS.GroupSheetsImpl(sheets);

            list.AddRange(collection);
            return(list);
        }
示例#2
0
        // Token: 0x0600014C RID: 332 RVA: 0x0000A084 File Offset: 0x00008284
        private void MergeStandardFabrics()
        {
            List <SteelGroupElementMeshSFS> list = this.steelGroupElements.OfType <SteelGroupElementMeshSFS>().ToList <SteelGroupElementMeshSFS>();
            bool flag = list.none <SteelGroupElementMeshSFS>();

            if (!flag)
            {
                List <SteelGroupElementMeshSFS> collection = SteelGroupElementMeshSFS.GroupSheets(list);
                foreach (SteelGroupElementMeshSFS item in list)
                {
                    this.steelGroupElements.Remove(item);
                }
                this.steelGroupElements.AddRange(collection);
            }
        }
示例#3
0
        // Token: 0x0600017A RID: 378 RVA: 0x0000AA94 File Offset: 0x00008C94
        internal static SteelGroupElement GetInstance(RevitElement <FabricSheet> sheet, ItMachineDataBase.CNCElementData cncElementData, ItGeMatrix3d matWcsToPalette)
        {
            bool flag = SteelGroupElementMeshBase.IsCFS(sheet);
            SteelGroupElement instance;

            if (flag)
            {
                instance = SteelGroupElementMeshCFS.GetInstance(sheet, cncElementData, matWcsToPalette);
            }
            else
            {
                instance = SteelGroupElementMeshSFS.GetInstance(sheet, cncElementData, matWcsToPalette);
            }
            return(instance);
        }
        // Token: 0x06000235 RID: 565 RVA: 0x0000F570 File Offset: 0x0000D770
        internal new static SteelGroupElementMeshSFS GetInstance(RevitElement <FabricSheet> fabricSheet, ItMachineDataBase.CNCElementData cncElementData, ItGeMatrix3d matWcsToPalette)
        {
            bool flag = fabricSheet.IsInvalid() || SteelGroupElementMeshBase.IsCFS(fabricSheet);
            SteelGroupElementMeshSFS result;

            if (flag)
            {
                result = null;
            }
            else
            {
                FabricSheetType          sheetType = SteelGroupElementMeshBase.GetSheetType(fabricSheet.Element);
                SteelGroupElementMeshSFS steelGroupElementMeshSFS = new SteelGroupElementMeshSFS(cncElementData, matWcsToPalette);
                steelGroupElementMeshSFS.FabricSheet = fabricSheet;
                steelGroupElementMeshSFS.Host        = fabricSheet.Element.getHostingPart();
                bool flag2 = steelGroupElementMeshSFS.Host == null;
                if (flag2)
                {
                    result = null;
                }
                else
                {
                    steelGroupElementMeshSFS.FabricArea = (fabricSheet.Document.GetElement(fabricSheet.Element.FabricAreaOwnerId) as FabricArea);
                    SteelGroupElement         steelGroupElement = steelGroupElementMeshSFS;
                    RevitElement <FabricArea> fabricArea        = steelGroupElementMeshSFS.FabricArea;
                    steelGroupElement.Data = (((fabricArea != null) ? fabricArea.load <ItReinforcement>(null, false) : null) ?? SteelGroupElement.GetEmptyData(steelGroupElementMeshSFS));
                    steelGroupElementMeshSFS.WireItemsMajor  = steelGroupElementMeshSFS.getWireItems(fabricSheet.Element, 0, sheetType).ToList <WireItem>();
                    steelGroupElementMeshSFS.WireItemsMinor  = steelGroupElementMeshSFS.getWireItems(fabricSheet.Element, (WireDistributionDirection)1, sheetType).ToList <WireItem>();
                    steelGroupElementMeshSFS._type           = 1;
                    steelGroupElementMeshSFS.Count           = 1;
                    steelGroupElementMeshSFS.Weight          = SteelGroupElementMeshSFS.GetWeight(fabricSheet.Element);
                    steelGroupElementMeshSFS._name           = fabricSheet.Element.Name;
                    steelGroupElementMeshSFS._typeId         = fabricSheet.Element.GetTypeId();
                    steelGroupElementMeshSFS.MatWcsToPalette = ItGeMatrix3d.kIdentity;
                    steelGroupElementMeshSFS.PosPalette      = ItGePoint3d.kOrigin;
                    steelGroupElementMeshSFS.SetMinMaxZ();
                    steelGroupElementMeshSFS.SetGroup();
                    result = steelGroupElementMeshSFS;
                }
            }
            return(result);
        }
        // Token: 0x0600023A RID: 570 RVA: 0x0000F824 File Offset: 0x0000DA24
        private static IEnumerable <SteelGroupElementMeshSFS> GroupSheetsImpl(IEnumerable <SteelGroupElementMeshSFS> sheets)
        {
            Dictionary <ElementId, List <SteelGroupElementMeshSFS> > dictionary = new Dictionary <ElementId, List <SteelGroupElementMeshSFS> >();

            foreach (SteelGroupElementMeshSFS steelGroupElementMeshSFS in sheets)
            {
                SteelGroupElementMeshSFS.AddToSheetDict(dictionary, steelGroupElementMeshSFS._typeId, steelGroupElementMeshSFS);
            }
            bool flag = dictionary.Values.none <List <SteelGroupElementMeshSFS> >();
            IEnumerable <SteelGroupElementMeshSFS> result;

            if (flag)
            {
                result = Enumerable.Empty <SteelGroupElementMeshSFS>();
            }
            else
            {
                IEnumerable <SteelGroupElementMeshSFS> enumerable = SteelGroupElementMeshSFS.AccumulateSheets(dictionary);
                result = enumerable;
            }
            return(result);
        }
        // Token: 0x0600023B RID: 571 RVA: 0x0000F8A8 File Offset: 0x0000DAA8
        private static IEnumerable <SteelGroupElementMeshSFS> AccumulateSheets(Dictionary <ElementId, List <SteelGroupElementMeshSFS> > dict)
        {
            Func <SteelGroupElementMeshSFS, SteelGroupElementMeshSFS, SteelGroupElementMeshSFS> sumSheets = delegate(SteelGroupElementMeshSFS total, SteelGroupElementMeshSFS next)
            {
                total.Count  += next.Count;
                total.Weight += next.Weight;
                total.WireItemsMajor.AddRange(next.WireItemsMajor);
                total.WireItemsMinor.AddRange(next.WireItemsMinor);
                return(total);
            };
            Func <List <SteelGroupElementMeshSFS>, SteelGroupElementMeshSFS> selector = delegate(List <SteelGroupElementMeshSFS> list)
            {
                SteelGroupElementMeshSFS steelGroupElementMeshSFS = list.FirstOrDefault <SteelGroupElementMeshSFS>();
                ItDebug.assert(steelGroupElementMeshSFS != null, "if a list is added to the dict, at least one sheet must be added to the list!");
                SteelGroupElementMeshSFS instance = SteelGroupElementMeshSFS.GetInstance(steelGroupElementMeshSFS.FabricSheet, steelGroupElementMeshSFS.CNCElementData, steelGroupElementMeshSFS.MatWcsToPalette);
                instance.Weight = 0.0;
                instance.Count  = 0;
                instance.WireItemsMajor.Clear();
                instance.WireItemsMinor.Clear();
                return(list.Aggregate(instance, sumSheets));
            };

            return(dict.Values.Select(selector));
        }
        // Token: 0x0600023C RID: 572 RVA: 0x0000F900 File Offset: 0x0000DB00
        private static void AddToSheetDict(Dictionary <ElementId, List <SteelGroupElementMeshSFS> > dict, ElementId typeId, SteelGroupElementMeshSFS sheet)
        {
            List <SteelGroupElementMeshSFS> list;
            bool flag = !dict.TryGetValue(typeId, out list);

            if (flag)
            {
                list         = new List <SteelGroupElementMeshSFS>();
                dict[typeId] = list;
            }
            list.Add(sheet);
        }