| 
        
          | 
              
                | Author |  Topic  |  |  
                | Gardener
 
                19 Posts | 
                    
                      |  Posted - 02/25/2008 :  16:24:26 
 |  
                      | Добрый день. Есть такая проблема - как программно создать новый stencil и добавить в него master?
 Document fDoc = mVisioApp.Documents.AddEx("",VisMeasurementSystem.visMSDefault,(short)VisWinTypes.visDrawing,0);
 
 Window fWndStencil = fDoc.OpenStencilWindow();
 
 Окно Stencil появляется. Правда не знаю как изменить имя.
 Что делать дальше мыслей пока нет..
 |  |  
                | Tumanov
 
                Russia1198 Posts
 | 
                    
                      |  Posted - 02/25/2008 :  17:35:25 
 |  
                      | Пробуем вот такой код (правда, на VBA) Sub ttt()
 Dim d As Visio.Document
 Dim w As Visio.Window
 Dim sh As Visio.Shape
 Dim shm As Visio.Master
 Set d = Application.Documents.AddEx("vss", visMSDefault)
 Set sh = d.Pages(1).DrawLine(0, 0, 1, 1)
 Set shm = ActiveDocument.Drop(sh, 0, 0)
 End Sub
 Set d = Application.Documents.AddEx("vss", visMSDefault) - создает новый Stencil, открывает его окошко.
 Stencil - это документ. Этот документ теперь становится активным. Поэтому, если я хочу нарисовать шейп на странице рисунка, а потом перебросить его в другой документ (Stencil) я рисую его не на ActivePage, а на d.Pages(1).
 Set sh = d.Pages(1).DrawLine(0, 0, 1, 1)
 Это я создал шейп, из которого буду делать мастер
 Set shm = ActiveDocument.Drop(sh, 0, 0)
 А это уже бросил созданный шейп на Stencil (помним про активный документ). Там шейп стал мастером.
 Рисовать шейп сначала на странице рисунка мне кажется более удобным (не знаю, почему; может тренироваться проще).
 Вот примерно так.
 
 |  
                      |  |  |  
                | Gardener
 
                19 Posts | 
                    
                      |  Posted - 02/26/2008 :  08:35:01 
 |  
                      | Все работает, спасибо. Только как stencil присоединить к уже открытому документу?
 |  
                      |  |  |  
                | Gardener
 
                19 Posts | 
                    
                      |  Posted - 02/26/2008 :  10:18:14 
 |  
                      | О, есть! 
 Document fDocS = mVisioApp.Documents.AddEx("vss",VisMeasurementSystem.visMSDefault,(short)VisWinTypes.visDockedStencilBuiltIn,0);
 |  
                      |  |  |  
                | Gardener
 
                19 Posts | 
                    
                      |  Posted - 02/26/2008 :  10:39:52 
 |  
                      | Все таки хочетс рисовать шейп сразу в мастере. У меня будет свой рисунок и там лишнее не нужно (даже если удалять лишнее - будет некрасиво). Master fMaster = fDocS.Masters.Add();
 Shape fShape = fMaster.DrawRectangle(10,10,20,20);
 
 мастер добавляется, но не редактируется.
 
 
 |  
                      |  |  |  
                | Gardener
 
                19 Posts | 
                    
                      |  Posted - 02/26/2008 :  12:59:28 
 |  
                      | Заработало! Master fMaster = fDocS.Masters.Add();
 Master fMasterC = fMaster.Open();
 Shape fShape = fMasterC.DrawRectangle(0,0,1,1);
 fMasterC.Close();
 
 |  
                      |  |  |  
                |  |  Topic  |  |  |  |