Author |
Topic |
|
TuzhibaevTA
Russia
85 Posts |
Posted - 06/04/2005 : 18:12:03
|
Цель: надо сделать кучу однотипных шейпов на основе одного мастера. Нашел в visio функцию DropMany которая быстро плодит эти шейпы но не могу с ней разобраться. Не работает Нашел учебный пример: Public Sub DropMany_Example() On Error GoTo HandleError
Dim vsoMasters As Visio.Masters Dim intMasterCount As Integer Set vsoMasters = ThisDocument.Masters intMasterCount = vsoMasters.Count
ReDim varObjectsToInstance(1 To intMasterCount) As Variant ReDim adblXYArray(1 To intMasterCount * 2) As Double Dim intCounter As Integer For intCounter = 1 To intMasterCount
'Pass name of object to drop to DropMany. varObjectsToInstance(intCounter) = vsoMasters.Item(intCounter)Name
'Set x components of where to drop to 2,4,6,2,4,6,2,4,6,... adblXYArray (intCounter * 2 - 1) = (((intCounter - 1) Mod 3) + 1) * 2
'Set y components to 2,2,2,4,4,4,6,6,6,... adblXYArray (intCounter * 2) = Int((intCounter + 2) / 3) * 2
Next intCounter
Dim aintIDArray() As Integer Dim intProcessed As Integer
intProcessed = ThisDocument.Pages(1).DropMany(varObjectsToInstance, _ adblXYArray, aintIDArray) Debug.Print intProcessed
For intCounter = LBound(aintIDArray) To UBound(aintIDArray) Debug.Print intCounter; aintIDArray(intCounter) Next intCounter
Exit Sub HandleError: MsgBox "Error"
Exit Sub
End Sub но он почему то плодит только шейпы, мастера которых находятся в документе. Менял ссылку мастеров на другой стенсил (vsoMasters)- функци не работает. :( Как победить эту беду?
Тужибаев Тимур |
|
Tumanov
Russia
1198 Posts |
Posted - 06/04/2005 : 21:42:01
|
Вообще-то, в хелпе явно сказано, что "If ObjectsToInstance(i) is the string s (or a reference to the string s), then an instance of the Master object with name s in the document stencil of the target object's document is made". А про произвольный трафарет нечего не говорится. Но можно ведь до использования функции позаботиться, чтобы этот мастер-шейп появился в Document stencil. |
|
|
|
Topic |
|
|
|