AutoCAD の COM 利用でプロットの用紙サイズにセットする文字列

Autodesk Support

2017年3月30日


AutoCADの VBA や  .Net カスタムコマンドの COM/ActiveX 利用で、 AcadLayout.CanonicalMediaNameプロパティにセットするプロットの「用紙サイズ」文字列に、「印刷ダイアログ」の「用紙サイズ」プルダウンリストの文字列を与えてもエラーになります。
どのような文字列セットすれば良いですか?
また、確認する方法はありますか?

Solution

AcadLayout.CanonicalMediaNameプロパティにセットする文字列は、日本語表記(GetLocaleMediaNameより取得された文字)ではなく、英語表記(mediaNamesより取得される文字)をセットする必要があります。

'********************************************
' レイアウトの作成と印刷デバイスのセット
'********************************************
Public Function PlotSet()
  With ThisDrawing.ActiveLayout ' 現在のレイアウト
    .RefreshPlotDeviceInfo      ' 出力デバイス情報のリフレッシュ
    .ConfigName = "DWG To PDF.pc3" ' 印刷デバイス
    .CanonicalMediaName = "ISO_A0_(841.00_x_1189.00_MM)" '用紙サイズ
    .PlotRotation = ac0degrees ' 用紙方向(横)プロット回転角度
    .PlotType = acExtents ' 印刷領域(オブジェクト範囲)
    .StandardScale = ac1_1 ' 印刷尺度(1:1)
''''    .StandardScale = acVpScaleToFit '印刷尺度(尺度自動調整 )
    .PaperUnits = acMillimeters
    .CenterPlot = True ' 用紙の中央に印刷
 End With
End Function


英語表記(mediaNamesより取得される文字)は、以下のコードで確認できます。

< VBA Code Begin >

Public Sub PaperSetName()
  Dim AcadDoc As AcadDocument
  Set AcadDoc = ThisDrawing
  AcadDoc.ActiveLayout.RefreshPlotDeviceInfo
  Dim mediaNames As Variant
  mediaNames = AcadDoc.ActiveLayout.GetCanonicalMediaNames()
  For x = LBound(mediaNames) To UBound(mediaNames)
    Debug.Print "mediaNames : " & mediaNames(x) & vbCr _
     & "LocalName  : " & AcadDoc.ActiveLayout. _
                     GetLocaleMediaName(mediaNames(x))
  Next
End Sub

< VBA Code End >

By Shigekazu Saitou



この情報は役に立ちましたか?


サポートが必要な場合は、Autodesk Assistant にお問い合わせください!

Assistant が回答を見つけたり、担当者に連絡するお手伝いをします。


オートデスクではどのようなサポートが提供されますか?

ご利用可能なサポートの種類は、サブスクリプションのプランによって異なります。現在のプランでご利用可能なサポート レベルをご確認ください。

サポート レベルを確認