none
Estructura interna de los objetos de un diagrama Visio

    Question

  • Hola:

     

    Vereís despues de varios días peleandome he conseguido acceder a los objetos de un diagrama visio, ahora mi problema es que realamente no sé como se jerarqueriza o estrucutra los objetos internamente, yo accedo a los objetos de la siguiente forma:

    Code Snippet

    Visio.Window VentanaActiva = AplicacionVisio.ActiveWindow;

    Visio.Page Pagina = VentanaActiva.PageAsObj;

    Visio.Shapes Formas = Pagina.Shapes;

    foreach (Visio.Shape Forma in Pagina.Shapes)

    {

    String Nombre = Forma.Name;

    String Texto = Forma.Text;

    String Id = Forma.NameID;

    String nombreU = Forma.NameU;

    Visio.Connects Objt = Forma.FromConnects;

    Visio.Shape subforma = Objt.FromSheet;

    if (subforma != null)

    {

    String Nombre1 = subforma.Name;

    String Texto1 = subforma.Text;

    String Id1 = subforma.NameID;

    String nombreU1 = subforma.NameU;

    }

    }

     

    y los diagramas a los que aplico esto son diagramas relacionales de bases de datos y diagramas UML, en los primeros cuando Forma tiene una Entidad accedo a sus objetos realcionados con el objeto Objt, pero algunas entidades teniendo relaciones con otras el objeto subforma es null, y además de esto cuando el objeto forma tiene una relación entre dos entidades no sé de que forma puedo saber que dos entidades están realicionadas mediante esa relación.

     

    Si alguien tiene documentación donde pueda mirar como hacer esto le estaría muy agradecido.

     

     

    Un saludo y muchas gracias por la ayuda.

     

     

     

     

    Tuesday, May 15, 2007 10:21 AM

Answers

  • En el SDK (Software Development Kit) de Visio 2003 tienes el modelo completo de objetos y documentación (en inglés) sobre su forma de uso.

    Aqui puedes consultarlo online:

    http://msdn2.microsoft.com/en-us/library/aa175615(office.11).aspx 

     

    Saludos,

    Jose

    ----

    MCP, Tercer Planeta (Buenos Aires) http://www.buenaspracticas.net

       Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

     

    Tuesday, May 15, 2007 10:40 AM
  • Gracias José, la información que me aportabas ya la conocía, el único problema es que en ocasiones podría venir con algunos ejemplos de uso, para facilitar el aprendizaje, espero lo solucionen para posteriores versiones.

     

    Gracias otra vez por el interés en ayudarme, te estoy muy agradecido de todas formas.

     

    Voy a poner el código, para acceder a las propiedades del diagrama relacional que mencionaba en un principio.

     

    Code Snippet

    Visio.Window VentanaActiva = AplicacionVisio.ActiveWindow;

    Visio.Page Pagina = VentanaActiva.PageAsObj;

    foreach (Visio.Shape Forma in Pagina.Shapes)

    {

    String Nombre = Forma.Name;

    String Texto = Forma.Text;

    if (isRelacion(Nombre))

    {

    String OrigenName = Forma.Connects[2].ToSheet.Name;  //con esto accedes al nombre del origen de la relación

    String OrigenText = Forma.Connects[2].ToSheet.Text;

    String DestinoName = Forma.Connects[1].ToSheet.Name; // con esto accedes al nombre del destino de la relación

    String DestinoText = Forma.Connects[1].ToSheet.Text;

    }

    }

     

    Gracias de nuevo.

    Friday, May 18, 2007 10:20 AM

All replies

  • En el SDK (Software Development Kit) de Visio 2003 tienes el modelo completo de objetos y documentación (en inglés) sobre su forma de uso.

    Aqui puedes consultarlo online:

    http://msdn2.microsoft.com/en-us/library/aa175615(office.11).aspx 

     

    Saludos,

    Jose

    ----

    MCP, Tercer Planeta (Buenos Aires) http://www.buenaspracticas.net

       Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

     

    Tuesday, May 15, 2007 10:40 AM
  • Gracias José, la información que me aportabas ya la conocía, el único problema es que en ocasiones podría venir con algunos ejemplos de uso, para facilitar el aprendizaje, espero lo solucionen para posteriores versiones.

     

    Gracias otra vez por el interés en ayudarme, te estoy muy agradecido de todas formas.

     

    Voy a poner el código, para acceder a las propiedades del diagrama relacional que mencionaba en un principio.

     

    Code Snippet

    Visio.Window VentanaActiva = AplicacionVisio.ActiveWindow;

    Visio.Page Pagina = VentanaActiva.PageAsObj;

    foreach (Visio.Shape Forma in Pagina.Shapes)

    {

    String Nombre = Forma.Name;

    String Texto = Forma.Text;

    if (isRelacion(Nombre))

    {

    String OrigenName = Forma.Connects[2].ToSheet.Name;  //con esto accedes al nombre del origen de la relación

    String OrigenText = Forma.Connects[2].ToSheet.Text;

    String DestinoName = Forma.Connects[1].ToSheet.Name; // con esto accedes al nombre del destino de la relación

    String DestinoText = Forma.Connects[1].ToSheet.Text;

    }

    }

     

    Gracias de nuevo.

    Friday, May 18, 2007 10:20 AM

  • Hola, acabo de ver este hilo, yo estoy haciendo algo parecido en c#, pero no consigo acceder a todas las figuras de visio, solo a algunas, sabeis donde puedo informarme de esto?estoy ya quemao.gracias.
    Wednesday, March 12, 2008 5:55 PM

  • Hola bikermon que tal, te escribia porque yo ando haciendo una cosa parecida, o eso creo, yo estoy haciendo una aplicación que lo que hace es dibujar diagramas. Las figuras para los diagramas las cojo de visio. Creo que algo andas haciendo tu asi.
    El caso es que tengo una duda mira haber si tu me puedes ayudar que me tiene...
    Tengo este codigo


    Microsoft.Office.Interop.Visio.Page currentPage = drawingControl.Document.Pages[1];

                // Load the stencil we want
                Microsoft.Office.Interop.Visio.Document currentStencil = drawingControl.Document.Application.Documents.OpenEx("AUDIT_U.vss", (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);

                // show the stencil window
                 Microsoft.Office.Interop.Visio.Window stencilWindow = currentPage.Document.OpenStencilWindow();

                 Visio.Shape shape1 = currentPage.Drop(currentStencil.Masters["Terminador"], 1.50, 1.50);



    que lo que hace es insertarme en mi aplicacion una plantilla con figuras, la plantilla es "AUDIT_U.vss" con la que puedo acceder a todas las figuras de esa plantilla y dibujar tranquilamente. El caso es que yo no quiero que salgan todas y añado las dos ultimas lineas para que me muestre solo la figura "Terminador", claro esta, ire añadieno alguna mas, con 4 o 5 me vale. El caso es que yo necesito acceder a las figuras por separado, es decir, necesito que al hacer click con el raton sobre una figura haga algo, como mostrarme un sms u otras cosas, y nose como acceder a ellas o tratarlas para hacer esto, si me puede echar una mano. Si te interesa nos damos el email o msn porque alomejor yo tb te puedo ayudar en cosas.Este es parte de mi proyecto fin de carrera. claro esta que si alguien sabe de esto tb admito respuestas.Gracias a todos por leer este tochardo.
    Thursday, April 10, 2008 6:03 PM
  • Hola, en el sdk de visio, "C:\Archivos de programa\Microsoft Office\Visio11\SDK\Samples\Office Plan\CSharp", hay un ejemplo que creo que es lo que quieres hacer, pero acabo de empezar con una aplicación parecida a la que quieres hacer tu, y no lo comprendo muy bien. En este ejemplo, puede introducir shapes de cierto tipo en una hoja, y cuando pincha encima 2 veces, se abre una ventana con información del dibujo pinchado.

     

    Mi problema, es que quiero hacer un plano con visio, y luego en una aplicación de c#, cargrlo, epro no se como referenciar los objetos, si tienen nombres específicos, o hay que buscarlos todos, en cuyo caso ¿qué nombre tendrian?

     

    Si encontraste una solución, me gustaría que me lo comentaras.

     

    Gracias.

     

    Wednesday, October 15, 2008 9:21 AM
  •  

    Buenas, perdona que no te haya contestado antes, no me suelo meter mucho por este foro porque casi nadie contesta, supongo que no saben la respuesta.

     

    Mira echale un ojo a este enlace

    http://www.c-sharpcorner.com/UploadFile/mgold/VisioInDotNet12032006222024PM/VisioInDotNet.aspx

     

    Lo que tienes que hacer es cargar en un winforms una hoja de visio, te creas un menú para abrir archivos,  con openFileDialog y ya cargas tu dibujo de visio en tu aplicación.

     

    ¿Has conseguido algún  avance?

     

    Un saludo.

    Friday, November 07, 2008 11:30 AM