ACAD网页组件:基于跨浏览器的原生小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )网络高级版开发,底层调用Autodesk公司的AutoCAD软件VBA及DWG TrueView或Design Review的OCX控件接口实现的dwg、dxf等工程图在线查看、编辑、审阅等,可分别将AutoCAD、DWG TrueView、Design Review等软件窗口内嵌到网页指定区域运行并调用内部实现的各种接口功能。最低可用在Chrome 41、Firefox 50、Edge 80(Chromium内核)、360极速/安全、IE 8、Opera、Electron、Vivaldi、Brave、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。 支持Autodesk公司AutoCAD 2007及以上版本的桌面安装版、建议使用官方发布的AutoCAD 2013及以上版本的激活版,AutoCAD商标及相关软件版权归Autodesk所有。 1、PluginOK(牛插)中间件的安装: 1)、如果是exe的安装程序,请直接运行安装; 2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; 3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 2、ACAD网页组件控制相关接口: 说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost:83?sid=12345&flag=1)后可执行,如默认侦听端口不是83(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.pdf”),请在连接地址中指定端口号进行连接。 HTTP网页在线测试:http://local.zorrosoft.com/acadfull.html HTTPS网页在线测试:https://local.zorrosoft.com/acadframe.html 如还需兼容IE浏览器使用,网络版测试网页中 的CLSID需要替换为:21ADE2E6-B4DD-4F3E-8BD5-9DDAD1785F3A 前端集成可参考以上测试网页进行,需要嵌入用到的JS脚本,脚本程序是开源的。 1)、请求启动ACAD网页组件实现网页中局部加载dwg/dxf等文档进行操作: Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) Title:网页标题中的关键词 Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2网页组件显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 128防截屏 Url:加载网页组件所在的网页实际地址 Web:打开配置(新增方式),可代替Url使用,Flag值+64使用此配置,此命令中必须指定Left、Top、Width、Height的值 Web中参数说明: Edit代表编辑权限 1只读打开 4禁止另存 8禁止打印 Hide代表隐藏的界面元素 1隐藏菜单 2隐藏标准工具栏 PW代表打开文档需要的密码 DataPath代表文档查找和保存默认路径 IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 BarW和BarH分别是网页右侧和底部预留区域,ScrollTop为顶部滚动预留高度 网页组件实际显示首先会基于Url或Web中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 Option:0启动AutoCAD实现在线编辑 1启动DWG TrueView在线查看和转换 2启动Design Review在线审阅 Open:为需要打开的文档路径,磁盘目录斜杠用/ 注意:Open、Web中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 举例: 自动识别当前浏览器并启动AutoCAD程序在线编辑dwg、dxf等文档 {"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web":[],"Option":"0","Open":"D:/Zorro/test.dwg"}} 自动识别当前浏览器并启动DWG TrueView程序在线查看或转换dwg文档 {"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web":[],"Option":"1","Open":"D:/Zorro/test.dwg"}} 自动识别当前浏览器并启动Design Review程序在线审阅dwg、dxf文档(推荐方式启动) {"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web":[],"Option":"2","Open":"D:/Zorro/test.dwg"}} 自动识别当前浏览器指定位置自动适配网页区启动(推荐方式启动): {"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":72,"Left":0,"Top":0,"Width":0,"Height":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web":[],"Option":"0","Open":"D:/Zorro/test.dwg"}} 当前页指定位置自动适配网页加载测试 http://local.zorrosoft.com/acadframe.html 启动后会前后收到三个JSON数据包 A、{"ret":0,"rid":6,"data":{"ID":3}} 代表网页组件WS侦听服务就绪 B、{"event":"Wrl_Listen","aid":3,"rid":6,"data":{"SID":"123","PID":"ACadApplet","port":997}} 返回的侦听端口,可再建立一个Web Socket连接后,调用网页组件中的相关功能,比如放大缩小图纸。 代表网页组件创建成功,返回ID为当前网页组件运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 C、{"event":"Wrl_AppletOK","aid":3,"rid":6,"data":{"SID":"123","PID":"ACadApplet","Port":997}} 2)、请求控制ACAD网页组件: 当前端不再需要网页组件时可指定关闭,或者显示/隐藏及全屏显示等 ID为启动网页组件时返回JSON中的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示 {"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} 3)、请求滚动ACAD网页组件: 当前端截取到网页滚动通知时,需要调用此接口实现网页组件和网页的滚动联动 ID为启动网页组件时返回JSON中的ID值 Code为滚动方向1是水平直,2是垂直,3是同时 Left为横向滚动条位置,Top为纵向滚动条位置 {"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} 4)、请求改变ACAD网页组件显示位置或大小: 当前端网页显示区域缩放时,可动态修改网页组件的显示位置或大小 ID为启动网页组件时返回JSON中的ID值,Width和Height分别为新的宽度和高度,X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 {"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} 或同时设置网页组件显示起始坐标 {"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} 5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: 当网页组件显示区域超过当前网页时,需去除滚动条的显示影响 ID为启动网页组件时返回JSON中的ID值,BarW为预留右侧宽度 BarH为预留底部高度 Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 {"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} 6)、请求对网页组件窗口做Alpha透明处理,便于前端临时显示覆盖到网页组件窗口的菜单等: ID为Wrl_ACADApplet启动网页组件时返回的ID值,Alpha为透明度百分比,1-100 {"req":"Wrl_AppletAlpha","rid":7,"para":{"ID":1,"Alpha":30}} 7)、请求对网页组件窗口内容进行截图: ID为启动网页组件时返回JSON中的ID值, File为指定截图文件保存路径或扩展名 Base64指定为1时代表返回BASE64编码的图像内容 {"req":"Wrl_AppletSnap","rid":10,"para":{"ID":1,"Base64":1,"File":".jpg"}} 8)、请求缩放ACAD网页组件,用于浏览器网页按比例缩放,一般不需要处理: eID为启动网页组件时返回JSON中的ID值,不指定Scale时,获取当前网页组件所用的缩放百分比,一般和系统缩放比例一致 {"req":"Wrl_AppletScale","rid":11,"para":{"ID":1,"Scale":120}} 3、网页组件安装、升级、卸载 1)、请求安装ACAD网页组件 请在测试网页输入框中,输入如下请求,然后点击发送,完成安装: {"req":"Plugin_Install","rid":1,"para":{"Name":"ACAD网页组件","PID":"ACadApplet","Date":"2023-02-08","Desc":"PluginOK之上跨浏览器的dwg、dxf等工程图纸在线编辑小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Net/ACadApplet.pid","MD5":"B004D8CD4AA07CED5D7E789A6782A0EE","Version":"2.2.9.1","Size":3473408,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"1E463997108C0BE06464BEB5549BD340C26DFE2BAD1C2087B1D70D9340FF36DCA9A01193034854A07F147E713C89789A2440D70B664F2F3878AE84FCCA23C1D9DB80E6544D4530A6C7A084DE732F01349168197E88F764A243A3A181C775F8905CE15E3529C73FC8B01DF9B77ED0D95B7C853909D8406FD79884C6D7B58A3420026D997D852FCDCCBAB123467494D69715600EA0FF1C6BA03A86FAF11FAC94C6EB81D4B4D66149A88AD141E1CC0464F7B712D8A24E79AD04D24202DAB9517FF34337B4A3E3CE96FB98731582D2C53319FDE1E30B0B1C2CE8A8C35D14F38C6FBD6B44875F08809AE55F83378C344707763C996536F144C7C8C587CEB1B14EE263"}} 启动安装后,会不断收到安装进度直到安装结束。 在发布时,也可以把此网页组件目录文件和中间件一起打包后发布,不用单独分发。 2)、请求升级ACAD网页组件: {"req":"Plugin_Update","rid":1,"para":{"Name":"ACAD网页组件","PID":"ACadApplet","Date":"2023-02-08","Desc":"PluginOK之上跨浏览器的dwg、dxf等工程图纸在线编辑小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Net/ACadApplet_Update.pid","MD5":"F0AF346733E0FF09D0A147E5D8BD5417","Version":"2.2.9.1","Size":3473408,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"9412CE73C2912B24A4FDD6BAF448E6AD8BA8933424B13AB5A8D26C8D5BABACCC1B56588664501A460F9FD7D41D763E1269A02C996BCA97F32385C216531061E5EEFF17E2DA83E6EBA2C8842C20337DBB31CB6F1E89D1976E8A48FFFE2A4069DEB9BAA85CE868A97C438FD31C5F69992AF82456E91E953DF63EAF536E06562D3E594517ABA5ADD92EF49AC8C96F84EE6F6FDF139FF82905093AC8A96DBE7E1C51E5FB77C8A073FE310F7990DC8E83B208D545DEFC9213AB40692759B0D501B2B14E282441689A06C854EAC7392DE82F47922EFC95AFAE31FBB888069EA7E59C65D0910A5E4C63A17C39AA948908384C5C48E4A21FF697E5F17609B4944DA0B70B"}} 以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 3)、请求卸载ACAD网页组件: 正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.doc”,可在SDK包中的打包程序ZbaPackage.exe的中间件维护生成带TK的请求。 {"req":"Plugin_Remove","rid":3,"para":{"PID":"ACadApplet","Type":8}} 4、ACAD网页组件转调用Autodesk的AutoCAD软件VBA接口及DWG TrueView或Design Review的OCX控件接口,先根据Wrl_ACADApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令: A、常用功能请求: 1)、请求获取当前打开文档信息 {"req":"CAD_GetCurOpen","rid":1,"para":{}} 返回:{"ret":0,"rid":1,"data":{"Ret":"0","File":"C:/CADDoc/test.dwg","Edit":0,"Option":0,"Hide":0}} 2)、请求关闭当前打开的文档 Save指定是否保存,不指定时根据程序配置判断是否自动保存 {"req":"CAD_Close","rid":2,"para":{"Save":0}} 返回: {"ret":0,"rid":2,"data":{"Ret":"0"}} Ret为0代表成功 3)、请求打开文档 Open打开文档路径,如有特殊字符或中文的需要用URLCode先编码 如非全路径,除非启动时指定了数据文件目录DataPath,否则默认使用中间件程序Data子目录作为根目录使用 PW打开密码 Edit设置编辑权限,含义和启动时相同 Hide控制界面显示标记 {"req":"CAD_Open","rid":3,"para":{"Open":"D:/Zorro/test.dwg","PW":"","Edit":0,"Hide":0}} 返回: {"ret":0,"rid":3,"data":{"Ret":"0"}} Ret为0代表成功 4)请求保存,如是新建文档,会创建一个临时文件名保存,适用于autocad软件 如果指定了CAD_NetFile接口中的Url等参数,代表保存到本地的同时上传到服务器 {"req":"CAD_Save","rid":4,"para":{}} {"req":"CAD_Save","rid":4,"para":{"Agent":"","Cookie":"","Auth":"","Para":"","Url":"http://zorrosoft.com/wp-admin/admin-ajax.php"}} 返回:{"ret":0,"rid":4,"data":{"Ret":"0","FilePath":""}} 其中FilePath为实际保存路径 5)请求另保存 NewFile为另保存路径,有中文或特殊字符等需要UrlEncode编码,适用于autocad软件 支持相对路径,如非全路径,除非启动时指定了数据文件目录DataPath,否则默认使用中间件程序Data子目录作为根目录使用 如果指定了CAD_NetFile接口中的Url等参数,代表保存到本地的同时上传到服务器 {"req":"CAD_SaveAs","rid":5,"para":{"NewFile":"D:/Zorro/test.dxf"}} {"req":"CAD_SaveAs","rid":5,"para":{"NewFile":"D:/Zorro/testSA.dwg"}} {"req":"CAD_SaveAs","rid":5,"para":{"NewFile":"D:/Zorro/test.pdf"}} {"req":"CAD_SaveAs","rid":5,"para":{"NewFile":"D:/Zorro/upload.dwg","Agent":"","Cookie":"","Auth":"","Para":"","Url":"http://zorrosoft.com/wp-admin/admin-ajax.php"}} 返回:{"ret":0,"rid":5,"data":{"Ret":"0","FilePath":""}} 其中FilePath为实际保存路径 6)、打开文档转换到PDF,适用于autocad软件 SrcFile打开文档路径,如有特殊字符或中文的需要用URLCode先编码 PW打开密码,如已打开可不设置 DestFile转换目标路径,如有特殊字符或中文的需要用URLCode先编码 {"req":"CAD_ConvertTo","rid":6,"para":{"SrcFile":"D:/Zorro/test1.dwg","DestFile":"D:/Zorro/test1.pdf","PW":""}} 返回: {"ret":0,"rid":6,"data":{"Ret":"0"}} Ret为0代表成功 7)创建指定目录 Dir为子目录名称,可为全路径,需要确保有创建子目录权限,非全路径时,为启动指定数据文件路径DataPath的子目录,没指定DataPath时为中间件data的子目录 {"req":"CAD_CreateDir","rid":7,"para":{"Dir":"/doc"}} 返回:{"ret":0,"rid":7,"data":{"Ret":"0"}} 8)切换全屏编辑状态 {"req":"CAD_SwitchFullScreen","rid":8,"para":{}} 返回:{"ret":0,"rid":8,"data":{"Ret":"0"}} 9)网络文件操作 Type 1上传文件 0下载文件 Agent、Cookie及Auth Cookie可传浏览器中的Cookie或通过Auth授权验证上传权限,默认为空,非空时需要先做UrlEnocde编码 Local 上传文件本地路径或下载文件保存路径,如果不指定默认用当前打开文档,需要做UrlEncode编码 Url 上传或下载的地址,需要做UrlEncode编码 Type为1时,可增加参数Para,对应POST数据包中需要传递的参数param 默认上传文件名为upfile,否则可通过NodeName设置自己的文件参数名称 Type为0时,可增加参数MD5及FileSize,下载文件的哈希值及大小,用于校验下载文件的完整性,可默认空或0 {"req":"CAD_NetFile","rid":9,"para":{"Type":0,"Agent":"","Cookie":"","Auth":"","FileSize":0,"MD5":"","Local":"C:/OfficeDoc/test.dwg","Url":"http://local.zorrosoft.com/Files/test.dwg"}} {"req":"CAD_NetFile","rid":9,"para":{"Type":1,"Agent":"","Cookie":"","Auth":"","Para":"","Local":"","Url":"http://zorrosoft.com/wp-admin/admin-ajax.php"}} 返回:{"ret":0,"rid":35,"data":{"Ret":"0"}} 5、事件通知: A、 B、PluginOK支持的事件通知: 1) 小程序是否响应了热键全屏 {"event":"CAD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记 2) Wrl_AppletExit 小程序退出通知 {"event":"Wrl_AppletExit","data":{"ID":1}} 6、其它 请求参数的JSON数据包,请确保是UTF-8无签名的编码。 更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.pdf”及“PluginOK中间件安全解决方案.pdf”。 如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938