Тема: Как в коммандную строку написать текст?

Как в коммандную строку написать текст в одну и лесколько строк? Как команда LIST это делает!

Re: Как в коммандную строку написать текст?

Посмотри

SendCommand

Re: Как в коммандную строку написать текст?

Непомогает! Эта команда используется только для ввода команд в командную строку! т.е. если написать в 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.

Re: Как в коммандную строку написать текст?

Для лиспа это, скорее всего, (princ ""), а для VBA - напрямую такой функции нет, но ведь можно использовать нечто типа

Sub CmdStringMsg(sMessage As String)
    ThisDrawing.SendCommand "princ " & sMessage & vbCr
End Sub

Re: Как в коммандную строку написать текст?

не знает у меня автокад команды "princ "

Re: Как в коммандную строку написать текст?

Забавно, но у меня сработало. Вообще-то некоторые пользователи предпочитают не смотреть на ком.строку, поэтому имхо надо сделать MsgBox с соответствующими настройками.
---
ИМХО

Re: Как в коммандную строку написать текст?

недостаток MsgBox в том, сто нельзя от туда ничего выделить и скопировать в буфер обмена.
На худой конец, я пользуюсь InputBox с заполнением Default
Но коммандная строка была бы лучше обеих способов вывода информации именно в том, что можно посмотреть, что было 3 команды до этого (ведётся история) и можно, я надеюсь, выводить несколько строк.

Re: Как в коммандную строку написать текст?

Так, минуту, а что надо в результате-то? Лог работы, что ли? Так если идти путем через CmdStringMsg, то просто вызывать ее по мере надобности с соответствующим сообщением. Либо как вариант (если команд не очень много):

sMsg = ""
'Делаем что-то, что надо залогить, например, рисование линии
sMsg = sMsg + "ThisDrawing.AddLine : выполнена. Параметры вызова ..." & vbCr
'Опять что-то делаем
sMsg = sMsg + "ThisDrawing.SmthgDone : выполнена. Параметры вызова ... " & vbCr
'Тра-ля-ля...
MsgBox sMsg, "лог работы", vbInformation + vbOKOnly + vbApplicationModal

Тоже в прицнипе вариант.

Re: Как в коммандную строку написать текст?

А вообще-то это-то куда надо? Если только на время отладки, так, может, Debug использовать?

Re: Как в коммандную строку написать текст?

нет, я пытаюсь написать функцию, возвращающую в коммандную строку сумму длин выделенных линий, окружностей и полилиний (https://www.caduser.ru/forum/topic19773.html)
Ответ хочу написать в командной строке.

Re: Как в коммандную строку написать текст?

ThisDrawing.Utility.GetString(True, "Чего тут такое.")

Re: Как в коммандную строку написать текст?

Или если через одно место

ThisDrawing.SendCommand "[b]([/b]princ " & [b]""""[/b] & sMessage & [b]""""[/b] & "[b])[/b]" & vbCr

Re: Как в коммандную строку написать текст?

Спасибо! О наимудрейший BP!!! Работает!
только после этой команды нужно обязательно ещё Enter нажимать, а то командная строка находится в режиме ожидания.
Супер! Спасибо!

Re: Как в коммандную строку написать текст?

Может я чего то не понял, но может так?

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.

Re: Как в коммандную строку написать текст?

Здорово!
Это наиболее удачное решение!