Цитата:
Сообщение от zloy1653
Добрый день всем гуру. Сильно не ругайте только, я пытаюсь разбираться в VBA, на просторах интернета нашел создание поля на VBA, подкорректировал его, получил поле, ссылающееся на атрибут блока, вставляю его мтекстом в пространство модели. теперь вопрос:
1. как просуммировать значения атрибутов, если блоков несколько?
2. как вставить полученный результат в ячейку произвольной таблицы? при этом, если указать точку за ее пределами, должен вставиться мтекст с суммарным значением атрибутов.
Вот то, что у меня на данный момент получилось.
Sub AddField()
Dim ss As AcadSelectionSet
Dim field As String
Dim sss As String
Dim objEnt As AcadEntity
Dim objBRef As AcadBlockReference
On Error Resume Next
ThisDrawing.SelectionSets("SS").Delete
Set ss = ThisDrawing.SelectionSets.Add("SS")
ss.SelectOnScreen
For Each objEnt In ss
Set objBRef = objEnt
att = objBRef.GetAttributes
For i = LBound(att) To UBound(att)
If att(i).TagString = "Количество" Then
field = att(i).ObjectID
End If
Next
Next
pp = ThisDrawing.Utility.GetPoint(, "Точка вставки")
Dim mtextObj As AcadMText
Dim width As Double
Dim textString As String
textString = "%<\AcObjProp Object(%<\_ObjId " & field & ">%).TextString>%"
Set mtextObj = ThisDrawing.ModelSpace.AddMText(pp, width, textString)
ThisDrawing.Regen acActiveViewport
End Sub
|
Нда... написал развернутый ответ и стер его.
Было подозрение, что я где то это уже видел, полез проверять... и точно, вот ссылка на тему:
https://forum.dwg.ru/showpost.php?p=1468687&postcount=5 и код Вы переписали от туда практически один в один, и выдаете за то, что у Вас получилось. Желание помогать отпало.
ЗЫ.
Полную цитату Вашего поста вставил к себе намеренно, что бы сохранить первозданный вид.