Beispiel #1
0
		// Token: 0x0600026D RID: 621 RVA: 0x0000FCE0 File Offset: 0x0000DEE0
		private void SetValuesFromFabricType(Document doc, FabricSheetType type, int wireIndex)
		{
			bool flag = type.IsCustom();
			if (flag)
			{
				this._wireItem = type.GetWireItem(wireIndex, this.Direction);
				FabricWireType fabricWireType = doc.GetElement(this._wireItem.WireType) as FabricWireType;
				this.BendDiameter = fabricWireType.BendDiameter;
				this.WireDiameter = fabricWireType.WireDiameter;
				this.Length = this._wireItem.WireLength;
				Material material = doc.GetElement(type.Material) as Material;
				double value = 500.0;
				double defValue = value.NperMM2ToRevitYieldStrength();
				this.SteelQuality = (((material != null) ? material.GetMinimumYieldStress(defValue).RevitYieldStrengthToNperMM2().ToString() : null) ?? value.ToString());
			}
			else
			{
				this._wireItem = null;
				this.BendDiameter = 0.0;
				double num;
				double num2;
				type.getDiameters(out num, out num2);
				this.WireDiameter = ((this.Direction == null) ? num : num2);
				this.Length = (this.EndPoint - this.StartPoint).length();
			}
		}
Beispiel #2
0
//TF
        private void Stream(ArrayList data, FabricSheetType fabricST)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(FabricSheetType)));

            data.Add(new Snoop.Data.ElementId("Material", fabricST.Material, m_app.ActiveUIDocument.Document));
            data.Add(new Snoop.Data.Double("Overall Length", fabricST.OverallLength));
            data.Add(new Snoop.Data.Double("Overall Width", fabricST.OverallWidth));
            data.Add(new Snoop.Data.Double("Sheet Mass", fabricST.SheetMass));

            data.Add(new Snoop.Data.CategorySeparator("Major Direction"));
            data.Add(new Snoop.Data.ElementId("Wire Type", fabricST.MajorDirectionWireType, m_app.ActiveUIDocument.Document));
            data.Add(new Snoop.Data.Double("End Overhang", fabricST.MajorEndOverhang));
            data.Add(new Snoop.Data.Double("Lap Splice Length", fabricST.MajorLapSpliceLength));
            data.Add(new Snoop.Data.String("Layout Pattern", fabricST.MajorLayoutPattern.ToString()));
            data.Add(new Snoop.Data.Double("Number of Wires", fabricST.MajorNumberOfWires));
            data.Add(new Snoop.Data.Double("Reinforcement Area", fabricST.MajorReinforcementArea));
            data.Add(new Snoop.Data.Double("Spacing", fabricST.MajorSpacing));
            data.Add(new Snoop.Data.Double("Start Overhang", fabricST.MajorStartOverhang));
            data.Add(new Snoop.Data.CategorySeparator("Minor Direction"));
            data.Add(new Snoop.Data.ElementId("Wire Type", fabricST.MinorDirectionWireType, m_app.ActiveUIDocument.Document));
            data.Add(new Snoop.Data.Double("End Overhang", fabricST.MinorEndOverhang));
            data.Add(new Snoop.Data.Double("Lap Splice Length", fabricST.MinorLapSpliceLength));
            data.Add(new Snoop.Data.String("Layout Pattern", fabricST.MinorLayoutPattern.ToString()));
            data.Add(new Snoop.Data.Double("Number of Wires", fabricST.MinorNumberOfWires));
            data.Add(new Snoop.Data.Double("Reinforcement Area", fabricST.MinorReinforcementArea));
            data.Add(new Snoop.Data.Double("Spacing", fabricST.MinorSpacing));
            data.Add(new Snoop.Data.Double("Start Overhang", fabricST.MinorStartOverhang));
        }
