【问题标题】:Revit Pick element from WinFormWinForm 中的 Revit Pick 元素
【发布时间】:2019-01-25 20:38:52
【问题描述】:

单击按钮而不关闭窗体时,我试图在 Revit 中选择一个对象。 问题是当我单击按钮时我无法与 Revit 交互。

这是调用表单并将 Revit 作为所有者传递的主要代码。

IWin32Window revit_window = new JtWindowHandle(ComponentManager.ApplicationWindow);
Process process = Process.GetCurrentProcess();
IntPtr h = process.MainWindowHandle;

form.ShowDialog(revit_window);

public class JtWindowHandle : IWin32Window
{
    IntPtr _hwnd;

    public JtWindowHandle(IntPtr h)
    {
        Debug.Assert(IntPtr.Zero != h, "expected non-null window handle");

        _hwnd = h;
    }

    public IntPtr Handle
    {
        get
        {
            return _hwnd;
        }
    }
}

这里是选择元素的表单代码:

private void button1_Click(object sender, EventArgs e)
    {
        Hide();
        SelectionFilter1 selfilter1 = new SelectionFilter1();
        pickedRef1 = sel.PickObject(ObjectType.Element, selfilter1, "Select Family instance");
        Show();

    }

【问题讨论】:

    标签: c# winforms api revit


    【解决方案1】:

    您的 Windows 窗体可能未在有效的 Revit API 上下文中作为模式窗体运行。

    因此,您尝试从外部访问 Revit 及其 API。这基本上是不可能的。通过使用external event 存在一种解决方法。

    此问题目前也在Revit API with WPF 的Revit API discussion forum 线程中讨论。

    Revit SDK 示例 ModelessDialog/ModelessForm_ExternalEvent 中介绍了官方方法。

    The Building Coder 在Idling and External Events for Modeless Access and Driving Revit from Outside 的主题组中列出了许多其他讨论和解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2019-03-29
      • 2018-12-14
      • 1970-01-01
      • 2017-06-24
      • 2016-10-20
      • 1970-01-01
      • 2019-04-08
      相关资源
      最近更新 更多