【利用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格式转换。
【利用cloudconvert网站api简单6步骤实现cad文件格式dwg转dxf】相关推荐
- 利用Bing翻译API简单的实现一个翻译工具
常见的翻译服务提供商有Google和微软,它们的在线翻译地址如下: Bing翻译: http://www.microsofttranslator.com/?FORM=R5FD Google翻译: ht ...
- qq降龙电脑版_分享 | 如何利用QQ群上课 简单操作步骤
QQ群上课功能:可以直播,演示ppt,word,图片等:与学生互动交流:像课堂一样做标记. 使用QQ群上课步骤(文图版): 建立班级科目QQ群(建议所有科目用一个,避免资源浪费). 打开QQ群界面,把 ...
- 创建类的三个步骤_如何通过5个简单的步骤创建企业网站
创建类的三个步骤 Having the right business website can help any business alter their fortunes. If you are a ...
- php新浪获取ip接口,【php】利用新浪api接口与php获取远程数据的步骤,获取IP地址,并获取相应的IP归属地...
[php]利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地 本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地 ...
- 恶意网站可利用浏览器扩展 API,窃取浏览器数据
恶意网站可以利用浏览器扩展 API,在浏览器内执行代码,来窃取用户敏感信息,比如用户书签.历史浏览记录和 cookies.在这之后,攻击者可能劫持用户的登陆会话.而敏感账户像是电子邮件.社交媒体或工作 ...
- 访问一个网站都经过哪些步骤_轻松访问电子商务网站的10个简单步骤
访问一个网站都经过哪些步骤 As a frequent visitor to forums in which people ask for critiques of their new ecommer ...
- 利用新浪API实现数据的抓取\微博数据爬取\微博爬虫 1
PS:(本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.由于微博接口更新后限制增大,这个代码已经不能用来爬 ...
- 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统
背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...
- python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...
上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...
最新文章
- python场景建立_Python创建一个街道地址表-问答-阿里云开发者社区-阿里云
- 兰戈 —— Rango
- 各种友(e)善(xin)数论总集,从入门到绝望2
- Window.Open() 和 window.showModalDialog()参数
- 【ARM】Tiny4412裸板编程之异常(中断向量表)
- 大型网站架构 - 1.架构的演变过程
- Dubbo底层采用Socket进行通信详解
- Python机器学习:KNN算法06网格搜索
- 【重识 HTML + CSS】CSS 伪类、伪元素
- celery+rabbitmq+redis 分布任务队列探索(一)
- python基本词汇的特点_Python 爬完评论只会做词云?情感分析了解一下
- 数据结构视频教程 -《小甲鱼全套教程之C C++数据结构系列教程》
- Latex复杂三线图的处理
- 使用sqlmap进行SQL注入检测
- 计算机网络共享无访问权限,Win7局域网访问WIN7共享文件夹提示无访问权限的多种解决方法...
- Android WebView下载apk
- 在网站优化中怎么做好关键词密度?
- unity黑白滤镜_unity图像优化美化滤镜渲染插件Beautify 6.2.7
- 通过直链下载google网盘里的文件
- 【转载】浅谈蓝牙 Mesh 组网技术
热门文章
- bootstrap图标的使用
- 初学Jsp+Java Beans遇到的问题:在[com.demo.User]类型bean中找不到任何有关属性[username]的信息
- 在linux中配置usb连接(android手机调试)
- 创业不要找这些人合作
- 论文《Bilinear Graph Neural Network with Neighbor Interactions》阅读
- 准程序员如何才能进入腾讯等一流的互联网公司?
- 【模板】 Splay树
- python控制灯泡_人工智能应用-手把手教你用Python硬件编程实现打开或关闭电灯泡...
- 前端项目——当当书网(js项目)
- js中节点关系及相关操作