Revit 连接和断开连续性 Web 服务器 nodejs

Revit connected and disconnected continuity web server nodejs

我正在尝试将 Revit 与服务器 nodejs localhost 连接,但是当我将数据从服务器发送到所有客户端时,Revit 中没有任何反应,我的控制台可见 Revit 连接和断开连续性 Web 服务器 nodejs。

服务器本地主机上的代码:

io2.on('connection', function(client){
  console.log(client.id+" connected");
  client.on("disconnect",function(){
    console.log(client.id + " disconnected !");
  })
  var obj = null;
  client.on("send-data", function(data){
    console.log(data);
    obj = {
      method: 'POST',
      headers: {
      
      'Accept': 'application/json',
      'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    };
    io2.sockets.emit("send-data-from-server", obj);
  })
});
app.get("/", function(req, res){
    res.render("index");
});

image Revit connected and disconnected continuity web server nodejs here

使用 Revit 进行代码测试

namespace TF{
[Transaction(TransactionMode.Manual)]
public class ForgeTestCmd : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData,
        ref string message, ElementSet elements)
    {
        var options = new IO.Options()
        {
            IgnoreServerCertificateValidation = true,
            AutoConnect = true,
            ForceNew = true
        };
        const string _url = "http://localhost:3000";
        Quobject.SocketIoClientDotNet.Client.Socket _socket = IO.Socket(_url, options);
        _socket.On(Quobject.SocketIoClientDotNet.Client.Socket.EVENT_CONNECT, () => { });
        _socket.On("send-data-from-server", data
            =>
        {
            MessageBox.Show(data.ToString(), "connect");
        });
        return Result.Succeeded;
    }
}

}

我不知道为什么 Revit 无法侦听从服务器发出的事件。我也不知道Revit监听服务器的条件。

在此先致谢!

您似乎正试图从 Revit 外部启动 ForgeTestCmd

那是不可能的。

Revit API 完全是事件驱动的,事件由 Revit 本身而不是其他人引发。

在外部命令的情况下,Execute 事件通常由用户在 Revit 用户界面中单击相应按钮触发。

您可以使用 external event.

解决此限制

请更深入地研究 External Events for Modeless Access and Driving Revit from Outside 上的 The Building Coder 文章。