尝试将rhino一个图层中的所有物件导入gh中
import rhinoscriptsyntax as rs
import Rhino
import scriptcontext as sc
sc.doc=Rhino.RhinoDoc.ActiveDoc
objt=sc.doc.Objects
a=Rhino.DocObjects.Tables.ObjectTable.FindByLayer(objt,‘Default’)
代码的输出结果为Goo,不知道如何转换成gh中的物件了
十分感谢,确实实现了功能
goo的类型需要转化为物体,有三个思路
。
。
。
一个是用goo.Id直接拿到物体的guid后输出
guid运算器在GH内可以链接Curve或者Surface等等,会做自动的转化
但是guid转化为不同物体会耗费额外的时间。
。
。
。
另一个方法是直接从goo获取几何属性
缺点就是出来的物体不会带着犀牛文档内的guid,而只是几何信息。
。
。
。
建议用下面第三个方法。用GH_Curve类型
可以确保出来的物体和geometry pipeline一样都是带guid的Referenced Curve
缺点就是不同的物体转化需要用不同的类型
import Rhino
import Grasshopper.Kernel.Types as GHType
doc = Rhino.RhinoDoc.ActiveDoc
goo_list = Rhino.DocObjects.Tables.ObjectTable.FindByLayer(doc.Objects,N)
output_list = []
for goo in goo_list:
output_list.append(GHType.GH_Curve(goo.Id))
A=output_list
代码可以适当优化
import Rhino
import Grasshopper.Kernel.Types as GHType
goo_list = Rhino.RhinoDoc.ActiveDoc.Objects.FindByLayer(N)
A = [GHType.GH_Curve(goo.Id) for goo in goo_list]
最后注意以上三个办法都无法做到geometry pipeline的动态监控图层变化
1 个赞
十分感谢,太详尽了,老师费心了
ID.gh (3.1 KB)
先提供一个C#电池解决一下楼主的问题
一般我会用C#处理这类非数据和算法问题(ID,图块图层,几何相关)
用python处理数据和算法(计算,数据结构,字典等)
@Jorin @NARUTO
两位版主,我刚试了一下,goo.HasId属性是False
python处理这个这触及到了我的知识盲区。
万分感谢老师的回复,成功用老师的电池解燃眉之急。