Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.12 KB | None | 0 0
  1. namespace RevitAddin1
  2. {
  3.  
  4.  
  5.     [Transaction(TransactionMode.Manual)]
  6.     public class Command : MarshalByRefObject, IExternalCommand
  7.     {
  8.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  9.         {
  10.             UIApplication uiapp = commandData.Application;
  11.             UIDocument uidoc = uiapp.ActiveUIDocument;
  12.             Autodesk.Revit.ApplicationServices.Application app = uiapp.Application;
  13.             Document doc = uidoc.Document;
  14.  
  15.             GetExtension(ExtensionType.NoDomain).Run(doc, uiapp);
  16.             GetExtension(ExtensionType.SingleDomain).Run(doc, uiapp);
  17.             GetExtension(ExtensionType.WrappedDomain).Run(doc, uiapp);
  18.             //LaunchForm.FixturesToExcel(doc, s, str, Workbook);
  19.  
  20.             using (Transaction tx = new Transaction(doc))
  21.             {
  22.                 tx.Start("Transaction Name");
  23.                 tx.Commit();
  24.             }
  25.  
  26.             return Result.Succeeded;
  27.             //
  28.         }
  29.  
  30.  
  31.         public enum ExtensionType
  32.         {
  33.             NoDomain,
  34.             SingleDomain,
  35.             WrappedDomain,
  36.         }
  37.  
  38.         public static IExtension GetExtension(ExtensionType type)
  39.         {
  40.             IExtension BuildExtension<IExtension>(string name)
  41.             {
  42.                 var domain = AppDomain.CreateDomain(name, new Evidence());
  43.                 return (IExtension)domain.CreateInstanceAndUnwrap(typeof(IExtension).Assembly.FullName, typeof(IExtension).FullName);
  44.             }
  45.  
  46.             switch (type)
  47.             {
  48.                 case ExtensionType.NoDomain:
  49.                     return new Extension();
  50.                 case ExtensionType.SingleDomain:
  51.                     return BuildExtension<Extension>("extension1");
  52.                 case ExtensionType.WrappedDomain:
  53.                     return BuildExtension<ExtensionWithAppDomain>("extension2");
  54.                 default:
  55.                     throw new InvalidOperationException();
  56.             }//
  57.         }
  58.         //
  59.         public interface IExtension
  60.         {
  61.             void Run(Document doc, UIApplication uiapp);
  62.         }
  63.  
  64.         private class Extension : MarshalByRefObject, IExtension
  65.         {
  66.             public void Run(Document doc, UIApplication uiapp)
  67.             {
  68.                 try
  69.                 {
  70.                     Extraction LaunchForm = new Extraction(uiapp, doc);
  71.  
  72.                     using (Transaction tx = new Transaction(doc))
  73.                     {
  74.                         tx.Start("Transaction Name");
  75.                         tx.Commit();
  76.                     }
  77.                     TaskDialog.Show("test", "before workbook open");
  78.                     XLWorkbook Workbook = new XLWorkbook(@"C:\Users\jfredrick\Downloads\Power Extraction Test.xlsm");
  79.                     TaskDialog.Show("test", "after workbook open");
  80.                     string s = LaunchForm.comboBox1.SelectedItem.ToString();
  81.                     String str = LaunchForm.comboBox2.SelectedItem.ToString();
  82.  
  83.  
  84.                     TaskDialog.Show("test", "before WiresToExcel");
  85.                     LaunchForm.WiresToExcel(doc, s, str, Workbook);
  86.                     Workbook.SaveAs(@"C:\Users\jfredrick\Downloads\Power Extraction.xlsm");
  87.                     TaskDialog.Show("test", "after WiresToExcel");
  88.                 }
  89.                 catch (IsolatedStorageException)
  90.                 {
  91.  
  92.                 }
  93.             }
  94.  
  95.         }
  96.  
  97.         private class ExtensionWithAppDomain : MarshalByRefObject, IExtension
  98.         {
  99.             private readonly IExtension _other;
  100.             public ExtensionWithAppDomain()
  101.             {
  102.                 var evidence = new Evidence();
  103.                 evidence.AddHostEvidence(new Zone(SecurityZone.MyComputer));
  104.  
  105.                 var domain = AppDomain.CreateDomain($"{AppDomain.CurrentDomain.FriendlyName}_Evidence", evidence);
  106.                 _other = (IExtension)domain.CreateInstanceAndUnwrap(typeof(Extension).Assembly.FullName, typeof(Extension).FullName);
  107.             }
  108.             public void Run(Document doc, UIApplication uiapp) => _other.Run(doc, uiapp);
  109.         }
  110.     }
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement