摘要:根据COM技术原理,本文利用AutoCAD2000提供的类型库,编写了一个演示例程;同时,详细介绍了应用Java语言进行AutoCAD二次开发的方法和思路。

关键字:二次开发,AutoCAD定制,COM,Java编程

Microsoft的组件对象模型(COM : Component Object Model)允许基于Windows平台的应用程序之间可以建立联系并进行数据交换。采用组件对象模型有一个很大的好处就是,开发者并不需要了解服务程序(server application)的内部机制,只要利用其提供的接口(interface)就可以实现对服务程序内部的访问和操作。同样,AutoCAD2000提供了它自己的COM接口,因此客户程序(client application)可以通过该接口来对AutoCAD2000进行操作,如打开DWG图形、添加图形对象等。

目前,支持COM接口的开发语言越来越多,如C/C++、Java等。原则上,不管采用何种开发语言,其实现原理都是相同的。实际上,采用Java语言来进行AutoCAD的二次开发是非常有意义的,因为这样可以将AutoCAD的二次开发应用于Java小应用程序(applet)上。为简单计,本文仍以普通Win32应用程序为例,该例程使用Visual J++6.0开发工具,详细展示了Java语言在AutoCAD2000二次开发中的应用方法和技巧。

一、AutoCAD2000的类型库

类型库(type library)是一种OLE复合文档,通常以.tlb为后缀(也有其它形式的后缀,如.odl、.ocx等)。类型库文件包含了OLE服务程序提供的接口类型及COM对象的有关信息。具体来说,包含的内容如下:

1. 数据类型的信息,如别名(alias)、枚举、结构(struct)或联合(union)等;

2. 模块、接口、IDispatch接口或组件对象类的描述信息,每个描述信息称为一个类型信息记录。

实际上,类型库文件提供了访问被提供的COM组件的细节。只有了解这些细节,应用程序才能访问其提供的COM组件。AutoCAD2000提供了COM组件及其相应的类型库文件,文件名为acad.tlb,存放于安装根目录下(如D:ACAD2000)。

以AutoCAD2000为例(下同),在Java源文件中利用COM对象的方法如下:

import acad.* //引入AutoCAD2000提供的类型库信息

IAcadApplication IApp = (IAcadApplication) new AcadApplication();

其中,AcadApplication是由acad.tlb提供的信息生成的Java类,它定义了AutoCAD2000应用程序(COM类)。与C++类似,生成一个Java类实例可以使用new操作符,但不能直接使用生成的类实例,而必须通过其COM接口来实现。因此,下述代码尽管是合法的,但在运行过程中将导致严重错误。

AcadApplication App = new AcadApplication(); //错误**

二、建立工程

首先,从“开始|程序”菜单中启动Visual J++6.0,进入开发环境(缺省),如图1所示。

图1 Visual J++6.0主程序窗口

Visual J++6.0主程序窗口除包含有菜单栏、工具栏等标准窗口元素外,还有工程资源管理器(Project Explorer)、工具箱(Toolbox)、属性窗口(Properties)以及任务列表框(Task List)等。其中,工程资源管理器的作用类似于Visual C++6.0的工作区窗口(Workspace),而工具箱和属性窗口则是为编辑窗体(Form)等控件资源而提供的。

按照下面的步骤,新建一个工程。如图2所示,选择Visual J++工程类型为:Application;然后,在右边的框中选择“Windows Application”,即新建一个Win32应用程序;接下来,在Name文本框中输入工程名称为JCOMToACAD,并选择适当的存放路径。最后,单击“打开”按钮。

图2 新建一个“Windows应用程序”工程

开发环境为当前新建的工程添加了一个源程序文件Form1.java。双击该文件,弹出一个窗体(即Form1),它是应用程序运行的主窗口。现在,将文件Form1.java更名为mainForm.java,方法是在工程资源管理器中选中该文件,然后执行“File|Rename”菜单命令,在随之出现的文本框中键入新文件名。

