仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/04/29 - 07:47:44
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: VBAを使って図面印刷する際の用紙向き 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: VBAを使って図面印刷する際の用紙向き  (閲覧数 4955 回)
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ですが(^^;)
問題解決できてよかったです!
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: VBAを使って図面印刷する際の用紙向き 前のトピック 次のトピック
ジャンプします: