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:\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>
Revit二次开发示例:APIAppStartup的更多相关文章
- Revit二次开发示例:HelloRevit
本示例实现Revit和Revit打开的文件的相关信息. #region Namespaces using System; using System.Collections.Generic; using ...
- Revit二次开发示例:EventsMonitor
在该示例中,插件在Revit启动时弹出事件监控选择界面,供用户设置,也可在添加的Ribbon界面完成设置.当Revit进行相应操作时,弹出窗体会记录事件时间和名称. #region Namespace ...
- Revit二次开发示例:ErrorHandling
本示例介绍了Revit的错误处理. #region Namespaces using System; using System.Collections.Generic; using Autodes ...
- Revit二次开发示例:ChangesMonitor
在本示例中,程序监控Revit打开文件事件,并在创建的窗体中更新文件信息. #region Namespaces using System; using System.Collections.Ge ...
- Revit二次开发示例:AutoStamp
该示例中,在Revit启动时添加打印事件,在打印时向模型添加水印,打印完成后删除该水印. #region Namespaces using System; using System.Collect ...
- Revit二次开发示例:ModelessForm_ExternalEvent
使用Idling事件处理插件任务. #region Namespaces using System; using System.Collections.Generic; using Autodesk. ...
- Revit二次开发示例:Journaling
关于Revit Journal读写的例子. #region Namespaces using System; using System.Collections.Generic; using Sys ...
- Revit二次开发示例:DisableCommand
Revit API 不支持调用Revit内部命令,但可以用RevitCommandId重写它们(包含任意选项卡,菜单和右键命令).使用RevitCommandId.LookupCommandId()可 ...
- Revit二次开发示例:DesignOptions
本例只要演示Revit的类过滤器的用法,在对话框中显示DesignOption元素. #region Namespaces using System; using System.Collections ...
随机推荐
- DNS域传送漏洞
nslookup -type=ptr 8.8.8.8 #查询一个IP地址对应的域名 nslookup -type=ns baidu.com #查询baidu.c ...
- python练习-Socket实现远程cmd命令
需求:基于tcp的套接字实现远程执行命令的操作 代码示例: # 编辑者:闫龙 #Client端部分 import socket #导入骚凯特模块 CmdObj = socket.socket(sock ...
- PHP autoload自动加载机制
原文地址: http://www.jb51.net/article/31399.htm 一直不是很明白__autoload()和spl_autoload_register()到底有什么不同,找到了一个 ...
- JavaScript验证注册信息
<script language="javascript"> function check_login(form){ if(form.username.value==& ...
- 20165329 Java实验二:面向对象编程
实验内容: 面向对象程序设计-1 实验要求: 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图 实验步骤: 1.按照老师博客的要求新建一个MyUtil项目 在src内新建ja ...
- Find Minimum in Rotated Sorted Array I & II
Find Minimum in Rotated Sorted Array I Suppose a sorted array is rotated at some pivot unknown to yo ...
- socket相关系统调用的调用流程
最近一直在读内核网络协议栈源码,这里以ipv4/tcp为例对socket相关系统调用的流程做一个简要整理,这些相关系统调用的内部细节虽然各有不同,但其调用流程则基本一致: 调用流程: (1)系统调用 ...
- openjudge-NOI 2.5-1756 八皇后
题目链接:http://noi.openjudge.cn/ch0205/1756/ 题解: 上一道题稍作改动…… #include<cstdio> #include<algorith ...
- InfluxDB系列之一安装及简单运维(未完成,需要继续写)
InfluxDB 是一个开源分布式时序.事件和指标数据库.使用 Go 语言编写,无需外部依赖.其设计目标是实现分布式和水平伸缩扩展. 它有三大特性: 1. Time Series (时间序列):你可以 ...
- pip3
pip3 install django #安装rabbitmq连接模块 pip3 install pika pip3 install paramiko pip3 install ipython pip ...