/// <summary> /// Clear all caches contained in this manager. /// </summary> public static void Clear() { if (m_AllocatedGeometryObjectCache != null) { m_AllocatedGeometryObjectCache.DisposeCache(); } m_AllocatedGeometryObjectCache = null; m_AssemblyInstanceCache = null; m_ClassificationCache = null; m_CurveAnnotationCache = null; m_DummyHostCache = null; m_ElementToHandleCache = null; m_ExportOptionsCache = null; m_HandleToElementCache = null; m_HostPartsCache = null; m_LevelInfoCache = null; m_MaterialLayerRelationsCache = null; m_MaterialLayerSetCache = null; m_MaterialHandleCache = null; m_MaterialRelationsCache = null; m_MEPCache = null; m_RailingCache = null; m_RailingSubElementCache = null; m_ParameterCache = null; m_PartExportedCache = null; m_PresentationStyleCache = null; m_SpaceBoundaryCache = null; m_SpaceOccupantInfoCache = null; m_SpatialElementHandleCache = null; m_TypeObjectsCache = null; m_TypeRelationsCache = null; m_WallConnectionDataCache = null; m_UnitsCache = null; m_ZoneInfoCache = null; m_TypePropertyInfoCache = null; m_DoublePropertyInfoCache = null; m_BooleanPropertyInfoCache = null; m_IntegerPropertyInfoCache = null; m_StringPropertyInfoCache = null; m_HandleTypeCache = null; m_HandleIsSubTypeOfCache = null; m_GroupElementGeometryCache = null; m_PropertySetsForTypeCache = null; m_ConditionalPropertySetsForTypeCache = null; m_MaterialIdToStyleHandleCache = null; m_DefaultCartesianTransformationOperator3D = null; m_StairRampContainerInfoCache = null; }
/// <summary> /// Clear all caches contained in this manager. /// </summary> public static void Clear() { if (m_AllocatedGeometryObjectCache != null) m_AllocatedGeometryObjectCache.DisposeCache(); ParameterUtil.ClearParameterCache(); m_AllocatedGeometryObjectCache = null; m_AreaSchemeCache = null; m_AssemblyInstanceCache = null; m_BeamSystemCache = null; m_CategoryClassNameCache = null; m_CategoryTypeCache = null; m_CeilingSpaceRelCache = null; m_ClassificationCache = null; m_ClassificationLocationCache = null; m_ConditionalPropertySetsForTypeCache = null; m_ContainmentCache = null; m_CurveAnnotationCache = null; m_DefaultCartesianTransformationOperator3D = null; m_DummyHostCache = null; m_ElementToHandleCache = null; m_ElementsInAssembliesCache = null; m_ExportOptionsCache = null; m_FabricAreaHandleCache = null; m_GridCache = null; m_GroupCache = null; m_GroupElementGeometryCache = null; m_HandleToElementCache = null; m_HostPartsCache = null; m_IsExternalParameterValueCache = null; m_LevelInfoCache = null; m_MaterialIdToStyleHandleCache = null; m_MaterialLayerRelationsCache = null; m_MaterialLayerSetCache = null; m_MaterialHandleCache = null; m_MaterialRelationsCache = null; m_MEPCache = null; m_ParameterCache = null; m_PartExportedCache = null; m_PresentationLayerSetCache = null; m_PresentationStyleCache = null; m_PropertyInfoCache = null; m_PropertyMapCache = null; m_PropertySetsForTypeCache = null; m_RailingCache = null; m_RailingSubElementCache = null; m_SpaceBoundaryCache = null; m_SpaceOccupantInfoCache = null; m_SpatialElementHandleCache = null; m_StairRampContainerInfoCache = null; m_SystemsCache = null; m_TrussCache = null; m_TypeObjectsCache = null; m_TypePropertyInfoCache = null; m_TypeRelationsCache = null; m_ViewScheduleElementCache = null; m_WallConnectionDataCache = null; m_WallTypeCache = null; m_UnitsCache = null; m_ZoneCache = null; m_ZoneInfoCache = null; }
/// <summary> /// Clear all caches contained in this manager. /// </summary> public static void Clear() { if (m_AllocatedGeometryObjectCache != null) { m_AllocatedGeometryObjectCache.DisposeCache(); } ParameterUtil.ClearParameterCache(); m_AllocatedGeometryObjectCache = null; m_AreaSchemeCache = null; m_AssemblyInstanceCache = null; m_BeamSystemCache = null; m_CategoryClassNameCache = null; m_CategoryTypeCache = null; m_CeilingSpaceRelCache = null; m_ClassificationCache = null; m_ClassificationLocationCache = null; m_ConditionalPropertySetsForTypeCache = null; m_ContainmentCache = null; m_CurveAnnotationCache = null; m_DefaultCartesianTransformationOperator3D = null; m_DummyHostCache = null; m_ElementToHandleCache = null; m_ElementsInAssembliesCache = null; m_ExportOptionsCache = null; m_FabricAreaHandleCache = null; m_GridCache = null; m_GroupCache = null; m_GroupElementGeometryCache = null; m_HandleToElementCache = null; m_HostPartsCache = null; m_IsExternalParameterValueCache = null; m_LevelInfoCache = null; m_MaterialIdToStyleHandleCache = null; m_MaterialLayerRelationsCache = null; m_MaterialLayerSetCache = null; m_MaterialHandleCache = null; m_MaterialRelationsCache = null; m_MEPCache = null; m_ParameterCache = null; m_PartExportedCache = null; m_PresentationLayerSetCache = null; m_PresentationStyleCache = null; m_PropertyInfoCache = null; m_PropertyMapCache = null; m_PropertySetsForTypeCache = null; m_RailingCache = null; m_RailingSubElementCache = null; m_SpaceBoundaryCache = null; m_SpaceOccupantInfoCache = null; m_SpatialElementHandleCache = null; m_StairRampContainerInfoCache = null; m_SystemsCache = null; m_TrussCache = null; m_TypeObjectsCache = null; m_TypePropertyInfoCache = null; m_TypeRelationsCache = null; m_ViewScheduleElementCache = null; m_WallConnectionDataCache = null; m_WallTypeCache = null; m_UnitsCache = null; m_ZoneCache = null; m_ZoneInfoCache = null; }
/// <summary> /// Exports a curve element to IFC curve annotation. /// </summary> /// <param name="exporterIFC"> /// The ExporterIFC object. /// </param> /// <param name="curveElement"> /// The curve element to be exported. /// </param> /// <param name="geometryElement"> /// The geometry element. /// </param> /// <param name="productWrapper"> /// The IFCProductWrapper. /// </param> public static void ExportCurveElement(ExporterIFC exporterIFC, CurveElement curveElement, GeometryElement geometryElement, IFCProductWrapper productWrapper, CurveAnnotationCache annotationCache) { if (geometryElement == null || !ShouldCurveElementBeExported(curveElement)) return; SketchPlane sketchPlane = curveElement.SketchPlane; if (sketchPlane == null) return; IFCFile file = exporterIFC.GetFile(); using (IFCTransaction tr = new IFCTransaction(file)) { using (IFCPlacementSetter setter = IFCPlacementSetter.Create(exporterIFC, curveElement)) { IFCAnyHandle localPlacement = setter.GetPlacement(); IFCAnyHandle axisPlacement = file.Create3DAxisFromLocalPlacement(localPlacement); Plane planeSK = sketchPlane.Plane; XYZ projDir = planeSK.Normal; XYZ origin = planeSK.Origin; bool useOffsetTrf = false; if (projDir.IsAlmostEqualTo(XYZ.BasisZ)) { XYZ offset = XYZ.BasisZ * setter.Offset; origin -= offset; } else useOffsetTrf = true; Plane plane = new Plane(planeSK.XVec, planeSK.YVec, origin); IFCGeometryInfo info = IFCGeometryInfo.CreateCurveGeometryInfo(exporterIFC, plane, projDir, false); if (useOffsetTrf) { XYZ offsetOrig = -XYZ.BasisZ * setter.Offset; Transform trf = Transform.get_Translation(offsetOrig); ExporterIFCUtils.CollectGeometryInfo(exporterIFC, info, geometryElement, XYZ.Zero, false, trf); } else { ExporterIFCUtils.CollectGeometryInfo(exporterIFC, info, geometryElement, XYZ.Zero, false); } IList<IFCAnyHandle> curves = info.GetCurves(); if (curves.Count != 1) { throw new Exception("IFC: expected 1 curve when export curve element."); } IFCAnyHandle repItemHnd = file.CreateGeometricCurveSet(curves); IFCAnyHandle curveStyle = file.CreateStyle(exporterIFC, repItemHnd); //IFCAnyHandle curveAnno = ExporterIFCUtils.GetCurveAnnotation(exporterIFC, sketchPlane.Id, curveStyle); IFCAnyHandle curveAnno = annotationCache.GetAnnotation(sketchPlane.Id, curveStyle); if (curveAnno != null && curveAnno.HasValue) { ExporterIFCUtils.AddCurveToAnnotation(curveAnno, curves[0]); } else { curveAnno = ExporterIFCUtils.CreateCurveAnnotation(exporterIFC, curveElement.Category.Id, sketchPlane.Id, plane, curveStyle, setter, localPlacement, repItemHnd); annotationCache.AddAnnotation(sketchPlane.Id, curveStyle, curveAnno); } } tr.Commit(); } }
/// <summary> /// Implements the method that Autodesk Revit will invoke to perform an export to IFC. /// </summary> /// <param name="document">The document to export.</param> /// <param name="exporterIFC">The IFC exporter object.</param> /// <param name="view">The 3D view that is being exported.</param> /// <param name="filterView">The view whose filter visibility settings govern the export.</param> public void ExportIFC(Autodesk.Revit.DB.Document document, ExporterIFC exporterIFC, Autodesk.Revit.DB.View view, Autodesk.Revit.DB.View filterView) { try { String writeIFCExportedElementsVar = Environment.GetEnvironmentVariable("WriteIFCExportedElements"); if (writeIFCExportedElementsVar != null && writeIFCExportedElementsVar.Length > 0) { m_Writer = new StreamWriter(@"c:\ifc-output-filters.txt"); } //init common properties m_ParameterCache = new ParameterCache(); ExporterInitializer.InitPropertySets(m_ParameterCache, exporterIFC.FileVersion); ExporterInitializer.InitQuantities(m_ParameterCache, exporterIFC.FileVersion); m_PresentationStyleCache = new PresentationStyleAssignmentCache(); m_CurveAnnotationCache = new CurveAnnotationCache(); //export spatial element - none or 1st level room boundaries if (exporterIFC.SpaceBoundaryLevel == 0 || exporterIFC.SpaceBoundaryLevel == 1) { SpatialElementExporter.InitializeSpatialElementGeometryCalculator(document, exporterIFC); ElementFilter spatialElementFilter = ElementFilteringUtil.GetSpatialElementFilter(document, exporterIFC); FilteredElementCollector collector = (filterView == null) ? new FilteredElementCollector(document) : new FilteredElementCollector(document, filterView.Id); collector.WherePasses(spatialElementFilter); foreach (Element element in collector) { ExportElement(exporterIFC, filterView, element); } } else if (exporterIFC.SpaceBoundaryLevel == 2) { SpatialElementExporter.ExportSpatialElement2ndLevel(this, exporterIFC, document, filterView); } //export other elements ElementFilter nonSpatialElementFilter = ElementFilteringUtil.GetNonSpatialElementFilter(document, exporterIFC); FilteredElementCollector collector2 = (filterView == null) ? new FilteredElementCollector(document) : new FilteredElementCollector(document, filterView.Id); collector2.WherePasses(nonSpatialElementFilter); foreach (Element element in collector2) { ExportElement(exporterIFC, filterView, element); } // These elements are created internally, but we allow custom property sets for them. Create them here. using (IFCProductWrapper productWrapper = IFCProductWrapper.Create(exporterIFC, true)) { // This allows for custom property sets for buildings. There are currently no custom quantities, // but the code could be added here at a later date. IFCAnyHandle buildingHnd = ExporterIFCUtils.GetBuilding(exporterIFC); productWrapper.AddBuilding(buildingHnd); ExportElementProperties(exporterIFC, document.ProjectInformation, productWrapper); } } finally { if (m_Writer != null) m_Writer.Close(); } }
/// <summary> /// Clear all caches contained in this manager. /// </summary> public static void Clear() { if (m_AllocatedGeometryObjectCache != null) m_AllocatedGeometryObjectCache.DisposeCache(); m_AllocatedGeometryObjectCache = null; m_AssemblyInstanceCache = null; m_ClassificationCache = null; m_CurveAnnotationCache = null; m_DummyHostCache = null; m_ElementToHandleCache = null; m_ExportOptionsCache = null; m_HandleToElementCache = null; m_HostPartsCache = null; m_LevelInfoCache = null; m_MaterialLayerRelationsCache = null; m_MaterialLayerSetCache = null; m_MaterialHandleCache = null; m_MaterialRelationsCache = null; m_MEPCache = null; m_RailingCache = null; m_RailingSubElementCache = null; m_ParameterCache = null; m_PartExportedCache = null; m_PresentationStyleCache = null; m_SpaceBoundaryCache = null; m_SpaceOccupantInfoCache = null; m_SpatialElementHandleCache = null; m_TypeObjectsCache = null; m_TypeRelationsCache = null; m_WallConnectionDataCache = null; m_UnitsCache = null; m_ZoneInfoCache = null; m_TypePropertyInfoCache = null; m_DoublePropertyInfoCache = null; m_BooleanPropertyInfoCache = null; m_IntegerPropertyInfoCache = null; m_StringPropertyInfoCache = null; m_HandleTypeCache = null; m_HandleIsSubTypeOfCache = null; m_GroupElementGeometryCache = null; m_PropertySetsForTypeCache = null; m_ConditionalPropertySetsForTypeCache = null; m_MaterialIdToStyleHandleCache = null; m_DefaultCartesianTransformationOperator3D = null; m_StairRampContainerInfoCache = null; }