Rhino(犀牛)中国技术支持与推广中心

标题: 用RhinoPython做椭圆表面上升斜线示例 [打印本页]

作者: Jorin    时间: 2013-8-30 10:05
标题: 用RhinoPython做椭圆表面上升斜线示例
本帖最后由 Jorin 于 2013-8-30 11:25 编辑

Ansen在Grasshopper板块帮助解决了椭圆表面上升斜线的问题,原帖如下:
http://bbs.rhino3d.asia/thread-23173-1-1.html
这里按照Ansen的思路,来一个RhinoPython的解决方案:
先上图:


代码在GH参数化控制:


具体的做法大家参考代码:
  1. import rhinoscriptsyntax as rs
  2. import math
  3. def creatEllipses(arrEllipses,trans,count):
  4.     ellipse=rs.AddEllipse(rs.WorldXYPlane(),10,6)
  5.     arrEllipses.append(ellipse)
  6.     translation=trans
  7.     for i in range(count-1):
  8.         arrEllipses.append(rs.CopyObject(ellipse,(0,0,translation)))
  9.         translation=translation+trans
  10.     return arrEllipses
  11. def addEndpointlist(arrEllipses,rotate,count):
  12.     p=rotate/count
  13.     s=0.0
  14.     def remain(x):
  15.         y=math.pi*2
  16.         if x<=y:
  17.             return x
  18.         else:
  19.             x=remain(x-y)
  20.             return x
  21.     for ellipse in arrEllipses:
  22.         rs.CurveSeam(ellipse,remain(s))
  23.         s=s+p
  24.     return arrEllipses
  25. def divideEllipses(arrEllipses,seg):
  26.     arrPoints=[]
  27.     for ellipse in arrEllipses:
  28.         points=rs.DivideCurve(ellipse,seg)
  29.         arrPoints.append(points)
  30.     return arrPoints
  31. def  ToggleListDimension(inlist):
  32.     return ([ [row[col] for row in inlist] for col in range(len(inlist[0]))])
  33. def addCurvemine (arrPoints):
  34.     arrCurves=[]
  35.     for points in arrPoints:
  36.         curve=rs.AddCurve(points)
  37.         arrCurves.append(curve)
  38.     return arrCurves
  39. def addPipemine(arrCurves,radius):
  40.     arrPipes=[]
  41.     for curve in arrCurves:
  42.         pipe=rs.AddPipe(curve,0,radius)
  43.         arrPipes.append(pipe[0])
  44.     return arrPipes
  45. def main():
  46.     arrEllipses=[]
  47.     trans=4
  48.     count=8
  49.     seg=10
  50.     rotate=4
  51.     arrPoints=[]
  52.     radius=0.3
  53.     arrPipes=[]
  54.     arrEllipses=creatEllipses(arrEllipses,trans,count)
  55.     arrEllipses=addEndpointlist(arrEllipses,rotate,count)
  56.     arrPoints=divideEllipses(arrEllipses,seg)
  57.     arrPoints=ToggleListDimension(arrPoints)
  58.     arrCurves=addCurvemine(arrPoints)
  59.     arrPipes=addPipemine(arrCurves,radius)
  60. if __name__=="__main__":
  61.     main()
复制代码
[/hide]
以上代码稍做修改,就可以放如GHpython中,进行参数化的控制,如图:


作者: 深蓝Ansen    时间: 2013-8-30 10:54
每一个强大的电池背后都有一堆伟大的代码,支持!
作者: yesmely    时间: 2013-8-30 12:58
本帖最后由 yesmely 于 2013-8-30 14:47 编辑

用这省事多了
作者: Ultrawave    时间: 2013-8-30 15:41
学习一下
作者: 筑梦NARUTO    时间: 2013-8-30 20:59
学习学习
作者: 筑梦NARUTO    时间: 2013-8-30 21:04
学习学习了,还是希望跟我一起读RHIONPYTHON继续更新
作者: panaone    时间: 2013-8-30 21:06
来学习了
作者: Jorin    时间: 2013-8-30 23:56
筑梦NARUTO 发表于 2013-8-30 21:04
学习学习了,还是希望跟我一起读RHIONPYTHON继续更新

