Тема: Маска заднего плана -> Коэффициент перекрытия на VBA

В справке для МТекста для задания фона текста есть такой метод:

Диалоговое окно "Маска заднего плана"
Коэффициент перекрытия
Задание полей для непрозрачного фона текста. Значение привязывается к высоте текста. Коэффициент, равный единице, означает, что размер непрозрачного фона точно соответствует размеру объекта многострочного текста. Если коэффициент равен 1,5, то фон выступает за пределы текста на половину его высоты.

Это очень удобно, но требует открытия диалоговых окон.
А как запрограммировать эти действия используя команды VBA?
В Excel очень удобно можно включить кнопочку "Записать макрос" выполнить все необходимые действия и посмотреть какой получился макрос. Почему так не делается в AutoCAD?

Re: Маска заднего плана -> Коэффициент перекрытия на VBA

Люди! Помогите с ответом!

Re: Маска заднего плана -> Коэффициент перекрытия на VBA

> Миша
На чистом VBA это невозможно, хотя если есть желание то можно записать все в DXF файл
затем найти там нужное и заменить, но это очень длинная история
Единственно, что вижу для практики  - это использовать
SendCommand, например с посылом в командную строку лисп-выражения:

Sub MtextMaskOffset()
Dim Ent As AcadEntity
Dim oMText As AcadMText
Dim varPt As Variant
Dim strHandle As String
Dim dblOffset As Double
Dim strComm As String
ThisDrawing.Utility.GetEntity Ent, varPt, vbCr & "Select the MText only:"
If Not TypeOf Ent Is AcadMText Then
MsgBox "Selected is not a MText, try again"
Exit Sub
End If
Set oMText = Ent
oMText.BackgroundFill = True
strHandle = oMText.Handle
dblOffset = CDbl(InputBox("Enter a new offset gap value for mask: ", "Mask MText", "2.5"))
 strComm = "(setq en (handent " & Chr(34) & strHandle & Chr(34) & "))" & _
          "(setq el (entget en))" & _
          "(setq el (subst (cons 45 " & dblOffset & ") (assoc 45 el) el))" & _
          "(setq el (subst (cons 90 1) (assoc 90 el) el))" & _
          "(setq el (subst (cons 63 256) (assoc 63 el) el))" & _
          "(setq el (subst (cons 441 3932757) (assoc 441 el) el))" & _
          "(entmod el)" & _
          "(entupd en)" & vbCr
          ThisDrawing.SendCommand strComm
          ThisDrawing.SendCommand Chr(27) & Chr(27) & Chr(27)
          ThisDrawing.Regen acActiveViewport
End Sub

~'J'~

Re: Маска заднего плана -> Коэффициент перекрытия на VBA

Посмотрите здесь:
https://www.caduser.ru/forum/topic34800.html