java开发 cad软件_java语言可以用于cad开发吗
摘要:根据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开发吗相关推荐
- Java低级编程软件_JAVA语言说低级语言吗
高级语言:C.C++.Java.Python.Pascal.Lisp.Prolog.FoxPro.易语言等都是高级语言,相对于低级语言来说,高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的 ...
- 如何使用CAD软件帮助来快速查询CAD快捷键命令?
作为一名CAD制图初学入门者,在使用国产CAD软件绘制图纸的过程中,想要快速查询CAD快捷键命令的话该如何操作呢?下面就和小编一起来看看国产CAD软件--浩辰CAD建筑软件中使用CAD软件帮助来快速查 ...
- 制造业信息化领域,采用迈特 MIt PDM/PLM3.8作为集成支撑平台 与UG、CATIA、PRO/E、SOLIDEDGE、SOLIDWORKS、MDT等三维CAD软件和常用二维CAD软件集成
<script></script> 标签:中国pdm 重汽集团 汽车pdm 信息化管理 mit-pdm 图文档管理 it Development is the last ...
- 如何使用CAD软件来修改表格中CAD字体颜色?
在使用浩辰CAD软件绘制CAD图纸的过程中,有些时候会用到CAD软件中的表格功能,那么表格绘制完成后其中的CAD字体颜色怎么修改呢?下面给大家具体介绍一下表格中CAD字体颜色修改的方法吧! CAD软件 ...
- 易语言修改服务器数据库连接,sql开发管理软件 易语言 易语言连接sql数据库
简述利用 sql plus 工具可以进行哪些数据库管理与开发 首先,sql server 2005的安装并不复杂从你的追问来看,如果只是简单的数据操作而且数据量不大,你可以干脆用类似的连接方法连acc ...
- java程序设计基础篇_Java语言程序设计(基础篇) 第一章
第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...
- java c++的区别_Java语言与C、C++之间的区别?
小伙伴你知道吗?Java是由C++开发而来的,并且在当时一直被搁置.随着Java语言的崛起那么Java和C/C++有什么不同和相同之处呢? 通过上述我们知道那Java前身是C++,并且保留了C++的大 ...
- c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础
Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...
- c#获取autocad安装位置_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础
Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发. 开发语言同样是基于 .NET框架的C#语言或VB语言. Smart组件是Robotstudio软件 ...
最新文章
- [USACO08NOV]lites
- python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...
- junit配合catubuter统计单元测试的代码覆盖率
- 一项震动制药行业的研究:大型制药公司AI的生产力
- 通过什么来衡量C# Socket服务的效能
- c语言转汇编语言 vs,C语言转换成汇编语言
- linux安装lrzsz,并使用rz sz 命令
- spring源码阅读--@Transactional实现原理
- logfile switch causes incremental checkpoint?
- Struts2的Action中访问servletAPI方式
- 使用http请求发送文件,文件标题乱码
- 手机插了sd卡显示无服务器,手机sd卡无法读取之sd卡无文件系统或文件系统不受支持怎么办...
- springboot医疗管理系统 毕业设计-附源码015221
- H264和aac 封装成为ts,并生成m3u8
- ArcEngine符号化——文本符号
- yt-dlp教程如何下载高清视频
- 无线路由器打印机服务器设置,newifi新路由打印机服务器设置全教程
- android 检测屏幕方向,在android中检测屏幕方向
- CocoaLumberjack的ios应用开发使用指南
- 故障分析 | MongoDB 5.0 报错 Illegal instruction 解决