问题标签 [rhino3d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3467 浏览

python - 从 Rhino3d 将图层导出为 obj

任务

从 Rhino 将图层导出为 obj 文件。

问题

使用 Python 脚本时,我运行一个导出命令。不是导出模型,而是在界面中显示一个对话框。如果我点击导出界面,它工作正常。但是,它会为每个图层打开对话框。虽然我有很多层,但我想自动化整个导出过程。

最终目标是通过 three.js 在 webGL 中显示 obj 文件。

我是 Python 和 Rhino 的新手,但了解 PHP 和 JavaScript,所以我对这些概念有足够的了解,并且看过一些 Python 教程,所以我可以开始编写这个脚本。

我试过的

我正在使用 Rhino、Atom/Python。

笔记

我正在考虑使用python本机文件保存(open(“layername.json”,“a”)。想法是以某种方式从每一层的对象中获取网格,将其转换为three.js json并改用它。但我不知道如何从图层中获取网格。我已经导入了 Rhino.Geometry 看看它是否有帮助。我不知道如何找到要转换的网格,或者我是否可以以某种方式使用本机导出以自动方式命令并仅使用 obj 文件。

0 投票
5 回答
1368 浏览

c# - C#.net 多线程

我正在尝试在一个名为 Grasshopper(Rhino3D 的一部分)的包中使用 C#.net 优化一些数学运算。该操作非常简单,但必须执行的列表很大并且可能会变得更大。

我在我的 C# 脚本中使用 Parallel.ForEach 和列表,我得到的最终结果数量低于预期。这很可能是因为 list.add 不是线程安全的(或者在我构建它的软件中不是线程安全的)。

请帮助我找出一种简单有效的方法,使用 CPU 多线程(或者如果您对 GPU CUDA 有建议)在数百个值上运行这个简单的数学运算。

我希望这个晦涩难懂的特定软件不会打扰您,因为据我所知,它的性能与普通 C#.Net/Python/VB.Net 相同。

0 投票
1 回答
194 浏览

c# - 带有集合输出的 C# 递归

我正在尝试使用递归函数并输出结果值的列表。这是我想出的代码,但它给了我

错误(CS0161):'Script_Instance.wrapper(int,int,Grasshopper.DataTree,Sy​​stem.Collections.Generic.List)':并非所有代码路径都返回值(第 87 行)

我正在尝试改进一个运行良好但对我的需要来说太慢的 python 脚本。这是python代码。

这是在 Rhino3d+Grasshopper 中。

0 投票
1 回答
85 浏览

3d - Rhinoceros 5 在戒指上刻字时出现网孔不良

我的问题实际上是多重曲面雕刻简单的 10 个字母雕刻不会出现在网格上,即使它出现的网格不好,所以我无法打印出来......我在多重曲面上尝试然后使其网格不起作用我尝试使它网格然后尝试它没有用我该怎么办?有没有人可以帮助我?

0 投票
1 回答
188 浏览

c# - 从坐标索引节点

我正在使用 C# 在 Rhino/Grasshopper 中进行 FEA(有限元分析)程序。我有线(FD)和网格三角形面(NFD)作为输入,每个都有它们的节点坐标。我正在尝试获取这些坐标并将它们恢复到列表中以索引每个节点。

由于线和网格面可以共享相同的节点,我做了以下尝试避免重复信息:

但是,当我构建项目时,我仍然会收到重复的信息。网格面重复消失了,但代码复制了线条的索引。(例如,一个 9 个节点的问题给了我 13 个节点,有时是 14 或 15 个。查看网格索引,所有内容都低于 9,但在行中不是 [介于 9 和 13 之间])。

我该如何解决?

谢谢,

马尔西奥

0 投票
1 回答
1467 浏览

vbscript - 从另一个脚本运行 vbscript 而不写入文件

我目前正在从我的主 vbscript 运行一个新的 vbscript,方法是从字符串数组“即时”创建第二个脚本并将其写入外部secondfile.vbs文件,然后WshShell.Run "C:\secondfile.vbs"在第一个运行时使用我需要它来继续运行。

我遇到的问题是,因为我必须重复很多次,所以使用 FSO 编写新的 vbs 文件会稍微减慢这个过程 - 我正试图消除它。有没有办法在不创建物理文件的情况下从内存中运行 vbscript?寻找一种将我的脚本作为字符串并直接作为独立的 vbscript 执行的方法。在此先感谢您的任何建议。

以下是其当前工作方式的简化代码:

0 投票
1 回答
358 浏览

python - python缩短Grasshopper中的多个嵌套循环

如果不使用多个嵌套循环,我还找不到解决此问题的方法。问题是我正在使用 Rhinoceros 的几何方法对两个列表进行比较。基本上有一个行列表,一组起点和终点(嵌套列表)。所有的起点和终点都接触线。该脚本将最接近开头的行的索引与最接近结尾的行的索引进行比较,如果它们匹配,则返回True.

这是我当前的代码:

我认为它可能适用于生成器表达式,但我被卡住了,因为看起来我实际上必须在相互比较之前临时存储 pullSt 和 pullEnd 值。我知道我可能会超载我的记忆,必须有更快的方法来做到这一点,但我只是不确定如何。

True注意:如果直线和点之间的距离小于 0.0001 的容差,则返回 rc.Geometry.Curve.ClosestPoint ,这意味着该点在线上。

0 投票
2 回答
258 浏览

c# - 如何从 Grasshopper ghe 中引用 Rhino rhp

在用 C# 编写 Grasshopper 扩展时,我想访问在我的 Rhino 插件中定义的符号。

一个常见的例子是我的插件可能将自定义 UserData 类附加到对象,我希望稍后能够在 Grasshopper 中访问该数据的成员。

在我的具体示例中,我有一个 MirrorData 类,它被添加到一组 Breps 中。我可以从我的 rhino 插件中设置和获取它。

问题是,为了让我的 Grasshopper 扩展了解 MirrorData,我需要从 Grasshopper 扩展中引用 rhino 插件,但这是不允许的,因为 rhino 插件输出不能用作有效参考的 .rhp。

我通过从 Grasshopper 扩展引用插件的 obj 文件夹中的临时 MirrorPlugin.dll 找到了一种解决方法。但这似乎不是“正确”的方法。

有任何想法吗?

0 投票
0 回答
1015 浏览

python - Python 消息框仅显示我的标题的第一个字母和我的消息

我有一个简单的 Python 脚本,我在 Rhino3D 中运行。它显示一个消息框,如下所示:

此外,它仅显示我的每个文本(标题和内容)的第一个字母。我该如何解决?是什么原因 ?问题是来自 Rhino3D 吗?

Python 消息框

0 投票
1 回答
128 浏览

python - 阈值后反向计数

我在 RhinoPython 中输入一个数字滑块来增加 y 值。当 y 等于某个值时,我希望反转增量。我已经想出了如何让它消极,但这不是我所追求的。对不起,这个问题很简单,谢谢。简而言之,数字滑块会增加变量,一旦达到 45,它就会随着数字滑块的每次增量而倒计时。