• 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;
    
            }
        }
    }

     

  • 相关阅读:
    iOS开发UI篇—Quartz2D使用(信纸条纹)
    iOS开发UI篇—Quartz2D简单使用(三)
    iOS开发UI篇—Quartz2D使用(图片剪切)
    a超链接之返回顶部的两种实现方法
    学习windows编程 day2 之滚动条使用
    首页轮播图
    商城动态菜单
    放大镜二:大图的移动
    放大镜一:图片上部添加可移动遮盖层
    php循环删除文件夹和目录
  • 原文地址:https://www.cnblogs.com/baby123/p/13953627.html
Copyright © 2020-2023  润新知