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

标题: 【已解决】怎么把控制点拉回到曲面上。不要重新成体 [打印本页]

作者: 太平公主主    时间: 2017-2-22 14:00
标题: 【已解决】怎么把控制点拉回到曲面上。不要重新成体
本帖最后由 筑梦NARUTO 于 2017-2-22 17:36 编辑

大神帮我解决这个问题 ,怎么把控制点拉回到曲面上。不要重新成体。也不要手动去拉

控制点拉回曲面.png (50.96 KB, 下载次数: 73)

怎么把控制点拉回曲面上,不要重新成体

怎么把控制点拉回曲面上,不要重新成体

作者: 筑梦NARUTO    时间: 2017-2-22 14:25
本帖最后由 筑梦NARUTO 于 2017-2-22 15:55 编辑

不要重新成体是啥意思,你能示范一下你要的结果么我是不是给你发过一段代码用于移动控制单的呀
  1. #coding=utf-8
  2. import Rhino.Geometry as rg
  3. import Rhino as r
  4. import rhinoscriptsyntax as rs
  5. import scriptcontext as sc

  6. result,grips = r.Input.RhinoGet.GetGrips("选择要移动的控制点")
  7. surface = rs.GetObject("选择用于干扰的曲面",rs.filter.surface)
  8. dis = {}
  9. if (result == r.Commands.Result.Success and surface):
  10.     geo_surface = sc.doc.Objects.Find(surface).Geometry
  11.     for i in grips:
  12.         oid = i.OwnerId
  13.         obj = sc.doc.Objects.Find(oid)
  14.         if (obj and dis.has_key(oid)==False):
  15.             dis.Add(oid,obj)
  16.         Bool = geo_surface.Faces[0].DuplicateSurface().ClosestPoint(i.Geometry.Location)
  17.         if Bool[0]:
  18.             cpt = geo_surface.Faces[0].DuplicateSurface().PointAt(Bool[1],Bool[2])
  19.             i.Move(cpt)
  20. for guid in dis:
  21.     if dis[guid]:
  22.         sc.doc.Objects.GripUpdate(dis[guid],True)
  23. sc.doc.Views.Redraw()
复制代码



作者: 太平公主主    时间: 2017-2-22 16:48
本帖最后由 太平公主主 于 2017-2-22 16:51 编辑

就是把选择的控制点拉到曲面上,你的代码是拉到一条曲线上,改下应该可以的,但人不会写代码,更不会改啊,大神帮再改下好吗,我都弄了好几天,弄不出结果,效果就是像下面这张图
file:///C:/Users/Administrator/Desktop/QQ%E6%88%AA%E5%9B%BE20170222164108.png

QQ截图20170222164108.png (93.07 KB, 下载次数: 64)

QQ截图20170222164108.png

作者: 太平公主主    时间: 2017-2-22 16:53
本帖最后由 太平公主主 于 2017-2-22 16:57 编辑
筑梦NARUTO 发表于 2017-2-22 14:25
不要重新成体是啥意思,你能示范一下你要的结果么我是不是给你发过一段代码用于移动控制单的呀

就是把选择的控制点拉到曲面上,你的代码是拉到一条曲线上,改下应该可以的,但我不会写代码,更不会改啊,大神帮再改下好吗,我都弄了好几天,弄不出结果,效果就是像上面面这张图,不要重新成体的意思。就是在原来的物体是拉控制点,不要用再抽点重新生成一个物体,万分感谢
作者: 太平公主主    时间: 2017-2-22 16:59
筑梦NARUTO 发表于 2017-2-22 14:25
不要重新成体是啥意思,你能示范一下你要的结果么我是不是给你发过一段代码用于移动控制单的呀

哦,我仔细看了一下代码,才发现你已经改过了,我再试试看看
作者: 太平公主主    时间: 2017-2-22 17:22
筑梦NARUTO 发表于 2017-2-22 14:25
不要重新成体是啥意思,你能示范一下你要的结果么我是不是给你发过一段代码用于移动控制单的呀

你的代码非常好,我试过成功了,你是RHINO界大神人物啊,非常感谢你,
作者: 魔龙教主    时间: 2017-2-22 19:21
拉回和投影不能针对控制点,这段代码是解决这个问题吗?弱弱地问一句,这些代码是不是可以用巨集来运行?我想看看效果结果报错了,请问是什么原因呢

QQ截图20170222191725.jpg (88.48 KB, 下载次数: 61)

