Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Запуск lisp-программ из excel

Запуск lisp-программ из excel

Ответ
Поиск в этой теме
Непрочитано 08.11.2015, 17:42 #1
Запуск lisp-программ из excel
kefirrr
 
Регистрация: 29.12.2014
Сообщений: 28

Добрый день,
Я хочу работая в екселе вызвать lisp-программку для автокада. Подскажите, пожалуйста, как это сделать?
У меня есть предположение, что нужно каким-то образом ввести "имя" команды в командную строку или что-то типа того. Но как это реализовать- не знаю
Просмотров: 7340
 
Непрочитано 08.11.2015, 19:20
#2
Кулик Алексей aka kpblc
Moderator

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


Если doc - указатель на текущий документ AutoCAD, то попробуй нечто типа doc.SendStringToEcexute
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.11.2015, 19:26
#3
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если doc - указатель на текущий документ AutoCAD, то попробуй нечто типа doc.SendStringToEcexute
SendCommand("(лисп выражение) ")
Но запускать из Excel AutoCAD, для того чтобы в нём запускать lisp - это высший пилотаж, для которого у меня нет слов...
Александр Ривилис вне форума  
 
Непрочитано 08.11.2015, 19:28
#4
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
высший пилотаж, для которого у меня нет слов...
Это понятно Я бы тоже попробовал обойти такой вариант, но черт его знает, что там у ТС ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.11.2015, 20:48
#5
kefirrr


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Но запускать из Excel AutoCAD, для того чтобы в нём запускать lisp - это высший пилотаж,
Дело в том, что основная часть работы делается через excel, но так же есть готовый lisp и не один, и перещелкивать каждый раз на автокад, чтобы там запустить lisp- не хочется
kefirrr вне форума  
 
Непрочитано 08.11.2015, 20:56
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от kefirrr Посмотреть сообщение
Дело в том, что есть готовый lisp и не один, а переделывать их под VBA нет ни времени ни желания.
Просто вы не объяснили общий смысл своих действий, а запускать через Excel AutoCAD, чтобы в нем запускать для чего то лисп - это весьма нестандартное решение)
Сергей812 вне форума  
 
Непрочитано 17.11.2015, 11:11
#7
Владимир_М


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Просто вы не объяснили общий смысл своих действий, а запускать через Excel AutoCAD, чтобы в нем запускать для чего то лисп - это весьма нестандартное решение)
Очень даже стандартное и логичное. Ексел используется, например, вместо обычной формы для ввода исходных данных, а тем более если с этой цифирью надо сначала проделать какие-то манипуляции (те же спецификации металла арматуры), а потом получить чертеж в акаде с использованием той информации, что уже есть в Екселе...
И задача не шибко вроде и сложная должна быть... В чистом виде, правда, именно так, не делал... Но из самостоятельного ехе-шника в Акад и lisp, есть такое (где-то в архивах у себя поискать если, давненько это было лет 15 назад). Их екселя, примерно такие же задачи решалась, но только в акаде загружались уже dvb всегда, как-то на тот момент уже от Lispa ушел.
Последовательность примерно такая:
из макроса ексел включается акад, например, командой shell, и сразу же c в строке с акад добавляется на выполнение скрипт, там что-то типа "\b", что ли, надо добавить после acad.exe. Вот этого куска под рукой нет...
Скрипт, типа такой (первые две строчки открытие шаблона в акад):
_open
obmern.dwt
(load "имя_lsp_файла")

Можно и в ехеле акадовский шаблон нужный сначала открыть (кажется "\t").

Может чего и попутал извините, но должна задачка решаться, уверен.

Последний раз редактировалось Владимир_М, 17.11.2015 в 11:34.
Владимир_М вне форума  
 
Непрочитано 17.11.2015, 11:24
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Проще из Excel'я AutoCAD'ом управлять через VBA в Excel'е

Последний раз редактировалось trir, 17.11.2015 в 11:32.
trir вне форума  
 
