CITYML到可打印STL
citygml2stl的Python项目详细描述
要将CityGML数据转换为的python库 可在FDM 3D打印机上打印的STL 3D模型,例如 RepRap打印机。
支持citygml版本2.0.0、1.0.0和0.4.0。其他版本也可以。
这是Free software GIS班的课程 Faculty of Civil Engineering, Czech Technical University in Prague(学术 2014/2015年,F组)。许可证为麻省理工学院(见许可证)。
安装
要安装,只需使用常规的python方法,比如pip。 建议在安装此或其他要求之前安装cython。 支持python 3.3+、2.7和pypy。
pip install Cython pip install citygml2stl
或者从克隆的存储库或未打包的源安装:
pip install Cython pip install -r requirements.txt python setup.py install
用法
要使用python中的cityglm2stl,请执行以下操作:
# import stufffromcitygml2stlimportcitygmlfromcitygml2stlimportpolygonsfromcitygml2stlimportstl# parse the CityGML filec=citygml.CityGML('Berlin_Alexanderplatz_v0.4.0.xml')# export to file berlin.stlwithstl.StlFile('berlin.stl')asberlin:# Specify as many types as you want,# or leave without arguments to get all city objectsforobjinc.get_objects_of_types('Building'):berlin.write_triangles(polygons.object2triangles(obj))
或者,如果您希望使用多个stl文件,请执行以下操作:
# initialize a counter for filenamescounter=0forobjinc.get_objects_of_types('Building'):withstl.StlFile('berlin{}.stl'.format(counter))asberlin:berlin.write_triangles(polygons.object2triangles(obj))counter+=1
注意,考虑到找到的大多数citygml数据的质量,stls可能不会作为 面将相互交叉。同时给出了算法的工作方式,顶点的顺序 一个方面是随机的,并不总是遵循右手法则。
也就是说,考虑到产出需要修复。使用公共云服务,如 netfabb Cloud甚至开放源码工具,如 ADMesh修复输出。
您甚至可以使用Python’s admesh模块修复stls:
importadmesh...filename='berlin{}.stl'.format(counter)withstl.StlFile(filename)asberlin:berlin.write_triangles(polygons.object2triangles(obj))s=admesh.Stl(filename)s.repair()# the results are often located on unthinkable coordinatess.translate(0,0,0)s.write_binary(filename)
注意,由于admesh模块的限制,当前无法重定向输出 对citygml2stl进行admesh,而不先将其写入文件。
从命令行调用的示例脚本安装到路径:
$ citygml2stl Berlin_Alexanderplatz_v0.4.0.xml Converting Berlin_Alexanderplatz_v0.4.0.xml to Berlin_Alexanderplatz_v0.4.0.stl