Главная страница
    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.46 MB
Время: 0.05 c
3-1084988072
Dmitry Vyacheslavovich
2004-05-19 21:34
2004.06.13
Конфигурация InstallShield для работы с DB


6-1082487800
Valerik
2004-04-20 23:03
2004.06.13
ServerSocket обрыв соединения?


1-1085736411
Turbid
2004-05-28 13:26
2004.06.13
CreateForm с параметром Hide


1-1085834098
killer
2004-05-29 16:34
2004.06.13
Размер шрифта


4-1083922189
Pavel Mikhailov
2004-05-07 13:29
2004.06.13
Id потока-> HANDLE процесса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский