All Forums
 Категория Visio
 Форум Вопросы и ответы
 Программное создание stencil
Author Previous Topic Topic Next 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

Russia
1198 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 (помним про активный документ). Там шейп стал мастером.
Рисовать шейп сначала на странице рисунка мне кажется более удобным (не знаю, почему; может тренироваться проще).
Вот примерно так.
Go to Top of Page

Gardener

19 Posts

Posted - 02/26/2008 :  08:35:01
Все работает, спасибо.
Только как stencil присоединить к уже открытому документу?
Go to Top of Page

Gardener

19 Posts

Posted - 02/26/2008 :  10:18:14
О, есть!

Document fDocS = mVisioApp.Documents.AddEx("vss",VisMeasurementSystem.visMSDefault,(short)VisWinTypes.visDockedStencilBuiltIn,0);
Go to Top of Page

Gardener

19 Posts

Posted - 02/26/2008 :  10:39:52
Все таки хочетс рисовать шейп сразу в мастере. У меня будет свой рисунок и там лишнее не нужно (даже если удалять лишнее - будет некрасиво).
Master fMaster = fDocS.Masters.Add();
Shape fShape = fMaster.DrawRectangle(10,10,20,20);

мастер добавляется, но не редактируется.

Go to Top of Page

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();
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)