【版权声明】
| 作者:刘胜禹
| 编辑:月之眼
| 本文首发于大水牛平台
| 如需转载请联系作者
| 如果觉得文章不错,欢迎分享
在某些项目中,需要根据已经拥有的规划底图来生成相应的3d 模型。

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

粗略估计图中有600多个体量。本文分享一个简单的办法快速完成这项任务。甚至将思路变通可以用在其它的案例上(例如,地形随高程生成,生成指定高度等)。
在所有步骤开始前我们应该处理一下线稿,应该将我们所有的线都变成可以封面可以挤出的闭合曲线。
在Rhino中用SelClosedCrv,选取闭合的曲线,将选取的闭合曲线标记为另外一个颜色,这样就可以看到哪些曲线没有闭合,精准处理一遍线稿,从而进行后续的计算。

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

我们对于工具的期望是在一次性框选指定的体块边界和层数时,电池组可以自动区分它们,同时将不同的边界所特有的层数准确的匹配,进而完成这一自动化的辅助工具。
1 区分体块边界(Curve)与文本(Text)
用GUID拾取所有元素ID信息,Curve电池会通过报错的方式分出来哪些不是Curve. 再配合Dispatch电池就完成了分流。

2读取TEXT 和删除不必要字符F
在大水牛的往期文章中,月之眼和好多猫分享过一篇文章,介绍了两种GH读取TEXT文本的方法,其中一种是HUMAN插件,另外一种是C#写的电池。感兴趣的可以跳转到这一篇文章。
【链接:https://mp.weixin.qq.com/s/JE16qA4-XVVN7IidfAk1dg】
今天再额外介绍两种。第一种也是插件PEACOCK MANTIS SHRIMP,我们正好用到文本坐标位置和文本内容这两个信息。插件中的Text Reader 可以很好的帮我们解决这个问题。第二种就是用GhPython将这个电池的功能复现出来,两个电池功能几乎等价。

所用代码如下:
import rhinoscriptsyntax as rsimport Rhino as rcimport scriptcontext as scsc.doc = rc.RhinoDoc.ActiveDocMytext = rs.coercerhinoobject(ID)V = Mytext.DisplayTextL = Mytext.Geometry.Planesc.doc = ghdoc小编这里补充另一种python的方法。

无论哪种方法,解决问题就行。我们现在轻松拿到了文本的信息和空间位置。
但是类似“6F”这样的信息不能有效读取,我们需要批量去掉文本中的“F”。这里用到的是一个简单的Python语句,自动删除字符串中的“F”。
所用语句如下:
a = x.strip('F')3边界内的数字准确匹配。
由于框选的时候选取物体的顺序我们没法掌握。这里用到的办法是先求一条边界与所有选择的文本之间的距离。找到最短的距离在文本列表中的索引(Index)。用这个索引(Index)就可以直接找到与这条边界正确匹配的文本信息了.就是我们希望它准确匹配的信息。

图中单独做了一个小例子来讲解这个思路。
4.分批生成,速度快,便于检查。
为了增加这套电池的可用性,可以在后面加上一个Data Recorder,可以帮助我们批量生成,减少一次性的计算量,同时也方便我们肉眼粗略的检查。

希望这个案例中用到的方法,可以解决更多的问题。
文末附案例下载:
链接:https://pan.xunlei.com/s/VMGbL8FIbwxmRPBtiHrvteqMA1
提取码:rOqG
链接:https://pan.baidu.com/s/1YCnY9zWVTIiDHIutjFtmLA
提取码:ehqe
往期精彩文章回顾:
【GhPython应用】利用反射刷新Image sampler组件
【分分钟建模系列01】Loft命令的简单应用
【分分钟建模系列02】SoftMove命令的简单应用
【分分钟建模系列03】ArrayPolar命令的简单应用
【分分钟建模系列04】Contour命令的简单应用
EVOLO2018竞赛结果
基于拓扑优化的薄壳结构找形研究
用Lumion致敬丽泽SOHO
【ATLV系列】系统讲解GH Python教程 — 导入05
【ATLV系列】系统讲解GH Python教程 — 导入04
【ATLV系列】系统讲解GH Python教程 — 导入03
【ATLV系列】系统讲解GH Python教程 — 基础02
【ATLV系列】系统讲解GH Python教程 — 基础01
【Processing教程8】—— 万圣节特别版
【Processing教程7】—— Navier-Stokes Equations
【Processing教程6】----Minim的简单运用
【Processing 教程 5】 ----PeasyCam 和 gHowl
【Processing教程4】----library的简单运用
【Processing 教程3】--Arry和For Loop
【Processing 教程 2 】----- function
【Processing 教程1】--界面和参数介绍
【号外,号外】大家期待已久的Processing教程来啦
【分分钟建模系列20】如何路径分组
【分分钟建模系列19】如何用RhinoPython实现“向日葵”开洞
【分分钟建模系列18】如何用Rhino做垂直格栅
【分分钟建模系列08】山寨一个教堂
【分分钟建模系列07】做个扭转建筑
【分分钟建模系列】SoftMove命令的简单应用
【分分钟建模系列】手把手教你做旋转楼梯
【分分钟建模系列】手把手教你做表皮
【分分钟建模系列05】手把手教你做编织
【分分钟建模系列06】手把手教你做个凳子
【分分钟建模系列09】如何用犀牛手工做灰阶干扰
【分分钟建模10】MAD中国国家美术馆
【分分钟建模教程系列11】Big的W大楼
【分分钟建模教程系列12】如何做一个漂亮的楼梯
【分分钟建模教程系列13】如何做曲面干扰
【分分钟建模系列14】如何快速打断相交的曲线
【分分钟建模系列15】如何用Grasshopper建一座桥梁
【分分钟建模系列16】茶几建模
【分分钟建模系列17】BIG蛇形画廊的建模案例
【Bubalus_RH for Rhino6】选择“选中物体”所在的图层
【Grasshopper】Anemone插件的应用
大水牛参数化设计是一个传播分享建筑数字化设计与数字化建造资讯的平台
并且会不断连载原创或转载有价值的参数化软件教程
(Rhino、Grasshopper、Python、Revit、Processing等等)
是一个视野与技术并重的数字化传播平台
我们的目标是把这个平台创造成一个拥有良好氛围的学习平台
我们将带头冲锋;我们的立场非常坚定
我们的狂怒你驾驭不住;黎明就在眼前
欢迎你们加入我们的战队
记住我们不是一个人在战斗


