vs2015对revit2018二次开发之导出dwg详解编程语言

通过API:doc.Export()方法导出dwg

using Autodesk.Revit; 
using Autodesk.Revit.DB; 
using Autodesk.RevitAddIns; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Reflection; 
 
namespace ReadRvt 
{ 
    class Program 
    { 
        static readonly string[] searchs = new string[] { "D:/Program Files/Autodesk/Revit 2018" }; 
 
        static Program() 
        { 
 
            AddEnvironmentPaths(searchs); 
            AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; 
 
        } 
        [STAThread]//一定要有 
        static void Main(string[] args) 
        { 
 
            Product _product = Product.GetInstalledProduct(); 
            var clientId = new ClientApplicationId(Guid.NewGuid(), "RevitNetTest", "TEST"); 
            _product.Init(clientId, "I am authorized by Autodesk to use this UI-less functionality."); 
            Autodesk.Revit.ApplicationServices.Application _application = _product.Application; 
            string _modelPath = @"E:/测试项目/mine/xx.rvt"; 
            Document doc = _application.OpenDocumentFile(_modelPath); 
            Console.WriteLine("RVT文件已经打开"); 
            // 
            FilteredElementCollector collector = new FilteredElementCollector(doc); 
            collector.OfClass(typeof(View)).OfCategory(BuiltInCategory.OST_Views);string pathFullName = "E:/data/dwg/xx"; 
            DWGExportOptions dwgOptions = new DWGExportOptions 
            { 
                FileVersion = ACADVersion.R2010, 
            }; 
            string folder = Path.GetDirectoryName(pathFullName); 
            string name = Path.GetFileNameWithoutExtension(pathFullName); 
 
            List<ElementId> viewIds = new List<ElementId>(); 
            try 
            {//多个视图 
                foreach (View view in collector.ToElements()) 
                { 
                    if (view.CanBePrinted) 
                    { 
                        viewIds.Add(view.Id); 
                    } 
                } 
                Console.WriteLine("   start   "); 
                doc.Export(folder, name, viewIds, dwgOptions); 
            }catch(Exception e) 
            { 
                Console.WriteLine(e.Message); 
            } 
            Console.WriteLine("   ok   "); 
            doc.Close(); 
            _product?.Exit(); 
            Console.ReadKey(true); 
        } 
 
        static void AddEnvironmentPaths(params string[] paths) 
        { 
            try 
            { 
                var path = new[] { Environment.GetEnvironmentVariable("PATH") ?? string.Empty }; 
                var newPath = string.Join(System.IO.Path.PathSeparator.ToString(), paths.Concat(path)); 
                Environment.SetEnvironmentVariable("PATH", newPath); 
 
            } 
            catch (Exception ex) 
            { 
                Console.WriteLine(ex.ToString()); 
            } 
 
        } 
        private static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args) 
        { 
            try 
            { 
                var assemblyName = new AssemblyName(args.Name); 
                foreach (var item in searchs) 
                { 
                    var file = string.Format("{0}.dll", System.IO.Path.Combine(item, assemblyName.Name)); 
 
                    if (File.Exists(file)) 
                    { 
                        return Assembly.LoadFile(file); 
                    } 
                } 
 
            } 
            catch (Exception ex) 
            { 
                Console.WriteLine(ex.ToString()); 
            } 
            return args.RequestingAssembly; 
 
        } 
    } 
}

 vs2015对revit2018二次开发之导出dwg详解编程语言

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20326.html

(0)
上一篇 2021年7月19日 23:20
下一篇 2021年7月19日 23:20

相关推荐

发表回复

登录后才能评论