1. 首页
  2. SketchUp

SketchUp查找所有连接的组

亲爱的朋友们,
我需要在ruby sketchup中找到我的组(如果有的话)的所有连接组。你能帮我吗?DanRathbun在post#22中解决的是这对于去除分割边是正确的。示例…耳鼻咽喉炎(Sketchup::Edge)do|Edge|边缘.擦除如果边.面.尺寸>1endFYI…Enumerable#grep是块形式的迭代器方法。它产生了一个数组,因此您不需要使用。要Ša,您不需要使用。每个,因为它已经是一个数组Š每个它…

majid866:

查找所有连接的组

这是什么意思?
有很多关于它的话题……
…结果是:没有\”简单\”的方法来解决这个问题。

如何知道两个组件在sketchup中使用ruby相互接触?Ruby API

如果任何两个组件相互接触,那么我可以使用哪个函数来检查它??

我的目标是将两个(或更多)连接的组作为一个组。

连接组的可能性有几十种。
您能告诉我们您对\”连接组\”的解释吗?请详细解释!

我猜您的请求将没有解决方案,因为\”双线\”代码…

在图片中,您可以看到我希望找到的一些连接组。

屏幕截图2020-10-01 1219551108×796 47.5 KB
。我想分不同的步骤来解决这个问题。在第一步中,我需要知道连接到我的组的其他组的名称。

一个想法。
你必须得到\”我的组\”的所有面的所有顶点位置的数组。检索职位时,必须考虑组的转换。您将获得Point3d阵列。你可能需要把它变成uniq!。

您必须获得模型中除\”我的组\”之外的所有组的数组。
您必须迭代每个组实体,并使用.classifyu point方法检查面上是否有上述所有点。(这一次你必须同时使用PointInside、PointOnEdge和PointOnVertex对于.u点条件)。进行同情时必须考虑组的转换。
如果你被\”击中\”,你可以将组存储到一个数组中以便以后处理…检查名称等。

让我们举一个简单的2D示例。下面我们有face1(一个公共点)、face2(一条公共线)、face3(一个公共区域)、face4(没有公共点)和faceu main。如果我们只有面,如何找到面1,面2和=[20,=[13,=[15,=[0,=[10,=ent.add面pt1、pt2、pt3、pt4

!!肮脏和廉价!!

#the snippet of your previous post = == == p_v || result == p_e || result == == p_v || result == p_e || result == p_ifaces_con<<face_aendend}}puts \"------\"puts \"found total #{faces_con.size} connected face(s)...\"faces_con.uniq!puts \"...and : #{faces_con.size} of them are unique\"puts \"The face(s) connected to face_main (#{face_main}) are:#{faces_con} \"sel.clearputs \"The number of face(s) in selection:\"puts \"------\"sel.add(faces_con)

如果面高度相同,我希望将面2和面3合并到面主。你也能帮我吗?

对于\”合并\”和\”相同高度\”有几十种可能性。
请详细解释!

与图片相同

截图2020-10-01 2011441537×709 70.2 KB

!!更脏更便宜!!

#the snippet of my previous snippet continued == 1 || e.end.edges.size == 1e.erase!nextendnext if e.faces.size>

If you take at look at the top right example, you\"ll see that it has no vertices lying on or in the other group.
Also, none of the bounding box corners would be within the other group\"s bounds.

For this scenario we have suggested in the past that a boolean intersect be done on two copies of the groups. And then the result examined to see if it has an length or volume. (Lastly the temporary result is deleted.)

The drawback to this approach is that it makes modifications to the model, so some have used this approach within an undo operation and then call Sketchup.undo或在确定相交后中止操作。

非常感谢。我将多次返回此代码…

谢谢您的建议。我会仔细检查的。

亲爱的Dezmo,
让它变得更有趣…在下面的例子中,我们有不同组的面孔。你能帮我解决这个问题吗。实体添加面pt1,==[15,=grp3。实体添加面pt1,==[0,==几何::改造。新建[10,10,==[0,0,-1]所有的面=Sketchup::Face::PointInside,

提前谢谢。

我在本主题中问了两次:\"请详细解释!\"
我不会再问了。

majid866:

您能帮我解决这个场景的问题吗?

从上面随机复制粘贴的代码snippest中,我得出的结论是,到目前为止,帮助没有任何效果。
你不是坐下来看基础知识,而是在等别人来写。不是我。
对不起。

Ruby学习资源1

抱歉我的错误。事实上,在我把脸分组后,你的代码工作了,但我看不见。删除组后,我找到一个合并的面。

我添加了以下代码,并删除了连接的面及其父组。我的问题==0endmain_组擦除!

对于对此主题感兴趣的朋友…您需要使用以下代码。
\"实体.u与recurse,transformation1,entities1,transformation2,hidden,entities2\".
看起来很混乱,但您可以在这个链接中找到清晰的解释和简单的示例。>

SketchUp查找所有连接的组 为WP2原创文章,链接:https://www.wp2.cn/sketchup/sketchup%e6%9f%a5%e6%89%be%e6%89%80%e6%9c%89%e8%bf%9e%e6%8e%a5%e7%9a%84%e7%bb%84/

发表评论

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