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