70002416 Save Open to from stream and data buffer

Article 70002416
Type Wish
Product Engine
Version 1004
Date Added 9/27/2023 12:00:00 AM
Fixed 10.1005.0.1 (9/27/2023 12:00:00 AM)
Submitted by JK

Summary

Save Open to from stream and data buffer

Solution

In version 1005.0.1 following methods was added to vdDocument object

System.IO.MemoryStream SaveToMemoryStream(string fileTypeExtension)
Exports the document to a memory stream using the file format defined by the passed fileTypeExtension.
"fileTypeExtension": It can be one of the following strings ".vdml",".vdcl",".vds",".vdf",".dxf",".dwg",".dgn",".pdf"
returns: A System.IO.MemoryStream object if success else null


bool LoadFromStream(System.IO.Stream stream, string fileTypeExtension)
Load the drawing from the passed stream
"stream": A System.IO.MemoryStream object
"fileTypeExtension": The type of the data that the passed stream is created. It can be one of the following strings ".vdml",".vdcl",".vds",".vdf",".dxf",".dwg",".dgn",".pdf"


byte[] SaveToDataBuffer(string fileTypeExtension)
Exports the document to a byte array using the file format defined by the passed fileTypeExtension.
"fileTypeExtension": It can be one of the following strings ".vdml",".vdcl",".vds",".vdf",".dxf",".dwg",".dgn",".pdf"
returns: An array of bytes if success else null


bool LoadFromDataBuffer(ref byte []bytes, int offset, int count, string fileTypeExtension)
Load the drawing from the passed bytes array data
"bytes": An array of bytes contains the contents of a drawing file
"offset": The offset of the first byte to read from buffer which is the start of the file buffer.
"count": The number of bytes to read from buffer which is the end of the file buffer.
"fileTypeExtension": The type of file that the data is created. It can be one of the following strings ".vdml",".vdcl",".vds",".vdf",".dxf",".dwg",".dgn",".pdf"

Managed C# Code Sample:

            doc.Open(@"C:\someFolder\someFile.vdml");
            System.IO.MemoryStream MS = doc.SaveToMemoryStream(".dxf");
            doc.New();
            doc.LoadFromStream(MS, ".dxf");
            doc.Redraw(true);
and
            doc.Open(@"C:\someFolder\someFile.vdml");
            Byte[] arBytes = doc.SaveToDataBuffer(".dxf");
            doc.New();
            doc.LoadFromDataBuffer(ref arBytes, 0, arBytes.Length, ".dxf");
            doc.Redraw(true);

 

Only the SaveToDataBuffer and LoadFromDataBuffer are exported to the VDF Wrapper so these two methods can be used in VB6 and Delphi and similar ActiveX-enabled IDEs
 
Code Examples:

In Delphi it can be used like:

uses
  .....,
 VectorDraw_Professional_tlb,vdrawi5_tlb,vdrawlib5_tlb, Activex ;
......
var
  Form1: TForm1;
   doc : VectorDraw_Professional_tlb.vdDocument;
   arrfile: Activex.PSafeArray;

procedure TForm1.Button1Click(Sender: TObject);
var
   viHigh, i: integer;
begin  // press 1st
   vdraw1.ActiveDocument.New();
   vdraw1.CommandAction.cmdCircle(vararrayof([1,1,0]),1);
   vdraw1.DisplayFrames:=63;
   doc:=vdraw1.ActiveDocument.WrapperObject as   VectorDraw_Professional_tlb.vdDocument;
   arrfile:= doc.SaveToDataBuffer('.dxf');
   vdraw1.ActiveDocument.New();
   vdraw1.CommandAction.Zoom('e',0,0);
   SafeArrayGetUBound(arrfile,1,vihigh)  ;
   doc.LoadFromDataBuffer(arrfile,0,vihigh,'.dxf');
   doc.redraw(true);
end;
In VB6 it can be used like:
     VDraw1.ActiveDocument.New
     VDraw1.CommandAction.cmdCircle array(1,1,0), 1
     Dim BArray() As Byte
     BArray = doc.SaveToDataBuffer("*.dxf")
     VDraw1.ActiveDocument.New
     VDraw1.Redraw
     Dim bal As Long
     Dim res As Boolean
     bal = UBound(BArray)
     res = doc.LoadFromDataBufferBArray , 0, bal, "*.dxf")
     doc.Redraw True

Send comments on this topic.