感谢关注,近期将有连续的更新,希望继续关注。
作者: sunrise10282    时间: 2013-8-31 12:03
谢谢分享
作者: sunrise10282    时间: 2013-8-31 12:23
学习了 谢谢Jo大分享,还想请教如何修改,才能使代码能在ghpython中正常运行?copy代码进如ghpython,修改了slider的typle貌似也还不行。
作者: LoveQ.ACK    时间: 2013-9-1 00:03
这个代码是怎么用的呀
作者: 筑梦NARUTO    时间: 2013-9-1 23:53
Jorin 发表于 2013-8-30 23:56
感谢关注,近期将有连续的更新,希望继续关注。

会的,持续关注中
作者: maniux    时间: 2013-9-2 23:38
看看rhino python。
作者: 漩涡小楷    时间: 2013-9-9 15:23
QIUKAN
作者: Jorin    时间: 2013-9-13 13:56
sunrise10282 发表于 2013-8-31 12:23
学习了 谢谢Jo大分享,还想请教如何修改,才能使代码能在ghpython中正常运行?copy代码进如ghpython,修改了 ...

看这里 http://bbs.rhino3d.asia/thread-23186-1-1.html
作者: wangjunxiong    时间: 2013-9-14 23:04
楼主给力呀

作者: AK_arch    时间: 2013-9-15 19:52
代码确实相当强大    就是不知道从何学起
作者: Jorin    时间: 2013-9-15 21:00
AK_arch 发表于 2013-9-15 19:52
代码确实相当强大    就是不知道从何学起

http://bbs.rhino3d.asia/thread-22775-1-1.html
作者: CTW    时间: 2013-9-16 11:35

作者: 二十八画生    时间: 2013-9-20 10:49
正在学习python
作者: zhuguowen11    时间: 2013-9-20 17:43
谢了
作者: artrustee    时间: 2013-9-20 23:02
这个是不是用打包也可以做呀?
作者: fucksb    时间: 2013-9-21 00:14
每一个强大的电池背后都有一堆伟大的代码,支持!
作者: panjunjue    时间: 2013-9-23 07:31
学习一下!!!
作者: Jessesn    时间: 2013-9-23 08:37
artrustee 发表于 2013-9-20 23:02
这个是不是用打包也可以做呀?

完全可以, Ansen版主的基础上做成打包即可。
作者: yuzhongxiashuai    时间: 2013-10-8 07:51
感谢分享,十分有用
作者: jasonroc11    时间: 2013-10-13 20:51
支持一个,学学
作者: 刑天135    时间: 2013-10-18 17:02
伟大的 背后 很牛B
作者: lpk491364070    时间: 2013-10-22 09:47
学习
作者: 刘璟    时间: 2013-10-24 10:30
很强大,谢谢分享
作者: 刘璟    时间: 2013-10-24 13:39
很开拓思路
作者: ddhvdf    时间: 2013-10-29 19:44

球面上的旋转和平面上的旋转 所有交角都正交

作者: luyangbi157    时间: 2013-10-30 22:25
xuexixuexi.................
作者: 完美主义    时间: 2013-11-8 20:54
谢谢分享!

作者: 深蓝Ansen    时间: 2013-11-11 13:19
ddhvdf 发表于 2013-10-29 19:44
球面上的旋转和平面上的旋转 所有交角都正交

想要表达什么?
作者: lock794779857    时间: 2013-11-24 21:57
感谢分享,看看代码
作者: 明茎遥香    时间: 2013-11-30 09:42
看看怎么做的

作者: ideacco    时间: 2013-12-13 09:47
如何实现的?谢谢帮助
作者: 筑梦NARUTO    时间: 2014-1-27 17:59
J大今天试了下圆管。但没反应啊。这是为啥呢,希望J大给予解答,非常感谢

QQ图片20140127175819.jpg (313.97 KB, 下载次数: 89)

QQ图片20140127175819.jpg

作者: dearlu88    时间: 2014-1-28 10:57
好厉害啊,太牛逼了
作者: ddhvdf    时间: 2014-1-30 11:37
本帖最后由 ddhvdf 于 2014-1-30 11:40 编辑
深蓝 发表于 2013-11-11 13:19
想要表达什么?

