Arbeta med Masters

Hämtar masterinformation

En formmästare är ett annat namn för en Visio stencil. Med Aspose.Diagram är det möjligt att hämta information om sidor, kopplingar och även masters. Den här artikeln förklarar hur du får ID och namn från en diagram.

DeBemästra objekt representerar enFormobjektets master i en diagram. Masters-egenskapen, exponerad av klassen Diagram, stöder en samling Aspose.Diagram.Master-objekt. Den här egenskapen kan användas för att hämta befälhavarnas information, det vill säga master-ID och namn.

Använd egenskapen Page.Shapes för att avgöra vilken form som har ärvts av masterformen.

Ett konsolfönster som visar utdata från koden.

todo:image_alt_text

Hämtar Master Information Programmeringsexempel

Följande kodbit hämtar masterinformationen från en diagram.

// 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(RetrieveMasterInfo.class);
//Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "drawing.vdx");
for (Master master : (Iterable<Master>) diagram.getMasters())
{
//Display information about the masters
System.out.println("\nMaster ID : " + master.getID());
System.out.println("Master Name : " + master.getName());
}

Lägg till Master från Stencil of Shapes

En stencil är en samling former som är associerade med en viss mall Microsoft Office Visio. Med Aspose.Diagram är det möjligt att lägga till valfri formmaster till en ritning från en stencil.

Lägg till Master

Master-objektet representerar ett Shape-objekts master i en diagram. AddMaster-metoden, exponerad av klassen Diagram, tillåter att lägga till en master från en stencil. Den erbjuder följande fyra sätt:

  • Stencilfilsökväg och master-ID.
  • Stencilfilsökväg och huvudnamn.
  • Stencilfilström och master-ID.
  • Stencilfilström och huvudnamn.
  • Lägg till master till diagram från källan diagram

Lägg till masterprogrammeringsexempel

// 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(AddMasterFromStencil.class);
// Load diagram
Diagram diagram = new Diagram();
// Load stencil to a stream
String templateFileName = dataDir + "NetApp-FAS-series.vss";
// Add master with stencil file path and master id
String masterName = "FAS80xx rear empty";
diagram.addMaster(templateFileName, 2);
// Add master with stencil file path and master name
diagram.addMaster(templateFileName, masterName);
// adds master to diagram from source diagram
Diagram src = new Diagram(templateFileName);
diagram.addMaster(src, masterName);
// Adds shape with defined PinX and PinY.
diagram.addShape(2.0, 2.0, masterName, 0);
diagram.addShape(6.0, 6.0, masterName, 0);
// Adds shape with defined PinX,PinY,Width and Height.
diagram.addShape(7.0, 3.0, 1.5, 1.5, masterName, 0);

Skapa Master från grunden

Aspose.Diagram API gör det möjligt att skapa en Master från grunden utan någon stencil, ritning eller mall. Utvecklare kan anpassa skapandet av Master. Metoden addMaster, exponerad av klassen Diagram, tillåter att lägga till en master.

Skapa masterprogrammeringsexempel

