网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.VB中实现带预览的对话框.
.MicrosoftJet的多客户模型--多客.
.VisualBasic实现某一天的下/上一.
.使用文件的默认的打开方式.
.实现Access数据库的Web查询.
.VB6中动态设置报表结果.
.在VB应用程序中恰当的使用声音.
.用VB捕捉屏幕图象.
.VisualBasic工具栏、对话框二.
.VisualBasicCOM基础讲座之属性.
.用VB设计聚焦框程序.
.比较两个文件.
.在桌面上建立一个Internet快捷键.
.如何在VB中终止Windows系统.
.使用ObjPtr检测2个对象变量是否指.
.And、Or和Xor:让我们来优化表达.
.用VB编写标准CGI程序(上).
.VB中远程数据库的访问(1)-数据.
.共享数据的锁定--多客户环境下VB.
.解析VB的事件驱动编程.

VB在ACADWIN中的使用

发表日期:2006-2-27


AutoCAD是一个常用工业绘图平台,用户在使用时经常要用Lisp或ADS进行二次开发,但Lisp处理数据库能力差,编制界面困难,而ADS要求较高.相比之下,VisualBasic(以下简称VB)编写独立程序的速度快,编制界面容易,可进行快速计算,可操作数据库。ACADWIN是AUTOCAD的Windows版程序,具有WINDOWS的许多特点。可以利用DDE进行VB与ACADWIN之间的通讯,实现AutoCAD编程。

VB在ACADWIN的应用文件
因为ACADWINR12不支持如PastLink的直接DDE方法,所以要有一个控件与VB相联系,以进行数据传递。这里主要用到以下几个文件:
1):DDEBAS.EXE这是VB/DDE服务器程序,必须在运行VB应用程序前调入,在命令行下键入:(XLOAD“DDEBAS”)。
2):ACADVB.DLL,VB应用程序的动态连接库。
3):GLOBAL.BAS,VB应用程序的全程变量的定义文件。
4):ADSFUNCS.BAS,VB应用程序对ADS库标准函数的调用。
5):ADSFUNCS.FRM,标准ACADWIN的初始VB窗口。
6):NEW.FRM,用于新建标准初始VB窗口。

后4个文件在ACADWIN/VB/NEW目录下,编程时只要打开NEWPROJ.MAK就都有了,但NEW.FRM可以不要,只要把启动文件定为ADSFUNC.FRM即可。

VB在ACADWIN的使用方法
为了实现DDE通讯,先要在ADSFUNCS.FRM中增加一个用于通讯的TEXT(文本框)控件,并在特性表中将其NAME命名为ACADTEXT,TEXT的CAPTION置为空串(减少窗体不必要的信息),VISIBLE特性呈为TURE。用linkapp函数初始化并关闭连接。
过程linkapp代码如下:

sublinkapp(linkascontonl,appnameasstring,topicasstring)
link.linkmode=0'关闭通讯
link.linktopic=appname “|” topic'置通讯主题
link.linkmode=2'手工通讯
endsub
增加一个过程unlinkapp,其代码如下:
subunlinkapp(linkascontonl)
link.linkmode=0'关闭通讯
endsub
在窗体事件中,增加如下代码:
subform_load()
LINKAPPACADTEXT,“AUTOCAD.DDE”,“SYSTEM”
endsub
subform_unload(cancelasinteger)
UNLINKAPPACADTEXT
endsub

如画圆“CIRCLE”,先在ADSFUNC.FRM中增加一个命令钮COMMAND1,将其CAPTION置为“C
IRCLE”,在子过程中增加以下代码:
SUBCOMMAND1_CLICK()
ACADTEXT.LINKEXECUTE“[^3^3CIRCLE]”
ENDSUB

至此可以实现绘图命令。如果要实现复杂的功能,如捕捉特征点,获得特性,参数化绘图,等能否让完成界面及计算功能,把参数传给一个Lisp程序,然后再将程序调入环境中完成绘图呢?答案是肯定的这就要用到“SendKey"语句。该语句功能是向具有焦点的窗口发送字符,就象从键盘中键入一样。这时先用函数FindACAD()找到ACADWIN的句柄,再用AcadACTIVE函授激活ACADWIN,使其具有焦点,这时就可以用SendKey了。

如有一个Lisp程序YZ.LSP,主函数为“C:YZ()”,可先在ADSFUNC.FRM中增加一个命令钮COMMAND2,将其CAPTION置为“YZ”,在子过程中增加以下代码:

SUBCOMMAND2_CLICK()
hwndAcad=FindAcad()
AcadActivate(hwndAcad)
SendKeys“{(}load ‘yz '{)}”,-1
SendKeys“{enter}”,-1
SendKeys“yz”,-1
ENDSUB

以上方法可以实现通过VB的界面选取参数,进行计算;用Lisp进行绘图。有两个问题值得注意:一:如要进行参数的传递,可以先用VB写临时数据文件,再用Lisp读此临时数据文件。二:因为与窗体布置不一定使ACADWIN和VB应用程序两者同时可见,Lisp程序执行完毕,不能自动返回到VB应用程序,这时可以通过调用WindowsAPI函数SetWindowPos来使应用程序总浮在最上面,避免了来回切换窗口。这种技术的实现在本报已有介绍.

在ADSFUNCS.BAS中也定义了很多ADS函数可供调用。如ACADWIN\VB\ASVU中有一个例子ASVU.EXE,就是应用Ads_getvar及Ads_setvar函数,在SYSVARS.MAK的intervai.bas可以看到。但DDE的链接方式要改变,在启动窗体或函授中加上:

DDE_TIMEOUT=-1'等待一个DDE事件
openDDE'ADSFUNCS.BAS中一个函数,初始化DDE链接->

上一篇:VB给菜单加上图片 人气:3891
下一篇:如何充分扩充VB功能 人气:4026
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