我们在使用AutoCAD的过程中,很多时候需要一些批处理工作,为相关环节提供特定的图纸。通常我们怎么做呢?
1. ObjectARX,.NET插件或其它脚本,在AutoCAD中加载,运行命令,批量处理图纸
2. 独立的exe程序,利用COMAPI启动AutoCAD(不可见),设置计划任务,批量处理图纸。
3. 使用AccoreConsole这种轻量的,快速的环境,执行脚本,处理图纸。
所有方案都需要安装AutoCAD。也有用户采取
4. 远程虚机安装AutoCAD,也是独立程序启动AutoCAD,设置计划任务处理。
这种方式虽然客户端不用安装AutoCAD,但需要开发者搭建完备的客户端与远程端的通讯机制。用户操作体验也不是很好。
如果不用安装AutoCAD,而又能操作图纸呢?---- 现在有了! 这个技术就是AutoCAD I/O!实在找不到很合适的翻译,我们就用其英文吧,也可写成AutoCAD IO。它是云端的一种服务,以Web Service的形式提供接口,让第三方程序与云端进行通讯。
来看看一个简图:
1. 用户执行您的程序。
2. 您的程序按照要求去指定的云存储空间下载需要操作的DWG图纸。可以是任何任何存储,只要有对DWG图纸可访问的URL(通常要么是公开性的URL,或者是带有认证信息的URL)。
3. 拿到图纸后,程序构造任务,交予AutoCAD I/O。AutoCAD I/O按照任务要求执行,生成结果。
4. AutoCAD I/O将结果存放到任务指定的存储空间,这些结果或许是修改后的DWG,或许是转换成其它格式的文件例如PF,DWF等。
如果需要,程序还可以将结果的文件下载,输入到其它流程。
那这背后的机制是什么呢?其实很简单,再来看一个图,并引入两个术语:
开发者设计一个Activity,里面是具体对DWG图纸做什么样的操作。将此Activity放到AutoCAD I/O 。然后构造WorkItem,也就是任务,规定DWG图纸在哪里,产生的结果放哪里,用哪个Activity进行操作。当启动任务时,实际上AutoCAD I/O 云端启动了AcCoreConsole.exe, 并按照任务的要求下载DWG,操作DWG,最后将结果放到指定的存储。因此我们也可以说AutoCAD I/O 是云端的AcCoreConsole.exe。
客户端和云端的通讯使用HTTP请求。因此,AutoCAD I/O的使用,一, 不需要客户端安装AutoCAD,二和客户端用什么语言无关,只要能发送 HTTP请求。也有一些封装好的.NET 库 ,便于使用。
AutoCAD I/O是为开发者而诞生,因此最终用户是不能直接使用的。而且也不是对图纸进行交互式的操作,即不是通常的有用户界面的操作。如果你熟悉AcCoreConsole.exe,更容易理解。
开发者创建的Activity是放到AutoCAD I/O的Activity集合之中,可以是开发者自己的账号内,只能自己使用,或以分享的形式供给所有开发者使用。Autodesk提供一些基本的常用的Activity,也欢迎开发者分享自己的Activity。
和AcCoreConsole.exe一样,AutoCAD I/O也支持加载CRX,.NET程序,执行其中的命令。只是这样的程序必须先打包为AutoLoader形式。
web service的开发,必须考虑到安全性,因此,开发者需要先申请AutoCAD I/O的开发key,这样,当有HTTP请求AutoCAD I/O干活时,它会验证发送者身份的合法性,以保证提交的任务的确是开发者(其最终用户)允许的。
申请key,请访问 https://developer.autodesk.com/。用你的Autodesk ID登陆,登陆后,创建app,选择 AutoCAD I/O,填写相关信息。
这样得到了一个key和secret。
拿到key,你就可以开始AutoCAD I/O的历程了。下面这篇文档讲述如何创建.NET工程,使用AutoCAD I/O。我也将陆续的写一两篇文章讲解。
AutoCAD I/O使用入门(英文)