Random Thoughts |
Dog's have owners. Cat's have staff.
|
言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 07:04:23 |
|
|
|
著者
|
トピック: VBAを使って図面印刷する際の用紙向き (閲覧数 5145 回) |
|
chubo
新人さん
オフライン
投稿: 3
HEART no Kitchen
|
|
VBAを使って図面印刷する際の用紙向き
« 投稿日: 2013/01/11 - 18:37:16 » |
|
はじめまして。
環境:SolidWorks 2012 X64 SP5
VBAを使って図面印刷のプログラムを作っております。
用紙が縦の図面と横の図面が混在しているので、条件式を使って swPageSetup.Orientation を1にするか2にする指示を与えるようにしています。 ところが、プリンタ設定のまま印刷されてしまい、縦と横の設定が反映されません。
確認の為、実プログラムと同様にAPIヘルプ「PrintOut3」内にあるExample(VBA)を参考に 印刷プログラムのテストサンプルを作りました。
これでも swPageSetup.Orientation を変えてみても印刷結果には反映されませんでした。
英語に明るくないので、APIヘルプをしっかり解読できないまま仕事しております。
印刷用紙向きをコントロールすることはできないでしょうか?
よろしくお願いいたします。
* ページ設定は「システムの設定を使用」に設定しています。
テスト用サンプル
Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swModelDocExt As SldWorks.ModelDocExtension Dim swPageSetup As SldWorks.PageSetup Dim sheets(0) As Long Dim drawing As String Dim errors As Long Dim warnings As Long
Sub main()
Set swApp = Application.SldWorks drawing = "X:hogehogepiyopiyo.slddrw" Set swModel = swApp.OpenDoc6(drawing, swDocDRAWING,swOpenDocOptions_Silent, "", errors, warnings)
' Set up page Set swPageSetup = swModel.PageSetup swPageSetup.Orientation = 1 ' 1=Portrait '2 = Landscape
' Print all pages sheets(0) = 0
' Print all of the sheets to the specified printer and convert to high quality Set swModelDocExt = swModel.Extension swModelDocExt.PrintOut3 sheets, 1, False, "", "", True
End Sub
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:VBAを使って図面印刷する際の用紙向き
« 返信 #1 投稿日: 2013/01/16 - 09:35:46 » |
|
chuboさん、はじめまして。
かなり昔になりますが、印刷処理のプログラムは作っていました。 用紙の縦横もうまく動作していたとおもっています。
swModelDocExt.PrintOut3 の前後でswPageSetup.Orientationを確認してみて、 値が正しく1に設定されているか調べてみる。 エラーか何かの問題で変更されていないかも。
また、PageSetupオブジェクトの各プロパティ(PrinterPaperSizeやPrinterPaperLength、PrinterPaperWidthなど) も確認して正しい値になっているかも見てみると良いかもです。
あと、APIヘルプですが、SolidWorks2008時点のものになりますが日本語APIヘルプが、 SolidWorks社のWebページに掲載されています。 サポート→テクニカルサポート→APIのナレッジ に入るとAPIHelpのダウンロードが見つかります。
|
|
|
|
chubo
新人さん
オフライン
投稿: 3
HEART no Kitchen
|
|
Re:VBAを使って図面印刷する際の用紙向き
« 返信 #2 投稿日: 2013/01/16 - 10:41:47 » |
|
Makoron様 はじめまして、よろしくお願いします。
情報ありがとうございます。 早速、各値の確認してみます。
APIヘルプ> 2008用だから。。。と思い、何となく見ないまま進めておりましたが、もっと早く見ればよかったです(>_<;)
今後共よろしくお願いいたします。 ゛○┓
|
|
|
|
chubo
新人さん
オフライン
投稿: 3
HEART no Kitchen
|
|
Re:VBAを使って図面印刷する際の用紙向き
« 返信 #3 投稿日: 2013/01/17 - 14:33:30 » |
|
結果報告
swModelDocExt.PrintOut3 の前後でswPageSetup.Orientationを確認してみたところ、「1」を代入すれば「1」に、「2」でも同様に値の設定ができていました。
PrinterPaperSize は数値がどの用紙サイズに当てはまるのか判断出来ませんでしたが、プリンタの印刷設定を変更すると変化することは確認しました。
PrinterPaperLength、PrinterPaperWidthはプリンタの印刷設定画面に表示されている縦・横の寸法と同様である事を確認できました。
再々度、SolidWorksやプリンタの設定内容をチェックしていく中で、SolidWorksのページ設定を「システムの設定を使用」から「このドキュメントの設定を使用」に変更してテストしてみたところ、swModel.Printer と swApp.ActivePrinterのプリンタ名が異なることに気に付きました。 (図面を作った担当と私のPC環境が違うため?)
そこで、試しに(この方法で良いか疑問)swModelをSetした直後に swModel.Printer = swApp.ActivePrinter としてみたところ、縦横が希望通りの印刷ができるようになりました。 また、ページ設定を「このドキュメントの設定を使用」にしたことから(?)、swPageSetup.Orientation にはドキュメント縦横の設定値が反映されて、プログラム内で代入しなくても良さそうでした。
Makaron様に2008のAPIヘルプを勧められなければ、この結果には行きつけなかったです。 ありがとうございました!
また、今後とも宜しくお願い致します。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:VBAを使って図面印刷する際の用紙向き
« 返信 #4 投稿日: 2013/01/17 - 16:52:08 » |
|
chuboさん
そういえば、システムの設定とドキュメントの設定というのものがありまたね。 この辺りもいじっていた記憶があります。 (もう忘れちゃっていましたが、思い出しました。)
日本語版APIヘルプの紹介しかできなかったMakoronですが(^^;) 問題解決できてよかったです!
|
|
|
|
|
|
|
|