Autocad 2015 и выше не работает ThisDrawing.SendCommand Chr(27)
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Autocad 2015 и выше не работает ThisDrawing.SendCommand Chr(27)

Autocad 2015 и выше не работает ThisDrawing.SendCommand Chr(27)

Ответ
Поиск в этой теме
Непрочитано 13.04.2015, 19:55 #1
Autocad 2015 и выше не работает ThisDrawing.SendCommand Chr(27)
maratovich
 
г. Самара
Регистрация: 12.07.2009
Сообщений: 2,437

Собственно вопрос в заголовке, чем теперь дать команду ESCAPE ?
Просмотров: 6170
 
Непрочитано 13.04.2015, 19:59
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а зачем делать эскейп?
gomer вне форума  
 
Автор темы   Непрочитано 13.04.2015, 20:01
#3
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


А вдруг пользователь забыл прервать свою команду и нажал макрос. Да и так на всякий случай - очистка комстроки. Так чем заменить то ?
maratovich вне форума  
 
Непрочитано 13.04.2015, 20:31
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от maratovich Посмотреть сообщение
нажал макрос.
Если нажал и макрос, то смотри Использование в макросах специальных управляющих символов
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 13.04.2015, 20:33
#5
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Если нажал и макрос, то смотри Использование в макросах специальных управляющих символов
Спасибо конешна, но не то.
Нужно программно нажать ескейп.
maratovich вне форума  
 
Непрочитано 13.04.2015, 21:26
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


гугл дает ссылки на такие варианты
http://forums.augi.com/showthread.ph...l=1#post931694
http://forums.augi.com/showthread.ph...l=1#post124495
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 13.04.2015, 21:31
#7
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
гугл дает ссылки на такие варианты
Собственно в первом варианте и есть теперь проблема, а второй уже не работает с 2009.
Но и на том спасибо, всё больше убеждаюсь что решения нет.
maratovich вне форума  
 
Непрочитано 13.04.2015, 21:51
#8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от maratovich Посмотреть сообщение
А вдруг пользователь забыл прервать свою команду и нажал макрос.
запретить прозрачное исполнение команды (Command Flags)
Boxa вне форума  
 
Непрочитано 13.04.2015, 22:45
#9
Кулик Алексей aka kpblc
Moderator

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


А разве в VBA такое есть?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2015, 07:54
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


