Подключение COM-сервера к LISP - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Подключение COM-сервера к LISP

Подключение COM-сервера к LISP

Ответ
Поиск в этой теме
Непрочитано 13.03.2011, 18:56
Подключение COM-сервера к LISP
Аля_777
 
Регистрация: 13.03.2011
Сообщений: 12

Доброго времени суток!
Задача такая:необходимо написать свою функцию на делфи к автокаду.
Есть делфи-приложение,в виде COM-сервера с функцией для акада,а на лисп нужно написать функцию,котрая будет вызывать этот сом-сервер.
Пытаюсь запустить из под автокада прогу написанную на лисп,которая вроде как должна подключаться к сом-серверу и запускать его в автокаде,но она не пашет...

С лисп почти не знакома,в этом и проблема..перерыла кучу примеров,но безрезультатно,буду очень рада если кто-нибудь поможет!
Просмотров: 7700
 
Непрочитано 14.03.2011, 10:01
#21
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Я не очень умный, поэтому вынужден уточнить: запустить куда?
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 14.03.2011, 10:34
#22
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Аля_777 Посмотреть сообщение
progid: ruMacrSrv.macros
а что касается функции,она в разработке^^ поэтому сейчас просто, тестовая:
название метода: test
параметры: a, b
результат: c
(vl-load-com)
(vlax-invoke-method (vlax-get-or-create-object "ruMacrSrv.macros") "test" a b)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.03.2011, 10:41
#23
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я не очень умный, поэтому вынужден уточнить: запустить куда?
Не скромничай. Не куда а откуда: из автокада, а куда она (функция) сама разберется
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 14.03.2011, 10:55
#24
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Это не я говорил - опять с цитатами "косячок".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 14.03.2011, 19:44
#25
Аля_777


 
Регистрация: 13.03.2011
Сообщений: 12


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Но такому серверу не надо ставить задачу "вызвать функцию из делфи,которая расставляет определенным образом на этой линии точки".
Delphi не умеет расставлять точки. Это умеет делать сам AutoCAD.
Делфи, собстно, рассчитывает шаг,с которым будут расставляться точки,а расставлять точки,это уже по средством метода автокада...

Цитата:
Для выполнения из Delphi внутри Автокада какой-то LISP-функции...
Внутри Автокада,из делфи,должна вызываться не лисп функция,а функция которая на сервере есть...

Код:
[Выделить все]
А у автора темы смесь ужей, ежей с добавлением проктолого-стоматологических методов лечения этой смесью.
была бы рада, если бы Вы получше объяснили эту тему, а то после таких сообщений только хуже все запуталось.

Да и вообще, вопрос был не на счет функции,а на счет того,если можно,то КАК подключить сервер к лисп(изменив библиотечную функцию запуска приложения на лисп),чтобы можно было бы запускать сом-сервер и передавать параметры функции на сом-сервере из автокада
Аля_777 вне форума  
 
Непрочитано 14.03.2011, 23:13
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Попробую и я высказаться
Есть несколько вариантов решения задачи (по крайней мере мне так кажется )
Вариант 1. На Delphi (или любом другом привычном языке) пишется dll, в обязательном порядке регистрируемая в ОС. В таком случае все, что написано в dll, будет СОМ-сервером, а AutoCAD выступает в роли СОМ-клиента. СОМ-сервер не зависит от версии AutoCAD (в общем случае), т.к. не для этого он пишется
Вариант 2. На Delphi пишется некий exe-файл, который обращается к уже запущенному AutoCAD как к стороннему приложению. exe получается - СОМ-клиент, а AutoCAD - СОМ-сервер. В зависимости от выбранной схемы связывания (раннее или позднее) может понадобиться и импортирование соответствующих tlb-библиотек.
Вариант 3. Начиная с Delphi 2005, кажется, уже поддерживается .NET. Соответственно появляется возможность написать .NET-сборку, загружаемую внутрь AutoCAD (начиная с версии 2005) командой _.netload и живущую вообще по своим принципам.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2011, 08:19
#27
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
пишется dll, в обязательном порядке регистрируемая в ОС
Это можно считать ответом на мой вопрос?
Хочется без регистрации.
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 15.03.2011, 08:43
#28
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Если dll не будет зарегистрирована в ОС, то создать СОМ-объект просто не получится.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 15.03.2011, 09:59
#29
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от Лиспер Посмотреть сообщение
СОМ-объект просто не получится
В *.dll есть машинный код, СОМ-сервер ведь не сама цель. Я догадываюсь что без регистрации его нереально запустить, хотелось бы услышать это от более опытных товарищей.
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 15.03.2011, 10:08
#30
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Мэтры! Матёрые человечищи!
Напишите бедной девушке пример Inproc COM сервера на Delphi. Уверен, пригодится и многим другим, и мне в том числе.
Тема-то совсем не простая и лишний хорошо прокомментированный пример никогда не помешает.

