CityEngine中的参数和属性以及通过属性筛选Object

CityEngine数据参数类型

CityEngine中有四种不同类型的参数:

1、Block Parameter------------作用于Blocks

2、StreetParameters----------作用于Graph Segments

3、IntersectionParameters--作用于Graph Nodes

CityEngine中的参数和属性以及通过属性筛选Object_第1张图片

4、RuleParameters------------作用于分配了Rule的shapes

数据参数数据源类型

这几种参数都可以指定不同的属性数据源,属性数据源类型有四种:

  1. Default
  2. Object
  3. User
  4. Layer

1、Default value指的是参数值的默认值,该值后面都会有一个括号标明为Default

2、Objectattribute value指的是Object的属性表中自带的属性值,只当Object attribute中包含于parameter的名称相同的attribute时才可指定该数据源。

3、User value指的是用户修改了参数值以后的值,例如修改了Default的值以后就成为User value了(与Default value的图进行对比)

SidewalkWidthLeft的值经过用户重新输入,它由原来的Default value变为user value

 

4、Layer value图层相关属性值

获取以及修改参数值

我们可以使用Python脚本批量的对Object参数赋值,赋与的值可以是用户指定的固定值,也可以是Objects对应的某一个属性值,这里主要用到两个函数:

ce.setAttribute()

ce.setAttributeSource()

对不同类型的某一个参数,获取的方法是不同的,具体方法如下:

Block Parameter

/ce/block/PARAMETER

Street Parameters

/ce/street/PARAMETER

Intersection Parameters

/ce/crossing/PARAMETER

Rule Parameters

/ce/rule/PARAMETER

例如:

我们首先通过ce.setAttribute(block,"lotAreaMax", 3000)给选中的Object添加一个lotAreaMax属性并赋值3000,然后再通过ce.setAttribute(block,,"/ce/block/lotAreaMax", "OBJECT")语句设置选中的Block中的lotAreaMax参数值的数据源为Object中刚添加的名称为lotAreaMax的属性值。

根据Object属性值对Object进行筛选选择

通过python的WithName方法可以按找Object的Name对Object进行过滤筛选

例如:

lot = ce.getObjectsFrom(ce.scene,ce.withName("'yyx'"))

该语句会选出所有场景中名为yyx的Objects

 

但在实际使用中,我们更多的是想根据Objects的某一个属性值进行筛选,这里的解决方案是:

1、首先通过CE.getAttribute()方法获取选中Object某一字段的属性值

2、再通过CE.setName()方法将Object的Name更改为获取的字段属性值

3、循环1,2步骤,直到所有选中的Objects都更改了Name

最后通过 CE.withName()方法根据属性值进行筛选

参考代码如下:

'''
Created on 2013-1-31
@author: yuyouxiang
'''
from scripting import *
# get a CityEngine instance
ce = CE()
sceneobjects = ce.getObjectsFrom(ce.scene)
for object in sceneobjects:
    Newname = ce.getAttribute(object,"Type")
    ce.setName(object,Newname)
selectedobject = ce.getObjectsFrom(ce.scene,ce.withName("'Tree'"))
ce.setSelection(selectedobject)

注:Type为字段名,Tree为想要筛选的属性值

通过上面的脚本,我们就可以选出 Type 字段中值为 Tree 的所有 Objects


你可能感兴趣的:(CityEngine中的参数和属性以及通过属性筛选Object)