- 积分
- 383
- 最后登录
- 2017-2-13
- 阅读权限
- 20
- 注册时间
- 2011-7-1
- 回帖
- 22
- 精华
- 0
机械村良民
- UID
- 878
- 威望
- 0
- 机械币
- 74
- 活力
- -10
|
通过dde实现vb对autocad绘图的控制  
 
吴春红  
 
做cad开发的软件工作者都知道,利用autolisp语言基本能实现各种自动绘图的功能,但autolisp在界面处理及数据库的连接方面功能不强。  
而visualbasic(简称vb)编程在这方面却有很大的优势。丰富的控件(control)和大量的函数使vb能通过简单的语言实现强大的功能。特别是对数据库的查询、修改上,在vb中更是方便。并且vb能直接调用多种数据库如foxpro,access,orcale等。同时,vb可以调用s的api函数,也可以与c语言编
写的程序相互调用。  
autocad支持动态数据交换dde()。通过dde,可以将图形的数据从autocad送到
其他windows应用软件中,也可以从其他windows应用软件中得到数据用以修改图表。autocadr12.0forwindows在windwos环境上运行,能与用vb编写的软件交互进行dde动态数据交换。在开发autocad软件时,可通过dde实现vb对autocad绘图的控制,使用vb编程使软件界面更友善,功能更强大。  
 
下面是一个例子,通过vb对数据库的数据进行输入、输出、修改处理,同时将相关的内容在autocad工程图纸上自动生成和修改相应的图表。  
这里谈谈如何实现vb和autocad的动态数据交换dde及其遇到的一些问题。    
一、在运行vb应用程序前,必须先加载(load)与dde有关的函数。(如:本例中后面用到的ads-putsym()函数、ads-getsym()函数等),以便vb调用这些函数进行数据传送,这些函数通过运行ddelsp.exe、ddebas.exe来加载(用(load"dde")、(xload"ddebas”)命令实现)。另外,用于用户编辑图形编写的自定义函数在被vb调用前,应先被定义和加载。在此例中,可以把它们编写在def.lsp文件中,通过(load"def”)将其加载,以备vb调用。  
在autocad中实现的方法如下:  
首先,在acad.lsp文件中加入以下两句:  
(load″dde″);ddelisp.exewillbexloadedby  
  dde.lsp  
(load″def″);loaddef.lsp  
用户进入autocad时,自动执行acad.lsp中的命令。第一句加载dde.lsp使其执行ddelisp.exe,autocad可接受与其它软件进行动态数据交换。 |
|