×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

个人见解GHA开发的重要性

发布于 2014-11-3 2 点赞 7 评论 9269 浏览

本帖最后由 huaxiamengqing 于 2014-11-3 13:13 编辑

    在国内搞gha开发的人很少,很多人都劝我说国内没市场,搞了没什么意义,自己用就行了。
    但我却不这样认为,学习软件如果你不搞到底层,你就是学了个皮毛,可悲的是,很多认为这些皮毛就是精通了,就够用了,就可以自称大神。在国内的确是这样,因为大部分人都只理解到这个程度,相比更大大部分人不懂当然可以称之为大神--,这正验证了我喜欢的一句话“不是无知,是对无知的无知才是知的死亡!"。
实际上何止是Grasshopper,我就拿大家都熟悉的CAD说事,能到开发层面的设计人员有多少?或许你说明经论坛里面很多,但是就我的认知范围内,我们进入国内500强的大公司真正懂CAD开发的人不到5%。或许你在笑,哈哈,正好我都用不上CAD这些东西。但是你总要用到Excel,Word吧,懂VBA开发的,数据库开发的财务人员有多少我不清楚,但是我知道我们的财务总监是懂的。
   在这个大学生遍地的年代,在这个大部分人还在用CAD勤勤恳恳画图,自觉对比以前多么方便的年代,如果我们懂一种开发语言,那该是有多么大的优势啊!
或许你不以为然,但国外已经将编程用到了很多领域,而我们很多领域的技术专家却什么都不懂....举个例子论坛里面的DanielJin还是个大四的学生就创办了自己的gh网站,开设了500多人的QQ群,这对于一个大四的学生来说是很难得的,我很困惑,因为中国式的教育教出来的不应该是这样的学生,我问他为何有如此高的认知度,他说他在国外留学过两年,发现很多人都在用。一语道破,真希望国内多出现点这样的人。很多NCF的代码大神,都在国外留学过。到这里还看不明白吗?如果你不懂代码,那么就跟着人家屁股后走吧,今天一个同事问我,gh电池的精度是否为犀牛本身的精度,我说不一定,人家怎么写你怎么用。我们今天来探讨一下,下图的切割精度,看看后台究竟是如何写的。
aaa.jpg
目测上图,一个BrepBrep相交线电池,和一个SolidBoolean电池以及TrimSolid电池出现了矛盾,图中明显相交线和切割边缘没有重合(很多人猜是精度问题,但这里是显示问题,下面代码将说明精度没有任何问题)。
我们先来看看SolidBoolean电池的精度,
电池里面有这样一段代码:

  1. Dim collection As Brep() =Brep.CreateBooleanDifference(New Brep() { brep }, New Brep() { cutter },GH_Component.DocumentTolerance)
  2. If ((collection Is Nothing) OrElse (collection.Length = 0)) Then
  3. list.Add(brep)
  4. Else
  5. list.AddRange(collection)
  6. End If
复制代码

我们可以看到布尔用到的精度为GH_Component.DocumentTolerance这个东西我们用脚本代码,就是脚本电池可以访问的姑且叫他精度DT吧,
再看一下Trim Solid电池

  1. Dim intersectionTolerance As Double =GH_Component.DocumentTolerance
  2. Dim data As New List(Of Brep) From { destination }
  3. Dim brep2 As Brep
  4. For Each brep2 In list2
  5. If (Not brep2 Is Nothing) Then
  6. Dim list3 As New List(Of Brep)
  7. Dim brep3 As Brep
  8. For Each brep3 In data
  9. Dim brepArray As Brep() = brep3.Split(brep2, intersectionTolerance)
  10. If ((brepArray Is Nothing) OrElse (brepArray.Length = 0)) Then
  11. list3.Add(brep3)
  12. Else
  13. Dim brep4 As Brep
  14. For Each brep4 In brepArray
  15. If Not Me.IsInside(brep4, brep2, intersectionTolerance) Then
  16. list3.Add(brep4)
  17. End If
  18. Next
  19. End If
  20. Next
  21. data = list3
  22. End If
  23. Next
复制代码

精度同样是DT.
然后我们看一下BrepBrep相交线的代码
  1. If Not Intersection.BrepBrep(destination, brep2,GH_Component.DocumentTolerance, intersectionCurves, intersectionPoints) Then
  2. MyBase.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Intersectionfailed")
  3. Else
  4. If ((Not intersectionCurves Is Nothing) AndAlso (intersectionCurves.Length >0)) Then
  5. Dim data As Curve() = Curve.JoinCurves(intersectionCurves, (0.5 *GH_Component.DocumentTolerance))
  6. If ((Not data Is Nothing) AndAlso (data.Length > 0)) Then
  7. DA.SetDataList(0, data)
  8. Else
  9. DA.SetDataList(0, intersectionCurves)
  10. End If
  11. Else
  12. DA.SetDataList(0, Nothing)
  13. End If
  14. DA.SetDataList(1, intersectionPoints)
  15. End If
