JAVA调用控件入门

1. 说明

(1)B/S架构的系统,一般后台是java语言,前台是html+js,控件对象是在前台加载运行,所以与后台java语言没有关系,调用控件函数直接使用js语言,然后js再与后台java语言通信。

(2)如果想要在后台处理DWG图纸,比如转pdf,jpg,或提取信息,这时就需要java调用控件了,因控件提供开发API是使用COM技术封装,所以java需要使用jacob库来调用,java如何调用COM接口,可以百度Java COM 调用,先学习一下java如何调用COM。

2. java调用控件API流程

2.1  下载控件

(1)在 http://www.mxdraw.com/download.html下载控件最新安装包,如下 :

JAVA调用控件入门

(2)下载的是一个exe程序,它是一个自解压缩包,双击直接解压,在解压目录下有如下文件:

JAVA调用控件入门

(3)管理员方式运行”RegMxDrawX.bat”注册控件,或直接运行MxDrawx86Setup(20200624).exe程序安装控件。

2.2、在Eclipse中使用JAVA调用

(1)下载  http://www.mxcad.net:2080/JavaCom.rar,java包,该包可以让java调用com组件。

(2)然后双击解压,得到如下文件:

JAVA调用控件入门

(3)把jacob-1.17-M2-x64.dll,jacob-1.17-M2-x86.dll拷到 java/jdk/bin 目录下,java/jre/bin目录下,和C:/Windows/system32。新建一个JAVA工程

JAVA调用控件入门

JAVA调用控件入门

2.3、编写代码,调用控件

JAVA调用控件入门

下面代码,打开1.dwg图纸,然后转成一个jpg文件。

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

public class MyTest {

public static void main(String[] args) {

//com组件调用

ActiveXComponent smsg = new ActiveXComponent("MxDrawX.MxDrawService");

// 获取Active对象

Dispatch msg = smsg.getObject();

// 调用组件方法,打开指定dwg文件

Variant v = msg.call(msg, "open", "e:/1.dwg");

System.out.println(v);

Object[] colorparams = new Object[] { 255, 255, 255 };

msg.call(msg, "SetViewColor", colorparams);

// 参数 jpg保存路径,位图宽度方向的像素,-1取系统默认值:1000 ,位图宽度方向的像素,-1取系统默认值:1000

Object[] params = new Object[] { "e:/1.jpg", 600, 860 };

//将打开的dwg图纸,保存为jpg文件.

msg.call(msg, "WriteJpg", params);

//关闭打开的dwg文件

msg.call(msg, "close");

smsg.safeRelease();

}

};

2.4、MxDrawService说明

MxDrawService是专门提供的一个,服务器后台调用组件,它可以在不需要控件界面时,调用控件相关接口,更多该组件的函数的说明,可以参考控件安装目录下:MxDraw5.2Help(20200624).chm文件:

JAVA调用控件入门

3. 技术建议

在服务器后台自动处理DWG图纸,比DWG图转pdf,jpg,图纸剪切,等费时操作时,尽量把这块工作写到一个单独的exe程序中(控制台程序也行),然后在java服务后台程序调用该exe进程,把要处理的图纸通过命令行参数传给进程,进程处理好后,把结果写到一个约定位置的json文件,java后台程序只需要在一个时种中每过几秒去看一下那个json文件是否生成,得到处理结果,这样有三个好处:费时操作不会阻塞java服务主进程,处理程序如果崩溃不会影响主进程,可以轻松做多到多进程同时处理多个图纸。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值