Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Delphi+Autocad   Найти похожие ветки 

 
Вячеслав   (2004-05-27 16:08) [0]

Hellow All,
У меня возникла проблема как вызвать функцию  делфийского приложения из Автокада. Собственно если есть какой нибудь примерчик типа создания простейшего COM сервера под Дефи и последующего вызова его объектов из Автокада просьба помочь. Может ссылку какую нибудь киньте.
Заранее благодарен.


 
VMcL ©   (2004-05-27 16:16) [1]

Delphi?\Demos\ActiveX\*.*


 
ShaggyDoc   (2004-05-28 06:40) [2]

См. книгу Н.Полещука AutoCAD 2004. Разработка приложений (второй том из серии "В подлиннике". Там моя глава с примерами.

Скоро выйдет С.Зуев, Н.Полещук. "САПР на базе AutoCAD. Как это делается". Половина книги про ЭТО.

А в принципе ничего особенного нет. Пишешь COM-сервер, как обычно. Доступ к нему из Автокада возможен

а) из программы на VisualLisp
в) из VBA, всторенного в Автокад (бррр...)

Сложности бывают при передаче списков строк - из AutoCAD не доступен IStrings. Строки приходится передавать по одной, заполняя делфийские списки.

Пример вызова диалога DualList из RX


(defun ru-dlg-dual-list (dlg_caption left_caption right_caption left_list right_list / i left_count right_count s srv)
 ;; Проверка DualList
 ;|
Вариант с формированием списков добавлением по одной строке
(ru-dlg-dual-list "Двойной список" "Наши" "Геркулесовцы"
(list "Остап" "Балаганов" "Паниковский" "Козлевич")
(list "Полыхаев" "Берлага" "Корейко")
)
А здесь если с одной стороны пусто - там будет nil

(ru-dlg-dual-list "Двойной список" "Наши" "Геркулесовцы"
(list "Остап" "Балаганов" "Паниковский" "Козлевич")
nil
)
Можно передавать nil с одной стороны
|;

 (if (setq srv (vlax-get-or-create-object "ruDualListSrv.ruCadDualLst"))
   (progn
     (vlax-invoke-method srv "Create")
     (vlax-put-property srv "DlgCaption dlg_caption)
     (vlax-put-property srv "LeftCaption left_caption)
     (vlax-put-property srv "RightCaption right_caption)
     (foreach s left_list (vlax-invoke-method srv "AddLeftString" s))
     (foreach s right_list (vlax-invoke-method srv "AddRightString" s))
     (vlax-invoke-method srv "Execute")
     ;;Это вариант с чтением построчно
     (setq left_count
     (vlax-get-property srv "LeftListCount)
    left_list "()
    i 0
     ) ;_ end of setq
     (repeat left_count
(setq s "")
(vlax-invoke-method srv "GetLeftString" i "s)
(setq left_list (cons s left_list)
      i  (1+ i)
) ;_ end of setq
     ) ;_ end of repeat
     (setq left_list (reverse left_list)
    right_list "()
    i  0
    right_count (vlax-get-property srv "RightListCount)
     ) ;_ end of setq
     (repeat right_count
(setq s "")
(vlax-invoke-method srv "GetRightString" i "s)
(setq right_list
       (cons s right_list)
      i (1+ i)
) ;_ end of setq
     ) ;_ end of repeat
     (setq right_list (reverse right_list))
     (vlax-invoke-method srv "Free") ;_ end of vlax-invoke-method
   ) ;_ end of progn
   (alert "Не удалось запустить DualList")
 ) ;_ end of if
 (list left_list right_list)
) ;_ end of defun




Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
14-1085377332
Иксик
2004-05-24 09:42
2004.06.13
Ветка про Израиль.


3-1084372623
Юрий
2004-05-12 18:37
2004.06.13
Связь приложения и базы данных


14-1085650155
Паниковский
2004-05-27 13:29
2004.06.13
Выход из Интернета кто искал???


1-1085758172
negrila
2004-05-28 19:29
2004.06.13
Как программно менять Anchors?


3-1085157912
Igor_P
2004-05-21 20:45
2004.06.13
автоинкремент в Interbase