![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем привет!
Нужна помощь в подключении библиотеки 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. КАК ВСЁ ТАКИ ДОБАВИТЬ ЭТИ КОМПОНЕНТЫ В ИНСТРУМЕНТАЛЬНУЮ ПАЛИТРУ? Последний раз редактировалось Homo-Fantasmus, 15.12.2014 в 21:19. |