/// <summary>
 /// Check whether the addresses are the same
 /// </summary>
 public Boolean isUnchanged(IFCFileHeaderItem headerToCheck)
 {
     if (this.Equals(headerToCheck))
     {
         return(true);
     }
     return(false);
 }
 /// <summary>
 /// Actual copy/clone of the Header information.
 /// </summary>
 /// <param name="other">the source File header to clone.</param>
 private IFCFileHeaderItem(IFCFileHeaderItem other)
 {
     this.FileDescription = other.FileDescription;
     this.SourceFileName  = other.SourceFileName;
     this.AuthorName      = other.AuthorName;
     this.AuthorEmail     = other.AuthorEmail;
     this.Organization    = other.Organization;
     this.Authorization   = other.Authorization;
     this.ApplicationName = other.ApplicationName;
     this.VersionNumber   = other.VersionNumber;
     this.FileSchema      = other.FileSchema;
 }
        /// <summary>
        /// Update the file Header (from the UI) into the document 
        /// </summary>
        /// <param name="document">The document storing the saved File Header.</param>
        /// <param name="fileHeaderItem">The File Header item to save.</param>
        public void UpdateFileHeader(Document document, IFCFileHeaderItem fileHeaderItem)
        {
            if (m_schema == null)
            {
                m_schema = Schema.Lookup(s_schemaId);
            }
            if (m_schema != null)
            {
                IList<DataStorage> oldSavedFileHeader = GetFileHeaderInStorage(document, m_schema);
                if (oldSavedFileHeader.Count > 0)
                {
                    Transaction deleteTransaction = new Transaction(document, "Delete old IFC File Header");
                    deleteTransaction.Start();
                    List<ElementId> dataStorageToDelete = new List<ElementId>();
                    foreach (DataStorage dataStorage in oldSavedFileHeader)
                    {
                        dataStorageToDelete.Add(dataStorage.Id);
                    }
                    document.Delete(dataStorageToDelete);
                    deleteTransaction.Commit();
                }
            }

            // Update the address using the new information
            if (m_schema == null)
            {
                m_schema = Schema.Lookup(s_schemaId);
            }
            if (m_schema != null)
            {
                Transaction transaction = new Transaction(document, "Update saved IFC File Header");
                transaction.Start();

                DataStorage fileHeaderStorage = DataStorage.Create(document);

                Entity mapEntity = new Entity(m_schema);
                IDictionary<string, string> mapData = new Dictionary<string, string>();
                if (fileHeaderItem.FileDescription != null) mapData.Add(s_FileDescription, fileHeaderItem.FileDescription.ToString());
                if (fileHeaderItem.SourceFileName != null) mapData.Add(s_SourceFileName, fileHeaderItem.SourceFileName.ToString());
                if (fileHeaderItem.AuthorName != null) mapData.Add(s_AuthorName, fileHeaderItem.AuthorName.ToString());
                if (fileHeaderItem.AuthorEmail != null) mapData.Add(s_AuthorEmail, fileHeaderItem.AuthorEmail.ToString());
                if (fileHeaderItem.Organization != null) mapData.Add(s_Organization, fileHeaderItem.Organization.ToString());
                if (fileHeaderItem.Authorization != null) mapData.Add(s_Authorization, fileHeaderItem.Authorization.ToString());
                if (fileHeaderItem.ApplicationName != null) mapData.Add(s_ApplicationName, fileHeaderItem.ApplicationName.ToString());
                if (fileHeaderItem.VersionNumber != null) mapData.Add(s_VersionNumber, fileHeaderItem.VersionNumber.ToString());
                if (fileHeaderItem.FileSchema != null) mapData.Add(s_FileSchema, fileHeaderItem.FileSchema.ToString());

                mapEntity.Set<IDictionary<string, String>>(s_FileHeaderMapField, mapData);
                fileHeaderStorage.SetEntity(mapEntity);

                transaction.Commit();
            }
        }
