NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 122|回复: 3

[心得体会] 【Python】如何间隔选择曲线控制点

[复制链接]
发表于 2018-1-7 21:01:52 | 显示全部楼层 |阅读模式
本帖最后由 月之眼 于 2018-1-8 13:53 编辑

【版权声明】
作者:月之眼
本文由月之眼原创,首发于大水牛平台
如需转载请联系作者
如果觉得教程不错,欢迎分享
关注“大水牛参数化设计”微信平台,获取更多资源。
【正文】
这是回答Rhino原厂一位网友的问题,有兴趣的可以点击查看原文,源文件也在Rhino原厂论坛上。


                               
登录/注册后可看大图
这个功能在rhino中并没有直接的命令可以做,但是我们可以借助RhinoPython来写一个简单的脚本,先来看看效果。

                               
登录/注册后可看大图

                               
登录/注册后可看大图
来简单翻译一下代码的意思。
  • 1-2:第一句是使rhinopython能输入中文的语句,写法有好几种,我比较习惯现在这种写法,有兴趣的可以百度下
  • 3:导入写脚本需要的模块,这里我们引用rhino提供的rhinoscriptsyntax模块
  • 5:使用rhinoscriptsyntax模块下的GetObject()函数选取需要选取控制点的曲线
  • 6-8:第6句做一个判断,确保选取物件成功再进入下面的代码,第7句是不显示代码执行的过程,第8句打开曲线的控制点。
  • 9:获取曲线控制点的个数
  • 10:让用户输入一个数字,作为间隔选择的间隔数,默认值是2
  • 11-12:第11句是以间隔循环控制点个数,第12句是根据循环出来的i,选择控制点。

                               
登录/注册后可看大图
运行上面的代码就可以实现这个效果了。

                               
登录/注册后可看大图
然后我们可以用操作轴对控制点进行缩放复制。

                               
登录/注册后可看大图
然后我们可以对最下面的线,间隔2和3选择控制点,并缩放一下做2个断面线,再loft就可以做出这个效果了。

                               
登录/注册后可看大图

                               
登录/注册后可看大图
原代码:
  1. #coding=utf-8
  2. #作者:月之眼
  3. import rhinoscriptsyntax as rs

  4. obj = rs.GetObject("需要间隔选取控制点的曲线", rs.filter.curve)
  5. if obj:
  6.     rs.EnableObjectGrips(obj)
  7.     grips_count = rs.ObjectGripCount(obj)
  8.     count = rs.GetInteger("间隔数",2,1,grips_count-1)
  9.     for i in xrange(0,grips_count,count):
  10.         rs.SelectObjectGrip(obj,i)
复制代码



更多内容欢迎关注大水牛的微信公共号:
微信图片_20170516204500.png



发表于 2018-1-7 22:05:54 | 显示全部楼层
月大  图挂了!

点评

我这里好的呀  详情 回复 发表于 2018-1-7 23:48
 楼主| 发表于 2018-1-7 23:48:43 | 显示全部楼层
no.seven 发表于 2018-1-7 22:05
月大  图挂了!

我这里好的呀
发表于 6 天前 | 显示全部楼层
受益了,多谢分享!

小黑屋|手机版|NCF参数化建筑论坛 ( 辽ICP备12011358号-1   辽公网安备 21020302000097号

GMT+8, 2018-1-17 11:13 , Processed in 0.306311 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表