接下来,在工程资源管理器中双击mainForm.java,这时弹出的是该文件的源代码窗口,而不是窗体编辑窗口。使用“Edit|Find and replace”菜单命令,将mainForm.java文件中的字符串Form1全部替换为mainForm,然后关闭该文件的源代码窗口。之后,当再次双击mainForm.java文件时,首先弹出的就是mainForm窗体了,如图3所示。

图3 编辑窗体资源

9.3.2 编辑菜单资源

向图3所示的程序窗体添加一个菜单栏。为此,在工具箱中选择“MainMenu”工具,方法是在工具箱中单击该工具按钮,然后在mainForm窗体上部单击鼠标左键并向右拖动,这时一个菜单栏就添加好了。默认的菜单栏名称为mainMenu1,可以在属性窗口中将其更改为新的名称(如mainMenu),如图4所示。注意:编辑其它控件元素属性的方法与此类似。

图5 编辑控件元素的属性

接下来,向菜单栏中添加两个子菜单:File(文件)和Draw(制图)。File子菜单命令如图5所示,其各控件元素的属性见表1。注意:添加子菜单以及菜单项的方法是,鼠标左键单击“Type here”区域,然后在随之出现的文本框中输入所需的标题即可。

图5 新添加的File子菜单

表1 File子菜单及其菜单项的属性

子菜单及菜单项标题 text属性 name属性(即标识符) 修改的其它属性

File(子菜单标题) &File ID_MENU_FILE 无

Start AutoCAD &Start AutoCAD ID_FILE_STARTACAD

Quit AutoCAD &Quit AutoCAD ID_FILE_QUITACAD

分隔符(separator) -(连字符) 无

Exit &Exit ID_FILE_EXIT

添加的Draw子菜单提供了两个命令,如图6所示,其各控件元素的属性见表2。

图6 新添加的Draw子菜单

表2 Draw子菜单及其菜单项的属性

子菜单及菜单项标题 text属性 name属性(即标识符) 修改的其它属性

Draw(子菜单标题) &Draw ID_MENU_DRAW 无

Highlight Line &Highlight Line ID_DRAW_LINE

Red Circle &Red Circle ID_DRAW_CIRCLE

三、输入AutoCAD类型库

如需在工程中使用AutoCAD提供的COM对象,就必须向工程项目输入类型库(.tlb)。选择“Project|Add COM Wrapper”菜单命令,弹出的对话框如图7所示,该对话框列出了可以利用的COM组件。如果没有列出来,那么可以单击“Browse”按钮,浏览和查找所需的COM组件。

图7 选择输入AutoCAD2000类型库

在列表框中选择“AutoCAD 2000 Type Library”,然后单击OK按钮。Visual J++6.0在当前工程项目所在的目录中新建一子目录(acad),其中包含了AutoCAD2000类型库提供的COM组件。注意:在存放工程的目录下不能含有acad子目录(即使是空目录也不行),因为Visual J++将认为当前工程已经输入了AutoCAD2000类型库而不再进行任何操作。

接下来,打开mainForm.java文件,添加如下代码(黑体部分,下同)。预编译指令import与C/C++语言中的#include,两者的作用是类似的。

import com.ms.wfc.app.*;

import com.ms.wfc.core.*;

import com.ms.wfc.ui.*;

import com.ms.wfc.html.*;

import acad.*; //引入AutoCAD 2000提供的类型库信息

import com.ms.com.*;

……

这样,就可以在mainForm.java源文件中使用AutoCAD2000类型库提供的组件了。

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

