Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
3-1084947752
Dima
2004-05-19 10:22
2004.06.13
Пустые запросы


1-1085587061
vajo
2004-05-26 19:57
2004.06.13
Заставка


14-1085385346
Anonim
2004-05-24 11:55
2004.06.13
Про модемы


1-1085921536
ilnarab
2004-05-30 16:52
2004.06.13
Функция для выбора файла


6-1082736717
Piter
2004-04-23 20:11
2004.06.13
TTcpClient





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский