在程序中调用CAD打开文件,在关闭窗体前如何释放CAD?(100分)

  • 主题发起人 主题发起人 Lion_sj
  • 开始时间 开始时间
L

Lion_sj

Unregistered / Unconfirmed
GUEST, unregistred user!
显示图形的代码如下:(摘自Delphibbs)
imgFileNameTemp := 'c:/gc_gctz.dwg';
l_FileStream := TFileStream.Create('c:/gc_gctz.dwg', fmOpenWrite or fmCreate);
TBlobField(qry_gctz.Fields.Fields[6]).SaveToStream(l_FileStream);
l_FileStream.Free;

cad:=CreateoleObject('AutoCAD.Application');
//cad.visible:=true;
caddoc:=cad.ActiveDocument;
//改变当前背景颜色为白色
cad.Preferences.Display.GraphicsWinModelBackgrndColor:= clblack;
//改变当前命令行为1行
cad.Preferences.Display.DockedVisibleLines:= 1;
//设置模式为单文档
caddoc.SetVariable('SDI',1);
//调入新文件
caddoc.Application.Documents.Open('c:/gc_gctz.dwg', False);
t_SelectionSet:=caddoc.SelectionSets.Add('NewSelSet');
t_SelectionSet.Select(5);
caddoc.Export( 'c:/' + 'gc_gctz', 'WMF', t_SelectionSet);
Picture.LoadFromFile('c:/gc_gctz.WMF');
cad.quit;
 
在主窗口的onclose事件中加如下代码。
var
cad: olevariant;
begin
try
cad := GetActiveOleObject('AutoCAD.Application');
cad.quit;
except
end;
end;
 
可是在进程里还是存在cdilla10.exe,wowexec.exe,cdilla64.exe

如何将这些进程也一并关闭呢
 
现在遇到一奇怪的事
caddoc.Application.Documents.Open('c:/gc_gctz.dwg', False);
t_SelectionSet:=caddoc.SelectionSets.Add('NewSelSet');
t_SelectionSet.Select(5);
就会出错
而这样就不会错
caddoc.Application.Documents.Open('c:/gc_gctz.dwg', False);
showmessage('aa');
t_SelectionSet:=caddoc.SelectionSets.Add('NewSelSet');
我只是加了个showmessage而已

这是怎么回事,郁闷中。。。。。
t_SelectionSet.Select(5);
 
提示被呼叫方拒绝接受呼叫
 
提示:如果加了showmessage的话,当showmessage弹出时,窗体不是激活的
 
你的操作太急了,程序反应不过来,据我的经验,延迟400亳秒就不会出现“被呼叫方拒绝接受呼叫”的提示了。时间不能太短了。
也就是
caddoc.Application.Documents.Open('c:/gc_gctz.dwg', False);
sleep(400);
t_SelectionSet:=caddoc.SelectionSets.Add('NewSelSet');

另外我做的时候,如果用发送消息来关闭autocad的话,会报错,用我的方法,至少不会报错了。在我这边所有进程都关闭了而且启动autocad也没看到你说的那些进程啊。
 
谢谢

那些进程是关闭了,不过要过很长时间
 
后退
顶部