java开发 cad软件_java语言可以用于cad开发吗相关推荐

  1. Java低级编程软件_JAVA语言说低级语言吗

    高级语言:C.C++.Java.Python.Pascal.Lisp.Prolog.FoxPro.易语言等都是高级语言,相对于低级语言来说,高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的 ...

  2. 如何使用CAD软件帮助来快速查询CAD快捷键命令?

    作为一名CAD制图初学入门者,在使用国产CAD软件绘制图纸的过程中,想要快速查询CAD快捷键命令的话该如何操作呢?下面就和小编一起来看看国产CAD软件--浩辰CAD建筑软件中使用CAD软件帮助来快速查 ...

  3. 制造业信息化领域,采用迈特 MIt PDM/PLM3.8作为集成支撑平台 与UG、CATIA、PRO/E、SOLIDEDGE、SOLIDWORKS、MDT等三维CAD软件和常用二维CAD软件集成

    <script></script> 标签:中国pdm 重汽集团 汽车pdm 信息化管理 mit-pdm 图文档管理 it    Development is the last ...

  4. 如何使用CAD软件来修改表格中CAD字体颜色?

    在使用浩辰CAD软件绘制CAD图纸的过程中,有些时候会用到CAD软件中的表格功能,那么表格绘制完成后其中的CAD字体颜色怎么修改呢?下面给大家具体介绍一下表格中CAD字体颜色修改的方法吧! CAD软件 ...

  5. 易语言修改服务器数据库连接,sql开发管理软件 易语言 易语言连接sql数据库

    简述利用 sql plus 工具可以进行哪些数据库管理与开发 首先,sql server 2005的安装并不复杂从你的追问来看,如果只是简单的数据操作而且数据量不大,你可以干脆用类似的连接方法连acc ...

  6. java程序设计基础篇_Java语言程序设计(基础篇) 第一章

    第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...

  7. java c++的区别_Java语言与C、C++之间的区别?

    小伙伴你知道吗?Java是由C++开发而来的,并且在当时一直被搁置.随着Java语言的崛起那么Java和C/C++有什么不同和相同之处呢? 通过上述我们知道那Java前身是C++,并且保留了C++的大 ...

  8. c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...

  9. c#获取autocad安装位置_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发. 开发语言同样是基于 .NET框架的C#语言或VB语言. Smart组件是Robotstudio软件 ...

最新文章

  1. [USACO08NOV]lites
  2. python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...
  3. junit配合catubuter统计单元测试的代码覆盖率
  4. 一项震动制药行业的研究:大型制药公司AI的生产力
  5. 通过什么来衡量C# Socket服务的效能
  6. c语言转汇编语言 vs,C语言转换成汇编语言
  7. linux安装lrzsz,并使用rz sz 命令
  8. spring源码阅读--@Transactional实现原理
  9. logfile switch causes incremental checkpoint?
  10. Struts2的Action中访问servletAPI方式
  11. 使用http请求发送文件,文件标题乱码
  12. 手机插了sd卡显示无服务器,手机sd卡无法读取之sd卡无文件系统或文件系统不受支持怎么办...
  13. springboot医疗管理系统 毕业设计-附源码015221
  14. H264和aac 封装成为ts,并生成m3u8
  15. ArcEngine符号化——文本符号
  16. yt-dlp教程如何下载高清视频
  17. 无线路由器打印机服务器设置,newifi新路由打印机服务器设置全教程
  18. android 检测屏幕方向,在android中检测屏幕方向
  19. CocoaLumberjack的ios应用开发使用指南
  20. 故障分析 | MongoDB 5.0 报错 Illegal instruction 解决

热门文章

  1. 基于80c51的倒计时音乐播放器
  2. 手机验证码60秒倒计时
  3. 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)
  4. mac下使用automator制作Finder复现文件夹路径快捷键
  5. TFS2018-WIK介绍03-VSTS的特有功能,TFS2018中没有的功能
  6. 模拟键盘输入将自选股导入到交易师
  7. LabView ModBus安装
  8. Weak4 Chapter7 Homework
  9. NameNode优化归纳【RPCFBR监控】
  10. 计算机网络:TCP/IP 网络分层