Beispiel #3
0
        private static void GetFabricSheetParams(FabricSheet sheet, out string steelGrade, out double meshLength, out double meshWidth,
                                                 out double longitudinalBarNominalDiameter, out double transverseBarNominalDiameter, out double longitudinalBarCrossSectionArea,
                                                 out double transverseBarCrossSectionArea, out double longitudinalBarSpacing, out double transverseBarSpacing)
        {
            steelGrade = String.Empty;
            meshLength = sheet.CutOverallLength;
            meshWidth  = sheet.CutOverallWidth;
            longitudinalBarNominalDiameter  = 0.0;
            transverseBarNominalDiameter    = 0.0;
            longitudinalBarCrossSectionArea = 0.0;
            transverseBarCrossSectionArea   = 0.0;
            longitudinalBarSpacing          = 0.0;
            transverseBarSpacing            = 0.0;

            if (sheet == null)
            {
                return;
            }

            Document        doc = sheet.Document;
            Element         fabricSheetTypeElem = doc?.GetElement(sheet.GetTypeId());
            FabricSheetType fabricSheetType     = fabricSheetTypeElem as FabricSheetType;

            steelGrade = NamingUtil.GetOverrideStringValue(sheet, "SteelGrade", null);

            Element        majorFabricWireTypeElem = doc?.GetElement(fabricSheetType?.MajorDirectionWireType);
            FabricWireType majorFabricWireType     = (majorFabricWireTypeElem == null) ? null : (majorFabricWireTypeElem as FabricWireType);

            if (majorFabricWireType != null)
            {
                longitudinalBarNominalDiameter = UnitUtil.ScaleLength(majorFabricWireType.WireDiameter);
                double localRadius = longitudinalBarNominalDiameter / 2.0;
                longitudinalBarCrossSectionArea = localRadius * localRadius * Math.PI;
            }

            Element        minorFabricWireTypeElem = doc?.GetElement(fabricSheetType?.MinorDirectionWireType);
            FabricWireType minorFabricWireType     = (minorFabricWireTypeElem == null) ? null : (minorFabricWireTypeElem as FabricWireType);

            if (minorFabricWireType != null)
            {
                transverseBarNominalDiameter = UnitUtil.ScaleLength(minorFabricWireType.WireDiameter);
                double localRadius = transverseBarNominalDiameter / 2.0;
                transverseBarCrossSectionArea = localRadius * localRadius * Math.PI;
            }

            longitudinalBarSpacing = UnitUtil.ScaleLength(fabricSheetType.MajorSpacing);
            transverseBarSpacing   = UnitUtil.ScaleLength(fabricSheetType.MinorSpacing);
        }
        // Token: 0x06000238 RID: 568 RVA: 0x0000F724 File Offset: 0x0000D924
        internal override void WriteToPXML(ItSteel steelBlock, ICollection <ExportReinfData> exportedElements)
        {
            ItSteelExt itSteelExt = new ItSteelExt();

            itSteelExt.type = "01";
            itSteelExt.Info = CNCDataBase.paddedInt5(this.Count) + " " + this.Weight.ToString("000.000", CultureInfo.InvariantCulture);
            FabricSheetType sheetType = SteelGroupElementMeshBase.GetSheetType(base.FabricSheet.Element);

            itSteelExt.SheetType = (((sheetType != null) ? sheetType.Name : null) ?? string.Empty);
            itSteelExt.Count     = this.Count;
            itSteelExt.Weight    = Math.Round(this.Weight, 3);
            steelBlock.steelExtList.Add(itSteelExt);
            exportedElements.Add(new ExportReinfData
            {
                Id         = base.FabricSheet.Id,
                ExportedAs = ExportReinfData.ExportType.AsExtIron
            });
        }
Beispiel #5
0
        private void GetFabricSheetParams(FabricSheet sheet)
        {
            if (sheet == null)
            {
                return;
            }

            MeshLength = sheet.CutOverallLength;
            MeshWidth  = sheet.CutOverallWidth;

            if (sheet == null)
            {
                return;
            }

            Document        doc = sheet.Document;
            Element         fabricSheetTypeElem = doc?.GetElement(sheet.GetTypeId());
            FabricSheetType fabricSheetType     = fabricSheetTypeElem as FabricSheetType;

            SteelGrade = NamingUtil.GetOverrideStringValue(sheet, "SteelGrade", null);

            Element        majorFabricWireTypeElem = doc?.GetElement(fabricSheetType?.MajorDirectionWireType);
            FabricWireType majorFabricWireType     = (majorFabricWireTypeElem == null) ? null : (majorFabricWireTypeElem as FabricWireType);

            if (majorFabricWireType != null)
            {
                LongitudinalBarNominalDiameter = UnitUtil.ScaleLength(majorFabricWireType.WireDiameter);
                double localRadius = LongitudinalBarNominalDiameter / 2.0;
                LongitudinalBarCrossSectionArea = localRadius * localRadius * Math.PI;
            }

            Element        minorFabricWireTypeElem = doc?.GetElement(fabricSheetType?.MinorDirectionWireType);
            FabricWireType minorFabricWireType     = (minorFabricWireTypeElem == null) ? null : (minorFabricWireTypeElem as FabricWireType);

            if (minorFabricWireType != null)
            {
                TransverseBarNominalDiameter = UnitUtil.ScaleLength(minorFabricWireType.WireDiameter);
                double localRadius = TransverseBarNominalDiameter / 2.0;
                TransverseBarCrossSectionArea = localRadius * localRadius * Math.PI;
            }

            LongitudinalBarSpacing = UnitUtil.ScaleLength(fabricSheetType.MajorSpacing);
            TransverseBarSpacing   = UnitUtil.ScaleLength(fabricSheetType.MinorSpacing);
        }
        // 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);
        }