// 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(CreateMasterfromScratch.class) + "Masters/";
// create a new template
Diagram diagram = new Diagram();
// add master
diagram.getMasters().add(createMaster(101, "Regular", dataDir + "icon.png"));
// save template
diagram.save(dataDir + "template_Out.vssx", SaveFileFormat.VSSX);
// create master
public static Master createMaster(final int masterId, final String name, String file) throws Exception
{
// set master properties
Master ms = new Master();
ms.setID(masterId);
ms.setName(name);
ms.setIconSize(1);
ms.setAlignName(2);
ms.setMatchByName(0);
ms.setIconUpdate(BOOL.TRUE);
ms.setPatternFlags(0);
ms.setHidden(0);
// set master's shape properties
final Shape shape = new Shape();
ms.getShapes().add(shape);
final double width = 0.5443889263424177;
final double height = 0.432916947568133;
shape.setID(5);
shape.setType(TypeValue.FOREIGN);
shape.getXForm().getPinX().setValue(0.2221944631712089);
shape.getXForm().getPinY().setValue(0.1666458473784065);
shape.getXForm().getWidth().setValue(width);
shape.getXForm().getHeight().setValue(height);
shape.getXForm().getLocPinX().getUfe().setF("Width*0.5");
shape.getXForm().getLocPinY().getUfe().setF("Height*0.5");
shape.getXForm().getResizeMode().setValue(0);
shape.getTextXForm().getTxtPinY().getUfe().setF("-TxtHeight/2");
shape.getTextXForm().getTxtWidth().getUfe().setF("TEXTWIDTH(TheText)");
shape.getTextXForm().getTxtHeight().getUfe().setF("TEXTHEIGHT(TheText, TxtWidth)");
shape.getForeign().getImgOffsetX().setValue(0);
shape.getForeign().getImgOffsetY().setValue(0);
shape.getForeign().getImgWidth().setValue(width);
shape.getForeign().getImgHeight().setValue(height);
// set connection properties
final Connection connection = new Connection();
shape.getConnections().add(connection);
connection.setID(1);
connection.setNameU("All");
connection.getX().setValue(0.22);
connection.getX().getUfe().setF("Width*0.5");
connection.getY().setValue(0.16);
connection.getY().getUfe().setF("Height*0.5");
connection.getDirX().setValue(0);
connection.getDirY().setValue(0);
connection.getType().setValue(0);
connection.getAutoGen().setValue(BOOL.FALSE);
connection.getPrompt().getUfe().setF("No Formula");
shape.getForeignData().setForeignType(ForeignType.BITMAP);
shape.getForeignData().setCompressionType(CompressionType.PNG);
File f = new File(file);
byte[] fileBytes = new byte[(int) f.length()];
FileInputStream fis = new FileInputStream(f);
fis.read(fileBytes);
fis.close();
shape.getForeignData().setValue(fileBytes);
return ms;
}
// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
private final static char map[] = { // 0 1 2 3 4 5 6 7
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 1
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 2
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', // 3
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 4
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 5
'w', 'x', 'y', 'z', '0', '1', '2', '3', // 6
'4', '5', '6', '7', '8', '9', '+', '/' // 7
};
private final String lineSeparator;
private final boolean splitLines;
public BASE64Encoder() {
lineSeparator = System.getProperty("line.separator");
splitLines = true;
}
final void encodeBuffer(final InputStream inStream, final Writer outStream) throws IOException {
final byte[] tmpbuffer = new byte[57];
while (true) {
final int numBytes = readFully(inStream, tmpbuffer);
if (numBytes == -1) {
break;
}
for (int j = 0; j < numBytes; j += 3) {
if ((j + 3) <= numBytes) {
encodeAtom(outStream, tmpbuffer, j, 3);
} else {
encodeAtom(outStream, tmpbuffer, j, (numBytes) - j);
}
}
if (splitLines) {
outStream.write(lineSeparator);
}
if (numBytes < 57) {
break;
}
}
}
public final String encodeBuffer(final byte[] aBuffer) {
final StringWriter outStream = new StringWriter();// aBuffer.length +
// aBuffer.length>>1);
try {
encodeBuffer(new ByteArrayInputStream(aBuffer), outStream);
} catch (final IOException e) {
e.printStackTrace();
}
return outStream.toString();
}
final void encodeAtom(final Writer outStream, final byte[] data, final int offset, final int len) throws IOException {
final byte a;
final byte b;
final byte c;
if (len == 1) {
a = data[offset];
b = 0;
c = 0;
outStream.write(map[(a >>> 2) & 0x3F]);
outStream.write(map[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
outStream.write('=');
outStream.write('=');
} else if (len == 2) {
a = data[offset];
b = data[offset + 1];
c = 0;
outStream.write(map[(a >>> 2) & 0x3F]);
outStream.write(map[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
outStream.write(map[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
outStream.write('=');
} else {
a = data[offset];
b = data[offset + 1];
c = data[offset + 2];
outStream.write(map[(a >>> 2) & 0x3F]);
outStream.write(map[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
outStream.write(map[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
outStream.write(map[c & 0x3F]);
}
}
private final int readFully(final InputStream in, final byte[] buffer) throws IOException {
final int len = buffer.length;
for (int i = 0; i < len; i++) {
final int q = in.read();
if (q == -1) {
return i;
}
buffer[i] = (byte) q;
}
return len;
}

Skaffa en Master från filen Visio

Ibland behöver utvecklare få detaljerna om en Visio ritnings master. Aspose.Diagram API stöder den här funktionen.

Aspose.Diagram for Java erbjuderDiagramklass som representerar en Visio-ritning. Masters-egenskapen, exponerad av klassen Diagram, stöder en samling Aspose.Diagram.Master-objekt. Den här egenskapen kan användas för att hämta en viss masters detaljer. Klassen MasterCollection exponerar metoderna GetMasterByName och GetMaster som kan anropas för att få ett Master-objekt.

Få ett huvudobjekt med ID

Detta exempel fungerar enligt följande:

  1. Skapa ett objekt av klassen Diagram.
  2. Ring Diagram.Masters-klassens GetMaster-metod.

Master Object by ID-programmeringsexempel

Följande exempel visar hur man får en master genom ID från en Visio-ritning.

// 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(GetMasterbyID.class);
// Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "RetrieveMasterInfo.vdx");
// Set master id
int masterid = 2;
// Get master object by id
Master master = diagram.getMasters().getMaster(masterid);
System.out.println("Master ID : " + master.getID());
System.out.println("Master Name : " + master.getName());
System.out.println("Master Name : " + master.getUniqueID());

Få ett huvudobjekt med namn

Detta exempel fungerar enligt följande:

  1. Skapa ett objekt av klassen Diagram.
  2. Ring Diagram.Masters-klassens GetMasterByName-metod.

Master Object by Name Programmeringsexempel

Följande exempel visar hur man hämtar ett huvudobjekt med namn från en Visio-ritning.

// 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(GetMasterbyName.class);
// Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "Basic Shapes.vss");
// Set master name
String masterName = "Circle";
// Get master object by name
Master master = diagram.getMasters().getMasterByName(masterName);
System.out.println("Master ID : " + master.getID());
System.out.println("Master Name : " + master.getName());
System.out.println("Master Name : " + master.getUniqueID());

Kontrollera närvaron av en master i Visio-ritningen

Aspose.Diagram API stöder kontroll av närvaron av en master i en Visio-ritning. Med MasterCollection-egenskapen kan utvecklare kontrollera om en master är närvarande med sitt namn eller ID.

Aspose.Diagram for Java erbjuderDiagram klass som representerar en Visio-ritning. Masters-egenskapen, exponerad av klassen Diagram, stöder en samling Aspose.Diagram.Master-objekt. Den här egenskapen kan användas för att kontrollera förekomsten av en viss master. Klassen MasterCollection exponerar IsExist-metoden som kan anropas med masternamnet eller ID-parametern.

Kontrollera en masternärvaro med ID

Detta exempel fungerar enligt följande:

  1. Skapa ett objekt av klassen Diagram.
  2. Ring Diagram.Masters class' IsExist-metod.

Mästarnärvaro genom ID-programmeringsexempel

Följande exempel visar hur man kontrollerar närvaron av en master genom ID i en Visio-ritning.

// 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(CheckMasterPresencebyID.class);
// Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "Basic Shapes.vss");
// set master id
int masterid = 2;
// check master by id
boolean isPresent = diagram.getMasters().isExist(2);
System.out.println("Master Presence : " + isPresent);

Kontrollera en mästarnärvaro efter namn

Detta exempel fungerar enligt följande:

  1. Skapa ett objekt av klassen Diagram.
  2. Ring Diagram.Masters class' IsExist-metod.

Master Presence by Name Programmeringsexempel

Följande exempel visar hur man kontrollerar en masternärvaro med namn från Visio-ritningen.

// 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(CheckMasterPresencebyName.class);
// Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "Basic Shapes.vss");
// Set master name
String masterName = "VNXe3100 Storage Processor Rear";
// check master object by name
boolean isPresent = diagram.getMasters().isExist(masterName);
System.out.println("Master Presence : " + isPresent);