Java基于VB通过Jacob调用AutoCAD接口

来源:互联网 发布:unity3d五子棋源代码 编辑:程序博客网 时间:2024/04/29 21:57
本文为博主原创文章,未经博主允许不得转载。

Java 以跨平台深受大家喜欢,而由于它跨平台的目的,需要运行在java虚拟机上工作,使得它和本地机器各种内部联系变得很少,约束了它直接掉本地API的功能。本例采用VB代码生成调用AutoCAD接口的DLL文件,使用Jacob技术用Java调用DLL文件来实现Java对AutoCAD接口的调用。

软件环境:VB6.0,Jacob1.16,Eclipse3.7.2,AutoCAD 2007,win7 64。
Jacob程序及本文源码:http://pan.baidu.com/s/1nvJATUL

1,使用VB6.0创建一个DLL项目(ActiveX DLL),取名为“JavaForCad”,
2,加入此工程对AutoCAD的引用:点击VB的工程菜单→引用,勾选AutoCAD 2007 Type Library点确定。
这里写图片描述
3,编写调用AutoCAD接口的代码,具体VB代码如下:

Dim acadApp As AcadApplicationDim acadDoc As AcadDocument' 连接AutoCAD的方法Sub ConnCad()    On Error Resume Next    ' 获取AutoCAD对象赋值给acadApp    Set acadApp = GetObject(, "AutoCAD.Application")    If Err Then        Err.Clear        Set acadApp = CreateObject("AutoCAD.Application")        If Err Then            MsgBox Err.Description            Exit Sub        End If    End If    ' 显示AutoCAD窗口    acadApp.Visible = TrueEnd Sub' 调用AutoCAD接口画圆的方法Sub DrawCircle()    Set acadDoc = acadApp.ActiveDocument    Dim circleObj As AcadCircle    Dim centerPoint(0 To 2) As Double    Dim radius As Double    centerPoint(0) = 100#: centerPoint(1) = 100#: centerPoint(2) = 0#    radius = 100#    Set circleObj = acadDoc.ModelSpace.AddCircle(centerPoint, radius)End Sub

4,生成对应的DLL文件
点击VB菜单的文件→生成JavaForCad.dll

5,注册“JavaForCad.dll”文件,在cmd窗口里执行命令“Regsvr32 C:\JavaForCad.dll”

6,搭建Jacob运行环境,将“jacob-1.16-M1-x86.dll”和“jacob-1.16-M1-x64.dll”对应放入System32和SysWOW64文件夹下。(“jacob-1.16-M1.zip”里有DLL文件)

7,创建Java项目,引入Jacob的jar包“Jacob.jar”(“jacob-1.16-M1.zip”压缩包里有)

8,编写Java代码

        ComThread.InitSTA();// 启动线程        // 以下两种方式都能取得DLL文件对象        // clsid值可通过在注册表中搜索"JavaForCad"取得        // ActiveXComponent com = new        // ActiveXComponent("clsid:3E1A16AB-D456-48EB-A943-A8C8633BF78D") ;        // "JavaForCad"对应DLL文件名,"Class1"对应VB项目中类模块名称        ActiveXComponent com = new ActiveXComponent("JavaForCad.Class1");        // Dispatch对象看成是对Activex控件的一个操作        Dispatch disp = com.getObject();        // 调用DLL文件中的连接AutoCAD方法        Dispatch.call(disp, "ConnCad");        // 调用DLL文件中的画圆方法        Dispatch.call(disp, "DrawCircle");        ComThread.Release();// 结束进程

9,先启动AutoCAD后运行Java代码即可间接通过Java代码调用AutoCAD接口进行画圆操作。

博主第一次写博客,缺漏之处,恳请指正!

3 0
原创粉丝点击