Beispiel #7
0
		// Token: 0x0600026C RID: 620 RVA: 0x0000FBF0 File Offset: 0x0000DDF0
		public WireItem(Document doc, Curve curve, FabricSheetType type, int wireIndex, WireDistributionDirection direction, SteelGroupElementMeshBase parentMesh)
		{
			this._curve = curve;
			this.Direction = direction;
			this.ParentMesh = parentMesh;
			this.StartPoint = curve.GetEndPoint(0).asPoint();
			this.EndPoint = curve.GetEndPoint(1).asPoint();
			this.StartPoint.transformBy(parentMesh.MatWcsToPalette);
			this.EndPoint.transformBy(parentMesh.MatWcsToPalette);
			this.status = WireItem.Status.RelativeToWorld;
			this.SetValuesFromFabricType(doc, type, wireIndex);
			this.NumberOfIrons = 1;
			this.Pitch = 0;
			this.Angle = this.getAngle();
			this.ArticleNumber = "Rodstock";
			this.AutomaticProduction = 0;
			this.SpacerType = 0;
			this.SpacerStartPoint = 0;
			this.SpacerPitch = 0;
			this.Bending = 0;
			this.Spacers = 0;
			this.WeldingPoints = 0;
		}
        /// <summary>
        /// Exports an element as an IfcReinforcingMesh.
        /// </summary>
        /// <param name="exporterIFC">The ExporterIFC object.</param>
        /// <param name="element">The element.</param>
        /// <param name="geometryElement">The geometry element.</param>
        /// <param name="productWrapper">The ProductWrapper.</param>
        /// <returns>True if exported successfully, false otherwise.</returns>
        public static bool ExportFabricSheet(ExporterIFC exporterIFC, FabricSheet sheet,
                                             GeometryElement geometryElement, ProductWrapper productWrapper)
        {
            if (sheet == null || geometryElement == null)
            {
                return(false);
            }

            Document doc  = sheet.Document;
            IFCFile  file = exporterIFC.GetFile();

            using (IFCTransaction tr = new IFCTransaction(file))
            {
                using (IFCPlacementSetter placementSetter = IFCPlacementSetter.Create(exporterIFC, sheet, null, null, ExporterUtil.GetBaseLevelIdForElement(sheet)))
                {
                    using (IFCExtrusionCreationData ecData = new IFCExtrusionCreationData())
                    {
                        ecData.SetLocalPlacement(placementSetter.GetPlacement());

                        ElementId categoryId = CategoryUtil.GetSafeCategoryId(sheet);

                        ElementId materialId = ElementId.InvalidElementId;
                        ParameterUtil.GetElementIdValueFromElementOrSymbol(sheet, BuiltInParameter.MATERIAL_ID_PARAM, out materialId);
                        double scale = exporterIFC.LinearScale;

                        string       guid            = GUIDUtil.CreateGUID(sheet);
                        IFCAnyHandle ownerHistory    = exporterIFC.GetOwnerHistoryHandle();
                        string       revitObjectType = exporterIFC.GetFamilyName();
                        string       name            = NamingUtil.GetNameOverride(sheet, revitObjectType);
                        string       description     = NamingUtil.GetDescriptionOverride(sheet, null);
                        string       objectType      = NamingUtil.GetObjectTypeOverride(sheet, revitObjectType);

                        IFCAnyHandle localPlacement = ecData.GetLocalPlacement();
                        string       elementTag     = NamingUtil.CreateIFCElementId(sheet);

                        string steelGrade = NamingUtil.GetOverrideStringValue(sheet, "SteelGrade", null);
                        double?meshLength = sheet.CutOverallLength;
                        double?meshWidth  = sheet.CutOverallWidth;

                        Element         fabricSheetTypeElem = doc.GetElement(sheet.GetTypeId());
                        FabricSheetType fabricSheetType     = (fabricSheetTypeElem == null) ? null : (fabricSheetTypeElem as FabricSheetType);

                        double longitudinalBarNominalDiameter  = 0.0;
                        double transverseBarNominalDiameter    = 0.0;
                        double longitudinalBarCrossSectionArea = 0.0;
                        double transverseBarCrossSectionArea   = 0.0;
                        double longitudinalBarSpacing          = 0.0;
                        double transverseBarSpacing            = 0.0;
                        if (fabricSheetType != null)
                        {
                            Element        majorFabricWireTypeElem = doc.GetElement(fabricSheetType.MajorDirectionWireType);
                            FabricWireType majorFabricWireType     = (majorFabricWireTypeElem == null) ? null : (majorFabricWireTypeElem as FabricWireType);
                            if (majorFabricWireType != null)
                            {
                                longitudinalBarNominalDiameter = majorFabricWireType.WireDiameter * scale;
                                double localRadius = longitudinalBarNominalDiameter / 2.0;
                                longitudinalBarCrossSectionArea = localRadius * localRadius * Math.PI;
                            }

                            Element        minorFabricWireTypeElem = doc.GetElement(fabricSheetType.MinorDirectionWireType);
                            FabricWireType minorFabricWireType     = (minorFabricWireTypeElem == null) ? null : (minorFabricWireTypeElem as FabricWireType);
                            if (minorFabricWireType != null)
                            {
                                transverseBarNominalDiameter = minorFabricWireType.WireDiameter * scale;
                                double localRadius = transverseBarNominalDiameter / 2.0;
                                transverseBarCrossSectionArea = localRadius * localRadius * Math.PI;
                            }

                            longitudinalBarSpacing = fabricSheetType.MajorSpacing * scale;
                            transverseBarSpacing   = fabricSheetType.MinorSpacing * scale;
                        }

                        IList <IFCAnyHandle> bodyItems = new List <IFCAnyHandle>();

                        IList <Curve> wireCenterlines = sheet.GetWireCenterlines(WireDistributionDirection.Major);
                        foreach (Curve wireCenterline in wireCenterlines)
                        {
                            IFCAnyHandle bodyItem = CreateSweptDiskSolid(exporterIFC, file, wireCenterline, longitudinalBarNominalDiameter);
                            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(bodyItem))
                            {
                                bodyItems.Add(bodyItem);
                            }
                        }

                        wireCenterlines = sheet.GetWireCenterlines(WireDistributionDirection.Minor);
                        foreach (Curve wireCenterline in wireCenterlines)
                        {
                            IFCAnyHandle bodyItem = CreateSweptDiskSolid(exporterIFC, file, wireCenterline, transverseBarNominalDiameter);
                            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(bodyItem))
                            {
                                bodyItems.Add(bodyItem);
                            }
                        }

                        IFCAnyHandle shapeRep = (bodyItems.Count > 0) ?
                                                RepresentationUtil.CreateAdvancedSweptSolidRep(exporterIFC, sheet, categoryId, exporterIFC.Get3DContextHandle("Body"), bodyItems, null) :
                                                null;
                        IList <IFCAnyHandle> shapeReps = null;
                        if (shapeRep != null)
                        {
                            shapeReps = new List <IFCAnyHandle>();
                            shapeReps.Add(shapeRep);
                        }
                        IFCAnyHandle prodRep = (shapeReps != null) ? IFCInstanceExporter.CreateProductDefinitionShape(file, null, null, shapeReps) : null;

                        IFCAnyHandle fabricSheet = IFCInstanceExporter.CreateReinforcingMesh(file, guid,
                                                                                             ownerHistory, name, description, objectType, localPlacement, prodRep, elementTag,
                                                                                             steelGrade, meshLength, meshWidth, longitudinalBarNominalDiameter, transverseBarNominalDiameter,
                                                                                             longitudinalBarCrossSectionArea, transverseBarCrossSectionArea,
                                                                                             longitudinalBarSpacing, transverseBarSpacing);

                        ElementId fabricAreaId = sheet.FabricAreaOwnerId;
                        if (fabricAreaId != ElementId.InvalidElementId)
                        {
                            HashSet <IFCAnyHandle> fabricSheets = null;
                            if (!ExporterCacheManager.FabricAreaHandleCache.TryGetValue(fabricAreaId, out fabricSheets))
                            {
                                fabricSheets = new HashSet <IFCAnyHandle>();
                                ExporterCacheManager.FabricAreaHandleCache[fabricAreaId] = fabricSheets;
                            }
                            fabricSheets.Add(fabricSheet);
                        }

                        productWrapper.AddElement(sheet, fabricSheet, placementSetter.GetLevelInfo(), ecData, true);

                        CategoryUtil.CreateMaterialAssociation(exporterIFC, fabricSheet, materialId);
                    }
                }
                tr.Commit();
                return(true);
            }
        }
