Exemple #1
0
        private void ReadOptions()
        {
            foreach (string ConfigLine in ConfigFile)
            {
                string OptionFound = null;
                string OptionEntry = null;
                foreach (string OptionName in OptionsDirNames)
                {
                    if (ConfigLine.ToLower().Contains(OptionName.ToLower()) && !ConfigLine.Contains("#"))
                    {
                        OptionFound = OptionName;
                        break;
                    }
                }
                if (OptionFound == null)
                {
                    foreach (string OptionName in OptionsDefaultNames)
                    {
                        if (ConfigLine.ToLower().Contains(OptionName.ToLower()) && !ConfigLine.Contains("#"))
                        {
                            OptionFound = OptionName;
                            break;
                        }
                    }
                }
                if (OptionFound == null)
                {
                    continue;
                }
                OptionEntry = @ConfigLine.Substring(OptionFound.Length + 1);
                OptionEntry = OptionEntry.Trim();
                if (OptionFound.ToLower().Contains("packageroot"))
                {
                    OptionsPackageRoots.Add(OptionEntry);
                    continue;
                }

                if (Options.ContainsKey(OptionFound))
                {
                    Options[OptionFound].Replace(Options[OptionFound], OptionEntry);
                }
                else
                {
                    Options.Add(OptionFound, OptionEntry);
                }
            }
        }
Exemple #2
0
        // End of IPhotoRenderContext interface method implementation.
        //========================================================================================================================

        // Retrieve the list of extra search paths for Revit texture files.
        // This is done by reading user's Revit.ini file and searching for field AdditionalRenderAppearancePaths
        // which contains search paths that Revit will use to locate texture files.
        // Note that the behavior in Revit is to search in the directory itself and not in child sub-directories.
        private void RetrieveExtraTexturePaths()
        {
            string UserSpecificDirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

            if (!string.IsNullOrEmpty(UserSpecificDirectoryPath) && Path.IsPathRooted(UserSpecificDirectoryPath) && Directory.Exists(UserSpecificDirectoryPath))
            {
                string FullRevitIniPath = $"{UserSpecificDirectoryPath}\\AppData\\Roaming\\Autodesk\\Revit\\Autodesk Revit {ProductVersion}\\Revit.ini";

                if (File.Exists(FullRevitIniPath))
                {
                    FileStream RevitIniStream = new FileStream(FullRevitIniPath, FileMode.Open, FileAccess.Read, FileShare.Read);

                    using (StreamReader RevitIniReader = new StreamReader(RevitIniStream))
                    {
                        string ConfigLine;

                        while ((ConfigLine = RevitIniReader.ReadLine()) != null)
                        {
                            if (ConfigLine.Contains("AdditionalRenderAppearancePaths"))
                            {
                                string[] SplitLineArray = ConfigLine.Split('=');

                                if (SplitLineArray.Length > 1)
                                {
                                    string[] TexturePaths = SplitLineArray[1].Split('|');

                                    foreach (string TexturePath in TexturePaths)
                                    {
                                        ExtraTexturePaths.Add(TexturePath);
                                    }

                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        ///     Saves the Ecompile.Cfg back to file with any changes. File Output
        ///     is tabbed so that settings are in a straight column and all original
        ///     lines that were NOT settings are retained as original.
        /// </summary>
        /// <returns>Bool for success</returns>
        public bool SaveConfig()
        {
            // Let's Ditch ALL PackageRoot Entries, and mark it's first location
            int PRBegin = ConfigFile.FindIndex(FindPackageRoots);

            ConfigFile.RemoveAll(FindPackageRoots);
            foreach (string PackageRootElem in OptionsPackageRoots)
            {
                int    i         = (28 - "PackageRoot".Length);
                string TabString = "";
                while (i > 0)
                {
                    TabString += "\t";
                    i         -= 4;
                }
                ConfigFile.Insert(PRBegin, "PackageRoot" + TabString + PackageRootElem);
            }

            string[] SaveContents = new string[ConfigFile.Count];
            ConfigFile.CopyTo(SaveContents);
            int LineIndex = 0;

            foreach (string ConfigLine in ConfigFile)
            {
                foreach (string OptionName in OptionsDirNames)
                {
                    if (ConfigLine.ToLower().Contains(OptionName.ToLower()) && !ConfigLine.Contains("#") && OptionName != "PackageRoot")
                    {
                        // We found a Directory Option! REPLACE IT!
                        int    i         = (28 - OptionName.Length);
                        string TabString = "";
                        while (i > 0)
                        {
                            TabString += "\t";
                            i         -= 4;
                        }
                        SaveContents[LineIndex] = OptionName + TabString + Options[OptionName];
                        break;
                    }
                }

                // Now we add all the Default Option Stuff
                foreach (string OptionName in OptionsDefaultNames)
                {
                    if (ConfigLine.ToLower().Contains(OptionName.ToLower()) && !ConfigLine.Contains("#"))
                    {
                        // We found a Default Option! REPLACE IT!
                        int    i         = (28 - OptionName.Length);
                        string TabString = "";
                        while (i > 0)
                        {
                            TabString += "\t";
                            i         -= 4;
                        }
                        SaveContents[LineIndex] = OptionName + TabString + Options[OptionName];
                        break;
                    }
                }
                LineIndex++;
            }

            // Now we write it all back to the ecompile.cfg. OHHH! AHHH! Go away.
            if (ConfigFileName != null)
            {
                try
                {
                    File.WriteAllLines(ConfigFileName, SaveContents);
                    return(true);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.ToString());
                }
            }
            return(false);
        }