1. 首页
  2. SketchUp

SketchUp使用TCPSocket成功与外部应用程序通信

大家好,

不久前,在一篇文章中讨论了在windows上与外部应用程序通信的需求。由于阻塞,Sockets被证明是非常精细的,但是我通过使用计时器和错误陷阱成功地完成了它。

这里是>

和gif:

TCPSocket.gif958文件×715 216 KB

如果有人知道这样运行的计时器的资源成本是多少,那会很有趣。在计时器运行的情况下,我的CPU使用率保持在0%,因此我无法判断是否有太大影响。

由Neil#u Burkholder在post#12中解决了

由于@DanRathbun的帮助,我成功地使用Http类而不是ruby套接字实现了一个更干净的解决方案。很有魅力!!![image]

这是我创建的ruby类。

类Communicatordef>

我必须将计时器设置为0.01才能获得所需的分辨率。另外,它的最大长度似乎是8193个字符。

我在让它放置一段时间后再回到这个项目。有人知道在Windows上与外部应用程序通信的更好方法吗?我想创建一个C#/WPF解决方案,因为我需要我的应用程序连接到PostgreSQL数据库以读取材料数据并存储和检索报价信息。我的扩展将被多个共享同一数据库信息的用户使用。

如果SketchUp实现了我的请求,允许托盘中的HTLM对话框,我可能走错了方向?

为\”Dock\”HtmlDialogs功能请求添加功能

谁还需要麻烦的HTML对话框呢!想象一下,如果他们离开的话,工作流/用户体验会得到改善!顺便说一句:我注意到讲师面板已经使用了Chrome浏览器。[图片]

有什么想法吗?

Neilu Burkholder:

我的扩展名将被共享同一数据库信息的多个用户使用。

没有尝试过与您所描述的类似的操作,但是您看过pg gem 12了吗?能否在SketchUp中安装gems?如果是这样的话,对于分布式扩展来说,进程是否足够可靠?能否在SketchUp中安装gems?

是的,而且pg作为\”胖二进制\”gem提供,所以编译工具不是必需。请参阅Gem.install3:

Gem.install(\"pg\")

你还得决定是否使用C的ORM工具,自己滚,或者添加另一个gem。

gem env可以在SketchUp中完成,方法是:

require\"rubygems/commands/environment_command\"gem::commands::EnvironmentCommand.new.showu环境.gsub(\"\",\"r\")

Re sockets,我没有在SketchUp中使用sockets,也没有在较旧版本的只有鲁比在过去的一年里,ruby已经在windows上进行了全面的测试,这就是只是后备箱。所以呢,如果有任何套接字问题,它们只被后端口到2.3或2.4…

Sweet。那很简单。谢谢你的帮助。

现在我还得决定是利用我的C语言技能还是尝试学习HTML/Java脚本…

尼尔,

我想你列出了你的套接字的简化版本代码。不管怎样,你可以看看IO#ready? from io/wait6。而且,开放式rescue会留下很多问题\"未跟踪\",可能还有一个计时器循环运行。

听起来很有趣项目。给定正如你所说,我猜C/socket解决方案是最简单的。我在Ruby和C中都做过socket…

Greg,

Greg,

谢谢你的宝贵意见。我遇到的问题是阻塞,因为SketchUp不支持Ruby线程。我想出了计时器和错误陷阱来防止以下错误。

Error: #<IO::EWOULDBLOCKWaitReadable: A non-blocking socket operation could not be completed immediately. - read would block>

从您的链接中找到的nread方法看起来很有趣,但我不知道如何使用它。

也许最好问问:什么是最好的方法来检测何时可以读取信息,然后检索它?SketchUp不支持Ruby线程,我不会把所有的责任都归咎于SketchUp,它是Ruby、Windows和苏。鲁比没有C#拥有的回调/事件对象…

我稍后会查看这个。至于救援,我指的是一个变化,比如:

Between standard Ruby and adding io/wait和/或io/nonblock,有几种方法可以处理这个问题,我甚至可以看看线程。是套接字上的数据是间歇性的(基于UI操作)?

Greg

MSPu Greg:

套接字上的数据是否是间歇性的(基于UI操作)?

事实就是如此。它基本上与add_action_callback方法的用法相同。

SketchUp Ruby API文档4(v2017+)类

Sketchup::Http::Request
Sketchup:Http:响应

感谢

SketchUp使用TCPSocket成功与外部应用程序通信 为WP2原创文章,链接:https://www.wp2.cn/sketchup/sketchup%e4%bd%bf%e7%94%a8tcpsocket%e6%88%90%e5%8a%9f%e4%b8%8e%e5%a4%96%e9%83%a8%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e9%80%9a%e4%bf%a1/

发表评论

您的电子邮箱地址不会被公开。