SolidWorks API Community

Unofficial User Site

トピック: IModelDocExtension.SaveAs メソッドのバグ

IModelDocExtension.SaveAs メソッドのバグ 4 年 2 ヶ月 前 #71

  • KojiEguchi
  • KojiEguchi さんのアバター
  • オフライン
  • フレッシュボーダー
  • 投稿数: 2
  • カルマ: 0
はじめまして。

IModelDocExtension.SaveAs メソッドを使って 3D PDF を作成しています。

以下のように操作した場合、期待した結果と異なる結果が返され困っています。
  1. 図面ファイルを開く。
  2. 図面ファイルを IModelDocExtension.SaveAs メソッドで fileneme.PDF として保存する。
  3. 図面ファイルを閉じる。
  4. Acrobat Reader DC を起動し、 filename.PDF を開く。
  5. SOLIDWORKS で部品ファイルを開く。
  6. 部品ファイルを IModelDocExtension.SaveAs メソッドで fileneme.PDF として保存する。

上記の手順で6番目の処理をした際、filename.PDF は Acrobat Reader DC で開かれているため、排他制御により上書きできません。

しかし、SaveAs メソッドの Return Value は True (successful) で、Errors も Warnings も 0 です。

filename.PDF が他のアプリケーションで開かれている時は、False を返すべきだと思うのですが、これはバグと考えてよいのでしょうか。

SOLIDWORKS のバージョンは 2016 SP5.0 です。
ゲストの書き込みは許可されていません。

IModelDocExtension.SaveAs メソッドのバグ 4 年 2 ヶ月 前 #72

  • hisa
  • hisa さんのアバター
  • オフライン
  • 管理者
  • 投稿数: 12
  • 感謝を受け取りました 7
  • カルマ: 0
KojiEguchiさん、はじめまして :)

確認が遅れて済みません :ohmy:
API Helpの「Save File as PDF Example (VBA)」を参考に、以下コードで同様の処理を試してみました。
環境は、Windows7 Professional x64 SP1 SolidWorks 2016 x64 SP5.0 です。
Option Explicit

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swExportPdfData As SldWorks.ExportPdfData
    Dim boolstatus As Boolean
    Dim longstatus As Long, longerrors As Long, longwarnings As Long
    
    Set swApp = Application.SldWorks
    Set swExportPdfData = swApp.GetExportFileData(1)

    Set swModel = swApp.ActiveDoc
    
    boolstatus = swModel.Extension.SaveAs("C:\Data\SaveAs\test.PDF", 0, 1, Nothing, longerrors, longwarnings)

End Sub

結果、boolstatus はFalseでlongerrorsは1が返ってきました。
環境依存ですかね…
明確な回答にならず申し訳ありませんが、ご参考までに。
最終編集: 4 年 2 ヶ月 前 : hisa.
ゲストの書き込みは許可されていません。

IModelDocExtension.SaveAs メソッドのバグ 4 年 2 ヶ月 前 #73

  • KojiEguchi
  • KojiEguchi さんのアバター
  • オフライン
  • フレッシュボーダー
  • 投稿数: 2
  • カルマ: 0
返信ありがとうございます。

書き忘れましたが、上記の現象は以下の環境で発生します。
 OS:Windows Server 2008 R2 Standard
 開発環境:Visual Studio Express 2015
 開発言語:c#

返信していただいた内容を踏まえ、Windows Server 2008 R2 Standard 上でマクロを組んで試したところ、Falseが返ってきました。

IModelDocExtension の SaveAs メソッドではなく、ModelDoc2 の SaveAs4 メソッドを使えば False が返ることが、投降後に分かったため、当面はそれで回避しています。

現在、SOLIDWORKS の販売元に調査を依頼し、回答を待っている状態です。
ゲストの書き込みは許可されていません。
ページ作成時間: 0.185 秒
現在地: Home フォーラム SolidWorks API Tips SolidWorks API Tips IModelDocExtension.SaveAs メソッドのバグ