拋磚引玉... unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AutoCAD_TLB, ComObj;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); private { Private declarations } AcadApp: IAcadApplication; public { Public declarations } end;var Вернуться к оглавлению Form1: TForm1;implementation{$R *.dfm}Function GetAcadApplication(Visible: Boolean): IAcadApplication; var v : OleVariant; begin Try // пытаемся присоединиться к уже запущенной копии AutoCad v := GetActiveOleObject('AutoCAD.Application'); Except // если не получилось присоединиться, то запускаем новую копию AutoCad v:= CreateOleObject('AutoCAD.Application'); end; // приводим переменную типа OleVariant к типу IAcadApplication Result := IDispatch(v) as IAcadApplication; // далее проверяем, надо ли делать приложение AutoCad видимым if Visible then Result.Visible := True; end; procedure TForm1.FormCreate(Sender: TObject); begin // делаем так, что бы наша форма отображалась всегда поверх окна AutoCad FormStyle:= fsStayOnTop; Button1.Caption:= ‘Текущий чертёж’; // присоеденимся к приложению AutoCad AcadApp:= GetAcadApplication(true) end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin // при закрытии нашей программы закроем AutoCad AcadApp.Quit end;procedure TForm1.Button1Click(Sender: TObject); begin // В заголовке нашей формы напишем наимонавание текущего чертежа Caption:= AcadApp.ActiveDocument.Name end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AutoCAD_TLB, ComObj;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
AcadApp: IAcadApplication;
public
{ Public declarations }
end;var
Вернуться к оглавлению
Form1: TForm1;implementation{$R *.dfm}Function GetAcadApplication(Visible: Boolean): IAcadApplication;
var
v : OleVariant;
begin
Try
// пытаемся присоединиться к уже запущенной копии AutoCad
v := GetActiveOleObject('AutoCAD.Application');
Except
// если не получилось присоединиться, то запускаем новую копию AutoCad
v:= CreateOleObject('AutoCAD.Application');
end;
// приводим переменную типа OleVariant к типу IAcadApplication
Result := IDispatch(v) as IAcadApplication;
// далее проверяем, надо ли делать приложение AutoCad видимым
if Visible then Result.Visible := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// делаем так, что бы наша форма отображалась всегда поверх окна AutoCad
FormStyle:= fsStayOnTop;
Button1.Caption:= ‘Текущий чертёж’;
// присоеденимся к приложению AutoCad
AcadApp:= GetAcadApplication(true)
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// при закрытии нашей программы закроем AutoCad
AcadApp.Quit
end;procedure TForm1.Button1Click(Sender: TObject);
begin
// В заголовке нашей формы напишем наимонавание текущего чертежа
Caption:= AcadApp.ActiveDocument.Name
end;end.