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 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相关推荐
- Revit二次开发示例:HelloRevit
本示例实现Revit和Revit打开的文件的相关信息. #region Namespaces using System; using System.Collections.Generic; using ...
- Revit二次开发示例:DeleteDimensions
在本例中,创建一个命令,实现删除所选中的尺寸标注. #region Namespaces using System; using System.Collections.Generic; using S ...
- Revit二次开发示例:DeleteObject
在本例中,通过命令可以删除选中的元素. 需要注意的是要在代码中加入Transaction,否则的话会出现Modifying is forbidden because the document has ...
- Revit二次开发示例:AutoUpdate
在Revit打开文件时,修改文件信息.并记录状态,存到log文件中. #region Namespaces using System; using System.Collections.Generic ...
- Revit二次开发 获取模型截面线、截面轮廓
描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...
- Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)
Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014 yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...
- 使用NSIS制作多版本Revit插件(Revit二次开发)
因为VisualStudio中微软官方的程序打包工具,无法实现Revit多版本插件的制作,所以我选择了NSIS来制作多版本插件. 一.使用NSIS向导创建脚本 1.1.打开NSIS的VNISEdit( ...
- Revit二次开发—参数的读取与写入
关注公众号及时获取文章更新 注:本文转自公众号:BIMCoder梁老师 一.前言 在Revit二次开发中,参数是非常重要的组成部分,那么我们该如何从构件获取参数并修改该参数. 二.方法 首先得到一个E ...
- Revit二次开发---关于CAD翻模第一步
2019年6月6日,南京,暴雨. 笔者改善以前关于翻模的一些想法,以减少对翻模图纸的初步处理. 以前使用使用直接链接CAD的方法生成各种三维模型.链接进来的CAD图纸需要处理,且文字读取较为困难,故使 ...
最新文章
- 电路实验1-电容充放电
- linux setup 进步了网卡,linux 网卡修改小结
- linux tomcat 进程杀掉_Linux-(一)常用命令总结
- Ajax基础知识梳理
- android xml ui编辑器,Android Studio(八):使用Layout Editor设计UI
- 做接口测试最重要的知识点
- LeetCode: Merge k Sorted Lists
- windows.old可以删除吗_C盘里的文件夹都有何用?可以删除吗?哪些可以删除?
- 最新电脑为什么用ghost无法安装系统?安装版正常,是何原因?
- 《学习JavaScript数据结构与算法》 第四章笔记 栈
- SQL Server 网络协议和 TDS 端点
- 关于性格内向者的10个误解,献给奋战在一线的程序员
- Rust: codewars的Molecule to atoms
- 惠新宸:我也曾经是“不适合”编程的人(图灵访谈)
- 华为模拟器linux,华为模拟器命令.doc
- 关于SVN状态图标不显示的解决办法
- String方法汇总
- quartz mysql 表 集群配置_Quartz集群配置
- C语言打印多颜色字体,多功能打印,协助开发调试
- JavaScript内的类型转换
热门文章
- AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
- 软件测试相关的63个国外站点
- 基于Xilinx FPGA实现PCIE2.0接口
- (30)FPGA原语设计(单端时钟转差分时钟)
- (32)SystemVerilog语言编写打两拍
- STM32F4温湿度
- 视频封面自动播放两秒钟html,使用videojs轻松搭建一个播放器
- python3.6sysos_python3.6实现学生信息管理系统
- Linux内核分析 - 网络[八]:IP协议
- 从Nand Flash启动U-BOOT的基本原理