CityEngine使用Python脚本导出模型_第1页
CityEngine使用Python脚本导出模型_第2页
CityEngine使用Python脚本导出模型_第3页
CityEngine使用Python脚本导出模型_第4页
CityEngine使用Python脚本导出模型_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CityEngine使用Python脚本导出模型在前一篇CityEngine使用Python脚本按feature整体导出道路中介绍了如何按照GIS道路数据的ObjectID将道路导出,用户在使用过程中提出几个问题,如:1、 脚本的使用范围是CityEngine的整个场景,在数据量非常大的时候会卡死2、 在对道路数据进行处理的时候,Name字段必须赋值为ObjectID,不够直观3、 在道路数据表中记录道路的条数以便修改Python脚本的range()参数,不够智能4、 导出道路的选择只能通过Range()的参数来控制,不方便而且很傻为了解决以上问题,达到摆脱ObjectID的限制(Name字段

2、可以赋值为道路名称,当然要是英文字符),并可以通过直接拉框选择进行模型分批导出的目的,现修改脚本如下: 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 = Se

3、lectedObj._len_()#获取Segments集合objects个数 NameOfSelectedObj = #创建空列表 循环获取Segment集合中objects的名称,并通过set函数合并重复值 for i in range(0,NumOfSelected): NameOfSelectedObj.append(ce.getName(ce.selection()i) UniqueSelectedObj = set(NameOfSelectedObj)#合并重复值后的Segments集合objects名称,即唯一的道路名称 依据道路名称列表,循环获取某一道路对应的所有Segment

4、s,最后导出为一个obj模型文件 for Ojb in UniqueSelectedObj: name= + str(Ojb)+#道路名称 #获取所有与道路名称相同的Segments对象,这些Segments对象组成了一条道路 TargetOjb = ce.getObjectsFrom(ce.selection(), ce.withName(name) ce.setSelection(TargetOjb)#设置ce.selection为所选同名Segments #设置导出参数 settings = OBJExportModelSettings() settings.setGeneralLoca

5、tion(d:/temp) settings.setGeneralName(name) ce.export(ce.selection(), settings)#依据导出参数将所选Segments导出为一个Obj模型文件,该obj模型文件即为一条道路的模型 ce.setSelection(SelectedObj)#重新设置ce.selection为所有Segments集合,以便导出下一条道路 注:该脚本只对道路的导出有效,脚本最终会将选择的每条道路生成一个单独的Obj文件。道路数据预处理方式与前文一样,需要新建Name字段,并对Name字段赋值,只是Name字段可以是英文名称,而不必一定是Obj

6、ectID生成模型后,进行导出模型的选择时可以通过以下几种方式: 1、拉框选择2、在Scene窗口中选择道路的Segments,通过Shift或Ctrl进行多选同名的Segments为同一条道路的不同线段,如上图中的两个Major Edge 40062,这两个Segments组成一条名叫Major Edge 40062的道路。运行脚本,脚本会将同名的Segments挑选出来并分别导出到一个Obj文件中,这样就得到了所选道路的模型,道路模型的名字与其对应的Name字段相同。下面对脚本的一些方法进行说明:1、ce.selection():当前CE实例所选择的Objects集合2、ce.setSel

7、ection():通过该方法设置ce.selection()3、ce.isGraphSegment:判断所选Objects是否为Segment,因本脚本要进行道路的导出,所以筛选的类型为Segment,若想要进行建筑物的导出则可以选择ce.isBlock或者ce.isShape,这取决于所选Objects的类型,见下图: 以Block为单位导出模型以Shape为单位导出模型所选Object的类型可以在Inspector中查看,如:4、ce.getName():获取所选Objects的名字即Name5、ce.withName():根据Name获取Objects6、OBJExportModelSettings():设置OBJ模型导出参数7、ce.export():依据OBJ模型导出参数导出ce.selection所选的Objects的模型总结: 脱离了Name必须是ObjectID的限制,Name字段可以是非中文的字符 可以导出任意选择的道路模型 稍加修改即可用于建筑物的导出(修改ce.isGraphSegment为ce.isBlock或者ce.isShape等) 在进行Objec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论