Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 26-03-2015, 20:11:49
-
Доброго времени суток.
Мне нужно копировать в поток (stream) всё то, что выводится в консоль командной строки AutoCAD. Как это сделать?
Спасибо.
-
accoreconsole.exe >d:\log.txt
-
accoreconsole.exe >d:\log.txt
Не то. мне нужно перенаправлять потоки динамически, дабы программа, мониторящая поток, могла быстро отследить факт получения очередной информации. Кроме того, консольный вывод командной строки и поток вывода процесса - это четыре совершенно разных человека. То, что ты показал - это stdout, а не вывод командной строки.
-
Ок - тогда Process.Start(ProcessStartInfo(...RedirectStandardOutput=true)...
А так же RedirectStandardError и RedirectStandardInput
Но да это тоже вывод всего потока.
-
Ок - тогда Process.Start(ProcessStartInfo(...RedirectStandardOutput=true)...
А так же RedirectStandardError и RedirectStandardInput.
Боюсь, что потоки stdin, stdout и stderr не имеют отношения к консоли командной строки AutoCAD.
-
Ну если берем не автокад, а accoreconsole - то в общем разница не велика.
-
Ну если берем не автокад, а accoreconsole - то в общем разница не велика.
я пока решаю задачу применительно к acad.exe, поскольку в первую очередь это должно работать в 2009-м.
-
А есть более развенутое описание - что и почему надо отследить именно в ком. строке?
-
А есть более развенутое описание - что и почему надо отследить именно в ком. строке?
Некоторые вещи в AutoCAD 2009 сделать либо невозможно, либо трудно. Некоторое время назад мною был написан сервис, работающий на удалённой машине - он выступает в качестве прокси командной строки AutoCAD - полученные с удалённой машины команды выполняет в AutoCAD 2015 или любой нужной версии (версия указывается юзером при инициализации диалога со службой). Всё работает, однако хотелось бы обратно, удалённому юзеру, отправлять то, что AutoCAD выводит у себя в командной консоли во время своей работы, дабы связь была более живой. Эта же штука время от времени используется для пакетной обработки чертежей.
-
Ну так тут консольный автокад удаленный сам по себе напрашивается - сервис запускает его (он менее ресурсоемкий и "многопоточный") - а перенаправляет юзеру - какая разница из какого автокада обращаться к службе - вообще откуда угодно можно
-
Ну так тут консольный автокад удаленный сам по себе напрашивается - сервис запускает его (он менее ресурсоемкий и "многопоточный") - а перенаправляет юзеру - какая разница из какого автокада обращаться к службе - вобще откуда угодно можно
Работать должно с любым AutoCAD, новее чем 2008. По тем или иным причинам юзер может обратиться к AutoCAD более старой версии чем 2013-я.
-
и "многопоточный"
?
-
?
их можно паралельно, раз в 20 больше запустить чем автокадов, машину "колом" не поставив.
Тады (да еще если под все автокады) - только "хукать" окно вывода - но ИХМО это не есть надежное решение - тут разумней ТЗ урезать до младшей 2013 удаленной версии.
-
Пока посмотри это: http://adndevblog.typepad.com/autocad/2012/09/trapping-the-output-from-the-autocad-text-screen-command-prompt.html
Перевод: http://adn-cis.org/perexvat-vyivoda-v-tekstovyij-ekran-i-komandnuyu-stroku-autocad.html
Насколько я помню в .NET это сделать нельзя. Во всяком случае в старых версиях.