Непрочитано 17.11.2015, 16:02
#9
Владимир_М


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


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
из макроса ексел включается акад, например, командой shell, и сразу же c в строке с акад добавляется на выполнение скрипт, там что-то типа "\b", что ли, надо добавить после acad.exe. Вот этого куска под рукой нет...
вот нашел ключевую строку:
Код:
[Выделить все]
Shell putacad & "\acad.EXE /t Ps146.dwt /b Ps146.scr", vbMaximizedFocus
здесь шаблон акада включается сразу из кода VB... соответственно в скрипте уже остается только одна строка (load "...")

Последний раз редактировалось Владимир_М, 17.11.2015 в 16:08.
Владимир_М вне форума  
 
Непрочитано 17.11.2015, 16:21
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от trir Посмотреть сообщение
Проще из Excel'я AutoCAD'ом управлять через VBA в Excel'е
Ну тогда ТС придется переписывать готовые лиспы, если это вообще их лиспы. С точки зрения экономии времени логично, с точки зрения дальнейшего развития - "зоопарк" со всеми вытекающими.
Сергей812 вне форума  
 
Непрочитано 17.11.2015, 20:01
#11
Владимир_М


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну тогда ТС придется переписывать готовые лиспы, если это вообще их лиспы. С точки зрения экономии времени логично, с точки зрения дальнейшего развития - "зоопарк" со всеми вытекающими.
Первое предложение понял... О чем второе? ничего не понятно... в чем экономия времени? какое дальнейшее развитие? поясните, пожалуйста.
Владимир_М вне форума  
 
Непрочитано 17.11.2015, 21:39
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Экономия времени - в использовании уже готовых программ на лиспе.. без перевода на VBA..
Недостаток - что это все не единое целое, не законченное решение. Кто-то в связке AutoCAD-Excel должен "рулить", обеспечивая передачу данных, переключение активности приложений и т.д. для реализации вменяемого интерфейса - но это дело вкуса, конечно.
Сергей812 вне форума  
 
Непрочитано 18.11.2015, 06:37
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Кто-то в связке AutoCAD-Excel должен "рулить", обеспечивая передачу данных, переключение активности приложений и т.д. для реализации вменяемого интерфейса
И в этой связке рулить должен AutoCAD. Именно он должен быть загружен, в нем должен работать Лисп и из него, при необходимости, должна запускаться Excel (или любое другое приложение).

Дело в том, что AutoCAD - "тяжелое" приложение. Если другие (например офисные), легко запускаются из разных программ как COM-серверы (и даже могут быть встроены в окна этих "разных" программ), то с AutoCAD не так.

Он тяжело стартует, выполняет много настроек, выполняет автозагрузки ищет шрифты и прочая. Да и на машине может быть несколько AutoCAD. Не зря Александр Ривилис написал (а уж он-то знает):
Цитата:
Но запускать из Excel AutoCAD, для того чтобы в нём запускать lisp - это высший пилотаж, для которого у меня нет слов...
Конечно, можно запустить AutoCAD просто как exe, написать что-то в командной строке. И можно SendCommand послать ему. Но это всё будет "на соплях".
ShaggyDoc вне форума  
 
Непрочитано 18.11.2015, 08:05
#14
Владимир_М


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Цитата:
Сообщение от Сергей812
Кто-то в связке AutoCAD-Excel должен "рулить", обеспечивая передачу данных, переключение активности приложений и т.д. для реализации вменяемого интерфейса

И в этой связке рулить должен AutoCAD. Именно он должен быть загружен, в нем должен работать Лисп и из него, при необходимости, должна запускаться Excel (или любое другое приложение).
Господа, Вы о чем здесь? Вроде, вопрос был задан и потом разъяснен достаточно четко:
Основная работа в Ексел! И только где-то, когда-то, сбоку нужно отображение данных из Ехсел в формате Акада, причем используя разные приложения в Лисп. Тем более что данная связка нужна человеку просто, как говорится "для себе", не коммерческие дела...
какие такие "переключение активности приложений и т.д. для реализации вменяемого интерфейса"? почему именно "рулить должен AutoCAD. Именно он должен быть загружен, в нем должен работать Лисп и из него, при необходимости, должна запускаться Excel"?

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Дело в том, что AutoCAD - "тяжелое" приложение...
Он тяжело стартует, выполняет много настроек, выполняет автозагрузки ищет шрифты и прочая."
И что ж с того? Если Вы его запустите первым, оно от этого станет легче? При любом варианте (не важно кто там будет "рулить") так или иначе все это все равно надо загрузить. Вообще речь идет о нескольких секундах (у меня Акад грузится за 7-8 сек).

