1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【利用cloudconvert网站api简单6步骤实现cad文件格式dwg转dxf】

【利用cloudconvert网站api简单6步骤实现cad文件格式dwg转dxf】

时间:2023-03-26 01:38:37

相关推荐

【利用cloudconvert网站api简单6步骤实现cad文件格式dwg转dxf】

目录

前言

一、简单介绍cloudconvert?

二、dwg2dxf实现步骤

1.引入库

2.创建api客户端

3.创建转换job

4.上传dwg格式源文件

5.下载dxf格式文件

6.删除云端job

总结

前言

众所周知Autodesk公司拥有dwg图形格式的完全版权,而dxf则为一个开源的图形格式,因此在python开源库中鲜有免费的dwg转dxf应用。但是搜索网络,我们仍然会发现有些网站能够提供在线dwg转dxf服务(cloudconvert,anyconv,mygeodata),甚至还有相应的api供开发者使用。利用python编程对接这些api,可以实现常用的dwg转dxf应用。下面以cloudconvert为例,展示其实现过程。

一、简单介绍cloudconvert?

CloudConvert网站提供包括文档、音频、视频、压缩包、cad等类型的丰富的文件转换服务,其中就包括CAD Converter | CloudConvert。转换效果可以通过在线转换(如下图所示)来查看,亲测是挺不错的。

在线转换可以随时免费进行。其api则提供了几档服务,如下图:

可以选择8美元/500分钟的方案,也可以选择8美元/月提供1000分钟转换时长的方案。而且,作为个人使用的话,也可以不花钱,注册即可享受25min/天的转换时长

二、dwg2dxf实现步骤

1.引入库

代码如下(示例):

import cloudconvert

2.创建api客户端

代码如下(示例):

api_key = 'api_key_example' # api_key为申请账号的tokencloudconvert.configure(api_key=api_key, sandbox=False)

其中api_key_example为注册账号并首次进入dashboard面板后展示的api token,注意一定要将这个很长的token复制粘贴下来,dashboard中仅仅展示这一次,以后都查询不到。

3.创建转换job

代码如下(示例):

job = cloudconvert.Job.create(payload={"tasks": {"import-1": {"operation": "import/upload"},"task-1": {"operation": "convert","input_format": "dwg","output_format": "dxf","engine": "cadconverter","input": ["import-1"]},"export-1": {"operation": "export/url","input": ["task-1"],"inline": False,"archive_multiple_files": False}},})

这个转换job包括三个task(import-1,task-1,export-1),分别为导入文件任务、转换文件任务和输出转后文件任务。当然,这三个任务名可以自己任意定义。每个任务的字典中包含了相应的设置参数。其实,cloudconvert提供了一个非常简单的任务定义方法,就是在Job Builder | CloudConvert API中用操作页面的方式来自动生成对应的job代码,如下图:

4.上传dwg格式源文件

代码如下(示例):

upload_task_id = job['tasks'][0]['id'] # job['tasks'][0]对应的是上传任务,job['tasks'][1]是转换任务upload_task = cloudconvert.Task.find(id=upload_task_id)cloudconvert.Task.upload(file_name=file_name, task=upload_task)

利用cloudconvert库中的Task类可以轻松实现任务的定位和文件的上传。因为在第3步中定义了转换任务,因此上传动作完成后,服务器会自动开始转换任务。注意:由于api原因,file_name不能包含中文。这里转换任务的执行对象为输入任务import-1,也就是说task-1的参数应为import-1。

5.下载dxf格式文件

代码如下(示例):

exported_url_task_id = job['tasks'][2]['id'] # job['tasks'][2]对应的是下载任务res = cloudconvert.Task.wait(id=exported_url_task_id) # 使用cloudconvert.Task的内置函数等待转换文件完成file = res.get("result").get("files")[0] # 使用cloudconvert.Task的内置函数提取转换文件cloudconvert.download(filename=resource.replace('dwg', 'dxf'), url=file['url']) # 下载文件

利用cloudconvert库中的Task类可以轻松实现任务的定位和文件的下载。注意:这里输出任务的执行对象为task-1,也就是说export-1的参数应为task-1。

6.删除云端job

云端job若达到数量限至,无法进行格式转换任务,因此比较好的办法是每执行转换并完成文件下载后即删除这个job,代码如下(示例):

exported_url_task_id = job['tasks'][2]['id'] # job['tasks'][2]对应的是下载任务res = cloudconvert.Task.wait(id=exported_url_task_id) # 使用cloudconvert.Task的内置函数等待转换文件完成file = res.get("result").get("files")[0] # 使用cloudconvert.Task的内置函数提取转换文件cloudconvert.download(filename=resource.replace('dwg', 'dxf'), url=file['url']) # 下载文件

当然,job在云端过了一定时间后会自动删除,这个步骤也可以忽略。只有在短时间频繁创建job会触发转换限至。

7.完整代码

好了,为了保证在读者复刻的时候能够正确执行程序,这里将代码完整进行展示:

import cloudconvertdef dwg2dxf(file_name):# 1.定义cloudconvert的api_key(token)api_key = 'api_key_example'# 2.创建api客户端cloudconvert.configure(api_key=api_key, sandbox=False)# 3.创建一个jobjob = cloudconvert.Job.create(payload={"tasks": {"import-1": {"operation": "import/upload"},"task-1": {"operation": "convert","input_format": "dwg","output_format": "dxf","engine": "cadconverter","input": ["import-1"]},"export-1": {"operation": "export/url","input": ["task-1"],"inline": False,"archive_multiple_files": False}},})# 4.启动job对应的上传任务(上传原文件)upload_task_id = job['tasks'][0]['id'] # job['tasks'][0]对应的是上传任务,job['tasks'][1]是转换任务upload_task = cloudconvert.Task.find(id=upload_task_id)cloudconvert.Task.upload(file_name=file_name, task=upload_task)# 5.启动job对应的下载任务(下载转换后的文件)exported_url_task_id = job['tasks'][2]['id'] # job['tasks'][2]对应的是下载任务res = cloudconvert.Task.wait(id=exported_url_task_id) # 使用cloudconvert.Task的内置函数等待转换文件完成file = res.get("result").get("files")[0] # 使用cloudconvert.Task的内置函数提取转换文件cloudconvert.download(filename=resource.replace('dwg', 'dxf'), url=file['url']) # 下载文件# 6.为了防止云端job数目过多而产生的api请求错误,在job完成后即将其删除cloudconvert.Job.delete(job['id'])if __name__ == '__main__':resource = 'C:\\Users\\khs001\\Desktop\\Drawing2.dwg'dwg2dxf(resource)

总结

dwg2dxf的api实现结构如下:

以上,通过简单的6个步骤实现dwg2dxf格式转换。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。