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/20326.html

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

相关推荐

发表回复

登录后才能评论