/// <summary> /// Clear propertyset assignments to the internal Handle stored in the wrapper if it is incomplete /// </summary> /// <param name="element">the element</param> public void ClearInternalHandleWrapperData(Element element) { if (InternalWrapper.Count > 0) { HashSet <IFCAnyHandle> propertySetToCreate = null; if (PropertySetsToCreate.TryGetValue(element, out propertySetToCreate)) { ICollection <IFCAnyHandle> internalObjects = InternalWrapper.GetAllObjects(); foreach (IFCAnyHandle internalObj in internalObjects) { propertySetToCreate.Remove(internalObj); } } } }
/// <summary> /// Gets the first handle of a particular type, or null if none exists. /// </summary> /// <param name="type">The entity type.</param> /// <returns>The handle, or null.</returns> public IFCAnyHandle GetElementOfType(IFCEntityType type) { foreach (IFCAnyHandle handle in CreatedHandles) { if (IFCAnyHandleUtil.IsSubTypeOf(handle, type)) { return(handle); } } ICollection <IFCAnyHandle> internalObjects = InternalWrapper.GetAllObjects(); foreach (IFCAnyHandle handle in internalObjects) { if (IFCAnyHandleUtil.IsSubTypeOf(handle, type)) { return(handle); } } return(null); }
/// <summary> /// Get all handles in the wrapper. /// </summary> /// <returns>The collection of handles.</returns> public ISet <IFCAnyHandle> GetAllObjects() { ICollection <IFCAnyHandle> internalObjects = InternalWrapper.GetAllObjects(); if (internalObjects.Count == 0) { return(CreatedHandles); } HashSet <IFCAnyHandle> allObjects = new HashSet <IFCAnyHandle>(); // We aren't going to trust that the handles aren't stale. This needs a rewrite // of disposal of entities, and in general a move to .NET only created entities. foreach (IFCAnyHandle internalObject in internalObjects) { if (!IFCAnyHandleUtil.IsNullOrHasNoValue(internalObject)) { allObjects.Add(internalObject); } } allObjects.UnionWith(CreatedHandles); return(allObjects); }