Тема: Как в коммандную строку написать текст?
Как в коммандную строку написать текст в одну и лесколько строк? Как команда LIST это делает!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как в коммандную строку написать текст?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как в коммандную строку написать текст в одну и лесколько строк? Как команда LIST это делает!
Непомогает! Эта команда используется только для ввода команд в командную строку! т.е. если написать в VBA:
ThisDrawing.SendCommand "Сумма длин " & SelSet.Count & " объектов = " & SumLen
то мы получим следующие сообщения об ошибках в коммандной строке автокада:
Command: Сумма Unknown command "СУММА". Press F1 for help.
Command: длин Unknown command "ДЛИН". Press F1 for help.
Command: 2 Unknown command "2". Press F1 for help.
Command: элементов Unknown command "ЭЛЕМЕНТОВ". Press F1 for help.
Command: = Unknown command "=". Press F1 for help.
Для лиспа это, скорее всего, (princ ""), а для VBA - напрямую такой функции нет, но ведь можно использовать нечто типа
Sub CmdStringMsg(sMessage As String) ThisDrawing.SendCommand "princ " & sMessage & vbCr End Sub
не знает у меня автокад команды "princ "
Забавно, но у меня сработало. Вообще-то некоторые пользователи предпочитают не смотреть на ком.строку, поэтому имхо надо сделать MsgBox с соответствующими настройками.
---
ИМХО
недостаток MsgBox в том, сто нельзя от туда ничего выделить и скопировать в буфер обмена.
На худой конец, я пользуюсь InputBox с заполнением Default
Но коммандная строка была бы лучше обеих способов вывода информации именно в том, что можно посмотреть, что было 3 команды до этого (ведётся история) и можно, я надеюсь, выводить несколько строк.
Так, минуту, а что надо в результате-то? Лог работы, что ли? Так если идти путем через CmdStringMsg, то просто вызывать ее по мере надобности с соответствующим сообщением. Либо как вариант (если команд не очень много):
sMsg = "" 'Делаем что-то, что надо залогить, например, рисование линии sMsg = sMsg + "ThisDrawing.AddLine : выполнена. Параметры вызова ..." & vbCr 'Опять что-то делаем sMsg = sMsg + "ThisDrawing.SmthgDone : выполнена. Параметры вызова ... " & vbCr 'Тра-ля-ля... MsgBox sMsg, "лог работы", vbInformation + vbOKOnly + vbApplicationModal
Тоже в прицнипе вариант.
А вообще-то это-то куда надо? Если только на время отладки, так, может, Debug использовать?
нет, я пытаюсь написать функцию, возвращающую в коммандную строку сумму длин выделенных линий, окружностей и полилиний (https://www.caduser.ru/forum/topic19773.html)
Ответ хочу написать в командной строке.
ThisDrawing.Utility.GetString(True, "Чего тут такое.")
Или если через одно место
ThisDrawing.SendCommand "[b]([/b]princ " & [b]""""[/b] & sMessage & [b]""""[/b] & "[b])[/b]" & vbCr
Спасибо! О наимудрейший BP!!! Работает!
только после этой команды нужно обязательно ещё Enter нажимать, а то командная строка находится в режиме ожидания.
Супер! Спасибо!
Может я чего то не понял, но может так?
Public Sub PrintMessage(MessageString As String) Dim pEchoVal As Integer pEchoVal = ThisDrawing.GetVariable("CMDECHO") ThisDrawing.SetVariable "CMDECHO", 1 ThisDrawing.Utility.Prompt MessageString ThisDrawing.SetVariable "CMDECHO", pEchoVal End Sub
Можно и просто ThisDrawing.Utility.Prompt "Ла Ла Ла", но тогда появление сообщения в командной строке будет зависеть от текущего состояния переменной CMDECHO.
Здорово!
Это наиболее удачное решение!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как в коммандную строку написать текст?
Форум работает на PunBB, при поддержке Informer Technologies, Inc