импорт библиотеки типов Acad в Delphi
Реклама i
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > импорт библиотеки типов Acad в Delphi

импорт библиотеки типов Acad в Delphi

Ответ
Поиск в этой теме
Непрочитано 31.03.2005, 10:33 #1
импорт библиотеки типов Acad в Delphi
Владимир В
 
машиностроение
 
Москва
Регистрация: 22.03.2005
Сообщений: 56

Всем здрасти
прочел статью, http://www.delphimaster.ru/articles/autocad/index.html это как раз то, что нам нужно на сегодняшний день: вставлять из программы на Делфи в Акад простые объекты. Вроде речь в статье идет о том же. Но! Сразу же столкнулся с проблемой. приводится пример как импортировать библиотеку типов Автокад. Показывается картинку диалогового окна, а затем идет текст:

Цитата:
В указанном примере я создал отдельную станицу (Palette Page) для объектов AutoCad. В результате у вас должно появиться три новых компонента: AcadDocument, AcadDatabase, AcadLayerStateManager
Это место осталось загадкой: как при помощи этого диалога создались компоненты Акад?

Далее я пытался запутить приложение, которое вы приводится в качестве примера. При попытке компиляции вылезает ошибка в Acad_tlb

Result := DefaultInterface.Mask[bsName]; cannot read a write-only property

кто нибудь может объяснить, в чем проблема? Буду очень признателен
Просмотров: 11059
 
Непрочитано 31.03.2005, 11:11 Re: импорт библиотеки типов Acad в Delphi
#2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Владимир В
Всем здрасти
прочел статью, http://www.delphimaster.ru/articles/autocad/index.html это как раз то, что нам нужно на сегодняшний день: вставлять из программы на Делфи в Акад простые объекты. Вроде речь в статье идет о том же. Но! Сразу же столкнулся с проблемой. приводится пример как импортировать библиотеку типов Автокад. Показывается картинку диалогового окна, а затем идет текст:

Цитата:
В указанном примере я создал отдельную станицу (Palette Page) для объектов AutoCad. В результате у вас должно появиться три новых компонента: AcadDocument, AcadDatabase, AcadLayerStateManager
Это место осталось загадкой: как при помощи этого диалога создались компоненты Акад?

Далее я пытался запутить приложение, которое вы приводится в качестве примера. При попытке компиляции вылезает ошибка в Acad_tlb

Result := DefaultInterface.Mask[bsName]; cannot read a write-only property

кто нибудь может объяснить, в чем проблема? Буду очень признателен
Сразу: "вы приводится в качестве примера" - это не я.

Но в той статье написано:

"Для самостоятельного ознакомления с объектной моделью AutoCad желательно транслировать в Delphi библиотеку типов AutoCad. Для AutoCad 2004 - это файл acax16enu.tlb, для более ранних версий - acad.tlb. Для этого в меню project выберете пункт меню Import Type Library. Появится окно для выбора прописанных в системном реестре библиотек типов. Может так случиться, что нужной нам библиотеки мы не найдём. Тогда щёлкните на кнопку Add (добавить) и вручную добавьте один из указанных выше файлов."

И только потом картинка диалога.

Если разжевать, то

Шаг 1. Создайте в среде Delphi новое приложение, а затем в меню Project выберите пункт Import Type Library

Шаг 2. Щелкните по кнопке Add и выделите файл c:\Program Files\Common Files\Autodesk Shared\acax16enu.tlb.

Шаг 3. В списке Import Type Library появится элемент AutoCAD 2004 Type Library (Version 1.1). Выберите его, и заполнится список Class names.

Шаг 4. Щелкните по кнопке Install — в каталоге Imports Delphi автоматически сгенерируется файл AutoCAD_TLB.pas, в котором и объявлен весь интерфейс сервера.

Далее как в статье

Но надо иметь ввиду, что библиотека типов - самое недоделанное место. Это же не для пользователей, поэтому бродяги-программисты могут ее выпускать незавершенной. Потому и ошибки. Да и с каждым билдом Автокада библиотека типов может меняться.

При ошибке компиляции просто заремьте ошибочные строки.

Работать с "компонентами", импортированными из ЕДИ надо очень осторожно. В ней прописаны конкретные GUID для определенной версии. В другой версии (даже минорной) могут быть другие объявления. Программа может оказаться неработоспособной.