复制代码


我们发现,相交用的精度也是DT
Intersection.BrepBrep(destination,brep2, GH_Component.DocumentTolerance, intersectionCurves, intersectionPoints)
接下来我们看
Dim data As Curve() =Curve.JoinCurves(intersectionCurves, (0.5 * GH_Component.DocumentTolerance))
获取相交线组合0.5*DT,我们知道,精度越小越好,所以这里作者别具用心的将精度用了0.5倍,保证组合的线不会出问题。假设我们的DT=1mm那么上面的相交切割都不会出现1mm一下的线,那么组合的时候使用0.5mm的精度就可以完全不出现误差了。
   我们继续看这个精度到底是什么精度,继续深入看代码,发现精度原来来自当前文档。
  1. <DebuggerStepThrough> _
  2. Protected Shared Function DocumentTolerance() As Double
  3.     Return RhinoDoc.ActiveDoc.ModelAbsoluteTolerance
  4. End Function

复制代码

当前文档的模型绝对精度。如下图和犀牛文档对应的位置
QQ截图20141103125052.png
“单位”的意思就是你所建模型的默认单位,这里是mm,如果有些东西切割爆红,你可以在这里设置成1e-9试试,如果可以,说明里面有小于这个单位的物件。

很多人只会使用软件,这里作者如果出现一个错误,导致我们在使用的时候出现bug,那么我们这些使用者就束手无策了。希望国内更多的人加入开发的行列,作为一个创造者,而非照本宣科的使用者。
0.jpg (53.88 KB, 下载次数: 0)
下载附件 保存到相册 设为封面
2014-10-10 00:10 上传




欢迎点击链接加入QQ群【中国RhinoGH插件社区1】:http://jq.qq.com/?_wv=1027&k=S0ALQZ
群号为:82367748

----------------------------------------------------------------------------------------------
下面链接是我老婆在起点写的小说,有在起点上看小说的朋友希望能帮忙捧捧场,谢谢啦。
http://www.qdmm.com/MMWeb/2981855.aspx

-----------------------------------------------------------------------------------------------
参与人数 1经验 +10 大洋 +10 收起 理由
wyx10022 + 10 + 10 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

huaxiamengqing | 设计助理 | 发表于 2014-12-17 22:54:17
蒯鼎 发表于 2014-12-17 15:23
楼主指的是BIM GeomGym IFC的 作者吗?我记得他本身就是计算机编程专业的,还是双硕士好像,也算是本业, ...

是的,是Jon Mirtschin,他是澳大利亚人,人很不错,有什么问题都会帮忙解决,之前跟他聊了很IFC方面的东西。仰慕国外各位大牛对建筑软件行业的推进,我一定要努力多为中国在这方面的发展做一些贡献。
1 回复

举报

wyx10022 | 网校特聘讲师 | 发表于 2014-11-3 16:14:43
本帖最后由 wyx10022 于 2014-11-3 16:17 编辑

支持代码研究!
楼主对技术的研究热心一直让大家关注,也很钦佩,
但目前的现实仍然需要理性对待,
目前非线性、参数化设计的建筑,在国内市场并非主流,
大多数建筑师都是以做方盒子、artdeco、解构主义、现代主义风格的建筑为主,
而多数人也是为了生活,更现实一点,叫做谋生……
参数化的普及仍然需要一些时间,像很多设计师,他们能把
grasshopper认真学好已经难得了,能深入代码的人则非常珍贵,他们的时间真的很少……

设计院主流软件都是天正cad、archicad、revit等软件,rhino+grasshopper紧随其后,就光学这些软件,已经需要很多年,如果再让设计师们去研究代码,他们体力和精力上会吃不消的……

而对于学生群体和研发机构来说,还是存在很多潜在代码高手的,毕竟代码门槛较高,
像我一样工作多年的设计师再去学习已经有心无力,表示惭愧……

再次支持楼主的热情与科普……

0 回复

举报

huaxiamengqing · 发表于 2014-11-3 18:07 点评

多谢王老师点评,不清楚是教育制度问题,还是环境氛围问题,国外的同一开发者竟然能同时开发Rhino,gh,Tekla,Sap2000,Revit等。国外的网站上开放的插件也琳琅满目,而国内这块却少有人涉及。王老师说的也很有道理,很

huaxiamengqing | 设计助理 | 发表于 2014-11-3 18:07:06
wyx10022 发表于 2014-11-3 16:14
支持代码研究!
楼主对技术的研究热心一直让大家关注,也很钦佩,
但目前的现实仍然需要理性对待,

