NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16356|回复: 2
打印 上一主题 下一主题

[在线求助] 如何将GHpython的输出成具体的Geometry而非GUID

[复制链接]
跳转到指定楼层
1m
发表于 2020-2-27 19:35:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享
推荐
发表于 2020-2-28 18:55:09 | 只看该作者
1:你的理解在Rhino视窗中显示出来的物体都是具有Guid的。用rhinocommon创建出来的geometry都是在rhino的空间中,没在rhino的视窗中,得加上guid才能在视窗中显示。(打个比方就是rhinocommon创建好的物体就像生成好的产品还没加条形码(条形码也就像Guid),加了条形码才能出厂上架)2:理解了第一点,你的问题就可以解决了,你要输出的是point3d类型,所以可以用Rhino.Geometry.Point3d()直接创建,也可以用rs.coerce3dpoint()把guid的物体转化成point3d。

看下面的案例,
  1. #coding=utf-8
  2. import rhinoscriptsyntax as rs
  3. import scriptcontext as sc
  4. import Rhino.Geometry as rg

  5. #用rhinocommon创建一个点(还没加guid)
  6. pt1 = rg.Point3d(0,0,0)
  7. print (type(pt1))
  8. print (pt1)

  9. #给pt1加上guid,显示在rhino视窗中
  10. pt1_guid = sc.doc.Objects.AddPoint(pt1)
  11. print pt1_guid
  12. print type(pt1_guid)

  13. #刷新一下rhino的视窗
  14. sc.doc.Views.Redraw()


  15. #用rs创建rhino视窗中的点,直接就是guid(因为开发者在定义这个函数时候加了生成guid)
  16. pt2_guid = rs.AddPoint(10,10,10)
  17. print (pt2_guid)
  18. print type(pt2_guid )


  19. #把guid转换成point3d
  20. pt2 = rs.coerce3dpoint(pt2_guid)
  21. print (type(pt2))
  22. print (pt2)
复制代码

guid.py

684 Bytes, 下载次数: 1, 下载积分: 照度 -1 lux

售价: 1 lux照度  [记录]

2m
发表于 2020-2-28 15:50:20 | 只看该作者
本帖最后由 fydlgg_1993 于 2020-2-28 15:54 编辑

1.通过rs.addpoint()功能可以生成具体的点。rs.PointCoordinates()可以返回具体的坐标。括号里面的参数用生成的GUID即可(rs指的是rhinoscriptsyntax)。2.可以将坐标编写成字典试试,或者列表嵌套,我也没想到更好的办法

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-26 22:57 , Processed in 0.184948 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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