![]() |
|
|
Регистрация | << Правила форума >> | 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. |
#2
|
|||
|
|||
![]() Что бы компоненты появились на палитре надо устанавливать их в существующий или новый ПАКЕТ КОМПОНЕНТОВ, а не в свой проект. Хотя и это не проблема, но придется их создавать тогда "ручками" в ран-тайме.
Весь вопрос только в том, что тебе от этих компонентов надо. Если не надо ничего показывать на экран, а всего-лишь получить некоторую информацию, то и этого достаточно. Если надо показать чертеж, то тогда лучше установить как компоненты и "набросать" их на форму. |
#3
|
||||
|
||||
![]() Цитата:
Т.е. ![]() на этом этапе нужно выбрать Install to New Package дальше появляется окно ![]() В Package Name я просто забиваю произвольный Name например Acad ? Что я должен забить в поле Description ? И что это такое Description ? Последний раз редактировалось Homo-Fantasmus, 18.11.2014 в 00:27. |
#4
|
||||
|
||||
![]() Если нужно сначала инсталлировать Package, то опять же не понятно как?
Меню ->Component -> Install Packages Далее появляется окно: ![]() если нажать кнопку Add далее предлагается выбрать "package library" файл с расширением *.bpl Что это за файл и где его взять? Последний раз редактировалось Homo-Fantasmus, 18.11.2014 в 00:41. |
#5
|
||||
|
||||
![]() Можно с этого места объяснить по подробнее?
Очень выручите ... Последний раз редактировалось Homo-Fantasmus, 18.11.2014 в 00:46. |
#6
|
||||
|
||||
![]() Ну где вы гуру Delphi и аполлоны программирования ?
|
#7
|
|||
|
|||
![]() я бы делал так.
1. создаешь новый пакет (New->Package). Должен получиться файл *.dpk (или как он в новых версиях теперь называется). 2. импортируешь в него библиотеку с создание врапперов и всего остального. 3. Компилишь и устанавливаешь этот пакет. Там в меню будет Install... 4. Открываешь свой проект и набрасываешь установленные компоненты на форму. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Homo-Fantasmus (22.11.2014)
|
#8
|
||||
|
||||
![]() Попробую...
Спасибо за подсказку. |
#9
|
||||
|
||||
![]() Проделал всё тоже самое и о чудо всё получилось!!!
Новых компонентов ActiveX не 5, а намного больше ) [ ![]() Последний раз редактировалось Homo-Fantasmus, 23.11.2014 в 21:27. |
#10
|
||||
|
||||
![]() Спасибо lmikle за готовность помочь.
Тема закрыта... |