Лучше работать без импорта. И не особо полагаться что легко будет "вставлять из программы на Делфи в Акад простые объекты".

AutoCAD в Delphi-программу не встроить. А самостоятельному - делать больше нечего, как откликаться на всякие левые призывы.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 31.03.2005, 11:29
#3
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Цитата:
Шаг 1. Создайте в среде Delphi новое приложение, а затем в меню Project выберите пункт Import Type Library

Шаг 2. Щелкните по кнопке Add и выделите файл c:\Program Files\Common Files\Autodesk Shared\acax16enu.tlb.

Шаг 3. В списке Import Type Library появится элемент AutoCAD 2004 Type Library (Version 1.1). Выберите его, и заполнится список Class names.

Шаг 4. Щелкните по кнопке Install — в каталоге Imports Delphi автоматически сгенерируется файл AutoCAD_TLB.pas, в котором и объявлен весь интерфейс сервера.
Ну до этого я все таки дошел сам :-)
И даже при компиляции заремил ошибку, возникающую в AutoCad_tlb.pas

но мне непонятно, как автор создал три новых коипонента. В своих примерах он обращается к компоненту AcadDocument, которогоя как раз и не сумел создать. Ну и конечно же вылезает ошибка еще при загрузке проекта.

Цитата:
Лучше работать без импорта.
какие пути еще подключения проги в Делфи к Автогаду вы еще можете предложить? Или укажите адресок, где можно ознакомится, плиз
Владимир В вне форума  
 
Непрочитано 31.03.2005, 13:47
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Владимир В
но мне непонятно, как автор создал три новых коипонента. В своих примерах он обращается к компоненту AcadDocument, которогоя как раз и не сумел создать. Ну и конечно же вылезает ошибка еще при загрузке проекта.
Так после шага 4 Delphi предлагает установить модуль. Надо создать новый пакет (назвав, например, Acad2005.dpk) и установить в обычном порядке. Тогда и появятся компоненты

Код:
[Выделить все]
package Acad2005;

{$R *.res}
{$R '..\..\..\..\borland\delphi6\Imports\AutoCAD_TLB.dcr'}
{$R '..\..\..\..\borland\delphi6\Imports\AutoCADColor_TLB.dcr'}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION 'AutoCAD 2005 для ruCAD'}
{$IMPLICITBUILD OFF}

requires
  rtl,
  vcl;

contains
  AutoCAD_TLB in '..\..\..\..\Borland\Delphi6\Imports\AutoCAD_TLB.pas',
  AutoCADColor_TLB in '..\..\..\..\Borland\Delphi6\Imports\AutoCADColor_TLB.pas';

end.
Это, разумеется мой частный случай.

Цитата:
какие пути еще подключения проги в Делфи к Автогаду вы еще можете предложить? Или укажите адресок, где можно ознакомится, плиз
Что такое "Автогад" я не знаю. А про работу с AutoCAD см. книгу С. Зуев, Н.Полещук "САПР на базе AutoCAD - как это делается" - там много про связки с Delphi. А также Н.Полещука "AutoCAD 2004. Разработка приложений и адаптация", "AutoCAD 2002. В подлиннике". В последних двух книгах по одной главе по Delphi, но с разными вариантами.

Без импорта TLB надо использовать объявления в виде

var
Acad : OleVariant;

а не

AcadDocument1: TAcadDocument;
и т.п.
ShaggyDoc вне форума  
 
Непрочитано 29.04.2005, 16:09
#5
eax

проектирование транспортных сооружений
 
Регистрация: 26.04.2005
Москва
Сообщений: 107
<phrase 1=


Добрый день!

Автор вышеупомянутой татьи - это я. Признаюсь, когда я пишу приложения под AutoCAD, созданные при импортировании библиотекитипов компоненты я не использую. Вместо этого я подключаю модуль с описанием интерфейсов и классов AutoCAD в раздел uses и использую основную переменную AcadApp: IAcadApplication. А моя статья предназначена для людей, которые достаточно хорошо знают Delphi и не знают объектной модели Delphi. Безусловно, примеры, описанные в статье, мягко выражаясь, сырые.

Владимиру В:
Компоненты я лично не создавал! Это сделала среда Delphi. Для этого не надо было отключать "галочку" Generate Component Wrapper в окне импорта библиотек типов.
eax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > импорт библиотеки типов Acad в Delphi