|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Правомочен ли вызов .NET-функции ([LispFunction]) из файла *.mnl
Josser
Регистрация: 09.11.2011
Сообщений: 66
|
||
Просмотров: 5686
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Вопрос в том, как выполняется загрузка .NET-сборок (там же вариантов больше одного). Возможно, спасет http://adn-cis.org/search.html?query...B7%D0%BA%D0%B0
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Цитата:
Цитата:
Последний раз редактировалось Salt, 14.09.2013 в 22:24. |
|||
![]() |
|
||||
жить вообще опасно: можно уснуть и не проснуться, хотя до этого тысячи раз просыпался удачно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Цитата:
Например, у меня получалось вызывать (command ...) из acad*.lsp, но автодеск категорически не советует это делать. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
![]() А еще, раньше, перед использованием лиспов в пустом документе раисовали точку в начале координат, пещерные люди... |
|||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Я хочу иметь самодельную функцию (netload "Путь"), которую можно вызывать из .mnl и использовать её вместо (command "_netload"...), которую нельзя вызывать из .mnl.
Причем тут пещерные люди в начале координат? Гомер, ложись спать, плиз. |
|||
![]() |
|
||||
Salt
Можно. В момент загрузки mnl-файла lisp-подсистема уже полностью инициализирована. Во всяком случае во всех существующих версиях AutoCAD.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Нормальные - это какие? Я так понимаю, что Salt добивается загрузки .NET-сборок в зависимости от (одному ему известных) условий. Так что ни запись в реестр, ни автозагрузчик (который поддерживается только в трех последних версиях AutoCAD) ему не подходят. Какие еще варианты?
IMHO его вариант совсем не кривой. Я неоднократно его использовал (но не в AutoCAD .NET API, а в ObjectARX). |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Если не секрет что за условия могут выявиться в процессе запуска автокада (то есть не до - когда можно просто изменить конфигурацию, не во время работы - когда это можно "безболезненно" выполнить через тот-же лисп) и которые нельзя проверить из той сборки которая инициализирует лисп функцию загрузки сборок.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Дима. Ну этот вопрос скорее нужно было адресовать не мне, а Salt. У меня была ситуация, когда в зависимости от того запускался ли AutoCAD или AutoCAD Architecture и можно ли было загружать и использовать OMF-приложение. Загружать OMF-приложение, когда оно непосредственно необходимо (например, когда необходимо получать параметры стены/окна/перекрытия), накладно по времени и по тем сообщениям, которые выводит AutoCAD в командной строке, а вот при начальной загрузке оно как-то естественно и не так заметно...
Кстати, есть (в последних нескольких версиях AutoCAD не проверял) следующий подтвержденный баг. Если открыто несколько документов и загружается сборка с атрибутом LispFunction, то lisp-функция будет определена только в том документе, который был активен в момент загрузки сборки. В остальных документах она будет неизвестна.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Цитата:
Теперь насчёт бага. Я написал следующий простой "Hello World!": Код:
P.S. Дополнительно запустил код в AutoCAD 2009 x64 SP3 Enu: да, в этой версии Lisp-функция доступна только в документе, в контексте которого была выполнена загрузка библиотеки. Остальные открытые документы не имеют к ней доступа. Если создать очередной новый документ, то в нём функция будет доступна. Т.о. придётся закрыть все остальные документы и снова открыть их, чтобы функционал был доступен и в их контексте. Значит баг всё же исправили, только я не знаю в какой именно версии (проверить не могу).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 15.09.2013 в 10:57. Причина: Добавил P.S. |
||||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Цитата:
Код:
Цитата:
Последний раз редактировалось Salt, 15.09.2013 в 11:49. |
|||
![]() |
|
||||
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 15.09.2013 в 12:01. |
||||
![]() |
|
||||
Josser Регистрация: 09.11.2011
Сообщений: 66
|
Цитата:
Андрей. По поводу твоего загрузчика я читал вот это. Но здесь сам менеджер плагинов загружается в уже инициализированный документ через s::startup, поэтому не удивительно, что editor готов к бою. Возможно есть новая версия, где это не так? |
|||
![]() |
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Вспомнил: у меня же есть удалённый доступ к рабочему компу.
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Цитата:
Цитата:
|
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызов был отклонен. Внешнее .NET приложение. | Дмитрий Асташев | .NET | 18 | 06.04.2012 12:10 |
Почему в lisp отсутствует аналог функции (arxload ...) для .NET сборок. | Pastor | LISP | 16 | 17.11.2010 13:15 |
Вызов функции из скомпилированного файла | baaba | Программирование | 3 | 27.08.2008 01:22 |