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。
看下面的案例,
#coding=utf-8
import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino.Geometry as rg
#用rhinocommon创建一个点(还没加guid)
pt1 = rg.Point3d(0,0,0)
print (type(pt1))
print (pt1)
#给pt1加上guid,显示在rhino视窗中
pt1_guid = sc.doc.Objects.AddPoint(pt1)
print pt1_guid
print type(pt1_guid)
#刷新一下rhino的视窗
sc.doc.Views.Redraw()
#用rs创建rhino视窗中的点,直接就是guid(因为开发者在定义这个函数时候加了生成guid)
pt2_guid = rs.AddPoint(10,10,10)
print (pt2_guid)
print type(pt2_guid )
#把guid转换成point3d
pt2 = rs.coerce3dpoint(pt2_guid)
print (type(pt2))
print (pt2)
复制代码
[attach]52809[/attach]
欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/)
Powered by Discuz! X3.2