CAD从二制流数据中加载图形(com接口Delphi语言)

主要用到函数说明:

 

_DMxDrawX::ReadBinStream

 

从二制流数据中加载图形,详细说明如下:

 

参数 说明

VARIANT varBinArray

二制流数据,是个byte数组

BSTR sPassword

图纸密码.没有密码,传空字符串

LONG lReadContent

扫描二维码关注公众号,回复: 6448578 查看本文章

加载内容,如果全部加载,传16777215,十六进制0xFFFFFF

Delphi代码实现如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
             function  OleToMStream(OV:OleVariant): TMemoryStream;
             var
               Data: PByteArray;
               Size: integer;
             beginResult:=TMemoryStream.Create;                      try
                        Size:=VarArrayHighBound(OV,1)-VarArrayLowBound(OV,1)+1;
                        Data:=VarArrayLock(OV);                          try
                            Result.Position:=0;
                            Result.WriteBuffer(Data^,Size);
                          finally
                            VarArrayUnlock(OV);
                          end;
                      except
                        Result.Free;Result:=nil;
                      end;
                    end;
  
                    function  MStreamToOle(Strm:TMemoryStream): OleVariant;
                    var
                      Data: PByteArray;
                    beginResult:= VarArrayCreate([0,   Strm.Size   -   1],   varByte);
                      Data:=   VarArrayLock(Result);                      try
                          Strm.Position   :=   0;
                          Strm.ReadBuffer(Data^,   Strm.Size);
                      finally
                          VarArrayUnlock(Result);
                      end;
                    end;
  
                    procedure TForm2.Button6Click(Sender: TObject);
                    var
                      aryData:OleVariant;
                      memStream : TMemoryStream ;
                      aryReadData:     OleVariant;
                    begin 
                       // 写到内存流
                       MxDrawX1.WriteBinStream(aryData, '' ,23);
                       memStream := OleToMStream(aryData); 
                       // 从内存流加载
                       aryReadData := MStreamToOle( memStream);
                       MxDrawX1.ReadBinStream(aryData, '' ,23);
  
                    end;

猜你喜欢

转载自www.cnblogs.com/yzy0224/p/11014710.html