首页 > 其他 > 详细

Revit调用外部程序

时间:2014-03-12 16:59:10      阅读:997      评论:0      收藏:0      [点我收藏+]

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

 

Revit调用的dll主程序:

bubuko.com,布布扣
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
    }
}
bubuko.com,布布扣

 

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

bubuko.com,布布扣
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();
            }
        }
    }
}
bubuko.com,布布扣

 

Addin文件:

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
  <AddIn Type="Application">
    <Name>APIAppStartup</Name>
    <Assembly>
      C:\Users\Administrator\documents\visual studio 2012\Projects\APIAppStartup\APIAppStartup\bin\Release\APIAppStartup.dll
    </Assembly>
    <AddInId>502fe383-2648-4e98-adf8-5e6047f9dc34</AddInId>
    <FullClassName>APIAppStartup.AppSample</FullClassName>
    <VendorId>ADSK</VendorId>
    <VendorDescription>http://xpvincent.cnblogs.com</VendorDescription>
  </AddIn>
</RevitAddIns>
bubuko.com,布布扣

Revit调用外部程序,布布扣,bubuko.com

Revit调用外部程序

原文:http://www.cnblogs.com/xpvincent/p/3596589.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!