Beispiel #9
0
        // Token: 0x06000197 RID: 407 RVA: 0x0000B1A4 File Offset: 0x000093A4
        internal new static SteelGroupElementMeshCFS GetInstance(RevitElement <FabricSheet> fabricSheet, ItMachineDataBase.CNCElementData cncElementData, ItGeMatrix3d matWcsToPalette)
        {
            bool flag = fabricSheet.IsInvalid() || !SteelGroupElementMeshBase.IsCFS(fabricSheet);
            SteelGroupElementMeshCFS result;

            if (flag)
            {
                result = null;
            }
            else
            {
                FabricSheetType          sheetType = SteelGroupElementMeshBase.GetSheetType(fabricSheet.Element);
                SteelGroupElementMeshCFS steelGroupElementMeshCFS = new SteelGroupElementMeshCFS(cncElementData, matWcsToPalette);
                steelGroupElementMeshCFS.FabricSheet = fabricSheet;
                steelGroupElementMeshCFS.Host        = fabricSheet.Element.getHostingPart();
                bool flag2 = steelGroupElementMeshCFS.Host == null;
                if (flag2)
                {
                    result = null;
                }
                else
                {
                    steelGroupElementMeshCFS.FabricArea = (fabricSheet.Document.GetElement(fabricSheet.Element.FabricAreaOwnerId) as FabricArea);
                    SteelGroupElement         steelGroupElement = steelGroupElementMeshCFS;
                    RevitElement <FabricArea> fabricArea        = steelGroupElementMeshCFS.FabricArea;
                    steelGroupElement.Data                  = (((fabricArea != null) ? fabricArea.load <ItReinforcement>(null, false) : null) ?? SteelGroupElement.GetEmptyData(steelGroupElementMeshCFS));
                    steelGroupElementMeshCFS._cfsName       = sheetType.Name;
                    steelGroupElementMeshCFS.WireItemsMajor = steelGroupElementMeshCFS.getWireItems(fabricSheet.Element, (WireDistributionDirection)0, sheetType).ToList <WireItem>();
                    steelGroupElementMeshCFS.WireItemsMinor = steelGroupElementMeshCFS.getWireItems(fabricSheet.Element, (WireDistributionDirection)1, sheetType).ToList <WireItem>();
                    ItGeBoundBlock3d itGeBoundBlock3d = SteelGroupElementMeshCFS.sheetLocalExtents(steelGroupElementMeshCFS.WireItemsMajor, steelGroupElementMeshCFS.WireItemsMinor);
                    bool             flag3            = itGeBoundBlock3d == null;
                    if (flag3)
                    {
                        result = null;
                    }
                    else
                    {
                        steelGroupElementMeshCFS.PosPalette  = itGeBoundBlock3d.minPoint;
                        steelGroupElementMeshCFS._maxLength  = itGeBoundBlock3d.length;
                        steelGroupElementMeshCFS._maxWidth   = itGeBoundBlock3d.width;
                        steelGroupElementMeshCFS._toTurn     = 0;
                        steelGroupElementMeshCFS._stopOnTurn = 0;
                        steelGroupElementMeshCFS._matType    = 0;
                        steelGroupElementMeshCFS.WireItemsMajor.ForEach(delegate(WireItem item)
                        {
                            item.transformToSteelmat();
                        });
                        steelGroupElementMeshCFS.WireItemsMinor.ForEach(delegate(WireItem item)
                        {
                            item.transformToSteelmat();
                        });
                        bool flag4 = steelGroupElementMeshCFS.Data.LayerPosition == PosReinfLayer.Undefined;
                        if (flag4)
                        {
                            steelGroupElementMeshCFS.SetLayerPositionFromCFS();
                        }
                        steelGroupElementMeshCFS.SetMinMaxZ();
                        steelGroupElementMeshCFS.SetGroup();
                        result = steelGroupElementMeshCFS;
                    }
                }
            }
            return(result);
        }
