目录

前言

一、简单介绍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】相关推荐

  1. 利用Bing翻译API简单的实现一个翻译工具

    常见的翻译服务提供商有Google和微软,它们的在线翻译地址如下: Bing翻译: http://www.microsofttranslator.com/?FORM=R5FD Google翻译: ht ...

  2. qq降龙电脑版_分享 | 如何利用QQ群上课 简单操作步骤

    QQ群上课功能:可以直播,演示ppt,word,图片等:与学生互动交流:像课堂一样做标记. 使用QQ群上课步骤(文图版): 建立班级科目QQ群(建议所有科目用一个,避免资源浪费). 打开QQ群界面,把 ...

  3. 创建类的三个步骤_如何通过5个简单的步骤创建企业网站

    创建类的三个步骤 Having the right business website can help any business alter their fortunes. If you are a ...

  4. php新浪获取ip接口,【php】利用新浪api接口与php获取远程数据的步骤,获取IP地址,并获取相应的IP归属地...

    [php]利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地 本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地 ...

  5. 恶意网站可利用浏览器扩展 API,窃取浏览器数据

    恶意网站可以利用浏览器扩展 API,在浏览器内执行代码,来窃取用户敏感信息,比如用户书签.历史浏览记录和 cookies.在这之后,攻击者可能劫持用户的登陆会话.而敏感账户像是电子邮件.社交媒体或工作 ...

  6. 访问一个网站都经过哪些步骤_轻松访问电子商务网站的10个简单步骤

    访问一个网站都经过哪些步骤 As a frequent visitor to forums in which people ask for critiques of their new ecommer ...

  7. 利用新浪API实现数据的抓取\微博数据爬取\微博爬虫 1

    PS:(本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.由于微博接口更新后限制增大,这个代码已经不能用来爬 ...

  8. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统

    背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...

  9. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

最新文章

  1. python场景建立_Python创建一个街道地址表-问答-阿里云开发者社区-阿里云
  2. 兰戈 —— Rango
  3. 各种友(e)善(xin)数论总集,从入门到绝望2
  4. Window.Open() 和 window.showModalDialog()参数
  5. 【ARM】Tiny4412裸板编程之异常(中断向量表)
  6. 大型网站架构 - 1.架构的演变过程
  7. Dubbo底层采用Socket进行通信详解
  8. Python机器学习:KNN算法06网格搜索
  9. 【重识 HTML + CSS】CSS 伪类、伪元素
  10. celery+rabbitmq+redis 分布任务队列探索(一)
  11. python基本词汇的特点_Python 爬完评论只会做词云?情感分析了解一下
  12. 数据结构视频教程 -《小甲鱼全套教程之C C++数据结构系列教程》
  13. Latex复杂三线图的处理
  14. 使用sqlmap进行SQL注入检测
  15. 计算机网络共享无访问权限,Win7局域网访问WIN7共享文件夹提示无访问权限的多种解决方法...
  16. Android WebView下载apk
  17. 在网站优化中怎么做好关键词密度?
  18. unity黑白滤镜_unity图像优化美化滤镜渲染插件Beautify 6.2.7
  19. 通过直链下载google网盘里的文件
  20. 【转载】浅谈蓝牙 Mesh 组网技术

热门文章

  1. bootstrap图标的使用
  2. 初学Jsp+Java Beans遇到的问题:在[com.demo.User]类型bean中找不到任何有关属性[username]的信息
  3. 在linux中配置usb连接(android手机调试)
  4. 创业不要找这些人合作
  5. 论文《Bilinear Graph Neural Network with Neighbor Interactions》阅读
  6. 准程序员如何才能进入腾讯等一流的互联网公司?
  7. 【模板】 Splay树
  8. python控制灯泡_人工智能应用-手把手教你用Python硬件编程实现打开或关闭电灯泡...
  9. 前端项目——当当书网(js项目)
  10. js中节点关系及相关操作