Example #4
0
        /// <summary>
        /// Update the file Header (from the UI) into the document
        /// </summary>
        /// <param name="document">The document storing the saved File Header.</param>
        /// <param name="fileHeaderItem">The File Header item to save.</param>
        public void UpdateFileHeader(Document document, IFCFileHeaderItem fileHeaderItem)
        {
            if (m_schema == null)
            {
                m_schema = Schema.Lookup(s_schemaId);
            }

            if (m_schema != null)
            {
                Transaction transaction = new Transaction(document, "Update saved IFC File Header");
                transaction.Start();

                IList <DataStorage> oldSavedFileHeader = GetFileHeaderInStorage(document, m_schema);
                if (oldSavedFileHeader.Count > 0)
                {
                    List <ElementId> dataStorageToDelete = new List <ElementId>();
                    foreach (DataStorage dataStorage in oldSavedFileHeader)
                    {
                        dataStorageToDelete.Add(dataStorage.Id);
                    }
                    document.Delete(dataStorageToDelete);
                }

                DataStorage fileHeaderStorage = DataStorage.Create(document);

                Entity mapEntity = new Entity(m_schema);
                IDictionary <string, string> mapData = new Dictionary <string, string>();
                if (fileHeaderItem.FileDescription != null)
                {
                    mapData.Add(s_FileDescription, fileHeaderItem.FileDescription.ToString());
                }
                if (fileHeaderItem.SourceFileName != null)
                {
                    mapData.Add(s_SourceFileName, fileHeaderItem.SourceFileName.ToString());
                }
                if (fileHeaderItem.AuthorName != null)
                {
                    mapData.Add(s_AuthorName, fileHeaderItem.AuthorName.ToString());
                }
                if (fileHeaderItem.AuthorEmail != null)
                {
                    mapData.Add(s_AuthorEmail, fileHeaderItem.AuthorEmail.ToString());
                }
                if (fileHeaderItem.Organization != null)
                {
                    mapData.Add(s_Organization, fileHeaderItem.Organization.ToString());
                }
                if (fileHeaderItem.Authorization != null)
                {
                    mapData.Add(s_Authorization, fileHeaderItem.Authorization.ToString());
                }
                if (fileHeaderItem.ApplicationName != null)
                {
                    mapData.Add(s_ApplicationName, fileHeaderItem.ApplicationName.ToString());
                }
                if (fileHeaderItem.VersionNumber != null)
                {
                    mapData.Add(s_VersionNumber, fileHeaderItem.VersionNumber.ToString());
                }
                if (fileHeaderItem.FileSchema != null)
                {
                    mapData.Add(s_FileSchema, fileHeaderItem.FileSchema.ToString());
                }

                mapEntity.Set <IDictionary <string, String> >(s_FileHeaderMapField, mapData);
                fileHeaderStorage.SetEntity(mapEntity);

                transaction.Commit();
            }
        }
Example #5
0
        /// <summary>
        /// Get saved IFC File Header
        /// </summary>
        /// <param name="document">The document where File Header information is stored.</param>
        /// <param name="fileHeader">Output of the saved File Header from the extensible storage.</param>
        /// <returns>Status whether there is existing saved File Header.</returns>
        public bool GetSavedFileHeader(Document document, out IFCFileHeaderItem fileHeader)
        {
            fileHeader = new IFCFileHeaderItem();

            if (m_schema == null)
            {
                m_schema = Schema.Lookup(s_schemaId);
            }

            if (m_schema == null)
            {
                return(false);
            }

            IList <DataStorage> fileHeaderStorage = GetFileHeaderInStorage(document, m_schema);

            if (fileHeaderStorage.Count == 0)
            {
                return(false);
            }

            // expected only one File Header information in the storage
            Entity savedFileHeader = fileHeaderStorage[0].GetEntity(m_schema);
            IDictionary <string, string> savedFileHeaderMap = savedFileHeader.Get <IDictionary <string, string> >(s_FileHeaderMapField);

            if (savedFileHeaderMap.ContainsKey(s_FileDescription))
            {
                fileHeader.FileDescription = savedFileHeaderMap[s_FileDescription];
            }
            if (savedFileHeaderMap.ContainsKey(s_SourceFileName))
            {
                fileHeader.SourceFileName = savedFileHeaderMap[s_SourceFileName];
            }
            if (savedFileHeaderMap.ContainsKey(s_AuthorName))
            {
                fileHeader.AuthorName = savedFileHeaderMap[s_AuthorName];
            }
            if (savedFileHeaderMap.ContainsKey(s_AuthorEmail))
            {
                fileHeader.AuthorEmail = savedFileHeaderMap[s_AuthorEmail];
            }
            if (savedFileHeaderMap.ContainsKey(s_Organization))
            {
                fileHeader.Organization = savedFileHeaderMap[s_Organization];
            }
            if (savedFileHeaderMap.ContainsKey(s_Authorization))
            {
                fileHeader.Authorization = savedFileHeaderMap[s_Authorization];
            }
            if (savedFileHeaderMap.ContainsKey(s_ApplicationName))
            {
                fileHeader.ApplicationName = savedFileHeaderMap[s_ApplicationName];
            }
            if (savedFileHeaderMap.ContainsKey(s_VersionNumber))
            {
                fileHeader.VersionNumber = savedFileHeaderMap[s_VersionNumber];
            }
            if (savedFileHeaderMap.ContainsKey(s_FileSchema))
            {
                fileHeader.FileSchema = savedFileHeaderMap[s_FileSchema];
            }

            return(true);
        }
