Всем привет!
Нужна помощь в подключении библиотеки Acad и компонентов Acad
Я работаю в RAD Studio XE6, нужно подключить библиотеку Acad и компоненты
AcadAcCmColor
-AcadDataBase
-AcadSecurityParams
-AcadLayerStateManager
-AcadDocument
На просторах нэта много материалов как это сделать, но все материалы касаются Delphi 7 и очень краткие в части касающейся подключения.
Вот типичный пример:
"В данной статье рассматривается связка Delphi 7 и AutoCAD 2004, если у вас более поздняя версия какого-то из программных продуктов, то это не страшно, так как принцип работы останется тот же самый.
Сначала импортируйте библиотеку AutoCAD в Delphi, для этого выберите пункт меню ProjectImport Type Library, далее нажмите кнопку Add и добавьте файл acax16enu.tlb, найти его можно по адресу C:Program FilesCommon FilesAutodesk Shared, после чего инсталлируйте новый набор ActiveX компонентов в систему.
Вам станет доступно 5 новых компонентов:
-AcadAcCmColor
-AcadDataBase
-AcadSecurityParams
-AcadLayerStateManager
-AcadDocument
Обязательно загляните в модуль AutoCAD_TLB.pas, который появится после установки новых компонентов, вы как разработчик сможете почерпнуть из него много полезной информации, а также в файл справки AutoCAD - acad.chm, особенное внимание уделите разделам ActiveX and VBA Developer's Guide и ActiveX and VBA Reference, где можно найти сведения о методах, свойствах и объектах AutoCAD" и т.д. и т.п.
Опишу как я подключаюсь...
1)Меню -> COMPONENT -> IMPORT COMPONENT
2) Появляется окно:
3)Первый пункт собственно импорт библиотеки то что нужно, жмём next.
Далее мы видим следующее окно...
В этом окне нужно выбрать собственно библиотеку в моём случае это AutoCad 2015 Type library, жмём next
Видим следующее окно...
Тут нужно как я понимаю указать куда собственно должны быть установлены новые компоненты Acadа
Выбираем ActiveX и жмём NEXT
Далее появится окно с многообещающей надписью в переводе с пиндосского:
Выберите создать unit или добавить уже созданный unit в активный пакет. После того как устройство добавит пакет его можно будет установить с помощью диалога установщика пакетов.
и четырьмя radiobutton (флажками) с надписями :
*Создать unit
*Установите в существующий пакет
*Установите в новый пакет
*Добавить unit в проекте Project1.dproj
Выбираем последний вариант и жмём многообещающую кнопку Finish
и видим, что библиотека вроде как подключилась к проекту, в Project Manager появился файл AutoCad_TLB.pas
Но в инструментальных палитрах в вкладке ActiveX (место установки компонентов выбрано ActiveX см. последний скриншот)- ни чего нового не появилось, а должны были как я понимаю появиться новые компоненты:
-AcadAcCmColor
-AcadDataBase
-AcadSecurityParams
-AcadLayerStateManager
-AcadDocument
ВНИМАНИЕ ВОПРОС:
КАК ВСЁ ТАКИ ДОБАВИТЬ ЭТИ КОМПОНЕНТЫ В ИНСТРУМЕНТАЛЬНУЮ ПАЛИТРУ?
Чувствую ответ на этот вопрос кроется в сакраментальной (что бы это не значило) надписи : .... После того как устройство добавит пакет его можно будет установить с помощью диалога установщика пакетов.
ТАКИ ЧТО НУЖНО СДЕЛАТЬ ?
КАКОЙ ПАКЕТ?
Наличие файла AutoCad_TLB.pas означает что пакет добавлен или нет?
КАК УСТАНОВИТЬ ?
Правда несмотря на отсутствие компонентов, библиотека работает
Если создать форму и кинуть на неё одну кнопку, а после закодить примерно так:
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, AutoCAD_TLB, ComObj, Vcl.StdCtrls;
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.Button1Click(Sender: TObject);
begin // В заголовке нашей формы напишем
// наимонавание текущего чертежа
Caption:= AcadApp.ActiveDocument.Name;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin // при закрытии нашей программы закроем AutoCad
AcadApp.Quit;
end;
end.
То произойдёт собственно запуск ACada.
КАК ВСЁ ТАКИ ДОБАВИТЬ ЭТИ КОМПОНЕНТЫ В ИНСТРУМЕНТАЛЬНУЮ ПАЛИТРУ?