Я пытался создать плагин для Revit 2017 с Visual Studio 2015 с Windows Form. К сожалению, я не нашел никакой документации в Интернете для этого (если у вас есть ссылки, я буду рад их посмотреть)
Я создал простую форму, используя список и кнопку выбора.
- В списке отображаются все двери в проекте Revit.
- Кнопка выбора выбирает все выбранные двери из списка и выбирает их в проекте Revit (много вариантов...)
Это тестовое решение, чтобы увидеть, как все это работает.
Класс 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*/));
}
}
}
Спасибо за любую помощь, которую вы можете предложить! :)