Тема: Суммирование элементов словаря по условию
Всем доброго, пытаюсь решить такую задачу:просуммировать левые части выражения элементов, при условии равности правых частей этих элементов, в качестве разделителя символ "-". Вот рабочее решение этой задачи на vba в Excel:
Sub iArr() Dim i As Integer Dim dicObj As Object Dim Arr ReDim Arr(0 To 3) As String Arr(0) = "500-1x2" Arr(1) = "100-1x2" Arr(2) = "200-7x2" Arr(3) = "300-7x2" Set dicObj = CreateObject("scripting.dictionary") For i = LBound(Arr) To UBound(Arr) dicObj.Item(Split(Arr(i), "-")(1)) = dicObj.Item(Split(Arr(i), "-")(1)) + CDbl(Split(Arr(i), "-")(0)) Next Range("A1").Resize(dicObj.Count, 2) = Application.Transpose(Array(dicObj.keys, dicObj.Items)) End Sub
Как реализовать это же применительно для Автокада?! Своими силами продвинулся только до наполнения массива элементами, а в словарь ну никак не получается, смотрю через Locales после Set ничего в словарь не записывается. Нашёл в хелпе пример создания и наполнения словаря, но не осилил.
Sub Example() Dim grOb As AcadSelectionSet ActiveDocument.SelectionSets.Item("SET").Delete Set grOb = ThisDrawing.SelectionSets.Add("SET") grOb.SelectOnScreen Dim Arr ReDim Arr(1 To grOb.Count) As AcadEntity 'создал массив For j = 1 To grOb.Count Set Arr(j) = grOb.Item(j) 'заполнил массив данными Next j Dim z As Integer Dim dictObj As AcadDictionary Set dictObj = ThisDrawing.Dictionaries.Add("TEST_DICTIONARY") For z = LBound(Arr) To UBound(Arr) Dim customObj As AcadObject Set customObj = dictObj.AddObject((Split(Arr(z), "-")(1) + CDbl(Split(Arr(z), "-")(0)))) Next z End Sub