Группируйте, конвертируйте и проверяйте фигуры

Сгруппируйте несколько фигур вместе на чертеже Visio

Aspose.Diagram API позволяет разработчикам группировать фигуры вместе, чтобы перемещать их все одновременно. Каждая фигура в группе имеет уникальный идентификатор и собственный набор свойств. Когда мы изменяем форматирование группы фигур, оно присваивает новое свойство каждой фигуре.

Как сгруппировать фигуры

Метод Group, предоставляемый классом ShapeCollection, можно использовать для группировки фигур.

В приведенном ниже коде показано, как:

  1. Загрузите образец diagram.
  2. инициализировал массив фигур
  3. получить определенную форму по идентификатору.
  4. получить другую конкретную форму по идентификатору.
  5. назначать фигуры массиву.
  6. сгруппируйте фигуры, вызвав метод Group.
  7. сохранить diagram

Образец программирования групповых форм

Используйте следующий код в приложении Java для группировки фигур с помощью Aspose.Diagram for Java API.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(GroupShapes.class);
// load a Visio diagram
Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");
// get page by name
Page page = diagram.getPages().getPage("Page-3");
// Initialize an array of shapes
Shape[] ss = new Shape[3];
// extract and assign shapes to the array
ss[0] = page.getShapes().getShape(15);
ss[1] = page.getShapes().getShape(16);
ss[2] = page.getShapes().getShape(17);
// mark array shapes as group
page.getShapes().group(ss);
// save visio diagram
diagram.save(dataDir + "GroupShapes_Out.vsdx", SaveFileFormat.VSDX);

Преобразование формы Visio в другие форматы файлов

Aspose.Diagram for Java API позволяет разработчикам преобразовывать одну форму Visio в любой другой поддерживаемый формат файла. В этой статье мы удалим все остальные фигуры Visio со страницы и настроим параметры страницы в соответствии с исходным размером фигуры.

Преобразование определенной формы Visio

Разработчики могут преобразовать форму Visio в PDF, HTML, изображение, SVG и SWF с помощьюуказав параметры сохранения Visio. Этот пример кода работает следующим образом:

  1. Загрузите источник Visio.
  2. Получить конкретную страницу.
  3. Удалите фоновую страницу.
  4. Создайте хеш-таблицу всех форм, содержащих идентификаторы и имена.
  5. Итерация по хеш-таблице
  6. Удалите все фигуры со страницы Visio, кроме одной.
  7. Установите размер страницы.
  8. Сохраните страницу Visio в любом поддерживаемом формате файла.

Образец программирования преобразования формы

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(SaveVisioShapeInOtherFormats.class);
double shapeWidth = 0;
double shapeHeight = 0;
// call a Diagram class constructor to load the VSDX diagram
Diagram srcVisio = new Diagram(dataDir + "Drawing1.vsdx");
// get Visio page
Page srcPage = srcVisio.getPages().get(1);
// remove background page
srcPage.setBackPage(null);
// get hash table of shapes, it holds id and name
Hashtable<Long, String> remShapes = new Hashtable<Long, String>();
for (Shape shape : (Iterable<Shape>)srcPage.getShapes())
// for the normal shape
remShapes.put(shape.getID(), shape.getName());
// iterate through the hash table
Enumeration<Long> enumKey = remShapes.keys();
while(enumKey.hasMoreElements())
{
Long key = enumKey.nextElement();
String val = remShapes.get(key);
Shape shape = srcPage.getShapes().getShape(key);
// check of the shape name
if(val.equals("GroupShape1"))
{
// move shape to the origin corner
shapeWidth = shape.getXForm().getWidth().getValue();
shapeHeight = shape.getXForm().getHeight().getValue();
shape.moveTo(shapeWidth*0.5, shapeHeight*0.5);
// trim page size
srcPage.getPageSheet().getPageProps().getPageWidth().setValue(shapeWidth);
srcPage.getPageSheet().getPageProps().getPageHeight().setValue(shapeHeight);
}
else
{
// remove shape from the Visio page and hash table
srcPage.getShapes().remove(shape);
remShapes.remove(key);
}
}
// specify saving options
PdfSaveOptions opts = new PdfSaveOptions();
// set page count to save
opts.setPageCount(1);
// set starting index of the page
opts.setPageIndex(1);
// save it
srcVisio.save(dataDir + "SaveVisioShapeInOtherFormats_Out.pdf", opts);

Преобразование формы Visio в форму PDF

Метод ToPdf класса Shape позволяет преобразовать фигуру в формат PDF.

 // import diagram

Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");

// save a shape in the PDF format

diagram.getPages().get(0).getShapes().getShape(59).toPdf(dataDir + "out.pdf");

Преобразование формы Visio в форму HTML

Метод ToHTML класса Shape позволяет преобразовать фигуру в формат HTML.

 // import diagram

Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");

HTMLSaveOptions hs = new HTMLSaveOptions();

// save a shape in the PDF format

diagram.getPages().get(0).getShapes().getShape(59).toHTML(dataDir + "out.pdf", hs);

Проверьте, соединены или склеены две фигуры Visio

Aspose.Diagram for Java API позволяет разработчикам проверить, что две фигуры Visio склеены или соединены. Ранее мы видели, как мы можем соединить или склеить две фигуры в этих разделах справки:Добавить и соединить Visio фигуры а такжеПриклейте фигуры внутри контейнера.

Проверка соединенных или склеенных фигур

Форма class предлагает свойства IsGlued и IsConnected, чтобы определить, склеены ли две фигуры или соединены.

Пример программирования проверки соединенных или склеенных фигур

Следующий фрагмент кода проверяет, соединены ли две фигуры или склеены.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(VerifyConnectedOrGluedShapes.class);
// call a Diagram class constructor to load the VSD diagram
Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");
// set two shape ids
long ShapeIdOne = 15;
long ShapeIdTwo = 16;
// get Visio page by name
Page page = diagram.getPages().getPage("Page-3");
// get Visio shapes by ids
Shape ShapedOne = page.getShapes().getShape(ShapeIdOne);
Shape ShapedTwo = page.getShapes().getShape(ShapeIdTwo);
// determine whether shapes are connected
boolean connected = ShapedOne.isConnected(ShapedTwo);
System.out.println("Shapes are connected: " + connected);
// determine whether shapes are glued
boolean glued = ShapedOne.isGlued(ShapedTwo);
System.out.println("Shapes are Glued: " + glued);

Проверьте, входит ли фигура Visio в группу фигур

Aspose.Diagram for Java API позволяет разработчикам проверять, входит ли фигура Visio в группу фигур или нет.

Проверка формы в группе фигур

Класс Shape предлагает свойства IsInGroup, чтобы определить, является ли фигура Visio фигурой группы.

Проверка формы в примере программирования группы фигур

Следующий фрагмент кода проверяет, является ли фигура групповой.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(RetrieveTheParentShape.class) + "Shapes\\";
// Call a Diagram class constructor to load the VSD diagram
Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");
// get a sub-shape by page name, group shape ID, and then sub-shape ID
Shape shape = diagram.getPages().getPage("Page-3").getShapes().getShape(13).getShapes().getShape(2);
System.out.println("Is it in a Group: " + shape.isInGroup());