Browse Source

mxg:修改获取Revit安装位置的返回值格式

mengxiangge 5 years ago
parent
commit
3810899aaf

BIN
JBIM/Dlls/SAGA.DotNetUtils.dll


+ 2 - 1
JBIM/ExportStart/Program.cs

@@ -1,6 +1,7 @@
 using Autodesk.Revit.DB;
 using ServiceRevitLib;
 using System;
+using System.IO;
 
 //using RevitToJBim.Common;
 
@@ -20,7 +21,7 @@ namespace ExportStart
             try
             {
                 path = args[0];
-               
+                
                 string command = "Export";
 
                 var app = RevitCoreContext.Instance.Application;

+ 3 - 1
JBIM/ExportStart/ReadMe.txt

@@ -2,4 +2,6 @@
 Main方法加[STAThread]标记
 平台目标 当前项目改为:X64
 目标框架 注意与引用的项目一致
-注意RevitAPIUI.dll可能会出错
+注意RevitAPIUI.dll可能会出错
+
+使用前需要安装Revit所需要的版本(Revit2018,Revit2019)

+ 1 - 14
JBIM/ExportStart/RevitCoreContext.cs

@@ -19,20 +19,7 @@ namespace ExportStart
     {
         // 此路径为动态反射搜索路径 、 此路径可为任意路径(只要路径下有RevitNET 所需依赖项即可,完整依赖项可在 Naviswork 2016 下面找到)
 
-        private static readonly string[] Searchs = GetRevitProductPath();
-        //new[] { @"E:\Program Files\Autodesk\Revit 2017" };
-        //new []{ @"E:\Program Files\Autodesk\Revit 2018" };
-        /// <summary>
-        /// 选择版本时,预先将版本信息写在RevitFileVision.txt文件中
-        /// </summary>
-        /// <returns></returns>
-        static string[] GetRevitProductPath()
-        {
-            //保存版本号
-            var vision = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, StarterConst.RevitFileVisionFile));
-            var revitVision = $"Revit {vision}";
-            return RevitProductUtility.GetAllInstalledRevitProducts().Where(t => Directory.GetParent(t).Name == revitVision).ToArray();
-        }
+        private static readonly string[] Searchs = RevitUtils.GetSearchPath().ToArray();
 
         static readonly object lockobj = new object();
 

+ 18 - 2
JBIM/ExportStart/RevitUtils.cs

@@ -12,6 +12,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Autodesk.RevitAddIns;
+using SAGA.DotNetUtils;
 
 namespace ExportStart
 {
@@ -23,8 +24,23 @@ namespace ExportStart
         /// <returns></returns>
         public static List<string> GetSearchPath()
         {
+            //选择版本时,预先将版本信息写在RevitFileVision.txt文件中,读取版本号
+            var vision = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, StarterConst.RevitFileVisionFile));
+            File.AppendAllText(@"D:\abc.txt",vision);
+
+            File.AppendAllText(@"D:\abc.txt", "\r\n");
+            var revitVision = $"{vision}";
+            var products = SAGA.DotNetUtils.Revit.RevitProductUtility.GetAllInstalledRevitProducts();
+            foreach (var product in products)
+            {
+                File.AppendAllText(@"D:\abc.txt", product.Item1+":"+product.Item2);
+                File.AppendAllText(@"D:\abc.txt", "\r\n");
+                if(product.Item1==vision)
+                    File.AppendAllText(@"D:\abc.txt", (product.Item1 == vision).ToString());
+            }
+            return SAGA.DotNetUtils.Revit.RevitProductUtility.GetAllInstalledRevitProducts().Where(t => t.Item1==(revitVision)).Select(t => t.Item2).ToList();
 #if DEBUG
-         return   RevitProductUtility.GetAllInstalledRevitProducts().Where(t => t.Name == "Revit 2017").Select(x => x.InstallLocation).ToList();
+            return   RevitProductUtility.GetAllInstalledRevitProducts().Where(t => t.Name == "Revit 2017").Select(x => x.InstallLocation).ToList();
 #else
          return new List<string>(){GetRevitDllPath()};
 #endif
@@ -44,7 +60,7 @@ namespace ExportStart
         }
 
         private static string m_RevitDllPath;
-        public static void SetRevitDllPath(string path)
+        public static void SetRevitkDllPath(string path)
         {
             m_RevitDllPath = path;
         } 

+ 0 - 2
JBIM/StartVisionSelector/Program.cs

@@ -28,8 +28,6 @@ namespace StartVisionSelector
 
             var dllsPath = Path.Combine(Directory.GetParent(runPath).Parent.FullName, "Dlls");
             var loadingRevitPath = Path.Combine(dllsPath, SelectorConst.LoadingRevit);
-            var revitdlls = Path.Combine(dllsPath, $"Revit{revitVision}");
-            var revitdllDirectoryInfo = new DirectoryInfo(revitdlls);
 
             //先删除,后Copy,如果可以指定Revit的安装目录,不需要Copy
             #region Del RevitDll