All Forums
 Категория Visio
 Форум Вопросы и ответы
 ? Список shape-ов в массив
Author Previous Topic Topic Next Topic  

bdfy

Belarus
267 Posts

Posted - 07/29/2009 :  17:12:20
Задался тут задачей. есть расчетная схема сети в визио. составлена из сопротивлений и ЭДС. нужно это дело преобразовать красиво к простейшему виду (показывая все промежуточные преобразования). полностью автоматом думаю не выйдет, поэтому для начала хочу сделать панельку: выделил пару другую шейпов, нажал кнопку - паралельно/последователо/звезда-треугольник - прошло преобразование.
последовательно сделал. это просто.
паралельно уже обьединяются минимум 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. чего я не понимаю ?

Tumanov

Russia
1198 Posts

Posted - 07/29/2009 :  17:56:28
Таки ж она рассказывает, что not set.
Значит надо Set
Примерно так:
Sub ttt()
Dim X() As Visio.Shape
ReDim X(1)
Set X(1) = ActivePage.Shapes(1)
ReDim Preserve X(2)
Set X(2) = ActivePage.Shapes(2)
Debug.Print X(1).NameID
Debug.Print X(2).NameID
End Sub
Go to Top of Page

bdfy

Belarus
267 Posts

Posted - 07/30/2009 :  11:18:20
в тысячный раз спасибо за помощь )
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)