QQ截图20170222191725.jpg

作者: 筑梦NARUTO    时间: 2017-2-22 21:49
魔龙教主 发表于 2017-2-22 19:21
拉回和投影不能针对控制点,这段代码是解决这个问题吗?弱弱地问一句,这些代码是不是可以用巨集来运行?我 ...

最好用Rhinopython编辑器运行。或者把代码做成按钮运行。
不知道rhinopython的可以先看下jorin大大的视频教程http://bbs.rhino3d.asia/thread-22775-1-1.html
作者: 筑梦NARUTO    时间: 2017-2-22 21:49
魔龙教主 发表于 2017-2-22 19:21
拉回和投影不能针对控制点,这段代码是解决这个问题吗?弱弱地问一句,这些代码是不是可以用巨集来运行?我 ...

最好用Rhinopython编辑器运行。或者把代码做成按钮运行。
不知道rhinopython的可以先看下jorin大大的视频教程http://bbs.rhino3d.asia/thread-22775-1-1.html
作者: DAKA_Ye    时间: 2017-2-25 12:18
本帖最后由 DAKA_Ye 于 2017-2-25 13:39 编辑
筑梦NARUTO 发表于 2017-2-22 14:25
不要重新成体是啥意思,你能示范一下你要的结果么我是不是给你发过一段代码用于移动控制单的呀

可以把是投影效果的投影到曲线跟曲面的代码分别也发下吗?谢谢
作者: 筑梦NARUTO    时间: 2017-2-25 16:18
DAKA_Ye 发表于 2017-2-25 12:18
可以把是投影效果的投影到曲线跟曲面的代码分别也发下吗?谢谢

曲线的
  1. #coding=utf-8
  2. import Rhino.Geometry as rg
  3. import Rhino as r
  4. import rhinoscriptsyntax as rs
  5. import scriptcontext as sc

  6. result,grips = r.Input.RhinoGet.GetGrips("选择要移动的控制点")
  7. curve = rs.GetObject("选择用于干扰的曲线",rs.filter.curve)
  8. dis = {}
  9. if (result == r.Commands.Result.Success and curve):
  10.     geo_curve = sc.doc.Objects.Find(curve).Geometry
  11.     t = 0
  12.     for i in grips:
  13.         oid = i.OwnerId
  14.         obj = sc.doc.Objects.Find(oid)
  15.         if (obj and dis.has_key(oid)==False):
  16.             dis.Add(oid,obj)
  17.         Bool = geo_curve.ClosestPoint(i.Geometry.Location,t)
  18.         if Bool[0]:
  19.             cpt = geo_curve.PointAt(Bool[1])
  20.             i.Move(cpt)
  21. for guid in dis:
  22.     if dis[guid]:
  23.         sc.doc.Objects.GripUpdate(dis[guid],True)

  24. sc.doc.Views.Redraw()
复制代码

作者: DAKA_Ye    时间: 2017-2-25 17:28
筑梦NARUTO 发表于 2017-2-25 16:18
曲线的

非常感谢,请教下想改成垂直的投影,不是按法线的投影,该怎么改?
作者: 魔龙教主    时间: 2017-2-26 18:35
筑梦NARUTO 发表于 2017-2-22 21:49
最好用Rhinopython编辑器运行。或者把代码做成按钮运行。
不知道rhinopython的可以先看下jorin大大的视 ...

多谢指教,做成按钮还是提示未知指令,玩不来
作者: 魔龙教主    时间: 2017-2-26 18:38
筑梦NARUTO 发表于 2017-2-22 21:49
最好用Rhinopython编辑器运行。或者把代码做成按钮运行。
不知道rhinopython的可以先看下jorin大大的视 ...

多谢指教,做成按钮还是提示未知指令,玩不来
作者: 太平公主主    时间: 2017-2-28 10:13
本帖最后由 太平公主主 于 2017-2-28 10:16 编辑

发现一个问题,就是如果控制点不在自身的曲面上时,把控制点拉回到另一个曲面上,控制点贴在另一个曲面上了,但原来的面没贴上  ,这是这个小问题,希望大神改进
作者: 魔龙教主    时间: 2017-4-1 20:04
筑梦NARUTO 发表于 2017-2-22 21:49
最好用Rhinopython编辑器运行。或者把代码做成按钮运行。
不知道rhinopython的可以先看下jorin大大的视 ...

哈哈,我会了,谢谢你的代码,很好用




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