Delphi二次开发AutoCAD(二)—一个简单的程序

全屏阅读

2012-03-14 10:03:00 作者: 所属分类:程序设计 阅读:3374 评论:0

标签:

在深入学习之前,我们首先通过一个简单的程序例子来看一下Delphi对AutoCAD二次开发有什么样的效果。本程序实现AutoCAD程序的打开和关闭。

1.1 Delphi与AutoCAD连接

在程序与AutoCAD进行控制的时候,必须要通过一个桥梁,而这个桥梁需要通过我们的代码来实现。只有实现了程序与AutoCAD之间的通讯,才能进行下一步的工作。再次我们为您提供一个Delphi连接AutoCAD的样板代码,每次进行开发的时候您可以通过修改此代码来实现与AutoCAD之间的连接。

新建一个工程,在窗体上添加TAcadObject和两个个按钮控件,分别为两个按钮命名为打开和关闭。此时在代码引用部分程序会自动添加一下两个引用:OleServer, AutoCAD_TLB

代码如下:

uses
ComObj;//Delphi开发AutoCAD利用的是COM编程,在这里需要添加COM对象
//定义全局变量
var
  acad:AcadApplication;
//打开CAD窗口
procedure Tfrm_AutoCAD.bt_openClick(Sender: TObject);
begin
  acad:=CreateOLEObject('AutoCAD.Application.17')as AcadApplication;
  //在这里我们利用CreateOLEObjec函数来创建新的AutoCAD,从而实现打开AutoCAD。
  acad.Visible:=True;
  //创建了CAD需要对CAD的可见性进行定义,如果没有这一条,CAD将不以窗口形式显现。
end;
//关闭CAD窗口
procedure Tfrm_AutoCAD.bt_closeClick(Sender: TObject);
begin
  try
    acad:=GetActiveOleObject('AutoCAD.Application.17')as AcadApplication;
//获得活动的CAD对象
    acad.Quit;
  except
    MessageBox(Handle,'AutoCAD没有运行','提示',MB_OK+MB_iconinformation);
  end;
end;

1.2 Delphi与AutoCAD连接的样板代码

通过上面的程序,我们已经初步掌握了与AutoCAD的连接方式。在上面的代码中,我们主要通过两个函数(CreateOLEObjectGetActiveOleObject)来实现与AutoCAD的创建、连接。

如果 AutoCAD 正在运行,并指定 AutoCAD 版本号时,GetActiveOleObject函数将检索 AutoCAD Application 对象。如果AutoCAD没有运行,则会返回一个错。同时运行多个 AutoCAD 任务时, GetActiveOleObject函数会返回 Windows 运行对象表中的第一个 AutoCAD 实例。

CreateObject 函数接着会试图创建一个 AutoCAD Application 对象。如果创建成功,会启动 AutoCAD;如果失败,则会显示一个消息框,说明发生的错误。要显示 AutoCAD 图形窗口,必须将 AutoCAD 应用程序的 Visible 特性设置为 TRUE。如果没有将 Visible属性设置为 TRUE 将会导致 AutoCAD 应用程序不可见,甚至 AutoCAD 不在 Windows 任务栏上显示。

下面代码是笔者利用Delphi对AutoCAD进行二次开发的时候使用的一个样板代码,实现对AutoCAD的创建与连接。你可以根据实际情况修改该代码,但是在一般情况下次代码通用。代码如下;

uses
  AutoCAD_TLB, ComObj,//添加引用
var
acad:AcadApplication;//定义全局变量,acad可以随便定义,但是不要与关键词冲突
procedure TForm1.FormShow(Sender: TObject);//也可以在FormCreate的时候加入下面代码
begin
try
    acad:=GetActiveOleObject('AutoCAD.Application.17') as AcadApplication;
    acad.Visible:=True;
  except
    acad:=CreateOLEObject('AutoCAD.Application.17')as AcadApplication;
    acad.Visible:=True;
  end;
end;

注意:如果CreateOLEObjectGetActiveOleObjec函数使用的是独立于版本的 ProgID,则将函数更改为使用依赖于版本的 ProgID。例如,如果使用的是CreateOLEObject,请将 CreateOLEObject ("AutoCAD.Application") 更改为 CreateObject ("AutoCAD.Application.17")

顶一下
(1)
100%
订阅 回复
踩一下
(0)
0%
» 郑重声明:本文由不吃醋的猫发布,所有内容仅代表个人观点。版权归懒猫窝窝不吃醋的猫共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言