Beispiel #10
0
        //TF
        private void Stream(ArrayList data, FabricSheetType fabricST)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(FabricSheetType)));

             data.Add(new Snoop.Data.ElementId("Material", fabricST.Material, m_app.ActiveUIDocument.Document));
             data.Add(new Snoop.Data.Double("Overall Length", fabricST.OverallLength));
             data.Add(new Snoop.Data.Double("Overall Width", fabricST.OverallWidth));
             data.Add(new Snoop.Data.Double("Sheet Mass", fabricST.SheetMass));

             data.Add(new Snoop.Data.CategorySeparator("Major Direction"));
             data.Add(new Snoop.Data.ElementId("Wire Type", fabricST.MajorDirectionWireType, m_app.ActiveUIDocument.Document));
             data.Add(new Snoop.Data.Double("End Overhang", fabricST.MajorEndOverhang));
             data.Add(new Snoop.Data.Double("Lap Splice Length", fabricST.MajorLapSpliceLength));
             data.Add(new Snoop.Data.String("Layout Pattern", fabricST.MajorLayoutPattern.ToString()));
             data.Add(new Snoop.Data.Double("Number of Wires", fabricST.MajorNumberOfWires));
             data.Add(new Snoop.Data.Double("Reinforcement Area", fabricST.MajorReinforcementArea));
             data.Add(new Snoop.Data.Double("Spacing", fabricST.MajorSpacing));
             data.Add(new Snoop.Data.Double("Start Overhang", fabricST.MajorStartOverhang));
             data.Add(new Snoop.Data.CategorySeparator("Minor Direction"));
             data.Add(new Snoop.Data.ElementId("Wire Type", fabricST.MinorDirectionWireType, m_app.ActiveUIDocument.Document));
             data.Add(new Snoop.Data.Double("End Overhang", fabricST.MinorEndOverhang));
             data.Add(new Snoop.Data.Double("Lap Splice Length", fabricST.MinorLapSpliceLength));
             data.Add(new Snoop.Data.String("Layout Pattern", fabricST.MinorLayoutPattern.ToString()));
             data.Add(new Snoop.Data.Double("Number of Wires", fabricST.MinorNumberOfWires));
             data.Add(new Snoop.Data.Double("Reinforcement Area", fabricST.MinorReinforcementArea));
             data.Add(new Snoop.Data.Double("Spacing", fabricST.MinorSpacing));
             data.Add(new Snoop.Data.Double("Start Overhang", fabricST.MinorStartOverhang));
        }