Пример такой.
1. В AutoCAD запускается лисп функция, запрашивающая у пользователя отрезок, а так же число участков, на которые этот отрезок нужно разметить.
2. Если отрезок указан, вызывается метод из ком сервера и этому методу передаются координаты начала и конца отрезка.
3. Код метода обращается к объектной модели AutoCAD и строит точки на отрезке, размечая его тем самым на указанное число участков.

Т.е. ком сервер (dll) одновременно является клиентом AutoCAD'a.

Offtop: Для Сергей Дубина.
Может это то, что вы ищете?
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 15.03.2011 в 10:30.
Pastor вне форума  
 
Непрочитано 15.03.2011, 10:25
#31
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Еще один вариант, но на VB: http://www.arcada.com.ua/forum/viewtopic.php?t=460
Но я почему-то не вижу там ни картинок, ни чего бы то ни было еще
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 15.03.2011, 10:31
#32
samos


 
Регистрация: 16.06.2010
Сообщений: 43


Здравствуйте, уважаемые!
Если мой вопрос не совсем в тему, то прошу извинить.
Суть в том, что все большее число пользователей приобретают 64-х разрядные Windows.
AutoCad начиная с 2008-го устанавливается на них как 64-х разрядная версия.
Dll-ки, написанные на привычном, но старом Delphi 7 получаются 32-х разрядными.
В результате, совместно с LISP-ами они не работают. Насколько я понимаю, в одном адресном просранстве разрядность AutoCad и Dll должны совпадать.
Хотелось бы спросить у опытных программистов совета и рекомендаций по этому вопросу. Как вы решаете проблему.
samos вне форума  
 
Автор темы   Непрочитано 15.03.2011, 11:32
#33
Аля_777


 
Регистрация: 13.03.2011
Сообщений: 12


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение

Вариант 1. На Delphi (или любом другом привычном языке) пишется dll, в обязательном порядке регистрируемая в ОС. В таком случае все, что написано в dll, будет СОМ-сервером, а AutoCAD выступает в роли СОМ-клиента. СОМ-сервер не зависит от версии AutoCAD (в общем случае)...
Вот про этот вариант я и говорила.и вопрос в том,как из автокада запускать этот ком сервер (загружать форму этого сервера и передавать ему параметры ).
Пожааааалууйсто,подскажите,добрые формучане
Аля_777 вне форума  
 
Непрочитано 15.03.2011, 11:50
#34
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Аля_777 Посмотреть сообщение
Вот про этот вариант я и говорила.и вопрос в том,как из автокада запускать этот ком сервер (загружать форму этого сервера и передавать ему параметры ).
Вам это уже показывали в сообщениях № 4,5,20,22.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 15.03.2011, 12:57
#35
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от Аля_777 Посмотреть сообщение
Пожааааалууйсто,подскажите,добрые формучане
а это не смотрели?
http://dwg.ru/pub/8
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Автор темы   Непрочитано 15.03.2011, 13:04
#36
Аля_777


 
Регистрация: 13.03.2011
Сообщений: 12


Ура товарищи! все запустилось,все считается,всем большущее спасибо!

Последний раз редактировалось Аля_777, 15.03.2011 в 13:51.
Аля_777 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Подключение COM-сервера к LISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 5025 20.08.2025 22:52
LISP получить список установленных в системе (векторных) шрифтов или хотя бы узнать, установлен ли указанный Ax3 LISP 9 08.02.2011 14:11
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19