Задался тут задачей. есть расчетная схема сети в визио. составлена из сопротивлений и ЭДС. нужно это дело преобразовать красиво к простейшему виду (показывая все промежуточные преобразования). полностью автоматом думаю не выйдет, поэтому для начала хочу сделать панельку: выделил пару другую шейпов, нажал кнопку - паралельно/последователо/звезда-треугольник - прошло преобразование.
последовательно сделал. это просто.
паралельно уже обьединяются минимум 4 шейпа. два ЭДС Е и два сопритивления X. формула
E12=(E1*X2+E2*X1)/(X1+X2)
Собственно проблема определить по схеме какое сопротивление относится (читай граничит) с каким ЭДС. для этого надо бы шейпы в массив загнать. как то так пробую. X() и E() получается массивы соотв.
Dim numsX(), numsE() As Integer
Dim valsX(), valsE() As Single
Dim X(), EDS() As Visio.Shape
i = 0
j = 0
Set vs = Application.ActiveWindow.Selection
For Each sh In vs
Debug.Print "#248;#229;#233;#239; " & sh
Select Case sh.Master
Case "X"
ReDim Preserve numsX(i + 1), valsX(i + 1), X(i + 1)
X(i) = sh
numsX(i) = sh.Cells("Prop._VisDM_num").FormulaU
valsX(i) = CSng(sh.Cells("Prop._VisDM_X").FormulaU)
Debug.Print "X " & numsX(i) & " " & valsX(i) & " "
i = i + 1
Case "E"
' Debug.Print "E " & sh
ReDim Preserve numsE(j + 1), valsE(j + 1), EDS(j + 1)
EDS(j) = sh
numsE(j) = sh.Cells("Prop._VisDM_num").FormulaU
valsE(j) = CSng(sh.Cells("Prop._VisDM_E").FormulaU)
Debug.Print "E " & numsE(j) & " " & valsE(j) & " "
j = j + 1
End Select
Next sh
не работает. variable not set. чего я не понимаю ?