Beispiel #11
0
        /// <summary>
        /// Exports an element as an IfcReinforcingMesh.
        /// </summary>
        /// <param name="exporterIFC">The ExporterIFC object.</param>
        /// <param name="element">The element.</param>
        /// <param name="geometryElement">The geometry element.</param>
        /// <param name="productWrapper">The ProductWrapper.</param>
        /// <returns>True if exported successfully, false otherwise.</returns>
        public static bool ExportFabricSheet(ExporterIFC exporterIFC, FabricSheet sheet,
                                             GeometryElement geometryElement, ProductWrapper productWrapper)
        {
            if (sheet == null || geometryElement == null)
            {
                return(false);
            }

            // Check the intended IFC entity or type name is in the exclude list specified in the UI
            Common.Enums.IFCEntityType elementClassTypeEnum = Common.Enums.IFCEntityType.IfcReinforcingMesh;
            if (ExporterCacheManager.ExportOptionsCache.IsElementInExcludeList(elementClassTypeEnum))
            {
                return(false);
            }

            Document doc  = sheet.Document;
            IFCFile  file = exporterIFC.GetFile();

            using (IFCTransaction tr = new IFCTransaction(file))
            {
                // Check for containment override
                IFCAnyHandle overrideContainerHnd = null;
                ElementId    overrideContainerId  = ParameterUtil.OverrideContainmentParameter(exporterIFC, sheet, out overrideContainerHnd);

                using (PlacementSetter placementSetter = PlacementSetter.Create(exporterIFC, sheet, null, null, overrideContainerId, overrideContainerHnd))
                {
                    using (IFCExtrusionCreationData ecData = new IFCExtrusionCreationData())
                    {
                        ecData.SetLocalPlacement(placementSetter.LocalPlacement);

                        ElementId categoryId = CategoryUtil.GetSafeCategoryId(sheet);

                        ElementId materialId = ElementId.InvalidElementId;
                        ParameterUtil.GetElementIdValueFromElementOrSymbol(sheet, BuiltInParameter.MATERIAL_ID_PARAM, out materialId);

                        string       guid            = GUIDUtil.CreateGUID(sheet);
                        IFCAnyHandle ownerHistory    = ExporterCacheManager.OwnerHistoryHandle;
                        string       revitObjectType = NamingUtil.GetFamilyAndTypeName(sheet);

                        IFCAnyHandle localPlacement = ecData.GetLocalPlacement();

                        string steelGrade = NamingUtil.GetOverrideStringValue(sheet, "SteelGrade", null);
                        double?meshLength = sheet.CutOverallLength;
                        double?meshWidth  = sheet.CutOverallWidth;

                        Element         fabricSheetTypeElem = doc.GetElement(sheet.GetTypeId());
                        FabricSheetType fabricSheetType     = (fabricSheetTypeElem == null) ? null : (fabricSheetTypeElem as FabricSheetType);

                        double longitudinalBarNominalDiameter  = 0.0;
                        double transverseBarNominalDiameter    = 0.0;
                        double longitudinalBarCrossSectionArea = 0.0;
                        double transverseBarCrossSectionArea   = 0.0;
                        double longitudinalBarSpacing          = 0.0;
                        double transverseBarSpacing            = 0.0;
                        if (fabricSheetType != null)
                        {
                            Element        majorFabricWireTypeElem = doc.GetElement(fabricSheetType.MajorDirectionWireType);
                            FabricWireType majorFabricWireType     = (majorFabricWireTypeElem == null) ? null : (majorFabricWireTypeElem as FabricWireType);
                            if (majorFabricWireType != null)
                            {
                                longitudinalBarNominalDiameter = UnitUtil.ScaleLength(majorFabricWireType.WireDiameter);
                                double localRadius = longitudinalBarNominalDiameter / 2.0;
                                longitudinalBarCrossSectionArea = localRadius * localRadius * Math.PI;
                            }

                            Element        minorFabricWireTypeElem = doc.GetElement(fabricSheetType.MinorDirectionWireType);
                            FabricWireType minorFabricWireType     = (minorFabricWireTypeElem == null) ? null : (minorFabricWireTypeElem as FabricWireType);
                            if (minorFabricWireType != null)
                            {
                                transverseBarNominalDiameter = UnitUtil.ScaleLength(minorFabricWireType.WireDiameter);
                                double localRadius = transverseBarNominalDiameter / 2.0;
                                transverseBarCrossSectionArea = localRadius * localRadius * Math.PI;
                            }

                            longitudinalBarSpacing = UnitUtil.ScaleLength(fabricSheetType.MajorSpacing);
                            transverseBarSpacing   = UnitUtil.ScaleLength(fabricSheetType.MinorSpacing);
                        }

                        ISet <IFCAnyHandle> bodyItems = new HashSet <IFCAnyHandle>();

                        IList <Curve> wireCenterlines = sheet.GetWireCenterlines(WireDistributionDirection.Major);
                        foreach (Curve wireCenterline in wireCenterlines)
                        {
                            IFCAnyHandle bodyItem = GeometryUtil.CreateSweptDiskSolid(exporterIFC, file, wireCenterline, longitudinalBarNominalDiameter, null);
                            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(bodyItem))
                            {
                                bodyItems.Add(bodyItem);
                            }
                        }

                        wireCenterlines = sheet.GetWireCenterlines(WireDistributionDirection.Minor);
                        foreach (Curve wireCenterline in wireCenterlines)
                        {
                            IFCAnyHandle bodyItem = GeometryUtil.CreateSweptDiskSolid(exporterIFC, file, wireCenterline, transverseBarNominalDiameter, null);
                            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(bodyItem))
                            {
                                bodyItems.Add(bodyItem);
                            }
                        }

                        IFCAnyHandle shapeRep = (bodyItems.Count > 0) ?
                                                RepresentationUtil.CreateAdvancedSweptSolidRep(exporterIFC, sheet, categoryId, exporterIFC.Get3DContextHandle("Body"), bodyItems, null) :
                                                null;
                        IList <IFCAnyHandle> shapeReps = null;
                        if (shapeRep != null)
                        {
                            shapeReps = new List <IFCAnyHandle>();
                            shapeReps.Add(shapeRep);
                        }
                        IFCAnyHandle prodRep = (shapeReps != null) ? IFCInstanceExporter.CreateProductDefinitionShape(file, null, null, shapeReps) : null;

                        IFCAnyHandle fabricSheet = IFCInstanceExporter.CreateReinforcingMesh(exporterIFC, sheet, guid, ownerHistory, localPlacement,
                                                                                             prodRep, steelGrade, meshLength, meshWidth, longitudinalBarNominalDiameter, transverseBarNominalDiameter,
                                                                                             longitudinalBarCrossSectionArea, transverseBarCrossSectionArea, longitudinalBarSpacing, transverseBarSpacing);
                        IFCExportInfoPair exportInfo = new IFCExportInfoPair(IFCEntityType.IfcReinforcingMesh);

                        ElementId fabricAreaId = sheet.FabricAreaOwnerId;
                        if (fabricAreaId != ElementId.InvalidElementId)
                        {
                            HashSet <IFCAnyHandle> fabricSheets = null;
                            if (!ExporterCacheManager.FabricAreaHandleCache.TryGetValue(fabricAreaId, out fabricSheets))
                            {
                                fabricSheets = new HashSet <IFCAnyHandle>();
                                ExporterCacheManager.FabricAreaHandleCache[fabricAreaId] = fabricSheets;
                            }
                            fabricSheets.Add(fabricSheet);
                        }

                        productWrapper.AddElement(sheet, fabricSheet, placementSetter.LevelInfo, ecData, true, exportInfo);

                        CategoryUtil.CreateMaterialAssociation(exporterIFC, fabricSheet, materialId);
                    }
                }
                tr.Commit();
                return(true);
            }
        }
