8.2 Rhino里的物体¶
Rhino里的所有物体都由两个部分组成:几何部分和属性部分。几何类型有很多种,但是属性基本上都遵循同样的格式。属性用于存储信息,比如物体名称、颜色、图层、等级曲线密度、线型等等。对几何类型来说不是所有属性都有意义,比如说点就没有使用线型或材质属性,但并不影响它存储这些属性的能力。大多数属性或特性都很简单,可以随意读取和赋予给物体。
上表列出了插件开发者可以访问的大部分属性和特征。它们大部分封装在RhinoScriptSyntax模块中,某些特征在当前暂时不可访问,因为用户自定数据元素比较特殊。我们会在基本几何章节过后再细说用户数据。
下面一小段程序在对话框展示一个物体的一些属性。并没有什么值得激动的东西,所以就略过不一一解释每行了。
import rhinoscriptsyntax as rs
def displayobjectattributes(object_id):
source = "By Layer", "By Object", "By Parent"
data = []
data.append( "Object attributes for :"+str(object_id) )
data.append( "Description: " + rs.ObjectDescription(object_id))
data.append( "Layer: " + rs.ObjectLayer(object_id))
data.append( "MaterialSource: " + str(rs.ObjectMaterialSource(object_id)))
name = rs.ObjectName(object_id)
if not name: data.append("<Unnamed object>")
else: data.append("Name: " + name)
groups = rs.ObjectGroups(object_id)
if groups:
for i,group in enumerate(groups):
data.append( "Group(%d): %s" % i+1, group )
else:
data.append("<Ungrouped object>")
s = ""
for line in data: s += line + "\n"
rs.EditBox(s, "Object attributes", "RhinoPython")
if __name__=="__main__":
id = rs.GetObject()
displayobjectattributes(id)
