Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace RevitAddin1
- {
- [Transaction(TransactionMode.Manual)]
- public class Command : MarshalByRefObject, IExternalCommand
- {
- public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
- {
- UIApplication uiapp = commandData.Application;
- UIDocument uidoc = uiapp.ActiveUIDocument;
- Autodesk.Revit.ApplicationServices.Application app = uiapp.Application;
- Document doc = uidoc.Document;
- GetExtension(ExtensionType.NoDomain).Run(doc, uiapp);
- GetExtension(ExtensionType.SingleDomain).Run(doc, uiapp);
- GetExtension(ExtensionType.WrappedDomain).Run(doc, uiapp);
- //LaunchForm.FixturesToExcel(doc, s, str, Workbook);
- using (Transaction tx = new Transaction(doc))
- {
- tx.Start("Transaction Name");
- tx.Commit();
- }
- return Result.Succeeded;
- //
- }
- public enum ExtensionType
- {
- NoDomain,
- SingleDomain,
- WrappedDomain,
- }
- public static IExtension GetExtension(ExtensionType type)
- {
- IExtension BuildExtension<IExtension>(string name)
- {
- var domain = AppDomain.CreateDomain(name, new Evidence());
- return (IExtension)domain.CreateInstanceAndUnwrap(typeof(IExtension).Assembly.FullName, typeof(IExtension).FullName);
- }
- switch (type)
- {
- case ExtensionType.NoDomain:
- return new Extension();
- case ExtensionType.SingleDomain:
- return BuildExtension<Extension>("extension1");
- case ExtensionType.WrappedDomain:
- return BuildExtension<ExtensionWithAppDomain>("extension2");
- default:
- throw new InvalidOperationException();
- }//
- }
- //
- public interface IExtension
- {
- void Run(Document doc, UIApplication uiapp);
- }
- private class Extension : MarshalByRefObject, IExtension
- {
- public void Run(Document doc, UIApplication uiapp)
- {
- try
- {
- Extraction LaunchForm = new Extraction(uiapp, doc);
- using (Transaction tx = new Transaction(doc))
- {
- tx.Start("Transaction Name");
- tx.Commit();
- }
- TaskDialog.Show("test", "before workbook open");
- XLWorkbook Workbook = new XLWorkbook(@"C:\Users\jfredrick\Downloads\Power Extraction Test.xlsm");
- TaskDialog.Show("test", "after workbook open");
- string s = LaunchForm.comboBox1.SelectedItem.ToString();
- String str = LaunchForm.comboBox2.SelectedItem.ToString();
- TaskDialog.Show("test", "before WiresToExcel");
- LaunchForm.WiresToExcel(doc, s, str, Workbook);
- Workbook.SaveAs(@"C:\Users\jfredrick\Downloads\Power Extraction.xlsm");
- TaskDialog.Show("test", "after WiresToExcel");
- }
- catch (IsolatedStorageException)
- {
- }
- }
- }
- private class ExtensionWithAppDomain : MarshalByRefObject, IExtension
- {
- private readonly IExtension _other;
- public ExtensionWithAppDomain()
- {
- var evidence = new Evidence();
- evidence.AddHostEvidence(new Zone(SecurityZone.MyComputer));
- var domain = AppDomain.CreateDomain($"{AppDomain.CurrentDomain.FriendlyName}_Evidence", evidence);
- _other = (IExtension)domain.CreateInstanceAndUnwrap(typeof(Extension).Assembly.FullName, typeof(Extension).FullName);
- }
- public void Run(Document doc, UIApplication uiapp) => _other.Run(doc, uiapp);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement