2013-04-16 6 views
1

도형에 그릴 간단한 코드가 있습니다.C#을 통해 Visio 2010에서 컨테이너를 추가하는 방법은 무엇입니까?

Visio.Shape dropShape = ActivePage.Drop(GetMaster(@"Circle"), x, y); 
Visio.Shape dropShape2 = ActivePage.Drop(GetMaster(@"Circle"), x + 3, y); 

는 그리고 나는 이것이 내가 인터넷에서이 샘플을 찾았지만 작동하지 않았다

VisApp.ActiveWindow.Select(dropShape, (short)Visio.VisSelectArgs.visSelect); 
VisApp.ActiveWindow.Select(dropShape2, (short)Visio.VisSelectArgs.visSelect); 

object vsoSelection = VisApp.ActiveWindow.Selection; 
Visio.Shape containerMaster = ActivePage.Drop(GetMaster(@"Square"), x -3, y-3); 
Visio.Shape container = ActivePage.DropContainer(containerMaster, vsoSelection); 

을 모양에 대한 컨테이너를 추가 할 수 whant. 어떤 생각이있어?

답변

0

코드의 문제는 임의의 마스터를 DropContainer() 호출의 컨테이너로 사용할 수 없다는 것입니다.

대신 컨테이너가 포함 된 스텐실을로드 한 다음 해당 스텐실의 컨테이너 마스터 중 하나를 선택해야합니다.

이의 전체 코드는 다음과 같습니다 :

var app = new IVisio.ApplicationClass(); 

var docs = app.Documents; 
var doc = docs.Add(""); 
var page = app.ActivePage; 
short flags = (short) 
    (IVisio.VisOpenSaveArgs.visOpenDocked | 
    IVisio.VisOpenSaveArgs.visOpenRO); 

var basic_stencil = docs.OpenEx("basic_u.vss", flags); 
var basic_masters = basic_stencil.Masters; 
var rounded_rect_master = basic_masters["Rounded Rectangle"]; 

double x = 2.0; 
double y = 3.0; 

var shape1 = page.Drop(rounded_rect_master, x, y); 
var shape2 = page.Drop(rounded_rect_master, x + 3.0, y+1.0); 

var stenciltype = IVisio.VisBuiltInStencilTypes.visBuiltInStencilContainers; 

var measurementsys = IVisio.VisMeasurementSystem.visMSDefault; 
short containeropenflags = (short) IVisio.VisOpenSaveArgs.visOpenHidden; 
string containerstencil_filename = app.GetBuiltInStencilFile(stenciltype, measurementsys); 
var container_stencil = docs.OpenEx(containerstencil_filename, containeropenflags); 
var containermasters = container_stencil.Masters; 
var container = containermasters["Container 1"]; 

var activewindow = app.ActiveWindow; 
short selectargs = (short)IVisio.VisSelectArgs.visSelect; 
activewindow.Select(shape1, selectargs); 
activewindow.Select(shape2, selectargs); 

page.DropContainer(container, activewindow.Selection); 
관련 문제