下面介绍一个在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 Memberspublic 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 windowpublic static void StartSplash(){m_instance = new SplashWindow();m_instance.TopMost = true;InstanceCaller = new Thread(new ThreadStart(MySplashThreadFunc));InstanceCaller.Start();}//kill the threadpublic static void StopSplash(){if (m_instance != null){m_instance.Invoke(m_instance.m_delegateClose);}}//show Revit version infopublic 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 screenprivate 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:\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>

转载于:https://www.cnblogs.com/xpvincent/p/3596589.html

Revit二次开发示例:APIAppStartup相关推荐

  1. Revit二次开发示例:HelloRevit

    本示例实现Revit和Revit打开的文件的相关信息. #region Namespaces using System; using System.Collections.Generic; using ...

  2. Revit二次开发示例:DeleteDimensions

    在本例中,创建一个命令,实现删除所选中的尺寸标注. #region Namespaces using System; using System.Collections.Generic; using S ...

  3. Revit二次开发示例:DeleteObject

    在本例中,通过命令可以删除选中的元素. 需要注意的是要在代码中加入Transaction,否则的话会出现Modifying  is forbidden because the document has ...

  4. Revit二次开发示例:AutoUpdate

    在Revit打开文件时,修改文件信息.并记录状态,存到log文件中. #region Namespaces using System; using System.Collections.Generic ...

  5. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

  6. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)

    Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014    yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...

  7. 使用NSIS制作多版本Revit插件(Revit二次开发)

    因为VisualStudio中微软官方的程序打包工具,无法实现Revit多版本插件的制作,所以我选择了NSIS来制作多版本插件. 一.使用NSIS向导创建脚本 1.1.打开NSIS的VNISEdit( ...

  8. Revit二次开发—参数的读取与写入

    关注公众号及时获取文章更新 注:本文转自公众号:BIMCoder梁老师 一.前言 在Revit二次开发中,参数是非常重要的组成部分,那么我们该如何从构件获取参数并修改该参数. 二.方法 首先得到一个E ...

  9. Revit二次开发---关于CAD翻模第一步

    2019年6月6日,南京,暴雨. 笔者改善以前关于翻模的一些想法,以减少对翻模图纸的初步处理. 以前使用使用直接链接CAD的方法生成各种三维模型.链接进来的CAD图纸需要处理,且文字读取较为困难,故使 ...

最新文章

  1. 电路实验1-电容充放电
  2. linux setup 进步了网卡,linux 网卡修改小结
  3. linux tomcat 进程杀掉_Linux-(一)常用命令总结
  4. Ajax基础知识梳理
  5. android xml ui编辑器,Android Studio(八):使用Layout Editor设计UI
  6. 做接口测试最重要的知识点
  7. LeetCode: Merge k Sorted Lists
  8. windows.old可以删除吗_C盘里的文件夹都有何用?可以删除吗?哪些可以删除?
  9. 最新电脑为什么用ghost无法安装系统?安装版正常,是何原因?
  10. 《学习JavaScript数据结构与算法》 第四章笔记 栈
  11. SQL Server 网络协议和 TDS 端点
  12. 关于性格内向者的10个误解,献给奋战在一线的程序员
  13. Rust: codewars的Molecule to atoms
  14. 惠新宸:我也曾经是“不适合”编程的人(图灵访谈)
  15. 华为模拟器linux,华为模拟器命令.doc
  16. 关于SVN状态图标不显示的解决办法
  17. String方法汇总
  18. quartz mysql 表 集群配置_Quartz集群配置
  19. C语言打印多颜色字体,多功能打印,协助开发调试
  20. JavaScript内的类型转换

热门文章

  1. AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
  2. 软件测试相关的63个国外站点
  3. 基于Xilinx FPGA实现PCIE2.0接口
  4. (30)FPGA原语设计(单端时钟转差分时钟)
  5. (32)SystemVerilog语言编写打两拍
  6. STM32F4温湿度
  7. 视频封面自动播放两秒钟html,使用videojs轻松搭建一个播放器
  8. python3.6sysos_python3.6实现学生信息管理系统
  9. Linux内核分析 - 网络[八]:IP协议
  10. 从Nand Flash启动U-BOOT的基本原理