zoukankan      html  css  js  c++  java
  • Revit二次开发示例:APIAppStartup

    下面介绍一个在Revit启动和关闭时调用外部程序的例子。

     

    Revit调用的dll主程序:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Autodesk;
    using Autodesk.Revit;
    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;
    using Autodesk.Revit.ApplicationServices;
    
    namespace APIAppStartup
    {
        [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
        [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
        [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
        public class AppSample:IExternalApplication
        {
            #region IExternalApplication Members
    
            public Result OnShutdown(UIControlledApplication application)
            {
                TaskDialog.Show("Revit", "Quit External Application!");
                return Result.Succeeded;
            }
    
            public Result OnStartup(UIControlledApplication application)
            {
                string version = application.ControlledApplication.VersionName;
    
                //display splash window for 10 seconds
                SplashWindow.StartSplash();
                SplashWindow.ShowVersion(version);
                System.Threading.Thread.Sleep(10000);
                SplashWindow.StopSplash();
    
                return Result.Succeeded;
            }
    
            #endregion
        }
    }

     

    在Revit启动时调用的启动画面程序:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace APIAppStartup
    {
        
        public delegate void DelegateCloseSplash();
        
    
        public partial class SplashWindow : Form
        {
            public SplashWindow()
            {
                InitializeComponent();
                m_delegateClose = new DelegateCloseSplash(InternalCloseSplash);
            }
    
            private DelegateCloseSplash m_delegateClose;
            private static SplashWindow m_instance;
            private static Thread InstanceCaller;
    
            //start a new thread to display splash window
            public static void StartSplash()
            {
                m_instance = new SplashWindow();
                m_instance.TopMost = true;
                InstanceCaller = new Thread(new ThreadStart(MySplashThreadFunc));
                InstanceCaller.Start();
            }
    
            //kill the thread
            public static void StopSplash()
            {
                if (m_instance != null)
                {
                    m_instance.Invoke(m_instance.m_delegateClose);
                }
            }
    
            //show Revit version info
            public static void ShowVersion(string version)
            {
                m_instance.Version.Text = version;
            }
    
            void InternalCloseSplash()
            {
                this.Close();
                this.Dispose();
            }
    
    
            //this is called by the new thread to show the splash screen
            private static void MySplashThreadFunc()
            {
                if (m_instance != null)
                {
                    m_instance.TopMost = true;
                    m_instance.ShowDialog();
                }
            }
        }
    }

     

    Addin文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RevitAddIns>
      <AddIn Type="Application">
        <Name>APIAppStartup</Name>
        <Assembly>
          C:UsersAdministratordocumentsvisual studio 2012ProjectsAPIAppStartupAPIAppStartupinReleaseAPIAppStartup.dll
        </Assembly>
        <AddInId>502fe383-2648-4e98-adf8-5e6047f9dc34</AddInId>
        <FullClassName>APIAppStartup.AppSample</FullClassName>
        <VendorId>ADSK</VendorId>
        <VendorDescription>http://xpvincent.cnblogs.com</VendorDescription>
      </AddIn>
    </RevitAddIns>
  • 相关阅读:
    【poj 1087 a plug for UNIX】
    收集 数据库的awr数据,生成报告
    power desinger 学习笔记三<批量执行sql语句>
    power desinger 学习笔记<二>
    power desinger 学习笔记<一>
    oracle中不曾熟悉的 to_char、to_number(未完待续)
    oracle 报错 :ORA-04052、 ORA-00604、 ORA-03106、 ORA-02063
    谈谈oracle中的临时表
    Oracle-在线重定义操作文档
    分享最近和同事处理的 解析XML的相关问题
  • 原文地址:https://www.cnblogs.com/xpvincent/p/3596589.html
Copyright © 2011-2022 走看看