"Да и на машине может быть несколько AutoCAD." Вот именно запуск конкретного acad.exe позволяет избавиться от "соплей" связанных не только с количеством акадов, но просто со сменой версии акада... Все как работало, кажется, начиная с Акад R14, так и продолжает работать на любой последней версии и Акада, и Ексел.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Не зря Александр Ривилис написал (а уж он-то знает):
Цитата:
Но запускать из Excel AutoCAD, для того чтобы в нём запускать lisp - это высший пилотаж, для которого у меня нет слов...

Конечно, можно запустить AutoCAD просто как exe, написать что-то в командной строке. И можно SendCommand послать ему. Но это всё будет "на соплях".
Вы, конечно, ShaggyDoc, Ривилис, люди походу авторитетные, не сомневаюсь, но... какой тут пилотаж? добавить две строки предельно понятного текста?
И что это за аргументы: "Но это всё будет "на соплях"". Как-то без пояснений не верится. На практике, повторюсь, все работает нормально.
Владимир_М вне форума  
 
Непрочитано 18.11.2015, 09:32
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
На практике, повторюсь, все работает нормально.
Вот когда столкнетесь с настоящей практикой - т.е. с работой программы без присутствия программиста, без переделок на лету, на любой машине - тогда поймете.
ShaggyDoc вне форума  
 
Непрочитано 18.11.2015, 10:09
#16
Владимир_М


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот когда столкнетесь с настоящей практикой - т.е. с работой программы без присутствия программиста, без переделок на лету, на любой машине - тогда поймете.
Дак, так-то, кто ж спорит... Согласен... Но я отвечал только на начальный вопрос, и про него же Вам хотел напомнить...
Владимир_М вне форума  
 
Непрочитано 07.12.2015, 08:32
#17
vl74


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


Накопал интересный файл. Можно посылать команды из экселя в автокад. Но с многострочным текстом не получается, а хотелось бы.
Вложения
Тип файла: rar Send AutoCAD Commands From Excel & VBA.rar (41.1 Кб, 49 просмотров)
__________________
From Siberia with love
vl74 вне форума  
 
Непрочитано 07.12.2015, 10:15
#18
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


_script гораздо удобней
Код:
[Выделить все]
 (Command "-mtext" '(0 0) '(100 10) "test1" "")
trir вне форума  
 
Непрочитано 07.12.2015, 10:30
#19
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от vl74 Посмотреть сообщение
Накопал интересный файл. Можно посылать команды из экселя в автокад. Но с многострочным текстом не получается, а хотелось бы.
судя по коду
Код:
[Выделить все]
acadCmd = ""
 For j = 3 To LastColumn
    If Not IsEmpty(.Cells(i, j).Value) Then
       acadCmd = acadCmd & .Cells(i, j).Value & vbCr
    End If
 Next j
просто собирается содержимое всех ячеек по горизонтали с имитацией нажатия ввода vbCr между ними, и потом чохом засылается в автокад. Поэтому записываете последовательность создания мультитекста в комстроке акада и переносите в ячейки.
Сергей812 вне форума  
 
Непрочитано 07.12.2015, 11:15
#20
vl74


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


В том и дело, что с многострочным текстом не прокатывает, так как команда _Mtext не выполняется в "прозрачном" режиме, без запуска редактора.
Просто я не силен в командной строке автокада, а тут еще надо переслать ее из экселя.
__________________
From Siberia with love
vl74 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Запуск lisp-программ из excel

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel kakt00z Готовые программы 23 10.03.2022 00:54
Lisp запуск VBA и ожидание завершения gizmo_zx LISP 6 21.02.2011 14:24
Запуск Lisp с помощью "Параметра выбора" (Lookup) Eddicordo LISP 6 08.12.2010 21:56
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06