Example #6
0
        /// <summary>
        /// Initialization of File Header tab
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FileHeaderTab_Initialized(object sender, EventArgs e)
        {
            bool hasSavedItem = m_newFileHeader.GetSavedFileHeader(IFCCommandOverrideApplication.TheDocument, out m_newFileHeaderItem);
            if (hasSavedItem == true)
            {
                m_savedFileHeaderItem = m_newFileHeaderItem.Clone();
            }

            // File Description and Source File name are assigned by exporter later on and therefore needs to be set to null for the UI for the null value text to be displayed
            m_newFileHeaderItem.FileDescription = null;
            m_newFileHeaderItem.SourceFileName = null;
            m_newFileHeaderItem.FileSchema = null;

            // Application Name and Number are fixed for the software release and will not change, therefore they are always forced set here
            m_newFileHeaderItem.ApplicationName = IFCCommandOverrideApplication.TheDocument.Application.VersionName;
            m_newFileHeaderItem.VersionNumber = IFCCommandOverrideApplication.TheDocument.Application.VersionBuild;

        }
        /// <summary>
        /// Get saved IFC File Header
        /// </summary>
        /// <param name="document">The document where File Header information is stored.</param>
        /// <param name="fileHeader">Output of the saved File Header from the extensible storage.</param>
        /// <returns>Status whether there is existing saved File Header.</returns>
        public bool GetSavedFileHeader (Document document, out IFCFileHeaderItem fileHeader)
        {
            IFCFileHeaderItem fileHeaderItemSaved = new IFCFileHeaderItem();

            if (m_schema == null)
            {
                m_schema = Schema.Lookup(s_schemaId);
            }
            if (m_schema != null)
            {
                IList<DataStorage> fileHeaderStorage = GetFileHeaderInStorage(document, m_schema);

                if (fileHeaderStorage.Count > 0)
                {

                    // expected only one File Header information in the storage
                    Entity savedFileHeader = fileHeaderStorage[0].GetEntity(m_schema);
                    IDictionary<string, string> savedFileHeaderMap = savedFileHeader.Get<IDictionary<string, string>>(s_FileHeaderMapField);
                    if (savedFileHeaderMap.ContainsKey(s_FileDescription))
                        fileHeaderItemSaved.FileDescription = savedFileHeaderMap[s_FileDescription];
                    if (savedFileHeaderMap.ContainsKey(s_SourceFileName))
                        fileHeaderItemSaved.SourceFileName = savedFileHeaderMap[s_SourceFileName];
                    if (savedFileHeaderMap.ContainsKey(s_AuthorName))
                        fileHeaderItemSaved.AuthorName = savedFileHeaderMap[s_AuthorName];
                    if (savedFileHeaderMap.ContainsKey(s_AuthorEmail))
                        fileHeaderItemSaved.AuthorEmail = savedFileHeaderMap[s_AuthorEmail];
                    if (savedFileHeaderMap.ContainsKey(s_Organization))
                        fileHeaderItemSaved.Organization = savedFileHeaderMap[s_Organization];
                    if (savedFileHeaderMap.ContainsKey(s_Authorization))
                        fileHeaderItemSaved.Authorization = savedFileHeaderMap[s_Authorization];
                    if (savedFileHeaderMap.ContainsKey(s_ApplicationName))
                        fileHeaderItemSaved.ApplicationName = savedFileHeaderMap[s_ApplicationName];
                    if (savedFileHeaderMap.ContainsKey(s_VersionNumber))
                        fileHeaderItemSaved.VersionNumber = savedFileHeaderMap[s_VersionNumber];
                    if (savedFileHeaderMap.ContainsKey(s_FileSchema))
                        fileHeaderItemSaved.FileSchema = savedFileHeaderMap[s_FileSchema];

                    fileHeader = fileHeaderItemSaved;
                    return true;
                }
            }

            fileHeader = fileHeaderItemSaved;
            return false;
        }
 /// <summary>
 /// Actual copy/clone of the Header information.
 /// </summary>
 /// <param name="other">the source File header to clone.</param>
 private IFCFileHeaderItem(IFCFileHeaderItem other)
 {
     this.FileDescription = other.FileDescription;
     this.SourceFileName = other.SourceFileName;
     this.AuthorName = other.AuthorName;
     this.AuthorEmail = other.AuthorEmail;
     this.Organization = other.Organization;
     this.Authorization = other.Authorization;
     this.ApplicationName = other.ApplicationName;
     this.VersionNumber = other.VersionNumber;
     this.FileSchema = other.FileSchema;
 }
 /// <summary>
 /// Check whether the addresses are the same
 /// </summary>
 public Boolean isUnchanged(IFCFileHeaderItem headerToCheck)
 {
     if (this.Equals(headerToCheck))
         return true;
     return false;
 }