多谢王老师点评,不清楚是教育制度问题,还是环境氛围问题,国外的同一开发者竟然能同时开发Rhino,gh,Tekla,Sap2000,Revit等。国外的网站上开放的插件也琳琅满目,而国内这块却少有人涉及。王老师说的也很有道理,很多国外东西翻译过来都要好多年,何况说去在熟练的基础搞开发。路漫漫其修远兮,吾将上下而求索--
0 回复

举报

蒯鼎 · 发表于 2014-12-17 15:23 点评

楼主指的是BIM GeomGym IFC的 作者吗?我记得他本身就是计算机编程专业的,还是双硕士好像,也算是本业,而我作为一名大五建筑学学生对gh略有研究,不得不说这方面的知识 确实没有经历去学习,你想我们本身专业动不

蒯鼎 | 实习生 | 发表于 2014-12-17 15:23:47
huaxiamengqing 发表于 2014-11-3 18:07
多谢王老师点评,不清楚是教育制度问题,还是环境氛围问题,国外的同一开发者竟然能同时开发Rhino,gh,Tek ...

楼主指的是BIM GeomGym IFC的 作者吗?我记得他本身就是计算机编程专业的,还是双硕士好像,也算是本业,而我作为一名大五建筑学学生对gh略有研究,不得不说这方面的知识 确实没有经历去学习,你想我们本身专业动不动就八周的大作业,又各种课程掺杂,我基本是其他所有课只求及格,只顾专业课才能有时间来学这些,一直有学习代码的冲动,却每次盯着python的书愣神。我实习了更是这样,设计院已经工作了的别说gh了,revit都学不顺溜,更别提代码了,所以现在才会有那么多bim咨询公司等等,我倒是觉得楼主可以开个咨询公司,毕竟术业有专攻,虽然建筑学转行搞开发,搞代码的也有,比如王大川和王振飞,而据我所知大川是高中就和同桌一起研究代码,每天下课在桌子上手写·····王振飞是荷兰留学,人家本来就研究这个课题,他的毕业设计也是碉堡了,全代码衍生整个规划设计,但这样的终究是少数,我的舍友在实习单位每天十点多才回···别提学别的了。所以也是国内现状,我也只能祈祷在毕业前能掌握起码python一门语言,别提c++和vb了,毕竟这些并不能像考证什么的那样之间对工作学习有加成,我们专业就是去学个手绘也起码可以帮助考研,学校就更不用指望了,一般的学校都还在教3d,su都不教,别说rhino和gh了,所谓的大学,也就是大家自己学。所以这个要不是兴趣,还真搞不下来。楼主这样的奇才真是难得,我倒是希望能更多地推广这些,或者和计算机专业结合,或者开设个计算机建筑专业或者课程什么的,兴许会好点,当然也只是一厢情愿了。
0 回复

举报

大伯 · 发表于 2015-1-29 17:25 点评

这不正是CAAD(Computer Aided Architecture Design)所在啊

huaxiamengqing · 发表于 2014-12-17 22:54 点评

是的,是Jon Mirtschin,他是澳大利亚人,人很不错,有什么问题都会帮忙解决,之前跟他聊了很IFC方面的东西。仰慕国外各位大牛对建筑软件行业的推进,我一定要努力多为中国在这方面的发展做一些贡献。

大伯 | 实习生 | 发表于 2015-1-29 17:25:15
蒯鼎 发表于 2014-12-17 15:23
楼主指的是BIM GeomGym IFC的 作者吗?我记得他本身就是计算机编程专业的,还是双硕士好像,也算是本业, ...

这不正是CAAD(Computer Aided Architecture Design)所在啊
0 回复

举报

carborone | 设计助理 | 发表于 2019-4-23 16:44:55
很难受,2017年大四才知道这个软件,也深入了解过这个软件,前景广阔,无奈即将毕业,各种奔波,时隔两年,终于趋于稳定,能有时间和空间静心学习它。楼主说的情况,我是在学su的时候深有体会,su高度依赖插件,但是国内并没有太多好的插件,都是从国外论坛和网站上扒下来,翻译加修改,然后卖钱。楼主真的太难得了,国内真的很少有建筑领域的深入从业者去了解设计的需求,从而开发合适的软件,都是盗版国外,必然水土不服,而且工作两年,真心觉得建筑行业的落后与杂乱,工作内容重复与无用功折磨的心力交瘁,真的难有精力做贡献,大多忙于生计。
0 回复

举报

jask88 | 设计师 | 发表于 2022-7-12 08:52:26
很好的说明,支持一波
0 回复

举报