螺旋线事实上 不是一个特定的曲线类型  只是带有螺旋属性的曲线 生产方法有无限多种 是无法通过螺旋上升 来得到具体的生成方法  很多看上去 很接近的螺旋线 很可能根本就是 完全不一样的东西 我示例了 斜驶线  任意保形投影 都能保角  而等距螺线虽然很像 但做不到这一点 所以 他说的螺旋线到底是怎样的 得说清 然后 再回到 具体的方法 不过如果是圆柱体 就没有这问题而已罢了  因为 圆柱式单曲表面 曲面纹理映射 可以 交角不变 所以没有正交化这么一个需求
作者: zw782007    时间: 2014-3-6 22:38
谢谢分享学习

作者: xiezhaoyang    时间: 2014-4-8 19:33
看看......
作者: budingbaobei716    时间: 2014-5-3 00:41
好好徐诶学习
作者: xh007    时间: 2014-6-3 16:18
谢谢分享
作者: GMF    时间: 2014-6-24 10:06
谢谢分享
作者: fourph    时间: 2014-6-29 14:01
尽情享受有中文的RhinoPython吧!!!
作者: zzkusturica    时间: 2014-7-14 16:18
受教了! 谢谢!
作者: 半醉earth    时间: 2014-9-6 16:21
来学习伟大的代码
作者: 悲剧的懒猫    时间: 2014-9-9 08:30
学习看看
作者: huyanhe    时间: 2014-10-8 19:56
学习了 谢谢Jo大分享
作者: BAIHU00001    时间: 2014-12-4 16:27
感谢楼主的分享,学习一下

作者: idzt    时间: 2014-12-11 09:53
学习...........
作者: yxmuu    时间: 2014-12-15 19:02
学习了      
作者: WANGS    时间: 2015-1-19 13:23
跟大神学习一下
作者: sunrise10282    时间: 2015-2-13 11:04
谢谢分享
作者: 我的千岁寒    时间: 2015-3-24 14:12
参考一下代码
作者: Mirrorman    时间: 2015-4-17 13:30
想看看里面数据结构怎么处理的
作者: 诸葛四郎    时间: 2015-4-19 21:00
感谢分享
作者: mzl911    时间: 2015-6-23 10:24
赞大神
作者: 筑梦NARUTO    时间: 2015-7-20 22:51
artrustee 发表于 2013-9-20 23:02
这个是不是用打包也可以做呀?

http://bbs.rhino3d.asia/thread-26168-1-1.html也可以像这样利用GhPython电池直接打包
作者: 筑梦NARUTO    时间: 2015-7-20 22:55
筑梦NARUTO 发表于 2014-1-27 17:59
J大今天试了下圆管。但没反应啊。这是为啥呢,希望J大给予解答,非常感谢

curve = rs.coercecurve(curve)需要加这么一句解决这个问题。因为gh是调用rhinocommon写的,所以gh的电池类型都是geo,而rs生成的基本都是guid所以需要转换一下,把guid转换成geo
作者: chrislv0707    时间: 2015-7-30 08:59
先回复看细节
作者: 猫熊    时间: 2015-8-14 15:38
必须学习一下
作者: yong+tse    时间: 2015-11-12 09:14
学习中!!!!!!!!!!!!!!!
作者: ly871108    时间: 2016-1-13 13:57
感谢分享……………………
作者: boboco    时间: 2016-6-19 04:22
感謝大大的分享 開始玩python 很有幫助!!!
作者: boboco    时间: 2016-6-19 04:25
感謝大大的分享
開始玩python 很有幫助!!!
作者: kejh    时间: 2016-6-21 12:51
不错,学习一下哈!
作者: misilx    时间: 2016-11-29 18:09
厉害,这个确实方便很多
作者: GREAT123456    时间: 2016-12-2 11:33
学习下,还不知道咋个用python分组哦
作者: UAS-tribe    时间: 2017-1-23 10:25
查看如何in噢代码
作者: zst0000    时间: 2017-6-7 10:58
学习一下




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2