如何使用Rhino.Common.Geometry分割Mesh?

各位大大好,接触Rhino Python不久。我希望使用阴影Mesh来切割单元表面Mesh来得到被照亮的部分(图中蓝色部分),然而使用Mesh.Split之后单元表面Mesh并没有被切割。BooleanSplit也尝试过,结果是一样的。请问还需要增加什么条件来使得切割成立吗?
PS: Mesh.Split Method (rhino3d.com)列出了很多要求输入的数据,但是我不清楚“textLog”,“cancellation token”和“progress reporter item”是什么意思

image

感谢!
Demo.zip (120.5 KB)

你觉得别人该如何帮你调试几百行代码的复杂功能呢?
你预计别人会花费多少时间,5分钟?5小时?

给你一些建议:

如果需要提问某个模块的使用,你需要提供的是“最小可复现程序”
经常逛StackOverflow就能发现,如果你希望自己的问题得到第一时间的快速解答
把自己的长篇大论贴上来,只会原地劝退那些本来打算帮助你的热心人。

这一行为甚至会惹来StackOverflow论坛里“热心网友”的反感,因为你的提问完全没有方便他人的态度,别人要帮助你,得先投入相当多的时间去理解你那些和程序毫无关系的剩余代码。
久而久之,提供“最小可复现程序”就成了程序员之间交流的默认规则了。

非常感谢您给出的建议!抱歉带来的麻烦,问题中的文件已经替换

关于你的问题,我研究了一下



对那些搞不清状况的,例如textLog和progress可以给null

CancellationToken的话给System.Threading.CancellationToken.None


这个可以在Rhinocommon的链接内找到微软的原始页面。

看到了你的Mcneel论坛的帖子,一般情况下6天没动静的贴,以后也基本不会有动静了
其实你的问题本身很简单,甚至不需要发附件
问题就是这后面2个split里面的参数的用法
然而你那动辄几百上千行的代码着实把人劝退。。。

客观说rhinocommon并不是一个十全十美的文档
同样是python开发,如果某个库(numpy之类)拥有高质量的文档和充足的社区支持(说白了就是用的人多)会让你的开发进程如虎添翼。
反之则会形成很大的损耗
你可能会将自己宝贵的时间浪费在一些莫名其妙的地方,并且能解答你问题的可能只有开发者或者文档编写者等寥寥数人。
其实David的回贴都很快很及时,你只要问对了问题,mcneel上两三天最多,一定会有回复

所以一方面在rhino python开发时你要做好损耗巨大的准备(我个人是早早放弃了),另一方面一旦需要求助这类问题,务必确保不要劝退,正确的提问方式会让回帖6小时就有反应而不是6天。

1 个赞

非常感谢您的帮助以及建议!之前有共面的情况所以一直没有Split,使用后面更多参数的Method之后允许计算共面就可以切割了。
追问一下,不知道您现在是如何开发在Rhino上运行的插件(?)呢?因为我本身不是学代码的,并且刚刚起步,在Grasshopper里面使用Rhino Python相对来说比较容易和直观。如果在Rhino之外使用Python的话,需要怎样才能在Rhino里应用呢?谢谢!

我平时不使用插件,也不开发插件
你制作这个插件的目的是什么呢?

我其实一直很崇拜Rhino的二次开发者
因为在我看来,使用不是非常称心如意的工具,但是最终克服万难达到效果,是很不容易的。
这也就是为什么我对Rhino二次开发崇拜但是避而远之。 :rofl:

我更愿意将有限的时间花费在舒适和成熟的平台,例如pycharm
如果非要使用一些nurbs几何库可以调用Rhino官方的python库

如果一定要做一个UI我选择pyqt6
在一个成熟的IDE下我能够最大限度掌握自己的代码,达成目的
而实际上就是不管社区多么完善的软件,二次开发的体验永远赶不上一次开发。
最简单的就例如断点调试,监控变量,逐句运行,在任何一个二次开发平台上都是难上加难的。

这就让我这种喜欢偷懒的人更加敬而远之了。

很抱歉帮不到你了。不过你可以请教群里的其他版主,例如NARUTO