autocad与delphi接口(100分)

  • 主题发起人 主题发起人 haobi
  • 开始时间 开始时间
H

haobi

Unregistered / Unconfirmed
GUEST, unregistred user!
我是搞CAD设计,但AUTOLISP语言太繁,我想用DELPHI对AUTOCAD进行
二次开发,希望各位大虾能帮小弟一个忙,提供autocad与delphi接口
程序,谢谢。
 
我知道的是AUTOCAD和VC的接口。
不如这样,你用VC做成DLL,里面调用
AUTOCAD的东西,再用DELPHI调用这个DLL
不就行了吗?
 
AutoCAD 14和AutoCAD 2000提供的ObjectARX是很优秀的二次开发工具,
ObjectARX包含有丰富的类库,足以满足二次开发的要求,需要用Visual C++。
建议进行AutoCAD的二次开发时不要用Delphi,Delphi不是这类问题的开发
工具。
 
luweizhong说的对,用VC来开发这个程序,比用DELPHI的要好。
我的一个朋友的毕设就是用VC来开发的一个人工智能系统。
 
前几年用Turbo Pascal 4.0编写了个读取DXF文件的小程序,主要将DXF的图形
另画在我的屏幕上(即提取图形)。对于你现在的问题,我想用Dxf作为传递介质
是比较简单的。我是说,用Delphi将你的图形转化为DXF文件格式(比较笨的方法),
当然还有其它的方法,如DDE等。而后在Acad下调入你的DXF图形文件即可。这其中
还得用那么一点点AutoLisp语句才能实现“自动化”!仅作参考!
 
以前到是见过ACAD用DDE和VB通讯得例子.
 
首先感谢各位的帮助,但遗憾的是小弟不懂VC++(VC++太难学了)。我知道AUTOCAD
与VB的接口,VB通过调用ADS来控制AUTOCAD,小弟粗通AUTOLISP,但不想学VB,不
知道能否通过其它方法用DELPHI来开发AUTOCAD?(用ACTIVEX?)
 
VB能干的Delphi也一定能干!但是,来此的弟兄们用Acad的还较少,再等等!?
 
>>VB通过调用ADS来控制AUTOCAD,
^^^^是什么东西啊?
 
Delphi也可以调用用ADS。
 
AUTOCAD提供了一个active控件,可以用来看AUTOCAD的文件,
不知道能不能操作。
 
AutoCAD r14 本身是一个AvtiveX Server. Delphi可以调用这个ActiveX命令控制
AucoCAD. 与VB控制AutoCAD ActiveX完全相同,需要注意一些VB里面省略的格式在
Delphi中必须说明.

此外,据我所知,ObjectArx有一个Delphi的开发工具,是Delphi爱好者开发的. 不过我到现在还没搞到手.
 
近日又收到几位网友的来信,小弟上次说得比较简单,
AUTOCAD与VB的接口是由AUTOCAD软件随带的(VB本身不具备开发CAD的功能),VB与AUTOCAD的接口文件包括:
1. DDEBAS.EXE(ADS/DDE服务者),保证VB与CAD的正常通信,在CAD中
用XLOAD命令加载;
2. ACADVB.DLL (VB ADS动态连接库);
3. GLOBAL.BAS (VB ADS的函数库);
4. ADSFUNCS.FRM (包含有应用程序和AUTOCAD间建立DDE连接的窗体文件).
附:ADS即 AUTOCAD C语言开发系统,用C语言(头文件为adslib.h,我有C语言
与AUTOCAD接口的源程序,总共五六十行)来开发CAD。
 
>>DDEBAS.EXE(ADS/DDE服务者),
既然是dde服务器,应该是通用的.delphi也可以用.
参考一下VB的demo,看看用了什么DDE命令.
 
Here's a snippit from one of my Delphi Apps that
talks to AutoCAD:

connected: boolean; {global}

procedure TForm1.SendLine(Msg: String);
var
Macro: string;
Cmd: array[0..255] of Char;
begin
if ConnectToAcad then
begin
Macro := Format('[%s^13]', [Msg]);
StrPCopy(Cmd, Macro);
if not DDEClient.ExecuteMacro(Cmd, False) then
ErrorDlg('AutoCAD DDE Connection Failed');
DDEClient.CloseLink;
end;
end;

function TForm1.ConnectToAcad : Boolean;
begin
Result := connected;
if not connected then
With DdeClient do
begin
SetLink("AutoCAD.r13.dde", "system");
Result := OpenLink;
if not Result then
begin
SetLink("AutoCAD.dde", "system");
Result := OpenLink;
end;
if not Result then
ErrorDlg('Can''t establish DDE Connection with AutoCAD')
else
Connected := Result
end;
end;


--
/*******************************************************/
/* Tony Tanzillo Design Automation Consulting */
/* Expert AutoCAD Programming and Customization */
/* --------------------------------------------------- */
/* Co-Author of Maximizing AutoCAD R13 and */
/* Maximizing AutoLISP for AutoCAD R13 */
/* --------------------------------------------------- */
/* 71241.2067@compuserve.com */
/* tony.tanzillo@worldnet.att.net */
/* http://ourworld.compuserve.com/homepages/tonyt */
/*******************************************************/
 
多人接受答案了。
 
后退
顶部