我在Python 3.3中编写了一个脚本,它从文本文件中读取位置(x,y坐标)和风险值,并使用matplotlib保存生成的等高线图。我的公司需要能够在AutoCAD中编辑轮廓。不幸的是,我对AutoCAD的了解非常有限,而且我公司的人都知道AutoCAD,他们对生成等高线图知之甚少。
如何创建可在AutoCAD中导入的等高线图?我目前的想法是,我应该将绘图保存为svg文件并将其转换为AutoCAD可以打开的内容,或者安装AutoCAD插件,以允许它打开matplotlib可以保存的格式之一。我见过this question,但这并不适合我的需要。
*编辑*
我尝试将绘图保存为SVG文件,在Inkscape中打开它,并将其保存为DXF,但它不保存轮廓颜色信息,并且任务需要自动化。轮廓颜色信息对于保留很重要,因为颜色表示风险的数量级。
答案 0 :(得分:2)
如果你可以生成一个postscript文件(matplotlib可以创建pdf的权利吗?),你可以从命令行使用pstoedit将它转换为dxf。
或者,您可以使用Illustrator(非免费)或Inkscape(免费)将svg转换为dxf。互联网上有一些普遍的谣言,Inkscape有时会将bezier曲线变成直线,但我没有检查这是否仍然是真的。
答案 1 :(得分:0)
我最终得到了我的绘图程序创建一个非常基本的Autocad脚本。我提到this question关于从等高线图中提取x,y数据以编写Autocad脚本。以下是相关功能:
def make_autocad_script(outfile_name, contour):
'''
Creates an Autocad script which contains polylines for each contour.
Args
outfile_name: the name of the Autocad script file.
contour: the contour plot that needs to be exported to Autocad.
'''
with open(outfile_name, 'w', newline='') as outfile:
writer = csv.writer(outfile, delimiter=',', )
# each collection is associated with a contour level
for collection in contour.collections:
# If the contour level is never reached, then the collection will be an empty list.
if collection:
# Set color for contour level
outfile.write('COLOR {}\n'.format(random.randint(1,100)))
# Each continuous contour line in a collection is a path.
for path in collection.get_paths():
vertices = path.vertices
# pline is an autocad command for polyline. It interprets
# the next (x,y) pairs as coordinates of a line until
# it sees a blank line.
outfile.write('pline\n')
writer.writerows(vertices)
outfile.write('\n')
我发送make_autocad_script
我需要的outfile
和contour
图,并在Autocad中导入脚本。这将每个轮廓绘制为随机颜色,但可以用您想要的任何颜色替换。