NCF参数化建筑论坛

标题: 如何将GHpython的输出成具体的Geometry而非GUID [打印本页]

作者: 大学英语    时间: 2020-2-27 19:35
标题: 如何将GHpython的输出成具体的Geometry而非GUID
[attach]52808[/attach]
1.如图,输出的点为GUID ,但我想变成(x,y,z)这种形式
2.而且如果为列表的话,也是GUID形式,这样可读性很差。

小弟刚接触GHpython,遇到困难,还请各位大神赐教!!!

作者: fydlgg_1993    时间: 2020-2-28 15:50
本帖最后由 fydlgg_1993 于 2020-2-28 15:54 编辑

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

作者: 月之眼    时间: 2020-2-28 18:55
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)
复制代码
[attach]52809[/attach]







欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2