А если послать через Sentcommand lisp выражение
Код:
[Выделить все]
(while (> (getvar 'CMDACTIVE) 0) (command))
Что-то типа
Код:
[Выделить все]
thisdrawing.sendcommand "(while (> (getvar 'CMDACTIVE) 0) (command))" & vbcr
или
Код:
[Выделить все]
thisdrawing.sendcommand "(while (> (getvar \"CMDACTIVE\") 0) (command))\n"
----- добавлено через ~18 мин. -----
Цитата:
Сообщение от maratovich Посмотреть сообщение
всё больше убеждаюсь что решения нет
Похоже на то. Из этой темы
Цитата:
Hi Jeff,
I do not find a way to know if the previous SendCommand was cancelled using Escape key.
As Norman said, you will have less control over the functionality if a series of commands are being sent to complete a task.
Coding the functionality using AutoCAD .Net API or ObjectARX C++ API is a better option
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.04.2015, 08:49
#11
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А разве в VBA такое есть?
а слово VBA, появилось только в твоем сообщении =о)
Хотя уже настолько привык к .NET, что про VBA уже и забыл...

Код:
[Выделить все]
'Contains the AutoCAD Type Library
Imports Autodesk.AutoCAD.Interop
'Contains the AutoCAD/ObjectDBX Type Library
Imports Autodesk.AutoCAD.Interop.Common

Public Class AdskCommands
    Public ReadOnly Property ThisDrawing() As  _
    AcadDocument
        Get
            Return Autodesk.AutoCAD. _
            ApplicationServices.Application. _
            DocumentManager.MdiActiveDocument. _
            AcadDocument
        End Get
    End Property

    <Autodesk.AutoCAD.Runtime.CommandMethod("myroutine")> _
    Public Sub myRoutine()
        ThisDrawing.Utility.Prompt("Hello World from .NET")
    End Sub
End Class
Boxa вне форума  
 
Непрочитано 14.04.2015, 09:14
#12
Кулик Алексей aka kpblc
Moderator

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


Насколько я помню, ThisDrawing "по дефолту" доступно только в VBA. В .Net для этого используются другие механизмы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2015, 10:04
#13
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Я же сознался, что забыл про VBA =o)
И увидев ThisDrawing.SendCommand Chr(27) подумал именно про VB.NET, в варианте использования COM.
Кстати, код приведенный мной, это из "DevTV VBA To VBdotNet Migration Basics", самый первый пример.
Boxa вне форума  
 
Непрочитано 14.04.2015, 11:26
#14
baksconstructor


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Насколько я помню, ThisDrawing "по дефолту" доступно только в VBA.
Нет, в VB6 по полной работает.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В .Net для этого используются другие механизмы.
А это интересно, подскажите как, мне тоже пригодится.
Цитата:
Сообщение от Boxa Посмотреть сообщение
в варианте использования COM.
И как через СОМ прервать ком строку ?

У меня тоже часто чёнить не сработает в ком строке и висит запрос ввода правильной команды, а если потом послать свою нужную через СОМ, то "висящая" говорит что команда не верна. Как очистить комстроку, хотябы из API ?
baksconstructor вне форума  
 
Непрочитано 14.04.2015, 13:08
#15
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
И как через СОМ прервать ком строку ?

У меня тоже часто чёнить не сработает в ком строке и висит запрос ввода правильной команды, а если потом послать свою нужную через СОМ, то "висящая" говорит что команда не верна. Как очистить комстроку, хотябы из API ?
<Autodesk.AutoCAD.Runtime.CommandMethod("myroutine")> это строка создания своей команды, в том числе эта строка может содержать флаги, запрещающие прозрачное исполнение. Ничего отменять не нужно, во время исполнения этой команды, никакая другая просто не запустится...

ИМХО, тут все с ног на голову поставлено, вместо того, что бы написать корректную команду(программу) , которая нормально закончит работать и не зависнет, Вы пытаетесь из другой программы послав ESC прервать ее выполнение. Тут кто то чешет левое ухо правой ногой...
Boxa вне форума  
 
Непрочитано 14.04.2015, 13:15
#16
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
запрещающие прозрачное исполнение
Прозрачное выполнение ЭТОЙ команды, или ДРУГОЙ при выполнении этой? Мне всегда казалось, что первое.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 14.04.2015, 14:39
#17
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Do$, у автора топика, есть программа, которая зависает. Из стороннего макроса ей посылают ESC, для завершения и для начала нормальной работы макроса. Вот для этого макроса я и предлагаю установить флаг CommandFlags.Modal , что бы если среда (автокад) не готова, то он просто не запускался.

ЗЫ.
Кстати, а почему не вызывать макрос через "^C^C_line " если так уж хочется послать ESC?

ЗЗЫ.
Справка по флагам тут: https://sites.google.com/site/bushma...delenie-komand
Boxa вне форума  
 
Автор темы   Непрочитано 14.04.2015, 16:56
#18
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Do$, у автора топика, есть программа, которая зависает. Из стороннего макроса ей посылают ESC, для завершения и для начала нормальной работы макроса. Вот для этого макроса я и предлагаю установить флаг CommandFlags.Modal , что бы если среда (автокад) не готова, то он просто не запускался.
Ну практически так, только наоборот.
Есть пользователь который выбрал команду Размер, указал одну точку, а вместо указания второй запускает макрос (vba, VB6), естественно Автокад не адекватно понимает команды макроса т.к. ожидает получения второй точки размера. Тут нам надо перед запуском макроса послать ескейп Автокаду чтобы прервать выполнение размера, а потом уже делать свои дела.
Раньше всегда перед запуском макроса посылал ThisDrawing.SendCommand Chr(27) и всё работало, а теперь пользователь приходит с квадратными глазами и говорит - "чёто где то ни того, ээээ".
Boxa спасибо, но пишу на VB6, работает СОМ , а он команды .Net не воспринимает.
maratovich вне форума  
 
Непрочитано 14.04.2015, 17:52
#19
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от maratovich Посмотреть сообщение
Есть пользователь который выбрал команду Размер, указал одну точку, а вместо указания второй запускает макрос (vba, VB6), естественно Автокад не адекватно понимает команды макроса т.к. ожидает получения второй точки размера.
А если так запускать макрос?
^C^C-vbarun "D:/1.dvb"!ThisDrawing.ddd

ЗЫ. Проверил на 2014 акаде, простановка размера прерывается и начинает исполнятся макрос.
ЗЗЫ. После ddd пробел
Boxa вне форума  
 
Автор темы   Непрочитано 14.04.2015, 17:53
#20
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
А если так запускать макрос?
^C^C-vbarun "D:/1.dvb"!ThisDrawing.ddd
Согласен, это работает, а вот как быть с СОМ не ясно.
maratovich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Autocad 2015 и выше не работает ThisDrawing.SendCommand Chr(27)

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как адаптировать Autocad 2015 Mechanical к классическому виду рабочего пространства? Indtex Вертикальные решения на базе AutoCAD 2 15.08.2014 13:06
Как настроить шаг весов линий в Autocad 2015 в 1 пиксель environ AutoCAD 1 16.07.2014 16:33
Проблема в объектном отслеживание (AutoCAD 2013-2014) gomer8 Баги и пожелания в Autodesk 0 19.06.2013 12:22
Не работает кнопка delete при установке AutoCAD 2014 Виктория_Вика AutoCAD 17 17.05.2013 10:00