我一直在尝试使用带有Windows窗体的Visual Studio 2015为Revit 2017创建一个插件。 不幸的是,我没有在网上找到任何文件(如果你有链接,我很乐意让他们看看)
我使用列表框和选择按钮
构建了一个简单的表单它是一个测试解决方案,看看它是如何工作的。
WeWillSee类是实现主要RevitAPI函数的类Execute:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
namespace Test2 {
[Transaction(TransactionMode.Manual)]
class WeWillSee : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiapp = commandData.Application;
/*UIDocument uidoc = uiapp.ActiveUIDocument;
Document doc = uidoc.Document;*/
try
{
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
System.Windows.Forms.Application.Run(new Form(commandData));
//System.Windows.Forms.Form wf = new Form1(uiapp);
}
catch (Exception e)
{
TaskDialog.Show("Error", e.ToString());
return Result.Failed;
}
return Result.Succeeded;
}
}
}
我要打开的表格(其余不重要):
namespace Test2
{
public partial class Form : System.Windows.Forms.Form
{
private UIApplication uiapp;
private UIDocument uidoc;
private Document doc;
public Form(ExternalCommandData commandData)
{
InitializeComponent();
uiapp = commandData.Application;
uidoc = uiapp.ActiveUIDocument;
doc = uidoc.Document;
}
最后是Program.cs文件(导致我出问题的文件):
namespace Test2
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(/*Can't call ExternalCommandData on static class*/));
}
}
}
感谢您提供的任何帮助! :)
答案 0 :(得分:1)
我认为您甚至不需要像编写项目那样在项目中使用Program.cs类文件。
答案 1 :(得分:1)
您不需要执行Application.Run类型的操作(仅适用于独立的Windows应用程序)。你根本不需要Program.cs。
你可以在开始时做:
Form1 wf = new Form1(uiapp); if(wf.ShowDialog()== System.Windows.Forms.DialogResult.OK)返回Result.Success
答案 2 :(得分:1)
这是一个简单的Revit加载项,它实现了一个外部命令,可以动态创建和显示Windows窗体:
http://thebuildingcoder.typepad.com/blog/2012/05/the-schedule-api-and-access-to-schedule-data.html