CityEngine使用Python脚本导出模型

本文介绍了一种改进的CityEngine Python脚本,用于按道路名称而不是ObjectID导出模型。脚本支持用户通过拉框选择Segments导出模型,解决了大场景卡顿、Name字段不直观等问题。脚本适用于选择的每个道路Segment,生成单独的Obj文件,且Name字段可以是英文道路名称。脚本的关键方法包括ce.selection()、ce.setSelection()、ce.isGraphSegment等,适用于道路、建筑物等不同类型的对象导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前一篇《CityEngine使用Python脚本按feature整体导出道路》中介绍了如何按照GIS道路数据的ObjectID将道路导出,用户在使用过程中提出几个问题,如:

1、  脚本的使用范围是CityEngine的整个场景,在数据量非常大的时候会卡死

2、  在对道路数据进行处理的时候,Name字段必须赋值为ObjectID,不够直观

3、  在道路数据表中记录道路的条数以便修改Python脚本的range()参数,不够智能

4、  导出道路的选择只能通过Range()的参数来控制,不方便而且很傻

 

为了解决以上问题,达到摆脱ObjectID的限制(Name字段可以赋值为道路名称,当然要是英文字符),并可以通过直接拉框选择进行模型分批导出的目的,现修改脚本如下:

'''
Created on 2012-8-14

@author: YYX
'''
from scripting import *

# 获取CE实例
ce = CE()

SelectedObj = ce.getObjectsFrom(ce.selection(),ce.isGraphSegment)#在ce.selection集合中获取路网Segments集合
ce.setSelection(SelectedObj)#重新设置ce.selection为Segments集合
NumOfSelected = SelectedObj.__len__()#获取Segments集合objects个数
NameOfSelectedObj = []#创建空列表
'''循环获取Segment集合中objects的名称,并通过set函数合并重复值  '''
for i in range(0,NumOfSelected):
    NameOfSelectedObj.append(ce.getName(ce.selection()[i]))
    UniqueSelectedObj = set(NameOfSelectedObj)#合并重复值后的Segments集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值