Beispiel #12
0
        Stream(ArrayList data, ElementType sym)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(ElementType)));

            // no data at this level yet

            AnnotationSymbolType annoType = sym as AnnotationSymbolType;

            if (annoType != null)
            {
                Stream(data, annoType);
                return;
            }

            AreaReinforcementType areaReinforcementType = sym as AreaReinforcementType;

            if (areaReinforcementType != null)
            {
                Stream(data, areaReinforcementType);
                return;
            }

            AreaTagType areaTagType = sym as AreaTagType;

            if (areaTagType != null)
            {
                Stream(data, areaTagType);
                return;
            }

            BeamSystemType beamSystemType = sym as BeamSystemType;

            if (beamSystemType != null)
            {
                Stream(data, beamSystemType);
                return;
            }

            DimensionType dimType = sym as DimensionType;

            if (dimType != null)
            {
                Stream(data, dimType);
                return;
            }

            //TF
            FabricSheetType fabricST = sym as FabricSheetType;

            if (fabricST != null)
            {
                Stream(data, fabricST);
                return;
            }

            FabricWireType fabricWT = sym as FabricWireType;

            if (fabricWT != null)
            {
                Stream(data, fabricWT);
                return;
            }
            //TFEND

            GroupType groupType = sym as GroupType;

            if (groupType != null)
            {
                Stream(data, groupType);
                return;
            }

            HostObjAttributes hostAtt = sym as HostObjAttributes;

            if (hostAtt != null)
            {
                Stream(data, hostAtt);
                return;
            }

            InsertableObject insObj = sym as InsertableObject;

            if (insObj != null)
            {
                Stream(data, insObj);
                return;
            }

            LevelType levelType = sym as LevelType;

            if (levelType != null)
            {
                Stream(data, levelType);
                return;
            }

            LineAndTextAttrSymbol lineAndTextAttr = sym as LineAndTextAttrSymbol;

            if (lineAndTextAttr != null)
            {
                Stream(data, lineAndTextAttr);
                return;
            }

            LoadTypeBase loadTypeBase = sym as LoadTypeBase;

            if (loadTypeBase != null)
            {
                Stream(data, loadTypeBase);
                return;
            }

            MEPBuildingConstruction mepBldConst = sym as MEPBuildingConstruction;

            if (mepBldConst != null)
            {
                Stream(data, mepBldConst);
                return;
            }

            PathReinforcementType pathReinforcementType = sym as PathReinforcementType;

            if (pathReinforcementType != null)
            {
                Stream(data, pathReinforcementType);
                return;
            }

            RebarBarType rebarBarType = sym as RebarBarType;

            if (rebarBarType != null)
            {
                Stream(data, rebarBarType);
                return;
            }

            RebarCoverType rebarCoverType = sym as RebarCoverType;

            if (rebarCoverType != null)
            {
                Stream(data, rebarCoverType);
                return;
            }

            RebarHookType rebarHookType = sym as RebarHookType;

            if (rebarHookType != null)
            {
                Stream(data, rebarHookType);
                return;
            }

            RebarShape rebarShape = sym as RebarShape;

            if (rebarShape != null)
            {
                Stream(data, rebarShape);
                return;
            }

            RoomTagType roomTagType = sym as RoomTagType;

            if (roomTagType != null)
            {
                Stream(data, roomTagType);
                return;
            }

            SpaceTagType spaceTagType = sym as SpaceTagType;

            if (spaceTagType != null)
            {
                Stream(data, spaceTagType);
                return;
            }

            TrussType trussType = sym as TrussType;

            if (trussType != null)
            {
                Stream(data, trussType);
                return;
            }

            DistributionSysType distSysType = sym as DistributionSysType;

            if (distSysType != null)
            {
                Stream(data, distSysType);
                return;
            }

            MEPCurveType mepCurType = sym as MEPCurveType;

            if (mepCurType != null)
            {
                Stream(data, mepCurType);
                return;
            }

            FluidType fluidType = sym as FluidType;

            if (fluidType != null)
            {
                Stream(data, fluidType);
                return;
            }

            PipeScheduleType pipeSchedType = sym as PipeScheduleType;

            if (pipeSchedType != null)
            {
                Stream(data, pipeSchedType);
                return;
            }

            VoltageType voltType = sym as VoltageType;

            if (voltType != null)
            {
                Stream(data, voltType);
                return;
            }

            WireType wireType = sym as WireType;

            if (wireType != null)
            {
                Stream(data, wireType);
                return;
            }

            ModelTextType modelTxtType = sym as ModelTextType;

            if (modelTxtType != null)
            {
                Stream(data, modelTxtType);
                return;
            }
        }
        // Token: 0x060001BB RID: 443 RVA: 0x0000BDF4 File Offset: 0x00009FF4
        public static bool IsCFS(RevitElement <FabricSheet> sheet)
        {
            FabricSheetType sheetType = SteelGroupElementMeshBase.GetSheetType(sheet.Element);

            return(sheetType.IsCustom());
        }
        // Token: 0x060001B9 RID: 441 RVA: 0x0000BD48 File Offset: 0x00009F48
        public IEnumerable <WireItem> getWireItems(FabricSheet sheet, WireDistributionDirection direction, FabricSheetType type)
        {
            bool flag = sheet == null || type == null;
            IEnumerable <WireItem> result;

            if (flag)
            {
                result = new List <WireItem>();
            }
            else
            {
                Document               doc        = sheet.Document;
                List <Curve>           source     = sheet.GetWireCenterlines(direction).ToList <Curve>();
                IEnumerable <WireItem> enumerable = source.Select((Curve curve, int index) => new WireItem(doc, curve, type, index, direction, this));
                result = enumerable;
            }
            return(result);
        }