Тема: Многострочный текст
Как с помощью VBA создать многострочный текст определенной длины и вставить заранее приготовленный текст? Например, технические требования в чертежах.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Многострочный текст
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как с помощью VBA создать многострочный текст определенной длины и вставить заранее приготовленный текст? Например, технические требования в чертежах.
Вот как манипулировать командой MTEXT:
(обратите внимание на разделитель VbLf (именно так!) в предпоследней строке и завершающий текст команды VbCrLf (именно так!) там же)
Option Base 0 Function conv_to_string(num As Variant) conv_to_string = Replace(CStr(num), ",", ".", 1, -1, vbTextCompare) End Function Sub test_mtext() Dim pt1, pt2 Dim i As Integer With ActiveDocument.Utility pt1 = .GetPoint(, "First corner: ") pt2 = .GetPoint(, "Second corner: ") End With MsgBox Format(pt1(0), "") ActiveDocument.SendCommand "_.-MTEXT " & _ conv_to_string(pt1(0)) & "," & conv_to_string(pt1(1)) & "," & conv_to_string(pt1(2)) & " " & _ conv_to_string(pt2(0)) & "," & conv_to_string(pt2(1)) & " " & _ "kusok texta 1" & [b]vbLf[/b] & "kusok texta 2..." & vbCrLf End Sub
(да простят меня Знатоки Бейсика за функцию conv_to_string, но это оттого, что я не знаю, какой функцией конвертировать Double числа в соответствии с US locale, т.е. без учёта местной русской локали, которая впихивает десятичную запятую вместо точки).
ой, уберите из середины текста MsgBox Format(pt1(0), "") - этого не должно там быть, это случайно осталось.
да простят меня Знатоки Бейсика за функцию conv_to_string
Да нормальная функция... Даже подсократить можно до Replace(CStr(num), ",", ".")
А вот более объектно-модельный вариант (для пространства модели)
Sub test() Dim pt1 As Variant Dim myText1 As String Dim myText2 As String Dim MTtext As String Dim MTextObj As AcadMText myText1 = "kusok texta 1" myText2 = "kusok texta 2..." MTtext = myText1 & vbCrLf & myText2 With ActiveDocument.Utility pt1 = .GetPoint("Left/Up corner > ") w = .GetDistance(pt1, "Width MText > ") End With Set MTextObj = ThisDrawing.ModelSpace.AddMText(pt1, w, MTtext) End Sub
> VK
Пятая строка снизу должна читаться так:
pt1 = .GetPoint([b],[/b] "Left/Up corner > ")
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Многострочный текст
Форум работает на PunBB, при поддержке Informer Technologies, Inc