【Grasshopper】一键生成体块模型

优采云 发布时间: 2022-09-14 05:16

  【Grasshopper】一键生成体块模型

  在某些项目中,需要根据已经拥有的规划底图来生成相应的3d 模型。

  如果体块本身不多手工完成也没有问题。但是,假如体块成百上千,手工完成将是非常巨大的工作量。

  粗略估计图中有600多个体量。本文分享一个简单的办法快速完成这项任务。甚至将思路变通可以用在其它的案例上(例如,地形随高程生成,生成指定高度等)。

  在所有步骤开始前我们应该处理一下线稿,应该将我们所有的线都变成可以封面可以挤出的闭合曲线。

  在Rhino中用SelClosedCrv,选取闭合的曲线,将选取的闭合曲线标记为另外一个颜色,这样就可以看到哪些曲线没有闭合,精准处理一遍线稿,从而进行后续的计算。

  首先我们先做一组小电池,目的是在给定边界和数字的情况下生成相应层数的体块。

  我们对于工具的期望是在一次性框选指定的体块边界和层数时,电池组可以自动区分它们,同时将不同的边界所特有的层数准确的匹配,进而完成这一自动化的辅助工具。

  1 区分体块边界(Curve)与文本(Text)

  用GUID拾取所有元素ID信息,Curve电池会通过报错的方式分出来哪些不是Curve. 再配合Dispatch电池就完成了分流。

  2读取TEXT 和删除不必要字符F

  在大水牛的往期文章中,月之眼和好多猫分享过一篇文章,介绍了两种GH读取TEXT文本的方法,其中一种是HUMAN插件,另外一种是C#写的电池。感兴趣的可以跳转到这一篇文章。

  

  【链接:】

  今天再额外介绍两种。第一种也是插件PEACOCK MANTIS SHRIMP,我们正好用到文本坐标位置和文本内容这两个信息。插件中的Text Reader 可以很好的帮我们解决这个问题。第二种就是用GhPython将这个电池的功能复现出来,两个电池功能几乎等价。

  所用代码如下:

  import rhinoscriptsyntax as rsimport Rhino as rcimport scriptcontext as sc<br /><br />sc.doc = rc.RhinoDoc.ActiveDoc<br />Mytext = rs.coercerhinoobject(ID)V = Mytext.DisplayTextL = Mytext.Geometry.Plane<br />sc.doc = ghdoc

  小编这里补充另一种python的方法。

  无论哪种方法,解决问题就行。我们现在轻松拿到了文本的信息和空间位置。

  但是类似“6F”这样的信息不能有效读取,我们需要批量去掉文本中的“F”。这里用到的是一个简单的Python语句,自动删除字符串中的“F”。

  所用语句如下:

  a = x.strip('F')

  3边界内的数字准确匹配。

  由于框选的时候选取物体的顺序我们没法掌握。这里用到的办法是先求一条边界与所有选择的文本之间的距离。找到最短的距离在文本列表中的索引(Index)。用这个索引(Index)就可以直接找到与这条边界正确匹配的文本信息了.就是我们希望它准确匹配的信息。

  图中单独做了一个小例子来讲解这个思路。

  4.分批生成,速度快,便于检查。

  

  为了增加这套电池的可用性,可以在后面加上一个Data Recorder,可以帮助我们批量生成,减少一次性的计算量,同时也方便我们肉眼粗略的检查。

  希望这个案例中用到的方法,可以解决更多的问题。

  文末附案例下载:

  往期精彩文章回顾:

  大水牛参数化设计是一个传播分享建筑数字化设计与数字化建造资讯的平台

  并且会不断连载原创或转载有价值的参数化软件教程

  (Rhino、Grasshopper、Python、Revit、Processing等等)

  是一个视野与技术并重的数字化传播平台

  我们的目标是把这个平台创造成一个拥有良好氛围的学习平台

  我们将带头冲锋;我们的立场非常坚定

  我们的狂怒你驾驭不住;黎明就在眼前

  欢迎你们加入我们的战队

  记住我们不是一个人在战斗

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线