简单说说:
本文是一个诚意满满,从旧城CAD测绘线稿,识别老建筑标记,再生成坡顶小房子的 grasshopper C#工具。作为批量,大面积,生成地段模型的极佳工具。非常硬核,所以,历时长久远……
解释一下:最近消停,消极怠工,拖延症,所以好久没有更新。为了写这一篇公众号,甚是苦恼。从刚刚过去的去年10月初,就憋着这篇文章了。本来要发,结果出现了BUG。毕竟,为了做一个具有一定的普遍适应性的功能gh还是不太容易。最后还是下定决心在新年初做完去年本该做完的事情吧。感谢大家还关注着!
背景回顾
作为一个喜欢偷懒的建筑狗,怎么能不好好的利用Grasshopper做一些重复性高的工作呢?让我们想象如下画面:
月黑风高的,设计课前夜,思考着那地段旧城改造方案。忆,走街串巷,曲径通幽,坡顶小房,别有一番风味。要表现旧城风貌,美其名曰城市肌理,实为地段建模的各种坡顶小房。然,数GoogleEarth小房数,发现三两公顷几万屋顶,是以,卒……
好不易,得测绘CAD图纸,乍眼一看,规整的小房子,一个个矩形,看上去很像回事嘛!
简单思考,先搞个四边形生成小房子再说!
遂有
15分钟迅速搞定。
从一个四边形,直接生成坡顶小房。
还能随机高度,设定坡度,哎呀,真是不能再沾沾自喜。于是想下一步就把CAD测绘图中的方块选中输入进去即可!胜利在望
然而,现实是骨感的
CAD图粗看如西施,细看……混乱不堪,惨不忍睹,不忍直视。根本无法直接使用。遂,起意开发一gh电池,欲解决此问题。然而难度之大,旷日之持久,debug时间之长,版本更迭之多,让人崩溃。bug的点:
1. 重复的线,小碎线,不连续的线,不垂直的角,不闭合的矩形……
2. 动不动就几万条线要处理,再遍历几次……
3. 各种识别正方形的办法,我真的差点没有想导出图片然后cv一下再导回来。
终于认知到,建筑狗真的要做跨专业的事,还是各种基础知识薄弱,面壁我大学6年都学了什么???
然而,好的成果,都是时间堆出来的。经过我艰苦卓绝的努力,终于可以放出来了!
加速的图,看上去是不是很爽?其实还是要算个两分钟的。
通过分片区搜索,来缩小解空间,提高搜索效率。加快运算速度,同时还能防止卡死,防止闪退,回避局部bug!哈哈哈哈,为自己机智开心一秒钟。
目标是识别区域中的方形的框框且内部有一条斜线的标记。经过n次反复实验,一个比较有效的算法原理如上图。
(10 < n < 20,具体记不清了)
最后,请看成果
(上半部分是CAD测绘图查找线稿的部分
(下半部分是四边形生成小房子的部分
(建议CAD导入Rhino后make2d处理一下
(我用的是Rhino6.10,低版本可能有问题。如果有,可以告知
当然,由于各种神奇的因素,还是有10%以下的房子不能识别。
如果有任何问题,欢迎后台问我哦,也可以加我微信 wucl12
最后,祝大家新年快乐。