2016-12-13 60 views
0

sparx eaプロジェクトからのデータでレポートを生成する古いモジュールを入手しました。Spax EAの図をWord文書にエクスポートする最も良い方法

図を図のように文書に挿入する必要がある部分があります。

今ではクリップボードにコピーすること

public static void copyDiagram(
      EA.Diagram diagram, 
      EA.Repository eaRepository) 
     { 
      eaRepository.App.Project.PutDiagramImageOnClipboard(diagram.DiagramGUID, 0); 
      eaRepository.CloseDiagram(diagram.DiagramID); 
     } 

のように見え、その後、私のために奇妙なルックス

currentDocumentRange.Paste() のようなものがそこに行きます。 このようなクリップボードを使用するのは本当にうまくいかないと思いますので、今後書き直したいと思います。

だから、唯一の他の機能私は次のようにそこに見えたその PutDiagramImageToFile(diagrammGUID, path, type)

は良いオプションはありませんがある場合は、それそれはそれでそれを取得した後、パスがWord文書に挿入します、新しいファイルを作成し、それを削除しても大丈夫?

または、byte[]の形式の図から画像を取得する、またはImage形式のような、他のSparxEA関数がありますか?

どのようにすればよいですか?

+0

クリップボードを使用して同じメモリを使用できる場合は、ファイルを使用して作業するのはなぜですか?そのアプローチには何も問題はありません。 –

+0

@ThomasKilianよく、私の場合はクリップボードの問題がここに表示されます(質問の下に1番目のコメント)http://stackoverflow.com/questions/41055211/task-run-from-ui-thread-throws-sta-error – DanilGholtsman

+0

@私が – DanilGholtsman

答えて

3

私はこのコードを(ダイアグラムラッパークラスで)使用して、クリップボードを使用せずに図のイメージを取得しています。
このコードは、主にカスタム文書作成ツールで使用され、驚くほど高速です。

/// <summary> 
/// returns diagram image 
/// </summary> 
public Image image 
{ 
    get 
    { 
     EA.Project projectInterface = this.model.getWrappedModel().GetProjectInterface(); 
     string diagramGUID = projectInterface.GUIDtoXML(this.wrappedDiagram.DiagramGUID); 
     string filename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".png"; 
     //save diagram image to file (format ".png") 
     projectInterface.PutDiagramImageToFile(diagramGUID, filename, 1); 
     //load the contents of the file into a memorystream 
     MemoryStream imageStream = new MemoryStream(File.ReadAllBytes(filename)); 
     //then create the image from the memorystream. 
     //this allows us to delete the temporary file right after loading it. 
     //When using Image.FromFile the file would have been locked for the lifetime of the Image 
     Image diagramImage = Image.FromStream(imageStream); 
     //delete the temorary file 
     System.IO.File.Delete(filename); 

     return diagramImage; 
    } 
} 
+0

Wow、mr 。 Bellekens(EAについてあなたの多くのarctilesを見た): あなたの答えをありがとう、まさに私が必要なもの! – DanilGholtsman

+0

もう一度、このコードを使用しましたが、問題が1つあります。すべてのダイアグラムはhttp://i.imgur.com/mw4m1gD.pngのように見えます – DanilGholtsman

+0

俳優やユースケースなどのプロジェクトでは写真には表示されません – DanilGholtsman

関連する問題