Как правильно сделать команду на кнопке

Автор Тема: Как правильно сделать команду на кнопке  (Прочитано 14688 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Добрый день!
Хочу повесить на кнопку запуск скрипта.
при нажатии кнопки, должна выполняться команда оболочки:
python d:\18_проектирование\команды\000.001 - проба.py

пытаюсь сделать так:
^C^C(command "_.shell" "python \"d:\\18_проектирование\\команды\\000.001 - проба.py\"")
но не выходит, понимаю что проблема с экранирование кавычек и обратных слешей, но никак не выходит, подскажите, как правильно сформировать строку.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
python в данном случае это python.exe ? Тогда нужно задать путь к нему.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Что-нибудь такое наверное:
Код - Auto/Visual Lisp [Выбрать]
  1. ^C^C(startapp "C:\\Users\\<имя пользователя>\\AppData\\Local\\Programs\\Python\\Python37\\python.exe" "\"d:\\18_проектирование\\команды\\000.001 - проба.py\"")
« Последнее редактирование: 31-01-2020, 15:28:55 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
путь к python прописан в PATH, без аргументов запускается., сейчас попробую еще разок, видимо, я слэши не там где нужно ставил.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
путь к python прописан в PATH, без аргументов запускается., сейчас попробую еще разок, видимо, я слэши не там где нужно ставил.
С блокнотом вот так запускается (открывает файл):
Код - Auto/Visual Lisp [Выбрать]
  1. ^C^C(startapp "notepad.exe" "\"d:\\18_проектирование\\команды\\000.001 - проба.py\"")
Так что и с PYTHON должно работать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Вот такая строка
(startapp "python" "\"D:\\18_проектирование\\acad_scripts\\000.000.03_Проба.py\"")
если я ее ввожу в строку autocad, то выполняется правильно
Но почему то на кнопке не хочет...

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
В командной строке появляется
 (startapp "python" "D:
и ждет дальнейшего ввода, что то я косячу, со слешами какая то непонятка.

Отмечено как Решение DMuzer 31-01-2020, 17:10:28

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
В командной строке появляется
 (startapp "python" "D:
и ждет дальнейшего ввода, что то я косячу, со слешами какая то непонятка.
Проверяй:
Код - Auto/Visual Lisp [Выбрать]
  1. ^C^C(startapp "python" "D:/18_проектирование/acad_scripts/000.000.03_Проба.py")
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Да, так работает!!!
Я видел в справке, что если использовать команду cmd c ключом /k то окно консоли не будет показываться, а можно ли со startapp нечто подобное?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я видел в справке, что если использовать команду cmd c ключом /k то окно консоли не будет показываться, а можно ли со startapp нечто подобное?
Нет. А разве pythonw.exe  не запускается без окна?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Какая то магия, почему так происходит?
вставляю в строку такую команду, все работает
(startapp "python" "D:/18_проектирование/команды/Спецификация_лист_Вставить_таблицу_отдельно.py")

то же самое вставляю в макрос команды, но с кнопки не работает... Что не так?

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Подчистил пробелы после скобок и вроде заработало...
С этим связано?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
С этим связано?
Да. В меню каждый пробел вне lisp-выражения - это как пробел (или ввод) на клавиатуре.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
А через ActiveX можно настраивать/создавать кнопки, менюшки, команды?

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1093
  • Карма: 172
Частично можно. Например, добавить выпадающее меню, поменять доступность команд, еще что-то. Но я бы создавал частичное меню, которое и использовал бы. Это проще и в результате дешевле получается.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А через ActiveX можно настраивать/создавать кнопки, менюшки, команды?
Да. Но это нужно будет делать при каждом запуске AutoCAD, т.к. это всё нельзя сохранить в CUI/CUIX средствами ActiveX.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
А можно ли конкретно создавать команды? По моему это первое что приходится делать, и не слишком удобно все это устроено.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А можно ли конкретно создавать команды?
Уточни вопрос. Что такое "создавать команды"? Чтобы в командной строке можно было ввести имя команды и запустился её код? Тогда это не с помощью ActiveX. В нём нет средств для регистрации команд. Тут или lisp, или arx, или .NET.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Я имею ввиду вот что:
при настройке интерфейса я делаю так:
1. Создаю команду - соответственно выбираю иконку, название, прописываю макрос.
2. И добавляю на какую то панель.

Я имел ввиду, могу ли я создать такие команды не вручную, поскольку, я думаю их много надо создавать, а написать какой то скрипт для этого?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13827
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я имел ввиду, могу ли я создать такие команды не вручную, поскольку, я думаю их много надо создавать, а написать какой то скрипт для этого?
Это можно делать только при помощи AutoCAD .NET API (все классы в Autodesk.AutoCAD.Customization). И соответственно создаётся/редактируется CUI/CUIX-файл.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DMuzerАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 152
  • Карма: 2
Спасибо за ответ!!!

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 526
  • Карма: 116
В командной строке появляется
 (startapp "python" "D:
и ждет дальнейшего ввода, что то я косячу, со слешами какая то непонятка.
Подчистил пробелы после скобок и вроде заработало...
С этим связано?
Да. В меню каждый пробел вне lisp-выражения - это как пробел (или ввод) на клавиатуре.

Пробелы не единственная возможная причина. Существует ограничение на длину строки команд, которые можно выполнить с кнопки, около 255 символов. Я на такое натыкался в 2010. При этом в кнопе хранится вся строка, но выполняется только ее часть.

При вводе через консоль все работает, при нажатии кнопки происходит обрезание списка команд и не срабатывает.

Для обхода ограничения приходилось создавать внешний lisp файл, выносить код туда. А на кнопку вешать подгрузку/исполнение файла.
По причине ограничения стоит избегать длинных путей к файлам.